[med-svn] [dcmtk] 01/12: Imported Upstream version 3.6.1~20160216

Gert Wollny gert-guest at moszumanska.debian.org
Sun May 8 14:49:43 UTC 2016


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

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

commit 4a3589f2d7d33140e6ffdbde48a601b18c75f1d4
Author: Gert Wollny <gw.fossdev at gmail.com>
Date:   Sat Apr 9 12:18:00 2016 +0000

    Imported Upstream version 3.6.1~20160216
---
 CMake/dcmtkPrepare.cmake                           |   10 +-
 CMake/osconfig.h.in                                |    5 +
 CMakeLists.txt                                     |    1 +
 COPYRIGHT                                          |   40 +-
 VERSION                                            |    2 +-
 config/Makefile.def.in                             |    2 +-
 config/Makefile.in                                 |    1 +
 config/arith.cc                                    |    6 +-
 config/configure                                   |    5 +-
 config/configure.in                                |    4 +-
 config/docs/macros.txt                             |    2 +-
 config/include/dcmtk/config/osconfig.h.in          |    7 +-
 dcmdata/apps/Makefile.dep                          |   69 +-
 dcmdata/apps/dcm2xml.cc                            |   28 +-
 dcmdata/apps/dcmdump.cc                            |    5 +-
 dcmdata/apps/dcmgpdir.cc                           |   14 +-
 dcmdata/apps/dump2dcm.cc                           |    6 +-
 dcmdata/apps/mdfdsman.h                            |   32 +-
 dcmdata/apps/xml2dcm.cc                            |    7 +-
 dcmdata/data/dicom.dic                             |   90 +-
 dcmdata/docs/dcm2xml.man                           |    9 +-
 dcmdata/docs/dump2dcm.man                          |    6 +-
 dcmdata/include/dcmtk/dcmdata/dcbytstr.h           |    7 +-
 dcmdata/include/dcmtk/dcmdata/dcdatutl.h           |   15 +-
 dcmdata/include/dcmtk/dcmdata/dcddirif.h           |   20 +-
 dcmdata/include/dcmtk/dcmdata/dcdeftag.h           |   69 +-
 dcmdata/include/dcmtk/dcmdata/dcdirrec.h           |    6 +-
 dcmdata/include/dcmtk/dcmdata/dcelem.h             |   60 +-
 dcmdata/include/dcmtk/dcmdata/dcitem.h             |  103 +-
 dcmdata/include/dcmtk/dcmdata/dcmetinf.h           |   10 +-
 dcmdata/include/dcmtk/dcmdata/dcobject.h           |   27 +-
 dcmdata/include/dcmtk/dcmdata/dcsequen.h           |   12 +-
 dcmdata/include/dcmtk/dcmdata/dctk.h               |    3 +-
 dcmdata/include/dcmtk/dcmdata/dcuid.h              |   13 +-
 dcmdata/include/dcmtk/dcmdata/dcvr.h               |   29 +-
 dcmdata/include/dcmtk/dcmdata/dcvrlo.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcvrlt.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcvrobow.h           |    6 +-
 dcmdata/include/dcmtk/dcmdata/dcvrod.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcvrof.h             |    4 +-
 .../include/dcmtk/dcmdata/{dcvrod.h => dcvrol.h}   |   38 +-
 dcmdata/include/dcmtk/dcmdata/dcvrpn.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcvrsh.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcvrst.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcvruc.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcvrul.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcvrulup.h           |   12 +-
 dcmdata/include/dcmtk/dcmdata/dcvrut.h             |    4 +-
 dcmdata/include/dcmtk/dcmdata/dcxfer.h             |    8 +-
 dcmdata/libi2d/Makefile.dep                        |   12 +
 dcmdata/libsrc/CMakeLists.txt                      |    6 +-
 dcmdata/libsrc/Makefile.dep                        |  228 +-
 dcmdata/libsrc/Makefile.in                         |    2 +-
 dcmdata/libsrc/dcdatset.cc                         |   31 +-
 dcmdata/libsrc/dcdatutl.cc                         |   18 +-
 dcmdata/libsrc/dcddirif.cc                         |  142 +-
 dcmdata/libsrc/dcdictbi.cc                         |  262 +-
 dcmdata/libsrc/dcdirrec.cc                         |   42 +-
 dcmdata/libsrc/dcelem.cc                           |    4 +-
 dcmdata/libsrc/dcfilefo.cc                         |   27 +-
 dcmdata/libsrc/dcitem.cc                           |  105 +-
 dcmdata/libsrc/dcmetinf.cc                         |   19 +-
 dcmdata/libsrc/dcpxitem.cc                         |   83 +-
 dcmdata/libsrc/dcsequen.cc                         |   28 +-
 dcmdata/libsrc/dcuid.cc                            |   39 +-
 dcmdata/libsrc/dcvr.cc                             |   31 +-
 dcmdata/libsrc/dcvrfd.cc                           |    4 +-
 dcmdata/libsrc/dcvrfl.cc                           |    4 +-
 dcmdata/libsrc/dcvrod.cc                           |   10 +-
 dcmdata/libsrc/dcvrof.cc                           |    4 +-
 dcmdata/libsrc/{dcvrof.cc => dcvrol.cc}            |   66 +-
 dcmdata/libsrc/dcvrul.cc                           |    4 +-
 dcmdata/tests/CMakeLists.txt                       |    2 +-
 dcmdata/tests/Makefile.dep                         |  114 +-
 dcmdata/tests/Makefile.in                          |    4 +-
 dcmdata/tests/tchval.cc                            |    3 +-
 dcmdata/tests/telemlen.cc                          |    3 +-
 dcmdata/tests/tests.cc                             |    4 +-
 dcmdata/tests/tvrcomp.cc                           |  177 +-
 dcmdata/tests/tvrol.cc                             |   51 +
 dcmfg/include/dcmtk/dcmfg/fgderimg.h               |    6 +-
 dcmfg/include/dcmtk/dcmfg/fgfracon.h               |   22 +-
 dcmfg/include/dcmtk/dcmfg/fgframevoilut.h          |    4 +-
 dcmfg/include/dcmtk/dcmfg/fgpixmsr.h               |    2 +-
 dcmfg/include/dcmtk/dcmfg/fgplanposvol.h           |    6 +-
 .../include/dcmtk/dcmfg/fgrealworldvaluemapping.h  |   14 +-
 dcmfg/libsrc/Makefile.dep                          |   54 +
 dcmfg/libsrc/fgderimg.cc                           |    9 +-
 dcmfg/libsrc/fgfracon.cc                           |   16 +-
 dcmfg/libsrc/fgframevoilut.cc                      |    2 +
 dcmfg/libsrc/fgimagedatatype.cc                    |    4 +-
 dcmfg/libsrc/fginterface.cc                        |    2 +-
 dcmfg/libsrc/fgpixmsr.cc                           |   22 +-
 dcmfg/libsrc/fgplanposvol.cc                       |    3 +
 dcmfg/libsrc/fgrealworldvaluemapping.cc            |    7 +
 dcmfg/libsrc/fgusimagedescription.cc               |   11 +-
 dcmimage/apps/Makefile.dep                         |    9 +
 dcmimage/libsrc/Makefile.dep                       |   40 +-
 dcmimgle/apps/Makefile.dep                         |    5 +
 dcmimgle/include/dcmtk/dcmimgle/dibaslut.h         |    4 +-
 dcmimgle/include/dcmtk/dcmimgle/diovpln.h          |    4 +-
 dcmimgle/include/dcmtk/dcmimgle/dipxrept.h         |   32 +-
 dcmimgle/libsrc/Makefile.dep                       |   59 +-
 dcmimgle/libsrc/diimage.cc                         |   11 +-
 dcmiod/CMakeLists.txt                              |    2 +-
 dcmiod/Makefile.in                                 |    2 +-
 dcmiod/include/dcmtk/dcmiod/cielabutil.h           |  212 ++
 dcmiod/include/dcmtk/dcmiod/iodmacro.h             |   11 +-
 dcmiod/include/dcmtk/dcmiod/iodutil.h              |    4 +-
 dcmiod/include/dcmtk/dcmiod/modenhusimage.h        |    7 +-
 dcmiod/include/dcmtk/dcmiod/modequipment.h         |    6 +-
 dcmiod/include/dcmtk/dcmiod/modgeneralseries.h     |   30 +-
 dcmiod/include/dcmtk/dcmiod/modimagepixel.h        |   22 +-
 .../include/dcmtk/dcmiod/modmultiframedimension.h  |   10 +-
 dcmiod/include/dcmtk/dcmiod/modsynchronisation.h   |    4 +-
 dcmiod/libsrc/CMakeLists.txt                       |    1 +
 dcmiod/libsrc/Makefile.dep                         |  153 +-
 dcmiod/libsrc/Makefile.in                          |    4 +-
 dcmiod/libsrc/cielabutil.cc                        |  209 ++
 dcmiod/libsrc/iodmacro.cc                          |   34 +-
 dcmiod/libsrc/iodutil.cc                           |    2 +-
 dcmiod/libsrc/modenhusimage.cc                     |   30 +-
 dcmiod/libsrc/modenhusseries.cc                    |    3 +-
 dcmiod/libsrc/modequipment.cc                      |    8 +-
 dcmiod/libsrc/modgeneralimage.cc                   |    6 +-
 dcmiod/libsrc/modgeneralseries.cc                  |   32 +
 dcmiod/libsrc/modimagepixel.cc                     |    7 +-
 dcmiod/libsrc/modmultiframedimension.cc            |    6 +-
 dcmiod/libsrc/modsynchronization.cc                |    1 +
 dcmiod/tests/CMakeLists.txt                        |    8 +
 {dcmwlm/apps => dcmiod/tests}/Makefile.dep         |  122 +-
 dcmiod/tests/Makefile.in                           |   42 +-
 dcmiod/tests/tcielabutil.cc                        |  129 +
 dcmiod/tests/tests.cc                              |   26 +
 dcmjpeg/apps/Makefile.dep                          |   12 +
 dcmjpeg/docs/dcmmkdir.man                          |   20 +-
 dcmjpeg/libsrc/Makefile.dep                        |   56 +
 dcmjpls/apps/Makefile.dep                          |    9 +
 dcmjpls/libcharls/Makefile.dep                     |    4 +-
 dcmjpls/libcharls/header.cc                        |    1 +
 dcmjpls/libsrc/Makefile.dep                        |   14 +
 dcmnet/apps/Makefile.dep                           |   25 +-
 dcmnet/apps/movescu.cc                             |    4 +
 dcmnet/docs/storescp.man                           |    5 +-
 dcmnet/etc/storescp.cfg                            |    5 +-
 dcmnet/etc/storescu.cfg                            |    5 +-
 dcmnet/include/dcmtk/dcmnet/dccftsmp.h             |   14 +-
 dcmnet/include/dcmtk/dcmnet/diutil.h               |   12 +
 dcmnet/include/dcmtk/dcmnet/dstorscu.h             |   22 +-
 dcmnet/include/dcmtk/dcmnet/scp.h                  |   62 +-
 dcmnet/include/dcmtk/dcmnet/scu.h                  |    4 +-
 dcmnet/libsrc/Makefile.dep                         |  115 +-
 dcmnet/libsrc/assoc.cc                             |    4 +
 dcmnet/libsrc/dccftsmp.cc                          |   10 -
 dcmnet/libsrc/dcmtrans.cc                          |   16 +-
 dcmnet/libsrc/diutil.cc                            |   35 +
 dcmnet/libsrc/dstorscu.cc                          |   45 +-
 dcmnet/libsrc/dul.cc                               |   31 +-
 dcmnet/libsrc/dulextra.cc                          |    5 +
 dcmnet/libsrc/dulfsm.cc                            |   38 +-
 dcmnet/libsrc/dulparse.cc                          |   94 +-
 dcmnet/libsrc/scp.cc                               |   31 +-
 dcmnet/libsrc/scu.cc                               |   31 +-
 dcmnet/tests/Makefile.dep                          |   10 +-
 dcmpstat/apps/Makefile.dep                         |   29 +
 dcmpstat/libsrc/Makefile.dep                       |  120 +
 dcmpstat/tests/Makefile.dep                        |   18 +-
 dcmpstat/tests/msgserv.cc                          |    5 +
 dcmqrdb/apps/Makefile.dep                          |    6 +
 dcmqrdb/docs/dcmqrscp.man                          |    5 +-
 dcmqrdb/libsrc/Makefile.dep                        |   22 +
 dcmqrdb/libsrc/dcmqrdbi.cc                         |    3 +-
 dcmrt/apps/Makefile.dep                            |   24 +-
 dcmrt/include/dcmtk/dcmrt/drmimage.h               |    8 +-
 dcmrt/include/dcmtk/dcmrt/drtdose.h                |   68 +-
 dcmrt/include/dcmtk/dcmrt/drtimage.h               |   68 +-
 dcmrt/include/dcmtk/dcmrt/drtionpl.h               |   52 +-
 dcmrt/include/dcmtk/dcmrt/drtiontr.h               |   52 +-
 dcmrt/include/dcmtk/dcmrt/drtplan.h                |   52 +-
 dcmrt/include/dcmtk/dcmrt/drtstrct.h               |   95 +-
 dcmrt/include/dcmtk/dcmrt/drttreat.h               |   52 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtads.h             |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtafs.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtags.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtarics.h           |   73 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtas1.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtas5.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtas6.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtas7.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtass.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbads.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbas.h             |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbs.h              |    6 +-
 .../dcmtk/dcmrt/seq/{drtrcos.h => drtbss.h}        |   60 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h           |   22 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h           |   73 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtccs.h             |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtces.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtchs.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcims.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcis.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcos.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h            |    6 +-
 .../dcmtk/dcmrt/seq/{drtporis.h => drtcpis.h}      |   40 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcps.h             |   38 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcs.h              |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtcss.h             |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h             |   75 +-
 .../dcmtk/dcmrt/seq/{drtdimrs.h => drtdias.h}      |   56 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtds.h              |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdss.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drteas.h             |    6 +-
 .../dcmtk/dcmrt/seq/{drtcsis.h => drtecs.h}        |  120 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtes.h              |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfds.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfes.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfms.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtgas.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiais.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtians.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtibls.h            |   46 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtibs.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drticpds.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drticps.h            |   22 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtics.h             |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiis.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtircs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtitts.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtiws.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmas.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmls.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmps.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmss.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtoas.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtois.h             |   22 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtopis.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtos.h              |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h             |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h            |    6 +-
 .../dcmtk/dcmrt/seq/{drtrshs6.h => drtpdecs.h}     |  108 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpics.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtporis.h           |   22 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h            |   73 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h           |   22 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpss.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h            |    6 +-
 .../dcmtk/dcmrt/seq/{drtcims.h => drtqds.h}        |   24 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtras.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h             |   38 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrds.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrics.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrims.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtris.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrms.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h            |   22 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h           |   21 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrps.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrros.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h          |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h          |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h          |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrses.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrss.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrws.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h           |   21 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtscris.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h            |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtsds.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtshds.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtsis.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtsns.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h           |   75 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h            |   73 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtss.h              |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttms0.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttms9.h            |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttscds.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h           |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drttts.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtvls.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtwps.h             |    6 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h             |    6 +-
 .../dcmtk/dcmrt/seq/{drtwrs.h => drtwrsrs.h}       |   36 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtws.h              |   29 +-
 dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h             |    6 +-
 dcmrt/libsrc/CMakeLists.txt                        |    2 +-
 dcmrt/libsrc/Makefile.dep                          | 2171 ++++++++++++---
 dcmrt/libsrc/Makefile.in                           |   52 +-
 dcmrt/libsrc/drmdose.cc                            |   10 +-
 dcmrt/libsrc/drtaadcs.cc                           |  112 +-
 dcmrt/libsrc/drtadcs.cc                            |  112 +-
 dcmrt/libsrc/drtads.cc                             |  112 +-
 dcmrt/libsrc/drtafs.cc                             |    6 +-
 dcmrt/libsrc/drtags.cc                             |    6 +-
 dcmrt/libsrc/drtajcs.cc                            |  112 +-
 dcmrt/libsrc/drtarics.cc                           |  112 +-
 dcmrt/libsrc/drtas1.cc                             |    6 +-
 dcmrt/libsrc/drtas5.cc                             |    6 +-
 dcmrt/libsrc/drtas6.cc                             |    6 +-
 dcmrt/libsrc/drtas7.cc                             |    6 +-
 dcmrt/libsrc/drtass.cc                             |    6 +-
 dcmrt/libsrc/drtbads.cc                            |    6 +-
 dcmrt/libsrc/drtbas.cc                             |  112 +-
 dcmrt/libsrc/drtbcps.cc                            |    6 +-
 dcmrt/libsrc/drtbl2.cc                             |    6 +-
 dcmrt/libsrc/drtbl5.cc                             |    6 +-
 dcmrt/libsrc/drtbldls.cc                           |    6 +-
 dcmrt/libsrc/drtbldps.cc                           |    6 +-
 dcmrt/libsrc/drtblds1.cc                           |    6 +-
 dcmrt/libsrc/drtblds5.cc                           |    6 +-
 dcmrt/libsrc/drtblds6.cc                           |    6 +-
 dcmrt/libsrc/drtbldts.cc                           |    6 +-
 dcmrt/libsrc/drtbrcss.cc                           |  112 +-
 dcmrt/libsrc/drtbrdrs.cc                           |    6 +-
 dcmrt/libsrc/drtbrs.cc                             |    6 +-
 dcmrt/libsrc/drtbs.cc                              |    6 +-
 dcmrt/libsrc/{drtrdros.cc => drtbss.cc}            |  179 +-
 dcmrt/libsrc/drtbvcps.cc                           |   33 +-
 dcmrt/libsrc/drtcbars.cc                           |  112 +-
 dcmrt/libsrc/drtccs.cc                             |  112 +-
 dcmrt/libsrc/drtcctus.cc                           |    6 +-
 dcmrt/libsrc/drtcdrs.cc                            |    6 +-
 dcmrt/libsrc/drtces.cc                             |    6 +-
 dcmrt/libsrc/drtchs.cc                             |    6 +-
 dcmrt/libsrc/drtcims.cc                            |    6 +-
 dcmrt/libsrc/drtcis.cc                             |    6 +-
 dcmrt/libsrc/drtcncs.cc                            |  112 +-
 dcmrt/libsrc/drtcos.cc                             |    6 +-
 dcmrt/libsrc/drtcpas.cc                            |    6 +-
 dcmrt/libsrc/{drtrpis.cc => drtcpis.cc}            |  167 +-
 dcmrt/libsrc/drtcps.cc                             |   58 +-
 dcmrt/libsrc/drtcs.cc                              |    6 +-
 dcmrt/libsrc/drtcsas.cc                            |    6 +-
 dcmrt/libsrc/drtcshs.cc                            |    6 +-
 dcmrt/libsrc/drtcsis.cc                            |    6 +-
 dcmrt/libsrc/drtcss.cc                             |  112 +-
 dcmrt/libsrc/drtdcs.cc                             |  112 +-
 dcmrt/libsrc/{drtrsss.cc => drtdias.cc}            |  142 +-
 dcmrt/libsrc/drtdimcs.cc                           |  112 +-
 dcmrt/libsrc/drtdimrs.cc                           |    6 +-
 dcmrt/libsrc/drtdirs.cc                            |    6 +-
 dcmrt/libsrc/drtdose.cc                            |   63 +-
 dcmrt/libsrc/drtdrs.cc                             |    6 +-
 dcmrt/libsrc/drtds.cc                              |  112 +-
 dcmrt/libsrc/drtdspcs.cc                           |  112 +-
 dcmrt/libsrc/drtdss.cc                             |    6 +-
 dcmrt/libsrc/drtdvhs.cc                            |    6 +-
 dcmrt/libsrc/drtdvrrs.cc                           |    6 +-
 dcmrt/libsrc/drteas.cc                             |    6 +-
 dcmrt/libsrc/{drtrms.cc => drtecs.cc}              |  233 +-
 dcmrt/libsrc/drtes.cc                              |    6 +-
 dcmrt/libsrc/drtfds.cc                             |    6 +-
 dcmrt/libsrc/drtfes.cc                             |    6 +-
 dcmrt/libsrc/drtfgs.cc                             |    6 +-
 dcmrt/libsrc/drtfgss.cc                            |    6 +-
 dcmrt/libsrc/drtfms.cc                             |    6 +-
 dcmrt/libsrc/drtfsss.cc                            |    6 +-
 dcmrt/libsrc/drtgas.cc                             |    6 +-
 dcmrt/libsrc/drthsdrs.cc                           |    6 +-
 dcmrt/libsrc/drtiais.cc                            |    6 +-
 dcmrt/libsrc/drtians.cc                            |    6 +-
 dcmrt/libsrc/drtiblds.cc                           |    6 +-
 dcmrt/libsrc/drtibls.cc                            |   57 +-
 dcmrt/libsrc/drtibs.cc                             |    6 +-
 dcmrt/libsrc/drticpds.cc                           |    6 +-
 dcmrt/libsrc/drticps.cc                            |   33 +-
 dcmrt/libsrc/drtics.cc                             |  112 +-
 dcmrt/libsrc/drtiis.cc                             |    6 +-
 dcmrt/libsrc/drtimage.cc                           |   63 +-
 dcmrt/libsrc/drtionpl.cc                           |   39 +-
 dcmrt/libsrc/drtiontr.cc                           |   39 +-
 dcmrt/libsrc/drtipiqs.cc                           |    6 +-
 dcmrt/libsrc/drtircs.cc                            |    6 +-
 dcmrt/libsrc/drtiseis.cc                           |    6 +-
 dcmrt/libsrc/drtitts.cc                            |    6 +-
 dcmrt/libsrc/drtiwps.cc                            |    6 +-
 dcmrt/libsrc/drtiws.cc                             |    6 +-
 dcmrt/libsrc/drtlsds.cc                            |    6 +-
 dcmrt/libsrc/drtlsds6.cc                           |    6 +-
 dcmrt/libsrc/drtlsds7.cc                           |    6 +-
 dcmrt/libsrc/drtmacds.cc                           |    6 +-
 dcmrt/libsrc/drtmas.cc                             |   13 +-
 dcmrt/libsrc/drtmdrs.cc                            |    6 +-
 dcmrt/libsrc/drtmls.cc                             |    6 +-
 dcmrt/libsrc/drtmps.cc                             |    6 +-
 dcmrt/libsrc/drtmss.cc                             |    6 +-
 dcmrt/libsrc/drtmucs.cc                            |  112 +-
 dcmrt/libsrc/drtoas.cc                             |    6 +-
 dcmrt/libsrc/drtois.cc                             |   35 +-
 dcmrt/libsrc/drtopis.cc                            |    6 +-
 dcmrt/libsrc/drtos.cc                              |    6 +-
 dcmrt/libsrc/drtpbcs.cc                            |  112 +-
 dcmrt/libsrc/drtpcs.cc                             |  112 +-
 dcmrt/libsrc/drtpcxs.cc                            |    6 +-
 dcmrt/libsrc/{drtrcdrs.cc => drtpdecs.cc}          |  209 +-
 dcmrt/libsrc/drtpfms.cc                            |    6 +-
 dcmrt/libsrc/drtpics.cc                            |  112 +-
 dcmrt/libsrc/drtplan.cc                            |   39 +-
 dcmrt/libsrc/drtporcs.cc                           |  112 +-
 dcmrt/libsrc/drtporis.cc                           |   35 +-
 dcmrt/libsrc/drtppcs.cc                            |  112 +-
 dcmrt/libsrc/drtprsis.cc                           |   35 +-
 dcmrt/libsrc/drtpscs.cc                            |  112 +-
 dcmrt/libsrc/drtpsics.cc                           |  112 +-
 dcmrt/libsrc/drtpss.cc                             |    6 +-
 dcmrt/libsrc/drtpsss.cc                            |    6 +-
 dcmrt/libsrc/drtpvis.cc                            |    6 +-
 dcmrt/libsrc/{drtcims.cc => drtqds.cc}             |  206 +-
 dcmrt/libsrc/drtras.cc                             |    6 +-
 dcmrt/libsrc/drtrbas2.cc                           |    6 +-
 dcmrt/libsrc/drtrbas8.cc                           |    6 +-
 dcmrt/libsrc/drtrbls.cc                            |    6 +-
 dcmrt/libsrc/drtrbos1.cc                           |    6 +-
 dcmrt/libsrc/drtrbos6.cc                           |    6 +-
 dcmrt/libsrc/drtrbos7.cc                           |    6 +-
 dcmrt/libsrc/drtrbs2.cc                            |    6 +-
 dcmrt/libsrc/drtrbs4.cc                            |    6 +-
 dcmrt/libsrc/drtrbs8.cc                            |    6 +-
 dcmrt/libsrc/drtrcdrs.cc                           |    6 +-
 dcmrt/libsrc/drtrcos.cc                            |    6 +-
 dcmrt/libsrc/drtrcps.cc                            |    6 +-
 dcmrt/libsrc/drtrcs.cc                             |   56 +-
 dcmrt/libsrc/drtrdros.cc                           |    6 +-
 dcmrt/libsrc/drtrdrs1.cc                           |    6 +-
 dcmrt/libsrc/drtrdrs6.cc                           |    6 +-
 dcmrt/libsrc/drtrdrs8.cc                           |    6 +-
 dcmrt/libsrc/drtrds.cc                             |    6 +-
 dcmrt/libsrc/drtrecs.cc                            |    6 +-
 dcmrt/libsrc/drtrfgs.cc                            |    6 +-
 dcmrt/libsrc/drtrfors.cc                           |    6 +-
 dcmrt/libsrc/drtrics.cc                            |  112 +-
 dcmrt/libsrc/drtrims.cc                            |    6 +-
 dcmrt/libsrc/drtris.cc                             |    6 +-
 dcmrt/libsrc/drtrlsds.cc                           |    6 +-
 dcmrt/libsrc/drtrmdrs.cc                           |    6 +-
 dcmrt/libsrc/drtrms.cc                             |    6 +-
 dcmrt/libsrc/drtrmss6.cc                           |    6 +-
 dcmrt/libsrc/drtrmss7.cc                           |    6 +-
 dcmrt/libsrc/drtrpcs.cc                            |  112 +-
 dcmrt/libsrc/drtrpis.cc                            |   35 +-
 dcmrt/libsrc/drtrppcs.cc                           |  112 +-
 dcmrt/libsrc/drtrpphs.cc                           |   15 +-
 dcmrt/libsrc/drtrpps.cc                            |    6 +-
 dcmrt/libsrc/drtrppss.cc                           |    6 +-
 dcmrt/libsrc/drtrps.cc                             |    6 +-
 dcmrt/libsrc/drtrris1.cc                           |    6 +-
 dcmrt/libsrc/drtrris6.cc                           |    6 +-
 dcmrt/libsrc/drtrris9.cc                           |    6 +-
 dcmrt/libsrc/drtrrms.cc                            |    6 +-
 dcmrt/libsrc/drtrros.cc                            |    6 +-
 dcmrt/libsrc/drtrrpcs.cc                           |  112 +-
 dcmrt/libsrc/drtrrros.cc                           |    6 +-
 dcmrt/libsrc/drtrrs.cc                             |    6 +-
 dcmrt/libsrc/drtrrshs.cc                           |    6 +-
 dcmrt/libsrc/drtrrtps.cc                           |    6 +-
 dcmrt/libsrc/drtrrtps3.cc                          |    6 +-
 dcmrt/libsrc/drtrrtps4.cc                          |    6 +-
 dcmrt/libsrc/drtrrtps5.cc                          |    6 +-
 dcmrt/libsrc/drtrscs.cc                            |  112 +-
 dcmrt/libsrc/drtrsers.cc                           |    6 +-
 dcmrt/libsrc/drtrses.cc                            |    6 +-
 dcmrt/libsrc/drtrshs.cc                            |    6 +-
 dcmrt/libsrc/drtrshs6.cc                           |    6 +-
 dcmrt/libsrc/drtrshs7.cc                           |    6 +-
 dcmrt/libsrc/drtrsis.cc                            |    6 +-
 dcmrt/libsrc/drtrsns.cc                            |    6 +-
 dcmrt/libsrc/drtrsos.cc                            |    6 +-
 dcmrt/libsrc/drtrsrs.cc                            |    6 +-
 dcmrt/libsrc/drtrss.cc                             |    6 +-
 dcmrt/libsrc/drtrsss.cc                            |    6 +-
 dcmrt/libsrc/drtrsts.cc                            |    6 +-
 dcmrt/libsrc/drtrtrs2.cc                           |    6 +-
 dcmrt/libsrc/drtrtrs4.cc                           |    6 +-
 dcmrt/libsrc/drtrvis.cc                            |    6 +-
 dcmrt/libsrc/drtrws.cc                             |    6 +-
 dcmrt/libsrc/drtrwvms.cc                           |   15 +-
 dcmrt/libsrc/drtscris.cc                           |    6 +-
 dcmrt/libsrc/drtsdcs.cc                            |  112 +-
 dcmrt/libsrc/drtsds.cc                             |    6 +-
 dcmrt/libsrc/drtshds.cc                            |    6 +-
 dcmrt/libsrc/drtsis.cc                             |    6 +-
 dcmrt/libsrc/drtsns.cc                             |    6 +-
 dcmrt/libsrc/drtspccs.cc                           |  112 +-
 dcmrt/libsrc/drtspcs.cc                            |  112 +-
 dcmrt/libsrc/drtss.cc                              |    6 +-
 dcmrt/libsrc/drtssrs.cc                            |    6 +-
 dcmrt/libsrc/drtstrct.cc                           |  106 +-
 dcmrt/libsrc/drttms0.cc                            |    6 +-
 dcmrt/libsrc/drttms9.cc                            |    6 +-
 dcmrt/libsrc/drttreat.cc                           |   39 +-
 dcmrt/libsrc/drttscds.cc                           |    6 +-
 dcmrt/libsrc/drttsibs.cc                           |    6 +-
 dcmrt/libsrc/drttsmds.cc                           |    6 +-
 dcmrt/libsrc/drttts.cc                             |    6 +-
 dcmrt/libsrc/drtvls.cc                             |    6 +-
 dcmrt/libsrc/drtwps.cc                             |    6 +-
 dcmrt/libsrc/drtwrs.cc                             |    6 +-
 dcmrt/libsrc/{drtdirs.cc => drtwrsrs.cc}           |  122 +-
 dcmrt/libsrc/drtws.cc                              |   46 +-
 dcmrt/libsrc/drtxrs.cc                             |    6 +-
 dcmrt/tests/Makefile.dep                           |   47 +-
 dcmseg/CMakeLists.txt                              |    4 +-
 dcmseg/Makefile.in                                 |    2 +-
 dcmseg/apps/CMakeLists.txt                         |    9 +
 dcmseg/include/dcmtk/dcmseg/segdoc.h               |   99 +-
 dcmseg/include/dcmtk/dcmseg/segment.h              |   44 +-
 dcmseg/include/dcmtk/dcmseg/segtypes.h             |   12 +-
 dcmseg/include/dcmtk/dcmseg/segutils.h             |   52 +-
 dcmseg/libsrc/Makefile.dep                         |   12 +
 dcmseg/libsrc/segdoc.cc                            |  256 +-
 dcmseg/libsrc/segment.cc                           |   59 +-
 dcmseg/libsrc/segtypes.cc                          |   17 +-
 dcmseg/libsrc/segutils.cc                          |   96 +-
 dcmseg/tests/CMakeLists.txt                        |    8 +
 {dcmimgle/apps => dcmseg/tests}/Makefile.dep       |  113 +-
 dcmseg/tests/Makefile.in                           |   43 +-
 dcmseg/tests/tests.cc                              |   26 +
 dcmseg/tests/tutils.cc                             |   65 +
 dcmsign/apps/Makefile.dep                          |    5 +-
 dcmsign/libsrc/Makefile.dep                        |   16 +
 dcmsr/apps/Makefile.dep                            |   40 +-
 dcmsr/apps/dsr2html.cc                             |   37 +-
 dcmsr/apps/dsr2xml.cc                              |   34 +-
 dcmsr/apps/dsrdump.cc                              |    5 +-
 dcmsr/docs/dcmsr.dox                               |   45 +-
 dcmsr/docs/dsr2html.man                            |   43 +-
 dcmsr/docs/dsr2xml.man                             |   43 +-
 dcmsr/docs/xml2dsr.man                             |   12 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid100.h             |   15 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h           |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid10013e.h          |   11 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h           |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid10033e.h          |   11 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid11.h              |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid244.h             |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid244e.h            |   11 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid29.h              |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid29e.h             |   11 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h            |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h            |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h            |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid4031e.h           |   11 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid42.h              |   13 +-
 .../dcmtk/dcmsr/cmr/{cid244.h => cid6147.h}        |   49 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h            |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h            |  266 ++
 dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h            |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h            |   13 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h            |   13 +-
 .../dcmtk/dcmsr/cmr/{cid7021.h => cid7464.h}       |   67 +-
 dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h            |  434 +++
 dcmsr/include/dcmtk/dcmsr/cmr/init.h               |    6 +-
 dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h            |   83 +-
 dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h           |  319 +++
 dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h            |   12 +-
 dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h            |   12 +-
 dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h            |  325 +++
 dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h            |  290 ++
 dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h            |  219 +-
 dcmsr/include/dcmtk/dcmsr/codes/dcm.h              |    8 +-
 dcmsr/include/dcmtk/dcmsr/codes/{srt.h => ncit.h}  |   32 +-
 dcmsr/include/dcmtk/dcmsr/codes/srt.h              |   16 +-
 dcmsr/include/dcmtk/dcmsr/codes/ucum.h             |   14 +-
 dcmsr/include/dcmtk/dcmsr/codes/umls.h             |   72 +
 dcmsr/include/dcmtk/dcmsr/dsdefine.h               |   10 +-
 .../include/dcmtk/dcmsr/{dsrrrdcc.h => dsracqcc.h} |   33 +-
 dcmsr/include/dcmtk/dcmsr/dsrbascc.h               |   12 +-
 dcmsr/include/dcmtk/dcmsr/dsrc3dcc.h               |   10 +-
 dcmsr/include/dcmtk/dcmsr/dsrchecc.h               |   18 +-
 dcmsr/include/dcmtk/dcmsr/dsrcodvl.h               |   43 +-
 dcmsr/include/dcmtk/dcmsr/dsrcolcc.h               |   16 +-
 dcmsr/include/dcmtk/dcmsr/dsrcomcc.h               |   12 +-
 dcmsr/include/dcmtk/dcmsr/dsrcomvl.h               |   19 +-
 dcmsr/include/dcmtk/dcmsr/dsrctpl.h                |   47 +-
 dcmsr/include/dcmtk/dcmsr/dsrctxgr.h               |   14 +-
 dcmsr/include/dcmtk/dcmsr/dsrdoc.h                 |   49 +-
 dcmsr/include/dcmtk/dcmsr/dsrdocst.h               |  189 +-
 dcmsr/include/dcmtk/dcmsr/dsrdoctn.h               |   35 +-
 dcmsr/include/dcmtk/dcmsr/dsrdoctr.h               |   32 +-
 dcmsr/include/dcmtk/dcmsr/dsrenhcc.h               |   10 +-
 dcmsr/include/dcmtk/dcmsr/dsrimgvl.h               |   49 +-
 dcmsr/include/dcmtk/dcmsr/dsrimpcc.h               |   18 +-
 dcmsr/include/dcmtk/dcmsr/dsriodcc.h               |   12 +-
 dcmsr/include/dcmtk/dcmsr/dsrkeycc.h               |   18 +-
 dcmsr/include/dcmtk/dcmsr/dsrmaccc.h               |   18 +-
 dcmsr/include/dcmtk/dcmsr/dsrmamcc.h               |   19 +-
 dcmsr/include/dcmtk/dcmsr/dsrnumvl.h               |   60 +-
 dcmsr/include/dcmtk/dcmsr/dsrposcn.h               |  152 ++
 dcmsr/include/dcmtk/dcmsr/dsrprocc.h               |   18 +-
 dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h               |   14 +-
 dcmsr/include/dcmtk/dcmsr/dsrrtpl.h                |   27 +-
 dcmsr/include/dcmtk/dcmsr/dsrscovl.h               |    4 +-
 dcmsr/include/dcmtk/dcmsr/dsrsoprf.h               |   11 +-
 dcmsr/include/dcmtk/dcmsr/dsrspecc.h               |   18 +-
 dcmsr/include/dcmtk/dcmsr/dsrstpl.h                |   27 +-
 dcmsr/include/dcmtk/dcmsr/dsrtncsr.h               |  194 +-
 dcmsr/include/dcmtk/dcmsr/dsrtpltn.h               |  248 ++
 dcmsr/include/dcmtk/dcmsr/dsrtree.h                |  118 +-
 dcmsr/include/dcmtk/dcmsr/dsrtypes.h               |   37 +-
 dcmsr/include/dcmtk/dcmsr/dsrwavvl.h               |    8 +-
 dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h               |   20 +-
 dcmsr/libcmr/CMakeLists.txt                        |    2 +-
 dcmsr/libcmr/Makefile.dep                          |  967 ++++++-
 dcmsr/libcmr/Makefile.in                           |    7 +-
 dcmsr/libcmr/cid100.cc                             |    6 +-
 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/{cid244.cc => cid6147.cc}             |   56 +-
 dcmsr/libcmr/cid7021.cc                            |    4 +-
 dcmsr/libcmr/cid7181.cc                            |  217 ++
 dcmsr/libcmr/cid7445.cc                            |    4 +-
 dcmsr/libcmr/cid7452.cc                            |    4 +-
 dcmsr/libcmr/cid7453.cc                            |    4 +-
 dcmsr/libcmr/{cid7021.cc => cid7464.cc}            |   65 +-
 dcmsr/libcmr/cid7469.cc                            |  301 +++
 dcmsr/libcmr/init.cc                               |   14 +-
 dcmsr/libcmr/srnumvl.cc                            |   49 +-
 dcmsr/libcmr/tid1001.cc                            |   64 +-
 dcmsr/libcmr/tid1204.cc                            |   20 +-
 dcmsr/libcmr/tid1411.cc                            |  603 +++++
 dcmsr/libcmr/tid1500.cc                            |  373 +++
 dcmsr/libcmr/tid1600.cc                            |  593 ++++-
 dcmsr/libsrc/CMakeLists.txt                        |    2 +-
 dcmsr/libsrc/Makefile.dep                          |  594 ++++-
 dcmsr/libsrc/Makefile.in                           |    8 +-
 dcmsr/libsrc/dsracqcc.cc                           |  109 +
 dcmsr/libsrc/dsrbascc.cc                           |   11 +-
 dcmsr/libsrc/dsrc3dcc.cc                           |    9 +-
 dcmsr/libsrc/dsrchecc.cc                           |    9 +-
 dcmsr/libsrc/dsrcodvl.cc                           |   40 +-
 dcmsr/libsrc/dsrcolcc.cc                           |    9 +-
 dcmsr/libsrc/dsrcomcc.cc                           |   13 +-
 dcmsr/libsrc/dsrcomvl.cc                           |   15 +-
 dcmsr/libsrc/dsrcsidl.cc                           |    8 +-
 dcmsr/libsrc/dsrctpl.cc                            |   64 +-
 dcmsr/libsrc/dsrctxgr.cc                           |    8 +-
 dcmsr/libsrc/dsrdoc.cc                             |   57 +-
 dcmsr/libsrc/dsrdocst.cc                           |  602 +++--
 dcmsr/libsrc/dsrdoctn.cc                           |  394 +--
 dcmsr/libsrc/dsrdoctr.cc                           |  157 +-
 dcmsr/libsrc/dsrenhcc.cc                           |   11 +-
 dcmsr/libsrc/dsrimgfr.cc                           |   11 +-
 dcmsr/libsrc/dsrimgse.cc                           |   11 +-
 dcmsr/libsrc/dsrimgvl.cc                           |   40 +-
 dcmsr/libsrc/dsrimpcc.cc                           |   11 +-
 dcmsr/libsrc/dsrkeycc.cc                           |    9 +-
 dcmsr/libsrc/dsrmaccc.cc                           |    9 +-
 dcmsr/libsrc/dsrmamcc.cc                           |    9 +-
 dcmsr/libsrc/dsrnumvl.cc                           |   51 +-
 dcmsr/libsrc/dsrposcn.cc                           |  122 +
 dcmsr/libsrc/dsrprocc.cc                           |   11 +-
 dcmsr/libsrc/dsrrrdcc.cc                           |    7 +-
 dcmsr/libsrc/dsrrtpl.cc                            |    4 +-
 dcmsr/libsrc/dsrsc3gr.cc                           |   11 +-
 dcmsr/libsrc/dsrsc3vl.cc                           |   24 +-
 dcmsr/libsrc/dsrscogr.cc                           |   11 +-
 dcmsr/libsrc/dsrscovl.cc                           |   20 +-
 dcmsr/libsrc/dsrsoprf.cc                           |   15 +
 dcmsr/libsrc/dsrspecc.cc                           |    9 +-
 dcmsr/libsrc/dsrstpl.cc                            |    2 +
 dcmsr/libsrc/dsrtcodt.cc                           |   11 +-
 dcmsr/libsrc/dsrtcosp.cc                           |   11 +-
 dcmsr/libsrc/dsrtcoto.cc                           |   10 +-
 dcmsr/libsrc/dsrtcovl.cc                           |   14 +-
 dcmsr/libsrc/dsrtncsr.cc                           |   29 -
 dcmsr/libsrc/dsrtpltn.cc                           |  237 ++
 dcmsr/libsrc/dsrtypes.cc                           |   98 +-
 dcmsr/libsrc/dsrwavch.cc                           |   11 +-
 dcmsr/libsrc/dsrwavvl.cc                           |    4 +-
 dcmsr/libsrc/dsrxrdcc.cc                           |   11 +-
 dcmsr/tests/Makefile.dep                           |  107 +-
 dcmsr/tests/mkreport.cc                            |    4 +-
 dcmsr/tests/tests.cc                               |   14 +-
 dcmsr/tests/tsrcmr.cc                              |  273 +-
 dcmsr/tests/tsrcodvl.cc                            |   26 +-
 dcmsr/tests/tsrdoc.cc                              |    4 +-
 dcmsr/tests/tsrdoctr.cc                            |   15 +-
 dcmsr/tests/tsrnumvl.cc                            |   22 +-
 dcmsr/tests/tsrtpl.cc                              |  188 +-
 dcmsr/tests/tsrtree.cc                             |   67 +-
 dcmtls/libsrc/Makefile.dep                         |   33 +-
 dcmtls/libsrc/tlstrans.cc                          |    5 +
 dcmwlm/apps/Makefile.dep                           |    4 +
 dcmwlm/libsrc/Makefile.dep                         |    9 +
 dcmwlm/tests/Makefile.dep                          |    2 +
 docs/CHANGES.361                                   | 2775 +++++++++++++++++++-
 doxygen/htmldocs.cfg                               |    2 +-
 doxygen/manpages.cfg                               |    2 +-
 doxygen/manpages/man1/dcm2pdf.1                    |    2 +-
 doxygen/manpages/man1/dcm2pnm.1                    |    2 +-
 doxygen/manpages/man1/dcm2xml.1                    |    8 +-
 doxygen/manpages/man1/dcmcjpeg.1                   |    2 +-
 doxygen/manpages/man1/dcmcjpls.1                   |    2 +-
 doxygen/manpages/man1/dcmconv.1                    |    2 +-
 doxygen/manpages/man1/dcmcrle.1                    |    2 +-
 doxygen/manpages/man1/dcmdjpeg.1                   |    2 +-
 doxygen/manpages/man1/dcmdjpls.1                   |    2 +-
 doxygen/manpages/man1/dcmdrle.1                    |    2 +-
 doxygen/manpages/man1/dcmdspfn.1                   |    2 +-
 doxygen/manpages/man1/dcmdump.1                    |    2 +-
 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                   |   22 +-
 doxygen/manpages/man1/dcmmklut.1                   |    2 +-
 doxygen/manpages/man1/dcmodify.1                   |    2 +-
 doxygen/manpages/man1/dcmp2pgm.1                   |    2 +-
 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                   |    7 +-
 doxygen/manpages/man1/dcmqrti.1                    |    2 +-
 doxygen/manpages/man1/dcmquant.1                   |    2 +-
 doxygen/manpages/man1/dcmrecv.1                    |    2 +-
 doxygen/manpages/man1/dcmscale.1                   |    2 +-
 doxygen/manpages/man1/dcmsend.1                    |    2 +-
 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                   |   38 +-
 doxygen/manpages/man1/dsr2xml.1                    |   38 +-
 doxygen/manpages/man1/dsrdump.1                    |    2 +-
 doxygen/manpages/man1/dump2dcm.1                   |    8 +-
 doxygen/manpages/man1/echoscu.1                    |    2 +-
 doxygen/manpages/man1/findscu.1                    |    2 +-
 doxygen/manpages/man1/getscu.1                     |    2 +-
 doxygen/manpages/man1/img2dcm.1                    |    2 +-
 doxygen/manpages/man1/movescu.1                    |    2 +-
 doxygen/manpages/man1/pdf2dcm.1                    |    2 +-
 doxygen/manpages/man1/storescp.1                   |    7 +-
 doxygen/manpages/man1/storescu.1                   |    2 +-
 doxygen/manpages/man1/termscu.1                    |    2 +-
 doxygen/manpages/man1/wlmscpfs.1                   |    2 +-
 doxygen/manpages/man1/xml2dcm.1                    |    2 +-
 doxygen/manpages/man1/xml2dsr.1                    |   12 +-
 oflog/libsrc/Makefile.dep                          |    4 +
 ofstd/include/dcmtk/ofstd/ofchrenc.h               |   16 +-
 ofstd/include/dcmtk/ofstd/ofcmdln.h                |  195 +-
 ofstd/include/dcmtk/ofstd/offile.h                 |    6 +-
 ofstd/include/dcmtk/ofstd/ofmath.h                 |   89 +
 ofstd/include/dcmtk/ofstd/ofstack.h                |   77 +-
 ofstd/include/dcmtk/ofstd/ofstd.h                  |  108 +-
 ofstd/include/dcmtk/ofstd/oftempf.h                |    4 +-
 ofstd/libsrc/Makefile.dep                          |   55 +-
 ofstd/libsrc/ofchrenc.cc                           |   25 +-
 ofstd/libsrc/ofcmdln.cc                            |    4 +-
 ofstd/libsrc/offile.cc                             |    6 +-
 ofstd/libsrc/ofmath.cc                             |   11 +-
 ofstd/libsrc/ofstd.cc                              |    9 +-
 ofstd/libsrc/ofuuid.cc                             |   12 +-
 ofstd/libsrc/ofxml.cc                              |    8 +-
 ofstd/tests/Makefile.dep                           |   95 +-
 ofstd/tests/taddsub.cc                             |   63 +
 ofstd/tests/tests.cc                               |    1 +
 ofstd/tests/tlimits.cc                             |    9 +-
 ofstd/tests/tofstd.cc                              |   37 +
 871 files changed, 28604 insertions(+), 5873 deletions(-)

diff --git a/CMake/dcmtkPrepare.cmake b/CMake/dcmtkPrepare.cmake
index 54ebdb5..2ddd7b2 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.1.1)
-  SET(CMAKE_BACKWARDS_COMPATIBILITY 3.1.1 CACHE STRING "Latest version of CMake when this project was released." FORCE)
-ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.1.1)
+IF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.3.2)
+  SET(CMAKE_BACKWARDS_COMPATIBILITY 3.3.2 CACHE STRING "Latest version of CMake when this project was released." FORCE)
+ENDIF(CMAKE_BACKWARDS_COMPATIBILITY GREATER 3.3.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 7)
+SET(DCMTK_ABI_VERSION 8)
 
 # Package "release" settings (some are currently unused and, therefore, disabled)
 SET(DCMTK_PACKAGE_NAME "dcmtk")
@@ -212,7 +212,7 @@ IF(COMMAND CMAKE_POLICY)
 ENDIF(COMMAND CMAKE_POLICY)
 
 # pass optional build date to compiler
-ADD_DEFINITIONS(-DDCMTK_BUILD_DATE=\\\"2015-09-24\\\")
+ADD_DEFINITIONS(-DDCMTK_BUILD_DATE=\\\"2016-02-16\\\")
 
 # 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..a68bd74 100644
--- a/CMake/osconfig.h.in
+++ b/CMake/osconfig.h.in
@@ -1024,6 +1024,11 @@ typedef unsigned long ulong;
     #pragma warning( disable : 4996 )  /* disable warnings about "deprecated" C runtime functions */
     #pragma warning( disable : 4351 )  /* disable warnings about "new behavior" when initializing the elements of an array */
 #endif /* _MSC_VER >= 1400 */
+/* Disable min() and max() macros pre-defined by Microsoft. We define our own
+ * version in oflimits.h and on Windows that could result in name clashes in
+ * Visual Studio.
+ */
+#define NOMINMAX
 #endif /* _MSC_VER */
 
 /* Define if your system defines ios::nocreate in iostream.h */
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c323425..3a4c596 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -59,6 +59,7 @@ INCLUDE(CMake/dcmtkAfterModules.cmake NO_POLICY_SCOPE)
 
 # Install global headers
 INSTALL(FILES ${DCMTK_BINARY_DIR}/config/include/dcmtk/config/osconfig.h
+              ${DCMTK_BINARY_DIR}/config/include/dcmtk/config/arith.h
         DESTINATION ${DCMTK_INSTALL_INCDIR}/dcmtk/config
         COMPONENT include)
 
diff --git a/COPYRIGHT b/COPYRIGHT
index 86ac1d2..de2a236 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -5,7 +5,7 @@ Unless otherwise specified, the DCMTK software package has the following
 copyright:
 
 /*
- *  Copyright (C) 1994-2015, OFFIS e.V.
+ *  Copyright (C) 1994-2016, OFFIS e.V.
  *  All rights reserved.
  *
  *  This software and supporting documentation were developed by
@@ -478,7 +478,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) 2013-2014, J. Riesmeier, Oldenburg, Germany
+Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -511,7 +511,7 @@ Parts of the dcmsr sub-package are covered by the following copyright:
 
 ---------------------------------------------------------------------------
 
-Copyright (c) 2015, 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
@@ -579,3 +579,37 @@ covered by the following copyright:
 # POSSIBILITY OF SUCH DAMAGE.
 
 ---------------------------------------------------------------------------
+
+The cielabutil source code (class IODCLabUtil) is adapted from Pascal Getreuer's
+package for converting color representations
+
+  http://www.getreuer.info/home/colorspace
+
+which comes with the following original copyright:
+
+---------------------------------------------------------------------------
+
+Copyright © 2005–2010, Pascal Getreuer
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+    Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+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.
+
+---------------------------------------------------------------------------
diff --git a/VERSION b/VERSION
index 3ed5517..1413f36 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.6.1_20150924
+3.6.1_20160216
diff --git a/config/Makefile.def.in b/config/Makefile.def.in
index a6ba698..a60168c 100644
--- a/config/Makefile.def.in
+++ b/config/Makefile.def.in
@@ -52,7 +52,7 @@ DEBUG = @DEBUG@
 #
 
 # We want the old behavior of OFString(NULL) for now, no crashes.
-GLOBALDEFS = @DEFS@ -DDCMTK_BUILD_DATE=\"2015-09-24\" -DUSE_NULL_SAFE_OFSTRING -DDCMTK_BUILD_IN_PROGRESS
+GLOBALDEFS = @DEFS@ -DDCMTK_BUILD_DATE=\"2016-02-16\" -DUSE_NULL_SAFE_OFSTRING -DDCMTK_BUILD_IN_PROGRESS
 
 #
 # ARCH defines special machine archtecture compiler settings
diff --git a/config/Makefile.in b/config/Makefile.in
index 9bd8f39..429aa04 100644
--- a/config/Makefile.in
+++ b/config/Makefile.in
@@ -41,6 +41,7 @@ check-exhaustive: tests-all
 include-install:
 	./mkinstalldirs $(DESTDIR)$(includedir)/dcmtk/config
 	$(INSTALL_DATA) include/dcmtk/config/osconfig.h $(DESTDIR)$(includedir)/dcmtk/config
+	$(INSTALL_DATA) include/dcmtk/config/arith.h $(DESTDIR)$(includedir)/dcmtk/config
 
 docs-install:
 	./mkinstalldirs $(DESTDIR)$(docdir)
diff --git a/config/arith.cc b/config/arith.cc
index 54c6bfe..948766d 100644
--- a/config/arith.cc
+++ b/config/arith.cc
@@ -207,7 +207,7 @@ static int test_inf( STD_NAMESPACE ostream& out, const char* name )
     const int has_inf = print_flag
     (
         out,
-        OFStandard::isinf(t),
+        OFMath::isinf(t),
         "HAS_INFINITY",
         name,
         7
@@ -236,7 +236,7 @@ static int test_qnan( STD_NAMESPACE ostream& out, const char* name )
     const int has_qnan = print_flag
     (
         out,
-        OFStandard::isnan( t ),
+        OFMath::isnan( t ),
         "HAS_QUIET_NAN",
         name,
         7
@@ -336,7 +336,7 @@ static int test_snan( STD_NAMESPACE ostream& out, const char* name )
 {
     // Create signaling NaNs and test if they really are signaling NaNs
     const T& t = guess<T>::snan();
-    int flag = OFStandard::isnan( t ) && test_trap( &provoke_snan<T> );
+    int flag = OFMath::isnan( t ) && test_trap( &provoke_snan<T> );
     // Disable floating point exceptions that have been enabled for the test,
     // Windows and Unix version.
 #ifdef HAVE_WINDOWS_H
diff --git a/config/configure b/config/configure
index a5d0bd5..158cc87 100755
--- a/config/configure
+++ b/config/configure
@@ -13620,6 +13620,9 @@ if test "${enable_builtin_dict+set}" = set; then :
     { $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
+
     ;;
   *)
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -14948,7 +14951,7 @@ $as_echo "#define HAVE_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE 1" >>confdefs.h
 $as_echo "no" >&6; }
     fi
 
-o
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct pwd contains the field pw_gecos" >&5
 $as_echo_n "checking whether struct pwd contains the field pw_gecos... " >&6; }
diff --git a/config/configure.in b/config/configure.in
index 84665ab..d2c9c16 100644
--- a/config/configure.in
+++ b/config/configure.in
@@ -957,7 +957,7 @@ AC_ARG_ENABLE(builtin-dict,
     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 for loading external dictionary from default path.])
+    AC_DEFINE(ENABLE_BUILTIN_DICTIONARY, , [Define if we are compiling with built-in (compiled-in) dictionary enabled.])
     ;;
   *)
     AC_MSG_RESULT(no)
@@ -1312,7 +1312,7 @@ AC_CHECK_ATTRIBUTE_ALIGNED([HAVE_ATTRIBUTE_ALIGNED])
 AC_CHECK_ATTRIBUTE_ALIGNED_SUPPORTS_TEMPLATES([ATTRIBUTE_ALIGNED_SUPPORTS_TEMPLATES])
 AC_CHECK_ALIGNAS_SUPPORTS_TYPEDEFS([ALIGNAS_SUPPORTS_TYPEDEFS])
 AC_CHECK_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE([HAVE_DEFAULT_CONSTRUCTOR_DETECTION_VIA_SFINAE])
-o
+
 dnl -------------------------------------------------------
 dnl Test if passwd has the pw_gecos field
 dnl -------------------------------------------------------
diff --git a/config/docs/macros.txt b/config/docs/macros.txt
index 02090de..bad84b1 100644
--- a/config/docs/macros.txt
+++ b/config/docs/macros.txt
@@ -164,7 +164,7 @@ DOXYGEN
 
 ENABLE_BUILTIN_DICTIONARY
   Affected: dcmdata
-  Type of modification: Enables or disables population of builtin dictionary 
+  Type of modification: Activates feature
   Explanation: If enabled, DCMTK's global builtin dictionary, that is always
     loaded on startup, is populated with known DICOM tags.  Otherwise, the
     builtin dictionary stays empty.  For more further information about
diff --git a/config/include/dcmtk/config/osconfig.h.in b/config/include/dcmtk/config/osconfig.h.in
index 0b7399b..bc3aeb6 100644
--- a/config/include/dcmtk/config/osconfig.h.in
+++ b/config/include/dcmtk/config/osconfig.h.in
@@ -58,13 +58,14 @@
 /* Define the default directory where support data files reside. */
 #undef DEFAULT_SUPPORT_DATA_DIR
 
+/* Define if we are compiling with built-in (compiled-in) dictionary enabled.
+   */
+#undef ENABLE_BUILTIN_DICTIONARY
+
 /* Define if we are compiling for loading external dictionary from default
    path. */
 #undef ENABLE_EXTERNAL_DICTIONARY
 
-/* Define if we are compiling with built-in dictionary */
-#undef ENABLE_BUILTIN_DICTIONARY
-
 /* Define if we are compiling for enabling external private tag dictionary. */
 #undef ENABLE_PRIVATE_TAGS
 
diff --git a/dcmdata/apps/Makefile.dep b/dcmdata/apps/Makefile.dep
index b2818e5..6f89b65 100644
--- a/dcmdata/apps/Makefile.dep
+++ b/dcmdata/apps/Makefile.dep
@@ -38,6 +38,8 @@ dcm2pdf.o: dcm2pdf.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -76,7 +78,8 @@ dcm2pdf.o: dcm2pdf.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcistrmz.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcistrmz.h
 dcm2xml.o: dcm2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -117,6 +120,8 @@ dcm2xml.o: dcm2xml.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -155,7 +160,7 @@ dcm2xml.o: dcm2xml.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
 dcmconv.o: dcmconv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -197,6 +202,8 @@ dcmconv.o: dcmconv.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -235,8 +242,8 @@ dcmconv.o: dcmconv.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcostrmz.h \
- ../include/dcmtk/dcmdata/dcistrmz.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
 dcmcrle.o: dcmcrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -278,6 +285,8 @@ dcmcrle.o: dcmcrle.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -316,7 +325,8 @@ dcmcrle.o: dcmcrle.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcrleerg.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcrleerg.h
 dcmdrle.o: dcmdrle.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -357,6 +367,8 @@ dcmdrle.o: dcmdrle.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -395,7 +407,8 @@ dcmdrle.o: dcmdrle.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcrledrg.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcrledrg.h
 dcmdump.o: dcmdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -436,6 +449,8 @@ dcmdump.o: dcmdump.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -474,7 +489,8 @@ dcmdump.o: dcmdump.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcistrmz.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcistrmz.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
 dcmftest.o: dcmftest.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -490,6 +506,8 @@ dcmftest.o: dcmftest.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -564,6 +582,8 @@ dcmgpdir.o: dcmgpdir.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -602,7 +622,8 @@ dcmgpdir.o: dcmgpdir.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcddirif.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcddirif.h
 dcmodify.o: dcmodify.cc ../../config/include/dcmtk/config/osconfig.h \
  mdfconen.h ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -643,6 +664,8 @@ dcmodify.o: dcmodify.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcpath.h ../include/dcmtk/dcmdata/dcdatset.h \
@@ -662,6 +685,8 @@ dump2dcm.o: dump2dcm.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -728,8 +753,8 @@ dump2dcm.o: dump2dcm.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcpxitem.h \
- ../include/dcmtk/dcmdata/dcostrmz.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcostrmz.h
 img2dcm.o: img2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/cmdlnarg.h ../include/dcmtk/dcmdata/dcdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -748,6 +773,8 @@ img2dcm.o: img2dcm.cc ../../config/include/dcmtk/config/osconfig.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/dcfilefo.h \
  ../include/dcmtk/dcmdata/dcsequen.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
@@ -832,6 +859,8 @@ mdfconen.o: mdfconen.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h mdfdsman.h \
  ../include/dcmtk/dcmdata/dctagkey.h ../include/dcmtk/dcmdata/dctk.h \
@@ -870,7 +899,8 @@ mdfconen.o: mdfconen.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcistrmz.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcistrmz.h
 mdfdsman.o: mdfdsman.cc ../../config/include/dcmtk/config/osconfig.h \
  mdfdsman.h ../../ofstd/include/dcmtk/ofstd/ofcond.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -912,6 +942,8 @@ mdfdsman.o: mdfdsman.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dcswap.h \
@@ -949,8 +981,8 @@ mdfdsman.o: mdfdsman.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcpath.h \
- ../include/dcmtk/dcmdata/dcistrmf.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpath.h ../include/dcmtk/dcmdata/dcistrmf.h
 pdf2dcm.o: pdf2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -991,6 +1023,8 @@ pdf2dcm.o: pdf2dcm.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1029,7 +1063,8 @@ pdf2dcm.o: pdf2dcm.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dccodec.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dccodec.h
 xml2dcm.o: xml2dcm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dctk.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -1070,6 +1105,8 @@ xml2dcm.o: xml2dcm.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1108,5 +1145,5 @@ xml2dcm.o: xml2dcm.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcpxitem.h \
- ../include/dcmtk/dcmdata/dcostrmz.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcostrmz.h
diff --git a/dcmdata/apps/dcm2xml.cc b/dcmdata/apps/dcm2xml.cc
index 171e254..66aa23c 100644
--- a/dcmdata/apps/dcm2xml.cc
+++ b/dcmdata/apps/dcm2xml.cc
@@ -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
@@ -111,9 +111,9 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                 {
                     /* the dataset contains non-ASCII characters that really should not be there */
                     OFLOG_ERROR(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": SpecificCharacterSet (0008,0005) "
-                        << "element absent (on the main dataset level) but extended characters used in file: " << ifname);
+                        << "element absent (on the main data set level) but extended characters used in file: " << ifname);
                     OFLOG_DEBUG(dcm2xmlLogger, "use option --charset-assume to manually specify an appropriate character set");
-                    return EC_IllegalCall;
+                    return makeOFCondition(OFM_dcmdata, EC_CODE_CannotSelectCharacterSet, OF_error, "Missing Specific Character Set");;
                 } else {
                     OFString sopClass;
                     csetString = defaultCharset;
@@ -141,7 +141,7 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                     else {
                         OFLOG_FATAL(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": Character set '"
                             << defaultCharset << "' specified with option --charset-assume not supported");
-                        return EC_IllegalCall;
+                        return makeOFCondition(OFM_dcmdata, EC_CODE_CannotSelectCharacterSet, OF_error, "Cannot select character set");
                     }
                     /* check whether this file is a DICOMDIR */
                     if (dfile->getMetaInfo()->findAndGetOFString(DCM_MediaStorageSOPClassUID, sopClass).bad() ||
@@ -158,7 +158,7 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                 {
                     /* use "debug" instead of "warn" in order to avoid too much output in default mode */
                     OFLOG_DEBUG(dcm2xmlLogger, "ignoring character set '" << defaultCharset
-                        << "' specified with option --charset-assume since it is not needed for this dataset");
+                        << "' specified with option --charset-assume since it is not needed for this data set");
                 }
                 /* by default, we use UTF-8 encoding */
                 encString = "UTF-8";
@@ -267,7 +267,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-require",    "+Cr",    "require declaration of extended charset (def.)");
         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 and UT)");
+        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
         cmd.addOption("--convert-to-utf8",    "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
@@ -547,16 +547,24 @@ int main(int argc, char *argv[])
                     if (stream.good())
                     {
                         /* write content in XML format to file */
-                        if (writeFile(stream, ifname, &dfile, opt_readMode, opt_loadIntoMemory, opt_dtdFilename,
-                                      opt_defaultCharset, opt_writeFlags, opt_checkAllStrings).bad())
+                        status = writeFile(stream, ifname, &dfile, opt_readMode, opt_loadIntoMemory, opt_dtdFilename,
+                            opt_defaultCharset, opt_writeFlags, opt_checkAllStrings);
+                        if (status.bad())
+                        {
+                            OFLOG_ERROR(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": error (" << status.text() << ") writing file: "<< ofname);
                             result = 2;
+                        }
                     } else
                         result = 1;
                 } else {
                     /* write content in XML format to standard output */
-                    if (writeFile(COUT, ifname, &dfile, opt_readMode, opt_loadIntoMemory, opt_dtdFilename,
-                                  opt_defaultCharset, opt_writeFlags, opt_checkAllStrings).bad())
+                    status = writeFile(COUT, ifname, &dfile, opt_readMode, opt_loadIntoMemory, opt_dtdFilename,
+                        opt_defaultCharset, opt_writeFlags, opt_checkAllStrings);
+                    if (status.bad())
+                    {
+                        OFLOG_ERROR(dcm2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": error (" << status.text() << ") writing to standard output");
                         result = 3;
+                    }
                 }
             }
         } else {
diff --git a/dcmdata/apps/dcmdump.cc b/dcmdata/apps/dcmdump.cc
index 1c12172..a407417 100644
--- a/dcmdata/apps/dcmdump.cc
+++ b/dcmdata/apps/dcmdump.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
@@ -759,6 +759,9 @@ static int dumpFile(STD_NAMESPACE ostream &out,
             if (stopOnErrors) return result;
         }
     }
+#else
+    // avoid compiler warning on unused variable
+    (void)convertToUTF8;
 #endif
 
     size_t pixelCounter = 0;
diff --git a/dcmdata/apps/dcmgpdir.cc b/dcmdata/apps/dcmgpdir.cc
index 40cba12..f1d36ce 100644
--- a/dcmdata/apps/dcmgpdir.cc
+++ b/dcmdata/apps/dcmgpdir.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
@@ -29,6 +29,9 @@
  *  - General Purpose BD Interchange with MPEG2 MP at HL (STD-GEN-BD-MPEG2-MPHL)
  *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP at Level4.1 (STD-GEN-BD-MPEG4-HPLV41)
  *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible HiP at Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
+ *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+ *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+ *  - General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2 (STD-GEN-BD-MPEG4-SHPLV42)
  *  - General Purpose USB and Flash Memory Interchange with JPEG (STD-GEN-USB/MMC/CF/SD-JPEG)
  *  - General Purpose USB and Flash Memory Interchange with JPEG 2000 (STD-GEN-USB/MMC/CF/SD-J2K)
  *  - General Purpose MIME Interchange (STD-GEN-MIME)
@@ -198,6 +201,9 @@ DCMTK_MAIN_FUNCTION
         cmd.addOption("--general-bd-mpeg2-mphl", "-Pbh",   "General Purpose BD Interchange with MPEG2\nMP at HL (STD-GEN-BD-MPEG2-MPHL)");
         cmd.addOption("--general-bd-mpeg4-hp",   "-Pba",   "General Purpose BD Interchange with MPEG-4\nAVC/H.264 HiP at Level4.1\n(STD-GEN-BD-MPEG4-HPLV41)");
         cmd.addOption("--general-bd-mpeg4-hpbd", "-Pbb",   "General Purpose BD Interchange with MPEG-4\nAVC/H.264 BD-Compatible HiP at Level4.1\n(STD-GEN-BD-MPEG4-HPLV41BD)");
+        cmd.addOption("--general-bd-mpeg4-hp2d",           "General Purpose BD Interchange with MPEG-4\nAVC/H.264 HiP at Level4.2 for 2D video\n(STD-GEN-BD-MPEG4-HPLV42-2D)");
+        cmd.addOption("--general-bd-mpeg4-hp3d",           "General Purpose BD Interchange with MPEG-4\nAVC/H.264 HiP at Level4.2 for 3D video\n(STD-GEN-BD-MPEG4-HPLV42-3D)");
+        cmd.addOption("--general-bd-mpeg4-hpst",           "General Purpose BD Interchange with MPEG-4\nAVC/H.264 Stereo HiP at Level4.2\n(STD-GEN-BD-MPEG4-SHPLV42)");
         cmd.addOption("--usb-and-flash-jpeg",    "-Pfl",   "General Purpose USB/Flash Memory Interchange\nwith JPEG (STD-GEN-USB/MMC/CF/SD-JPEG)");
         cmd.addOption("--usb-and-flash-j2k",     "-Pf2",   "General Purpose USB/Flash Memory Interchange\nwith JPEG 2000 (STD-GEN-USB/MMC/CF/SD-J2K)");
         cmd.addOption("--general-mime",          "-Pmi",   "General Purpose MIME Interchange\n(STD-GEN-MIME)");
@@ -380,6 +386,12 @@ DCMTK_MAIN_FUNCTION
             opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4HPatLV41;
         if (cmd.findOption("--general-bd-mpeg4-hpbd"))
             opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4HPatLV41BD;
+        if (cmd.findOption("--general-bd-mpeg4-hp2d"))
+            opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4HPatLV42_2D;
+        if (cmd.findOption("--general-bd-mpeg4-hp3d"))
+            opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4HPatLV42_3D;
+        if (cmd.findOption("--general-bd-mpeg4-hpst"))
+            opt_profile = DicomDirInterface::AP_GeneralPurposeBDMPEG4StereoHPatLV42;
         if (cmd.findOption("--usb-and-flash-jpeg"))
             opt_profile = DicomDirInterface::AP_USBandFlashJPEG;
         if (cmd.findOption("--usb-and-flash-j2k"))
diff --git a/dcmdata/apps/dump2dcm.cc b/dcmdata/apps/dump2dcm.cc
index 1640808..5a212cf 100644
--- a/dcmdata/apps/dump2dcm.cc
+++ b/dcmdata/apps/dump2dcm.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
@@ -34,8 +34,8 @@
  *        two characters.  If the VR can determined from the tag, this part
  *        of a line is optional.
  * Value: There are several rules for writing values:
- *        1. US, SS, SL, UL, FD, FL are written as decimal strings that can
- *           be read by scanf().
+ *        1. US, SS, SL, UL, FD, FL, OD, OF and OL are written as decimal
+ *           strings that can be read by scanf().
  *        2. AT is written as '(gggg,eeee)' with additional spaces stripped
  *           off automatically and gggg and eeee being decimal strings that
  *           can be read by scanf().
diff --git a/dcmdata/apps/mdfdsman.h b/dcmdata/apps/mdfdsman.h
index 7c5214f..4303402 100644
--- a/dcmdata/apps/mdfdsman.h
+++ b/dcmdata/apps/mdfdsman.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2010, 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
@@ -36,7 +36,7 @@ class DcmElement;
 
 
 /** This class encapsulates data structures and operations for modifying
- *  Dicom files. Therefore it allows the process of load->modify->save to
+ *  DICOM files. Therefore it allows the process of load->modify->save to
  *  provide this service.
  */
 class MdfDatasetManager
@@ -56,7 +56,7 @@ public:
         @param readMode read file with or without metaheader. Default=autodetect
         @param xfer try to read with this transfer syntax. Default=autodetect
         @param createIfNecessary If true, the file is created if it does not exist
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition loadFile(const char *file_name,
                          const E_FileReadMode readMode = ERM_autoDetect,
@@ -76,7 +76,7 @@ public:
      *  @param no_reservation_checks if true, any missing private reservation
      *                               tags are ignored when inserting private
      *                               tags. Only makes sense w/o only_modify
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition modifyOrInsertPath(OFString tag_path,
                                    const OFString &value,
@@ -98,7 +98,7 @@ public:
      *  @param no_reservation_checks if true, any missing private reservation
      *                               tags are ignored when inserting private
      *                               tags. Only makes sense w/o only_modify
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition modifyOrInsertFromFile(OFString tag_path,
                                        const OFString &filename,
@@ -110,13 +110,13 @@ public:
     /** Modifies all matching tags in dataset to a new value
      *  @param tag_path denotes, which tag to modify
      *  @param value denotes new value of tag
-     *  @param update_metaheader if true, metaheader uids are updated,
-     *         if related dataset uids are changed, (default=true)
+     *  @param update_metaheader if true, metaheader UIDs are updated,
+     *         if related dataset UIDs are changed, (default=true)
      *  @param count returns holds the number of tags, that were affected
      *  @param ignore_missing_tags if true, tags that could not be found
      *                             while modifying (only_modify must be true)
      *                             are handled as non-errors
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition modifyAllTags(OFString tag_path,
                               const OFString &value,
@@ -131,13 +131,13 @@ public:
      *  @param ignore_missing_tags if true, tags that could not be found
      *                             while modifying (only_modify must be true)
      *                             are handled as non-errors
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition deleteTag(OFString tag_path,
                           const OFBool all_tags,
                           const OFBool ignore_missing_tags);
 
-    /** Deletes all private data from file, ie. all tags having
+    /** Deletes all private data from file,\ i.e. all tags having
      *  odd group numbers.
      *  @return EC_Normal, if deletion was successful; error code otherwise
      */
@@ -146,7 +146,7 @@ public:
     /** Inserts new Study, Series or SOP Instance UID. If SOP Instance
      *  UID is generated, the related tag in the metaheader is deleted, too
      *  so that the new UID is also applied there when saving to disk later.
-     *  @param uidkey [in] The Instance UID to insert (study, series or sop
+     *  @param uidKey [in] The Instance UID to insert (study, series or sop
      *                instance UID key permitted).
      *  @return EC_Normal, if insertion was successful, error otherwise
      */
@@ -157,12 +157,12 @@ public:
      *  @param file_name filename to save to
      *  @param opt_xfer transfer syntax to save to (EXS_Unknown: dont change)
      *  @param opt_enctype write with explicit or implicit length encoding
-     *  @param opt_glenc option to set group lenghth calculation mode
+     *  @param opt_glenc option to set group length calculation mode
      *  @param opt_padenc sets padding option
      *  @param opt_filepad pad file to a multiple of this options value
      *  @param opt_itempad pad item to a multiple of this options value
      *  @param opt_dataset if true:ony write only dataset, else write fileformat
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition saveFile(const char *file_name,
                          E_TransferSyntax opt_xfer = EXS_Unknown,
@@ -175,7 +175,7 @@ public:
 
     /** Saves current dataset back to file using original filename and original
      *  parameters like transfer syntax, padding etc.
-     *  @return returns EC_normal if everything is ok, else an error
+     *  @return returns EC_Normal if everything is OK, else an error
      */
     OFCondition saveFile();
 
@@ -190,7 +190,7 @@ public:
 
     /** Returns the DcmFileFormat, that this MdfDatasetManager handles.
      *  You should use the returned object with care to avoid
-     *  sideeffects with other class methods, that modify this object, too.
+     *  side-effects with other class methods, that modify this object, too.
      *  @return returns the DcmFileFormat, this MdfDatasetManager manages and
      *          NULL, if no file is loaded
      */
@@ -219,7 +219,7 @@ protected:
 
     /** If key is the tag for SOPInstanceUID or SOPClassUID, then this function
      *  removes the related MediaStorage UIDs from the metaheader. The
-     *  metaheader is then updated automagically when the file is saved back to
+     *  metaheader is then updated "automagically" when the file is saved back to
      *  disk.
      *  @param key tag to examine
      */
diff --git a/dcmdata/apps/xml2dcm.cc b/dcmdata/apps/xml2dcm.cc
index 8eb3496..4b16159 100644
--- a/dcmdata/apps/xml2dcm.cc
+++ b/dcmdata/apps/xml2dcm.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2015, 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
@@ -300,9 +300,8 @@ static OFCondition putElementContent(xmlNodePtr current,
         } else {
             OFString dicomVal;
             /* convert character set from UTF-8 (for specific VRs only) */
-            if (((dcmEVR == EVR_PN) || (dcmEVR == EVR_SH) || (dcmEVR == EVR_LO) ||
-                 (dcmEVR == EVR_ST) || (dcmEVR == EVR_LT) || (dcmEVR == EVR_UT)) &&
-                (xmlStrlen(elemVal) > 0) && convertUtf8ToCharset(elemVal, dicomVal))
+            if (element->isAffectedBySpecificCharacterSet() &&
+               (xmlStrlen(elemVal) > 0) && convertUtf8ToCharset(elemVal, dicomVal))
             {
                 result = element->putOFStringArray(dicomVal);
             } else {
diff --git a/dcmdata/data/dicom.dic b/dcmdata/data/dicom.dic
index 0c9cf4d..7146c67 100644
--- a/dcmdata/data/dicom.dic
+++ b/dcmdata/data/dicom.dic
@@ -1,5 +1,5 @@
 #
-#  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
@@ -23,12 +23,14 @@
 #
 # Generated automatically from DICOM PS 3.6-2015c and PS 3.7-2015c.
 # File created on 2015-07-05 12:23:01 by J. Riesmeier on thinkpad.
-# File updated manually on 2015-09-18 by J. Riesmeier.
+# File updated manually on 2016-01-25 by J. Riesmeier.
 #
 # In addition, the data dictionary entries from the following final text
 # supplements and correction items (CP) have been incorporated:
-# - Supplement 156
-# - CP 1441, 1454, 1458, 1461
+# - Supplement 156, 181, 184
+# - CP 1364, 1431, 1432, 1441, 1454, 1457, 1458, 1460, 1461, 1478 (WC), 1487,
+#      1496, 1499, 1504, 1516
+# "WC" means "Draft Final Text - Waiting for Codes"
 #
 # 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.
@@ -3617,17 +3619,95 @@
 #
 #---------------------------------------------------------------------------
 #
-# Correction Items 1441, 1454, 1458, 1461
+# Supplement 181 (Tractography Results Storage SOP Class)
 #
+(0066,0101)	SQ	TrackSetSequence	1	Supplement_181
+(0066,0102)	SQ	TrackSequence	1	Supplement_181
+(0066,0103)	OW	RecommendedDisplayCIELabValueList	1	Supplement_181
+(0066,0104)	SQ	TrackingAlgorithmIdentificationSequence	1	Supplement_181
+(0066,0105)	UL	TrackSetNumber	1	Supplement_181
+(0066,0106)	LO	TrackSetLabel	1	Supplement_181
+(0066,0107)	UT	TrackSetDescription	1	Supplement_181
+(0066,0108)	SQ	TrackSetAnatomicalTypeCodeSequence	1	Supplement_181
+(0066,0121)	SQ	MeasurementsSequence	1	Supplement_181
+(0066,0124)	SQ	TrackSetStatisticsSequence	1	Supplement_181
+(0066,0125)	OF	FloatingPointValues	1	Supplement_181
+(0066,0129)	OL	TrackPointIndexList	1	Supplement_181
+(0066,0130)	SQ	TrackStatisticsSequence	1	Supplement_181
+(0066,0132)	SQ	MeasurementValuesSequence	1	Supplement_181
+(0066,0133)	SQ	DiffusionAcquisitionCodeSequence	1	Supplement_181
+(0066,0134)	SQ	DiffusionModelCodeSequence	1	Supplement_181
+#
+#---------------------------------------------------------------------------
+#
+# Supplement 184 (Brachytherapy Delivery Instruction)
+#
+(0074,1401)	SQ	BrachyTaskSequence	1	Supplement_184
+(0074,1402)	DS	ContinuationStartTotalReferenceAirKerma	1	Supplement_184
+(0074,1403)	DS	ContinuationEndTotalReferenceAirKerma	1	Supplement_184
+(0074,1404)	IS	ContinuationPulseNumber	1	Supplement_184
+(0074,1405)	SQ	ChannelDeliveryOrderSequence	1	Supplement_184
+(0074,1406)	IS	ReferencedChannelNumber	1	Supplement_184
+(0074,1407)	DS	StartCumulativeTimeWeight	1	Supplement_184
+(0074,1408)	DS	EndCumulativeTimeWeight	1	Supplement_184
+(0074,1409)	SQ	OmittedChannelSequence	1	Supplement_184
+(0074,140A)	CS	ReasonForChannelOmission	1	Supplement_184
+(0074,140B)	LO	ReasonForChannelOmissionDescription	1	Supplement_184
+(0074,140C)	IS	ChannelDeliveryOrderIndex	1	Supplement_184
+(0074,140D)	SQ	ChannelDeliveryContinuationSequence	1	Supplement_184
+(0074,140E)	SQ	OmittedApplicationSetupSequence	1	Supplement_184
+#
+#---------------------------------------------------------------------------
+#
+# Correction Items 1364, 1431, 1432, 1441, 1454, 1457, 1458, 1460, 1461, 1478 (WC),
+#                  1487, 1496, 1499, 1504, 1516
+#
+(0008,119A)	SQ	OtherFailuresSequence	1	CP_1364
+(300A,0090)	CS	BeamDoseType	1	CP_1431
+(300A,0091)	DS	AlternateBeamDose	1	CP_1431
+(300A,0092)	CS	AlternateBeamDoseType	1	CP_1431
+(300A,0309)	CS	ModulatedScanModeType	1	CP_1432
 (0040,4070)	SQ	OutputDestinationSequence	1	CP_1441
 (0040,4071)	SQ	DICOMStorageSequence	1	CP_1441
 (0040,4072)	SQ	STOWRSStorageSequence	1	CP_1441
 (0040,4073)	UR	StorageURL	1	CP_1441
 (0040,4074)	SQ	XDSStorageSequence	1	CP_1441
 (0028,2002)	CS	ColorSpace	1	CP_1454
+(0010,0026)	SQ	SourcePatientGroupIdentificationSequence	1	CP_1457
+(0010,0027)	SQ	GroupOfPatientsIdentificationSequence	1	CP_1457
+(0010,0028)	US	SubjectRelativePositionInImage	3	CP_1457
 (0040,9213)	FD	DoubleFloatRealWorldValueLastValueMapped	1	CP_1458
 (0040,9214)	FD	DoubleFloatRealWorldValueFirstValueMapped	1	CP_1458
+(300A,0501)	FL	DistalDepthFraction	1	CP_1460
+(300A,0502)	FL	DistalDepth	1	CP_1460
+(300A,0503)	FL	NominalRangeModulatioFractions	2	CP_1460
+(300A,0504)	FL	NominalRangeModulatedRegionDepths	2	CP_1460
+(300A,0505)	SQ	DepthDoseParametersSequence	1	CP_1460
+(300A,0506)	SQ	DeliveredDepthDoseParametersSequence	1	CP_1460
+(300A,0507)	FL	DeliveredDistalDepthFraction	1	CP_1460
+(300A,0508)	FL	DeliveredDistalDepth	1	CP_1460
+(300A,0509)	FL	DeliveredNominalRangeModulationFractions	2	CP_1460
+(300A,0510)	FL	DeliveredNominalRangeModulatedRegionDepths	2	CP_1460
+(300A,0511)	CS	DeliveredReferenceDoseDefinition	1	CP_1460
+(300A,0512)	CS	ReferenceDoseDefinition	1	CP_1460
 (0018,1320)	FL	B1rms	1	CP_1461
+(0010,0212)	UC	StrainDescription	1	CP_1478
+(0010,0213)	LO	StrainNomenclature	1	CP_1478
+(0010,0214)	LO	StrainStockNumber	1	CP_1478
+(0010,0215)	SQ	StrainSourceRegistryCodeSequence	1	CP_1478
+(0010,0216)	SQ	StrainStockSequence	1	CP_1478
+(0010,0217)	LO	StrainSource	1	CP_1478
+(0010,0218)	UT	StrainAdditionalInformation	1	CP_1478
+(0010,0219)	SQ	StrainCodeSequence	1	CP_1478
+(0070,030B)	FD	FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix	16	CP_1487
+(0062,0020)	UT	TrackingID	1	CP_1496
+(0062,0021)	UI	TrackingUID	1	CP_1496
+(0066,0040)	OL	LongPrimitivePointIndexList	1	CP_1499
+(0066,0041)	OL	LongTrianglePointIndexList	1	CP_1499
+(0066,0042)	OL	LongEdgePointIndexList	1	CP_1499
+(0066,0043)	OL	LongVertexPointIndexList	1	CP_1499
+(300A,0355)	LO	TrayAccessoryCode	1	CP_1504
+(0008,0055)	AE	StationAETitle	1	CP_1516
 #
 #---------------------------------------------------------------------------
 #
diff --git a/dcmdata/docs/dcm2xml.man b/dcmdata/docs/dcm2xml.man
index e4b80e3..985c1a7 100644
--- a/dcmdata/docs/dcm2xml.man
+++ b/dcmdata/docs/dcm2xml.man
@@ -121,7 +121,7 @@ specific character set:
 
   +Cc   --charset-check-all
           check all data elements with string values
-          (default: only PN, LO, LT, SH, ST and UT)
+          (default: only PN, LO, LT, SH, ST, UC and UT)
 
           # this option is only used for the mapping to an appropriate
           # XML character encoding, but not for the conversion to UTF-8
@@ -307,7 +307,10 @@ Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
 
 If this DICOM attribute is missing in the input file, although needed, option
 \e --charset-assume can be used to specify an appropriate character set
-manually (using one of the DICOM defined terms).
+manually (using one of the DICOM defined terms).  For reasons of backward
+compatibility with previous versions of this tool, the following terms are also
+supported and mapped automatically to the associated DICOM defined terms:
+latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew.
 
 Multiple character sets using code extension techniques are not supported.  If
 needed, option \e --convert-to-utf8 can be used to convert the DICOM file or
@@ -382,6 +385,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2002-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2002-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmdata/docs/dump2dcm.man b/dcmdata/docs/dump2dcm.man
index 17f914c..98f2e13 100644
--- a/dcmdata/docs/dump2dcm.man
+++ b/dcmdata/docs/dump2dcm.man
@@ -199,8 +199,8 @@ VR:    Value Representation must be written as 2 characters as in
        between the two characters.  If the VR can be determined from
        the tag, this part of a line is optional.
 Value: There are several rules for writing values:
-       1. US, SS, SL, UL, FD, FL are written as decimal strings that
-          can be read by scanf().
+       1. US, SS, SL, UL, FD, FL, OD, OF and OL are written as decimal
+          strings that can be read by scanf().
        2. AT is written as '(gggg,eeee)' with additional spaces
           stripped off automatically and gggg and eeee being decimal
           strings that can be read by scanf().
@@ -312,6 +312,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1996-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2016 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 ada8a41..1c0077d 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcbytstr.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
@@ -252,7 +252,8 @@ class DCMTK_DCMDATA_EXPORT DcmByteString: public DcmElement
      *  codes below 128 are considered to be ASCII codes and all others are considered to
      *  be non-ASCII.
      *  @param checkAllStrings if true, also check elements with string values not affected
-     *    by SpecificCharacterSet (0008,0005), default: only check PN, LO, LT, SH, ST, UT
+     *    by SpecificCharacterSet (0008,0005). By default, only check PN, LO, LT, SH, ST,
+     *    UC and UT, i.e. none of the derived VR classes.
      *  @return true if element contains non-ASCII characters, false otherwise
      */
     virtual OFBool containsExtendedCharacters(const OFBool checkAllStrings = OFFalse);
@@ -357,6 +358,8 @@ class DCMTK_DCMDATA_EXPORT DcmByteString: public DcmElement
      *  @param maxLen maximum number of characters allowed for a single value (0 = no check)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcdatutl.h b/dcmdata/include/dcmtk/dcmdata/dcdatutl.h
index b7751ad..464dadf 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcdatutl.h
@@ -1,9 +1,9 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2011-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  This software and supporting documentation are maintained by
+ *  This software and supporting documentation were developed by
  *
  *    OFFIS e.V.
  *    R&D Division Health
@@ -11,9 +11,9 @@
  *    D-26121 Oldenburg, Germany
  *
  *
- *  Module: dcmiod
+ *  Module: dcmdata
  *
- *  Author: Michael Onken
+ *  Author: Joerg Riesmeier, Michael Onken
  *
  *  Purpose: Static helper functionality for dcmdata module
  *
@@ -22,13 +22,14 @@
 #ifndef DCDATUTL_H
 #define DCDATUTL_H
 
-#include "dcmtk/config/osconfig.h"
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 #include "dcmtk/ofstd/ofstring.h"
 #include "dcmtk/dcmdata/dcdefine.h"
 #include "dcmtk/dcmdata/dcxfer.h"
 #include "dcmtk/dcmdata/dcdatset.h"
 
-/** Class with helper functions used within the dcmiod module (and beyond)
+
+/** Class with helper functions used within the dcmdata module (and beyond)
  */
 class DCMTK_DCMDATA_EXPORT DcmDataUtil
 {
@@ -53,7 +54,7 @@ public:
    *          ERM_metaOnly.
    *  @return EC_Normal if successful, an error code otherwise
    */
-  static OFCondition getSOPInstanceFromFile(const OFString &filename,
+  static OFCondition getSOPInstanceFromFile(const OFFilename &filename,
                                             OFString &sopClassUID,
                                             OFString &sopInstanceUID,
                                             OFString &transferSyntaxUID,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcddirif.h b/dcmdata/include/dcmtk/dcmdata/dcddirif.h
index 95c4361..3ffc06d 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcddirif.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcddirif.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
@@ -133,6 +133,12 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface
         AP_GeneralPurposeBDMPEG4HPatLV41,
         /// General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible HiP\@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
         AP_GeneralPurposeBDMPEG4HPatLV41BD,
+        /// General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+        AP_GeneralPurposeBDMPEG4HPatLV42_2D,
+        /// General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+        AP_GeneralPurposeBDMPEG4HPatLV42_3D,
+        /// General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2 (STD-GEN-BD-MPEG4-SHPLV42)
+        AP_GeneralPurposeBDMPEG4StereoHPatLV42,
         /// General Purpose USB and Flash Memory Interchange with JPEG (STD-GEN-USB/MMC/CF/SD-JPEG)
         AP_USBandFlashJPEG,
         /// General Purpose USB and Flash Memory Interchange with JPEG 2000 (STD-GEN-USB/MMC/CF/SD-J2K)
@@ -1074,6 +1080,18 @@ class DCMTK_DCMDATA_EXPORT DicomDirInterface
                                                const OFString &referencedFileID,
                                                const OFFilename &sourceFilename);
 
+    /** create or update tract record and copy required values from dataset
+     *  @param record record to be updated, use NULL to create a new one
+     *  @param fileformat DICOM dataset of the current file
+     *  @param referencedFileID value of the Referenced File ID attribute
+     *  @param sourceFilename name of the source DICOM file
+     *  @return pointer to new or updated record, NULL if an error occurred
+     */
+    DcmDirectoryRecord *buildTractRecord(DcmDirectoryRecord *record,
+                                         DcmFileFormat *fileformat,
+                                         const OFString &referencedFileID,
+                                         const OFFilename &sourceFilename);
+
     /** create or update image record and copy required values from dataset
      *  @param record record to be updated, use NULL to create a new one
      *  @param fileformat DICOM dataset of the current file
diff --git a/dcmdata/include/dcmtk/dcmdata/dcdeftag.h b/dcmdata/include/dcmtk/dcmdata/dcdeftag.h
index 1f6e5c1..829d379 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcdeftag.h
@@ -4,7 +4,7 @@
 **
 **   User: joergr
 **   Host: thinkpad
-**   Date: 2015-09-18 11:18:13
+**   Date: 2016-01-25 17:53:33
 **   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 "2015-09-18 11:18:13"
+#define DCM_DICT_DEFTAG_BUILD_DATE "2016-01-25 17:53:33"
 
 
 /*
 ** Fixed Tags in ascending (gggg,eeee) order.
-** Number of entries: 3956
+** Number of entries: 4019
 ** Tags with a repeating component (repeating tags) are listed later.
 */
 #define DCM_CommandGroupLength                   DcmTagKey(0x0000, 0x0000)
@@ -136,6 +136,7 @@
 #define DCM_QueryRetrieveLevel                   DcmTagKey(0x0008, 0x0052)
 #define DCM_QueryRetrieveView                    DcmTagKey(0x0008, 0x0053)
 #define DCM_RetrieveAETitle                      DcmTagKey(0x0008, 0x0054)
+#define DCM_StationAETitle                       DcmTagKey(0x0008, 0x0055)
 #define DCM_InstanceAvailability                 DcmTagKey(0x0008, 0x0056)
 #define DCM_FailedSOPInstanceUIDList             DcmTagKey(0x0008, 0x0058)
 #define DCM_Modality                             DcmTagKey(0x0008, 0x0060)
@@ -231,6 +232,7 @@
 #define DCM_FailureReason                        DcmTagKey(0x0008, 0x1197)
 #define DCM_FailedSOPSequence                    DcmTagKey(0x0008, 0x1198)
 #define DCM_ReferencedSOPSequence                DcmTagKey(0x0008, 0x1199)
+#define DCM_OtherFailuresSequence                DcmTagKey(0x0008, 0x119a)
 #define DCM_StudiesContainingOtherReferencedInstancesSequence DcmTagKey(0x0008, 0x1200)
 #define DCM_RelatedSeriesSequence                DcmTagKey(0x0008, 0x1250)
 #define DCM_RETIRED_LossyImageCompressionRetired DcmTagKey(0x0008, 0x2110)
@@ -299,6 +301,9 @@
 #define DCM_IssuerOfPatientID                    DcmTagKey(0x0010, 0x0021)
 #define DCM_TypeOfPatientID                      DcmTagKey(0x0010, 0x0022)
 #define DCM_IssuerOfPatientIDQualifiersSequence  DcmTagKey(0x0010, 0x0024)
+#define DCM_SourcePatientGroupIdentificationSequence DcmTagKey(0x0010, 0x0026)
+#define DCM_GroupOfPatientsIdentificationSequence DcmTagKey(0x0010, 0x0027)
+#define DCM_SubjectRelativePositionInImage       DcmTagKey(0x0010, 0x0028)
 #define DCM_PatientBirthDate                     DcmTagKey(0x0010, 0x0030)
 #define DCM_PatientBirthTime                     DcmTagKey(0x0010, 0x0032)
 #define DCM_PatientSex                           DcmTagKey(0x0010, 0x0040)
@@ -307,6 +312,14 @@
 #define DCM_PatientPrimaryLanguageModifierCodeSequence DcmTagKey(0x0010, 0x0102)
 #define DCM_QualityControlSubject                DcmTagKey(0x0010, 0x0200)
 #define DCM_QualityControlSubjectTypeCodeSequence DcmTagKey(0x0010, 0x0201)
+#define DCM_StrainDescription                    DcmTagKey(0x0010, 0x0212)
+#define DCM_StrainNomenclature                   DcmTagKey(0x0010, 0x0213)
+#define DCM_StrainStockNumber                    DcmTagKey(0x0010, 0x0214)
+#define DCM_StrainSourceRegistryCodeSequence     DcmTagKey(0x0010, 0x0215)
+#define DCM_StrainStockSequence                  DcmTagKey(0x0010, 0x0216)
+#define DCM_StrainSource                         DcmTagKey(0x0010, 0x0217)
+#define DCM_StrainAdditionalInformation          DcmTagKey(0x0010, 0x0218)
+#define DCM_StrainCodeSequence                   DcmTagKey(0x0010, 0x0219)
 #define DCM_OtherPatientIDs                      DcmTagKey(0x0010, 0x1000)
 #define DCM_OtherPatientNames                    DcmTagKey(0x0010, 0x1001)
 #define DCM_OtherPatientIDsSequence              DcmTagKey(0x0010, 0x1002)
@@ -2583,6 +2596,8 @@
 #define DCM_SegmentationFractionalType           DcmTagKey(0x0062, 0x0010)
 #define DCM_SegmentedPropertyTypeModifierCodeSequence DcmTagKey(0x0062, 0x0011)
 #define DCM_UsedSegmentsSequence                 DcmTagKey(0x0062, 0x0012)
+#define DCM_TrackingID                           DcmTagKey(0x0062, 0x0020)
+#define DCM_TrackingUID                          DcmTagKey(0x0062, 0x0021)
 #define DCM_DeformableRegistrationSequence       DcmTagKey(0x0064, 0x0002)
 #define DCM_SourceFrameOfReferenceUID            DcmTagKey(0x0064, 0x0003)
 #define DCM_DeformableRegistrationGridSequence   DcmTagKey(0x0064, 0x0005)
@@ -2642,6 +2657,22 @@
 #define DCM_LongTrianglePointIndexList           DcmTagKey(0x0066, 0x0041)
 #define DCM_LongEdgePointIndexList               DcmTagKey(0x0066, 0x0042)
 #define DCM_LongVertexPointIndexList             DcmTagKey(0x0066, 0x0043)
+#define DCM_TrackSetSequence                     DcmTagKey(0x0066, 0x0101)
+#define DCM_TrackSequence                        DcmTagKey(0x0066, 0x0102)
+#define DCM_RecommendedDisplayCIELabValueList    DcmTagKey(0x0066, 0x0103)
+#define DCM_TrackingAlgorithmIdentificationSequence DcmTagKey(0x0066, 0x0104)
+#define DCM_TrackSetNumber                       DcmTagKey(0x0066, 0x0105)
+#define DCM_TrackSetLabel                        DcmTagKey(0x0066, 0x0106)
+#define DCM_TrackSetDescription                  DcmTagKey(0x0066, 0x0107)
+#define DCM_TrackSetAnatomicalTypeCodeSequence   DcmTagKey(0x0066, 0x0108)
+#define DCM_MeasurementsSequence                 DcmTagKey(0x0066, 0x0121)
+#define DCM_TrackSetStatisticsSequence           DcmTagKey(0x0066, 0x0124)
+#define DCM_FloatingPointValues                  DcmTagKey(0x0066, 0x0125)
+#define DCM_TrackPointIndexList                  DcmTagKey(0x0066, 0x0129)
+#define DCM_TrackStatisticsSequence              DcmTagKey(0x0066, 0x0130)
+#define DCM_MeasurementValuesSequence            DcmTagKey(0x0066, 0x0132)
+#define DCM_DiffusionAcquisitionCodeSequence     DcmTagKey(0x0066, 0x0133)
+#define DCM_DiffusionModelCodeSequence           DcmTagKey(0x0066, 0x0134)
 #define DCM_ImplantSize                          DcmTagKey(0x0068, 0x6210)
 #define DCM_ImplantTemplateVersion               DcmTagKey(0x0068, 0x6221)
 #define DCM_ReplacedImplantTemplateSequence      DcmTagKey(0x0068, 0x6222)
@@ -2802,6 +2833,7 @@
 #define DCM_RegistrationSequence                 DcmTagKey(0x0070, 0x0308)
 #define DCM_MatrixRegistrationSequence           DcmTagKey(0x0070, 0x0309)
 #define DCM_MatrixSequence                       DcmTagKey(0x0070, 0x030a)
+#define DCM_FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix DcmTagKey(0x0070, 0x030b)
 #define DCM_FrameOfReferenceTransformationMatrixType DcmTagKey(0x0070, 0x030c)
 #define DCM_RegistrationTypeCodeSequence         DcmTagKey(0x0070, 0x030d)
 #define DCM_FiducialDescription                  DcmTagKey(0x0070, 0x030f)
@@ -3031,6 +3063,20 @@
 #define DCM_BeamOrderIndex                       DcmTagKey(0x0074, 0x1324)
 #define DCM_DoubleExposureMeterset               DcmTagKey(0x0074, 0x1338)
 #define DCM_DoubleExposureFieldDelta             DcmTagKey(0x0074, 0x133a)
+#define DCM_BrachyTaskSequence                   DcmTagKey(0x0074, 0x1401)
+#define DCM_ContinuationStartTotalReferenceAirKerma DcmTagKey(0x0074, 0x1402)
+#define DCM_ContinuationEndTotalReferenceAirKerma DcmTagKey(0x0074, 0x1403)
+#define DCM_ContinuationPulseNumber              DcmTagKey(0x0074, 0x1404)
+#define DCM_ChannelDeliveryOrderSequence         DcmTagKey(0x0074, 0x1405)
+#define DCM_ReferencedChannelNumber              DcmTagKey(0x0074, 0x1406)
+#define DCM_StartCumulativeTimeWeight            DcmTagKey(0x0074, 0x1407)
+#define DCM_EndCumulativeTimeWeight              DcmTagKey(0x0074, 0x1408)
+#define DCM_OmittedChannelSequence               DcmTagKey(0x0074, 0x1409)
+#define DCM_ReasonForChannelOmission             DcmTagKey(0x0074, 0x140a)
+#define DCM_ReasonForChannelOmissionDescription  DcmTagKey(0x0074, 0x140b)
+#define DCM_ChannelDeliveryOrderIndex            DcmTagKey(0x0074, 0x140c)
+#define DCM_ChannelDeliveryContinuationSequence  DcmTagKey(0x0074, 0x140d)
+#define DCM_OmittedApplicationSetupSequence      DcmTagKey(0x0074, 0x140e)
 #define DCM_ImplantAssemblyTemplateName          DcmTagKey(0x0076, 0x0001)
 #define DCM_ImplantAssemblyTemplateIssuer        DcmTagKey(0x0076, 0x0003)
 #define DCM_ImplantAssemblyTemplateVersion       DcmTagKey(0x0076, 0x0006)
@@ -3503,6 +3549,9 @@
 #define DCM_AverageBeamDosePointDepth            DcmTagKey(0x300a, 0x008d)
 #define DCM_AverageBeamDosePointEquivalentDepth  DcmTagKey(0x300a, 0x008e)
 #define DCM_AverageBeamDosePointSSD              DcmTagKey(0x300a, 0x008f)
+#define DCM_BeamDoseType                         DcmTagKey(0x300a, 0x0090)
+#define DCM_AlternateBeamDose                    DcmTagKey(0x300a, 0x0091)
+#define DCM_AlternateBeamDoseType                DcmTagKey(0x300a, 0x0092)
 #define DCM_NumberOfBrachyApplicationSetups      DcmTagKey(0x300a, 0x00a0)
 #define DCM_BrachyApplicationSetupDoseSpecificationPoint DcmTagKey(0x300a, 0x00a2)
 #define DCM_BrachyApplicationSetupDose           DcmTagKey(0x300a, 0x00a4)
@@ -3724,6 +3773,7 @@
 #define DCM_RadiationAtomicNumber                DcmTagKey(0x300a, 0x0304)
 #define DCM_RadiationChargeState                 DcmTagKey(0x300a, 0x0306)
 #define DCM_ScanMode                             DcmTagKey(0x300a, 0x0308)
+#define DCM_ModulatedScanModeType                DcmTagKey(0x300a, 0x0309)
 #define DCM_VirtualSourceAxisDistances           DcmTagKey(0x300a, 0x030a)
 #define DCM_SnoutSequence                        DcmTagKey(0x300a, 0x030c)
 #define DCM_SnoutPosition                        DcmTagKey(0x300a, 0x030d)
@@ -3751,6 +3801,7 @@
 #define DCM_PatientSupportType                   DcmTagKey(0x300a, 0x0350)
 #define DCM_PatientSupportID                     DcmTagKey(0x300a, 0x0352)
 #define DCM_PatientSupportAccessoryCode          DcmTagKey(0x300a, 0x0354)
+#define DCM_TrayAccessoryCode                    DcmTagKey(0x300a, 0x0355)
 #define DCM_FixationLightAzimuthalAngle          DcmTagKey(0x300a, 0x0356)
 #define DCM_FixationLightPolarAngle              DcmTagKey(0x300a, 0x0358)
 #define DCM_MetersetRate                         DcmTagKey(0x300a, 0x035a)
@@ -3804,6 +3855,18 @@
 #define DCM_DeviceMotionExecutionMode            DcmTagKey(0x300a, 0x0451)
 #define DCM_DeviceMotionObservationMode          DcmTagKey(0x300a, 0x0452)
 #define DCM_DeviceMotionParameterCodeSequence    DcmTagKey(0x300a, 0x0453)
+#define DCM_DistalDepthFraction                  DcmTagKey(0x300a, 0x0501)
+#define DCM_DistalDepth                          DcmTagKey(0x300a, 0x0502)
+#define DCM_NominalRangeModulatioFractions       DcmTagKey(0x300a, 0x0503)
+#define DCM_NominalRangeModulatedRegionDepths    DcmTagKey(0x300a, 0x0504)
+#define DCM_DepthDoseParametersSequence          DcmTagKey(0x300a, 0x0505)
+#define DCM_DeliveredDepthDoseParametersSequence DcmTagKey(0x300a, 0x0506)
+#define DCM_DeliveredDistalDepthFraction         DcmTagKey(0x300a, 0x0507)
+#define DCM_DeliveredDistalDepth                 DcmTagKey(0x300a, 0x0508)
+#define DCM_DeliveredNominalRangeModulationFractions DcmTagKey(0x300a, 0x0509)
+#define DCM_DeliveredNominalRangeModulatedRegionDepths DcmTagKey(0x300a, 0x0510)
+#define DCM_DeliveredReferenceDoseDefinition     DcmTagKey(0x300a, 0x0511)
+#define DCM_ReferenceDoseDefinition              DcmTagKey(0x300a, 0x0512)
 #define DCM_ReferencedRTPlanSequence             DcmTagKey(0x300c, 0x0002)
 #define DCM_ReferencedBeamSequence               DcmTagKey(0x300c, 0x0004)
 #define DCM_ReferencedBeamNumber                 DcmTagKey(0x300c, 0x0006)
diff --git a/dcmdata/include/dcmtk/dcmdata/dcdirrec.h b/dcmdata/include/dcmtk/dcmdata/dcdirrec.h
index c10b90e..249b5d8 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcdirrec.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcdirrec.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
@@ -122,7 +122,9 @@ typedef enum {
     /// plan
     ERT_Plan = 44,
     /// surface scan
-    ERT_SurfaceScan = 45
+    ERT_SurfaceScan = 45,
+    /// tractography
+    ERT_Tract = 46
 } E_DirRecType;
 
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcelem.h b/dcmdata/include/dcmtk/dcmdata/dcelem.h
index 09f1844..bc330ad 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcelem.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcelem.h
@@ -41,6 +41,13 @@ class DCMTK_DCMDATA_EXPORT DcmElement
 
   public:
 
+    // be friend with "greater than" and "less than" operators that are defined
+    // outside of this class
+    friend OFBool operator< (const DcmElement& lhs, const DcmElement& rhs);
+    friend OFBool operator> (const DcmElement& lhs, const DcmElement& rhs);
+    friend OFBool operator<=(const DcmElement& lhs, const DcmElement& rhs);
+    friend OFBool operator>=(const DcmElement& lhs, const DcmElement& rhs);
+
     /** constructor.
      *  Create new element from given tag and length.
      *  @param tag DICOM tag for the new element
@@ -77,7 +84,9 @@ class DCMTK_DCMDATA_EXPORT DcmElement
      *          -1 if either the value of the first component that does not match
      *          is lower in this object than in rhs, or all compared components match
      *          but this object has fewer components than rhs. Also returned if rhs
-     *          cannot be casted to this object type.
+     *          cannot be casted to this object type or both objects are of
+     *          different VR (i.e. the DcmEVR returned by the element's ident()
+     *          call are different).
      *          1 if either the value of the first component that does not match
      *          is greater in this object than in rhs object, or all compared
      *          components match but the this component is longer.
@@ -864,5 +873,54 @@ class DCMTK_DCMDATA_EXPORT DcmElement
     Uint8 *fValue;
 };
 
+/** Checks whether left hand side element is smaller than right hand side
+ *  element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is smaller than rhs, OFFalse otherwise
+ */
+inline OFBool operator< (const DcmElement& lhs, const DcmElement& rhs)
+{
+  return ( lhs.compare(rhs) < 0 );
+}
+
+/** Checks whether left hand side element is greater than right hand side
+ *  element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is greater than rhs, OFFalse otherwise
+ */
+inline OFBool operator> (const DcmElement& lhs, const DcmElement& rhs)
+{
+    return rhs < lhs;
+}
+
+/** Checks whether left hand side element is smaller than or equal to right hand
+ *  side element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is smaller than rhs or both are equal, OFFalse
+ *          otherwise
+ */
+inline OFBool operator<=(const DcmElement& lhs, const DcmElement& rhs)
+{
+    return !(lhs > rhs);
+}
+
+/** Checks whether left hand side element is greater than or equal to right hand
+ *  side element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is greater than rhs or both are equal, OFFalse
+ *          otherwise
+ */
+inline OFBool operator>=(const DcmElement& lhs, const DcmElement& rhs)
+{
+    return !(lhs < rhs);
+}
 
 #endif // DCELEM_H
diff --git a/dcmdata/include/dcmtk/dcmdata/dcitem.h b/dcmdata/include/dcmtk/dcmdata/dcitem.h
index 3150b55..0c91735 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcitem.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcitem.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
@@ -47,6 +47,13 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 {
   public:
 
+    // be friend with "greater than" and "less than" operators that are defined
+    // outside of this class
+    friend OFBool operator< (const DcmItem& lhs, const DcmItem& rhs);
+    friend OFBool operator> (const DcmItem& lhs, const DcmItem& rhs);
+    friend OFBool operator<=(const DcmItem& lhs, const DcmItem& rhs);
+    friend OFBool operator>=(const DcmItem& lhs, const DcmItem& rhs);
+
     /** default constructor
      */
     DcmItem();
@@ -66,7 +73,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** assignment operator. Private creator cache is not copied
      *  as it is also the case for clone().
-     *  @param the item to be copied
+     *  @param obj the item to be copied
+     *  @return Reference to this object after assignment
      */
     DcmItem &operator=(const DcmItem &obj);
 
@@ -74,7 +82,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  with a given object of the same type. The tag of the element is also
      *  considered as the first component that is compared, followed by the
      *  object types (VR, i.e. DCMTK'S EVR) and the comparison of all value
-     *  components of the object, preferrably in the order declared in the
+     *  components of the object, preferably in the order declared in the
      *  object (if applicable). For item values that means that all elements
      *  within the items are compared to each other in ascending tag order.
      *  This may be an expensive operation.
@@ -164,7 +172,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  VR field and the value itself, for items and sequences it returns
      *  the length of the complete item or sequence including delimitation tags
      *  if applicable.
-     *  If length encodig is set to be explicit and the total item size is
+     *  If length encoding is set to be explicit and the total item size is
      *  larger than the available 32-bit length field, then undefined length
      *  is returned. If "dcmWriteOversizedSeqsAndItemsImplicit" is disabled,
      *  also the internal DcmObject errorFlag is set to EC_SeqOrItemContentOverflow
@@ -180,7 +188,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
     /** calculate the value length (without attribute tag, VR and length field)
      *  of this DICOM element when encoded with the given transfer syntax and
      *  the given encoding type for sequences.
-     *  If length encodig is set to be explicit and the item content is larger
+     *  If length encoding is set to be explicit and the item content is larger
      *  than the available 32-bit length field, then undefined length is
      *  returned. If "dcmWriteOversizedSeqsAndItemsUndefined" is disabled,
      *  also the internal DcmObject errorFlag is set to
@@ -277,8 +285,8 @@ class DCMTK_DCMDATA_EXPORT DcmItem
      *  character codes below 128 are considered to be ASCII codes and all others are
      *  considered to be non-ASCII.
      *  @param checkAllStrings if true, also check elements with string values not affected
-     *    by SpecificCharacterSet (0008,0005), default: only check PN, LO, LT, SH, ST, UC
-     *    and UT
+     *    by SpecificCharacterSet (0008,0005). By default, only check PN, LO, LT, SH, ST,
+     *    UC and UT.
      *  @return true if object contains non-ASCII characters, false otherwise
      */
     virtual OFBool containsExtendedCharacters(const OFBool checkAllStrings = OFFalse);
@@ -622,7 +630,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** find element and get value as a C++ string (only one component).
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  Since the getOFString() routine is called internally the resulting string is normalized, i.e.
      *  leading and/or trailing spaces are removed according to the associated value representation,
      *  or the element value is converted to a character string (for non-string VRs) - see documentation
@@ -643,7 +651,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** find element and get value as a C++ string (all components).
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  Since the getOFStringArray() routine is called internally the resulting string is normalized,
      *  i.e. leading and/or trailing spaces are removed according to the associated value representation
      *  or the element values are converted to character strings (for non-string VRs) - see documentation
@@ -743,7 +751,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                       const OFBool searchIntoSub = OFFalse);
 
     /** find element and get value as an unsigned 32-bit integer.
-     *  Applicable to the following VRs: UL
+     *  Applicable to the following VRs: OL, UL
      *  The result variable 'value' is automatically set to zero if an error occurs.
      *  @param tagKey DICOM tag specifying the attribute to be searched for
      *  @param value variable in which the element value is stored
@@ -757,7 +765,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                  const OFBool searchIntoSub = OFFalse);
 
     /** find element and get value as an array of unsigned 32-bit integers.
-     *  Applicable to the following VRs: UL
+     *  Applicable to the following VRs: OL, UL
      *  The result variable 'value' is automatically set to NULL if an error occurs.
      *  @param tagKey DICOM tag specifying the attribute to be searched for
      *  @param value variable in which the reference to the element value is stored
@@ -799,7 +807,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                       const OFBool searchIntoSub = OFFalse);
 
     /** find element and get value as a (signed) long integer.
-     *  Applicable to the following VRs: IS, SL, SS, UL, US
+     *  Applicable to the following VRs: IS, OL, SL, SS, UL, US
      *  The result variable 'value' is automatically set to zero if an error occurs.
      *  @param tagKey DICOM tag specifying the attribute to be searched for
      *  @param value variable in which the element value is stored
@@ -961,7 +969,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** create a new element, put specified value to it and insert the element into the dataset/item.
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  @param tag DICOM tag specifying the attribute to be created
      *  @param value string value to be set for the new element (might be empty or NULL)
      *  @param replaceOld flag indicating whether to replace an existing element or not
@@ -973,7 +981,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** create a new element, put specified value to it and insert the element into the dataset/item.
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  Please note that since the length of the string has to be specified explicitly, the string
      *  can contain more than one NULL byte.
      *  @param tag DICOM tag specifying the attribute to be created
@@ -1067,7 +1075,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                         const OFBool replaceOld = OFTrue);
 
     /** create a new element, put specified value to it and insert the element into the dataset/item.
-     *  Applicable to the following VRs: UL
+     *  Applicable to the following VRs: OL, UL
      *  @param tag DICOM tag specifying the attribute to be created
      *  @param value value to be set for the new element
      *  @param pos index of the value to be set (0..vm). A value can be appended to
@@ -1081,6 +1089,19 @@ class DCMTK_DCMDATA_EXPORT DcmItem
                                    const OFBool replaceOld = OFTrue);
 
     /** create a new element, put specified value to it and insert the element into the dataset/item.
+     *  Applicable to the following VRs: OL, UL
+     *  @param tag DICOM tag specifying the attribute to be created
+     *  @param value value to be set for the new element
+     *  @param count number of values (not bytes!) to be copied from 'value'
+     *  @param replaceOld flag indicating whether to replace an existing element or not
+     *  @return EC_Normal upon success, an error code otherwise.
+     */
+    OFCondition putAndInsertUint32Array(const DcmTag &tag,
+                                       const Uint32 *value,
+                                       const unsigned long count,
+                                       const OFBool replaceOld = OFTrue);
+
+    /** create a new element, put specified value to it and insert the element into the dataset/item.
      *  Applicable to the following VRs: SL
      *  @param tag DICOM tag specifying the attribute to be created
      *  @param value value to be set for the new element
@@ -1166,7 +1187,7 @@ class DCMTK_DCMDATA_EXPORT DcmItem
 
     /** create a new element (with no value) and insert it into the dataset/item.
      *  Applicable to the following VRs: AE, AS, AT, CS, DA, DS, DT, FL, FD, IS, LO, LT, OB, OD, OF,
-     *  OW, PN, SH, SL, SQ, SS, ST, TM, UC, UI, UL, UR, US, UT
+     *  OL, OW, PN, SH, SL, SQ, SS, ST, TM, UC, UI, UL, UR, US, UT
      *  @param tag DICOM tag specifying the attribute to be created
      *  @param replaceOld flag indicating whether to replace an existing element or not
      *  @return EC_Normal upon success, an error code otherwise.
@@ -1315,6 +1336,56 @@ class DCMTK_DCMDATA_EXPORT DcmItem
     DcmPrivateTagCache privateCreatorCache;
 };
 
+/** Checks whether left hand side item is smaller than right hand side
+ *  item. Uses DcmItem's compare() method in order to perform the
+ *  comparison. See DcmItem::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is smaller than rhs, OFFalse otherwise
+ */
+inline OFBool operator< (const DcmItem& lhs, const DcmItem& rhs)
+{
+  return ( lhs.compare(rhs) < 0 );
+}
+
+/** Checks whether left hand side item is greater than right hand side
+ *  item. Uses DcmItem's compare() method in order to perform the
+ *  comparison. See DcmItem::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is greater than rhs, OFFalse otherwise
+ */
+inline OFBool operator> (const DcmItem& lhs, const DcmItem& rhs)
+{
+  return rhs < lhs;
+}
+
+/** Checks whether left hand side item is smaller than or equal to right hand
+ *  side item. Uses DcmItem's compare() method in order to perform the
+ *  comparison. See DcmItem::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is smaller than rhs or both are equal, OFFalse
+ *          otherwise
+ */
+inline OFBool operator<=(const DcmItem& lhs, const DcmItem& rhs)
+{
+  return !(lhs > rhs);
+}
+
+/** Checks whether left hand side element is greater than or equal to right hand
+ *  side element. Uses DcmElement's compare() method in order to perform the
+ *  comparison. See DcmElement::compare() for details.
+ *  @param lhs left hand side of the comparison
+ *  @param rhs right hand side of the comparison
+ *  @return OFTrue if lhs is greater than rhs or both are equal, OFFalse
+ *          otherwise
+ */
+inline OFBool operator>=(const DcmItem& lhs, const DcmItem& rhs)
+{
+  return !(lhs < rhs);
+}
+
 //
 // SUPPORT FUNCTIONS
 //
diff --git a/dcmdata/include/dcmtk/dcmdata/dcmetinf.h b/dcmdata/include/dcmtk/dcmdata/dcmetinf.h
index 63dfff3..8fc3903 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcmetinf.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcmetinf.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
@@ -29,13 +29,13 @@
 
 
 /// magic string identifying DICOM files
-#define DCM_Magic                       "DICM"
+#define DCM_Magic "DICM"
 
 /// length of magic string identifying DICOM files
-#define DCM_MagicLen                    4
+#define DCM_MagicLen 4
 
 /// length of DICOM file preamble, in bytes
-#define DCM_PreambleLen                 128
+#define DCM_PreambleLen 128
 
 /// transfer syntax used for encoding DICOM meta-headers
 #define META_HEADER_DEFAULT_TRANSFERSYNTAX EXS_LittleEndianExplicit
@@ -59,7 +59,7 @@ class DCMTK_DCMDATA_EXPORT DcmMetaInfo
     DcmMetaInfo(const DcmMetaInfo &old);
 
     /** assignment operator.
-     *  @param the metainfo to be copied
+     *  @param obj the metainfo to be copied
      */
     DcmMetaInfo &operator=(const DcmMetaInfo &obj);
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcobject.h b/dcmdata/include/dcmtk/dcmdata/dcobject.h
index a9a264c..ed8c18d 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcobject.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcobject.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, 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
@@ -41,9 +41,15 @@ class DcmInputStream;
 class DcmWriteCache;
 class DcmSpecificCharacterSet;
 
+// include this file in doxygen documentation
+
+/** @file dcobject.h
+ *  @brief interface to DICOM object/dataset handling
+ */
+
 // Undefined Length Identifier now defined in dctypes.h
 
-// Maxinum number of read bytes for a Value Element
+// Maximum number of read bytes for a Value Element
 const Uint32 DCM_MaxReadLength = 4096;
 
 // Maximum length of tag and length in a DICOM element
@@ -59,13 +65,13 @@ const Uint32 DCM_OptPrintValueLength = 40;
 const Uint32 DCM_OptPrintAttributeNameLength = 35;
 
 /** This flags defines whether automatic correction should be applied to input
- *  data (e.g. stripping of padding blanks, removal of blanks in UIDs, etc).
+ *  data (e.g.\ stripping of padding blanks, removal of blanks in UIDs, etc).
  *  Default is enabled.
  */
 extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableAutomaticInputDataCorrection; /* default OFTrue */
 
 /** This flag defines the handling of illegal odd-length attributes: If flag is
- *  true, odd lengths are respected (i.e. an odd number of bytes is read from
+ *  true, odd lengths are respected (i.e.\ an odd number of bytes is read from
  *  the input stream.) After successful reading, padding to even number of bytes
  *  is enforced by adding a zero pad byte if dcmEnableAutomaticInputDataCorrection
  *  is true. Otherwise the odd number of bytes remains as read.
@@ -91,7 +97,7 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableCP246Support; /* default O
 
 /** DCMTK releases up to 3.5.3 created a non-conforming byte stream
  *  as input to the MAC algorithm when creating or verifying digital signatures
- *  including compressed pixel data (i.e. signatures including attribute
+ *  including compressed pixel data (i.e.\ signatures including attribute
  *  (7FE0,0010) in an encapsulated transfer syntax). This has been fixed
  *  in DCMTK 3.5.4, but this flag allows to revert to the old behavior
  *  in order to create or verify signatures that are compatible with older
@@ -144,7 +150,7 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmPreferLengthFieldSizeFromDataDic
 extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmReadImplPrivAttribMaxLengthAsSQ; /* default OFFalse */
 
 /** This flag indicates, whether parsing errors during reading
- *  should be ignored, ie whether the parser should try to recover and
+ *  should be ignored, i.e.\ whether the parser should try to recover and
  *  parse the rest of the stream.
  *  This flag does not work for all parsing errors (at this time)
  *  making sense but was introduced afterwards.
@@ -157,7 +163,7 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmIgnoreParsingErrors; /* default
  *  Data attribute. To prevent the parser for "stumbling" over that
  *  garbage, it is possible to tell the parser to stop after a
  *  specific element. The flag is only sensitive to elements on
- *  dataset level, ie. inside sequence any occurence of the specified
+ *  dataset level, i.e. inside sequence any occurrence of the specified
  *  tag is ignored. Caution: Note that if Pixel Data is chosen
  *  as stop element, any attributes behind will not be parsed, e. g.
  *  any digital signature attributes coming after.
@@ -570,7 +576,7 @@ class DCMTK_DCMDATA_EXPORT DcmObject
     virtual OFCondition loadAllDataIntoMemory() = 0;
 
     /** return the current value of the Length field (which is different from the functionality
-     *  of the public getLength method). Only needed for internal purposes and for checker tools
+     *  of the public getLength() method). Only needed for internal purposes and for checker tools
      *  that verify values against the length field.
      *  @return current value of length field
      */
@@ -578,7 +584,7 @@ class DCMTK_DCMDATA_EXPORT DcmObject
 
  protected:
 
-    /** print line indentation, e.g. a couple of spaces for each nesting level.
+    /** print line indentation, e.g.\ a couple of spaces for each nesting level.
      *  Depending on the value of 'flags' other visualizations are also possible.
      *  @param out output stream
      *  @param flags used to customize the output (see DCMTypes::PF_xxx)
@@ -616,8 +622,7 @@ class DCMTK_DCMDATA_EXPORT DcmObject
                           DcmTag *tag = NULL);
 
     /** print given text with element information.
-     *  Calls printInfoLineStart() and printInfoLineEnd() to frame the
-     *  'info' text.
+     *  Calls printInfoLineStart() and printInfoLineEnd() to frame the 'info' text.
      *  @param out output stream
      *  @param flags used to customize the output (see DCMTypes::PF_xxx)
      *  @param level current level of nested items. Used for indentation.
diff --git a/dcmdata/include/dcmtk/dcmdata/dcsequen.h b/dcmdata/include/dcmtk/dcmdata/dcsequen.h
index b66e8a8..5677d21 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcsequen.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcsequen.h
@@ -68,9 +68,9 @@ public:
      *  with a given object of the same type. The tag of the element is also
      *  considered as the first component that is compared, followed by the
      *  object types (VR, i.e. DCMTK'S EVR) and the comparison of all value
-     *  components of the object, preferrably in the order declared in the
+     *  components of the object, preferably in the order declared in the
      *  object (if applicable). For sequences that means that all
-     *  containted items are compared element by element, so this may be
+     *  contained items are compared element by element, so this may be
      *  an expensive operation!
      *  @param  rhs the right hand side of the comparison
      *  @return 0 if the object values are equal.
@@ -196,7 +196,7 @@ public:
      *  VR field and the value itself, for items and sequences it returns
      *  the length of the complete item or sequence including delimitation tags
      *  if applicable.
-     *  If length encodig is set to be explicit and the total sequence size is
+     *  If length encoding is set to be explicit and the total sequence size is
      *  larger than the available 32-bit length field, then undefined length
      *  is returned. If "dcmWriteOversizedSeqsAndItemsUndefined" is disabled,
      *  also the internal DcmObject errorFlag is set to EC_SeqOrItemContentOverflow
@@ -212,7 +212,7 @@ public:
     /** calculate the value length (without attribute tag, VR and length field)
      *  of this DICOM element when encoded with the given transfer syntax and
      *  the given encoding type for sequences.
-     *  If length encodig is set to be explicit and the total sequence size is
+     *  If length encoding is set to be explicit and the total sequence size is
      *  larger than the available 32-bit length field, then undefined length
      *  is returned. If "dcmWriteOversizedSeqsAndItemsImplicit" is disabled,
      *  also the internal DcmObject errorFlag is set to
@@ -308,8 +308,8 @@ public:
      *  character codes below 128 are considered to be ASCII codes and all others are
      *  considered to be non-ASCII.
      *  @param checkAllStrings if true, also check elements with string values not affected
-     *    by SpecificCharacterSet (0008,0005), default: only check PN, LO, LT, SH, ST, UC
-     *    and UT
+     *    by SpecificCharacterSet (0008,0005). By default, only check PN, LO, LT, SH, ST,
+     *    UC and UT.
      *  @return true if object contains non-ASCII characters, false otherwise
      */
     virtual OFBool containsExtendedCharacters(const OFBool checkAllStrings = OFFalse);
diff --git a/dcmdata/include/dcmtk/dcmdata/dctk.h b/dcmdata/include/dcmtk/dcmdata/dctk.h
index 3d0447d..2290d6c 100644
--- a/dcmdata/include/dcmtk/dcmdata/dctk.h
+++ b/dcmdata/include/dcmtk/dcmdata/dctk.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
@@ -94,6 +94,7 @@
 #include "dcmtk/dcmdata/dcvrfd.h"
 #include "dcmtk/dcmdata/dcvrof.h"
 #include "dcmtk/dcmdata/dcvrod.h"
+#include "dcmtk/dcmdata/dcvrol.h"
 
 // misc supporting tools
 #include "dcmtk/dcmdata/cmdlnarg.h"
diff --git a/dcmdata/include/dcmtk/dcmdata/dcuid.h b/dcmdata/include/dcmtk/dcmdata/dcuid.h
index 53c30b2..7d2254a 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcuid.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcuid.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
@@ -363,7 +363,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 ** Defined SOP Class UIDs according to DICOM standard
 */
 
-// Storage
+// Storage (DICOM)
 #define UID_RETIRED_StoredPrintStorage                             "1.2.840.10008.5.1.1.27"
 #define UID_RETIRED_HardcopyGrayscaleImageStorage                  "1.2.840.10008.5.1.1.29"
 #define UID_RETIRED_HardcopyColorImageStorage                      "1.2.840.10008.5.1.1.30"
@@ -433,6 +433,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_DeformableSpatialRegistrationStorage                   "1.2.840.10008.5.1.4.1.1.66.3"
 #define UID_SegmentationStorage                                    "1.2.840.10008.5.1.4.1.1.66.4"
 #define UID_SurfaceSegmentationStorage                             "1.2.840.10008.5.1.4.1.1.66.5"
+#define UID_TractographyResultsStorage                             "1.2.840.10008.5.1.4.1.1.66.6"
 #define UID_RealWorldValueMappingStorage                           "1.2.840.10008.5.1.4.1.1.67"
 #define UID_SurfaceScanMeshStorage                                 "1.2.840.10008.5.1.4.1.1.68.1"
 #define UID_SurfaceScanPointCloudStorage                           "1.2.840.10008.5.1.4.1.1.68.2"
@@ -477,6 +478,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_RadiopharmaceuticalRadiationDoseSRStorage              "1.2.840.10008.5.1.4.1.1.88.68"
 #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_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"
 #define UID_PositronEmissionTomographyImageStorage                 "1.2.840.10008.5.1.4.1.1.128"
@@ -493,6 +495,8 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_RTTreatmentSummaryRecordStorage                        "1.2.840.10008.5.1.4.1.1.481.7"
 #define UID_RTIonPlanStorage                                       "1.2.840.10008.5.1.4.1.1.481.8"
 #define UID_RTIonBeamsTreatmentRecordStorage                       "1.2.840.10008.5.1.4.1.1.481.9"
+#define UID_RTBeamsDeliveryInstructionStorage                      "1.2.840.10008.5.1.4.34.7"
+#define UID_RTBrachyApplicationSetupDeliveryInstructionStorage     "1.2.840.10008.5.1.4.34.10"
 #define UID_HangingProtocolStorage                                 "1.2.840.10008.5.1.4.38.1"
 #define UID_GenericImplantTemplateStorage                          "1.2.840.10008.5.1.4.43.1"
 #define UID_ImplantAssemblyTemplateStorage                         "1.2.840.10008.5.1.4.44.1"
@@ -525,7 +529,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_GETCompositeInstanceRootRetrieve                       "1.2.840.10008.5.1.4.1.2.4.3"
 #define UID_GETCompositeInstanceRetrieveWithoutBulkData            "1.2.840.10008.5.1.4.1.2.5.3"
 
-// Worklist
+// Modality Worklist
 #define UID_FINDModalityWorklistInformationModel                   "1.2.840.10008.5.1.4.31"
 
 // General Purpose Worklist
@@ -539,8 +543,7 @@ DCMTK_DCMDATA_EXPORT unsigned long dcmGuessModalityBytes(const char *sopClassUID
 #define UID_ModalityPerformedProcedureStepRetrieveSOPClass         "1.2.840.10008.3.1.2.3.4"
 #define UID_ModalityPerformedProcedureStepNotificationSOPClass     "1.2.840.10008.3.1.2.3.5"
 
-// Radiotherapy Treatment Delivery
-#define UID_RTBeamsDeliveryInstructionStorage                      "1.2.840.10008.5.1.4.34.7"
+// Radiotherapy
 #define UID_RTConventionalMachineVerification                      "1.2.840.10008.5.1.4.34.8"
 #define UID_RTIonMachineVerification                               "1.2.840.10008.5.1.4.34.9"
 
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvr.h b/dcmdata/include/dcmtk/dcmdata/dcvr.h
index 11c9e73..922c78a 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvr.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvr.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
@@ -26,6 +26,12 @@
 #include "dcmtk/ofstd/ofglobal.h"
 #include "dcmtk/dcmdata/dcdefine.h"
 
+// include this file in doxygen documentation
+
+/** @file dcvr.h
+ *  @brief definition and handling of value representations (VR)
+ */
+
 /** Global flag to enable/disable the generation of VR=UN, which has been
  *  introduced after the first edition of the DICOM standard (1993).
  *  If disabled, the VR=OB is used instead.
@@ -42,13 +48,19 @@ extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableUnlimitedTextVRGeneration;
  *  introduced after the first edition of the DICOM standard (1993).
  *  If disabled, the VR=UN (if enabled) or alternatively VR=OB is used.
  */
-extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherFloatStringVRGeneration; /* default OFTrue */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherFloatVRGeneration; /* default OFTrue */
 
 /** Global flag to enable/disable the generation of VR=OD, which has been
  *  introduced after the first edition of the DICOM standard (1993).
  *  If disabled, the VR=UN (if enabled) or alternatively VR=OB is used.
  */
-extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherDoubleStringVRGeneration; /* default OFTrue */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherDoubleVRGeneration; /* default OFTrue */
+
+/** Global flag to enable/disable the generation of VR=OL, which has been
+ *  introduced after the first edition of the DICOM standard (1993).
+ *  If disabled, the VR=UN (if enabled) or alternatively VR=OB is used.
+ */
+extern DCMTK_DCMDATA_EXPORT OFGlobal<OFBool> dcmEnableOtherLongVRGeneration; /* default OFTrue */
 
 /** Global flag to enable/disable the generation of VR=UR, which has been
  *  introduced after the first edition of the DICOM standard (1993).
@@ -126,16 +138,19 @@ enum DcmEVR
     /// long text
     EVR_LT,
 
-    /// other byte string
+    /// other byte
     EVR_OB,
 
-    /// other double string
+    /// other double
     EVR_OD,
 
-    /// other float string
+    /// other float
     EVR_OF,
 
-    /// other word string
+    /// other long
+    EVR_OL,
+
+    /// other word
     EVR_OW,
 
     /// person name
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrlo.h b/dcmdata/include/dcmtk/dcmdata/dcvrlo.h
index e7877c9..47eeebb 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrlo.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrlo.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
@@ -114,6 +114,8 @@ class DCMTK_DCMDATA_EXPORT DcmLongString
      *    (See DcmElement::checkVM() for a list of valid values.)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrlt.h b/dcmdata/include/dcmtk/dcmdata/dcvrlt.h
index 108c634..50f324c 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrlt.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrlt.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
@@ -123,6 +123,8 @@ class DCMTK_DCMDATA_EXPORT DcmLongText
      *  @param value string value to be checked
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrobow.h b/dcmdata/include/dcmtk/dcmdata/dcvrobow.h
index 379dec5..8a1c0fa 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrobow.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrobow.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2014, OFFIS e.V.
+ *  Copyright (C) 1994-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -27,8 +27,8 @@
 #include "dcmtk/dcmdata/dcelem.h"
 
 
-/** a class representing the DICOM value representations 'Other Byte String' (OB)
- *  and 'Other Word String' (OW)
+/** a class representing the DICOM value representations 'Other Byte' (OB)
+ *  and 'Other Word' (OW)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherByteOtherWord
   : public DcmElement
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrod.h b/dcmdata/include/dcmtk/dcmdata/dcvrod.h
index a135e31..eaa363e 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrod.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrod.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013, OFFIS e.V.
+ *  Copyright (C) 2013-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,7 +28,7 @@
 #include "dcmtk/dcmdata/dcvrfd.h"
 
 
-/** a class representing the DICOM value representation 'Other Double String' (OD)
+/** a class representing the DICOM value representation 'Other Double' (OD)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherDouble
   : public DcmFloatingPointDouble
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrof.h b/dcmdata/include/dcmtk/dcmdata/dcvrof.h
index e60df44..bd228fc 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrof.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrof.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2013, OFFIS e.V.
+ *  Copyright (C) 2002-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,7 +28,7 @@
 #include "dcmtk/dcmdata/dcvrfl.h"
 
 
-/** a class representing the DICOM value representation 'Other Float String' (OF)
+/** a class representing the DICOM value representation 'Other Float' (OF)
  */
 class DCMTK_DCMDATA_EXPORT DcmOtherFloat
   : public DcmFloatingPointSingle
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrod.h b/dcmdata/include/dcmtk/dcmdata/dcvrol.h
similarity index 78%
copy from dcmdata/include/dcmtk/dcmdata/dcvrod.h
copy to dcmdata/include/dcmtk/dcmdata/dcvrol.h
index a135e31..747bfeb 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrod.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrol.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013, OFFIS e.V.
+ *  Copyright (C) 2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -15,23 +15,23 @@
  *
  *  Author:  Joerg Riesmeier
  *
- *  Purpose: Interface of class DcmOtherDouble
+ *  Purpose: Interface of class DcmOtherLong
  *
  */
 
 
-#ifndef DCVROD_H
-#define DCVROD_H
+#ifndef DCVROL_H
+#define DCVROL_H
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
-#include "dcmtk/dcmdata/dcvrfd.h"
+#include "dcmtk/dcmdata/dcvrul.h"
 
 
-/** a class representing the DICOM value representation 'Other Double String' (OD)
+/** a class representing the DICOM value representation 'Other Long' (OL)
  */
-class DCMTK_DCMDATA_EXPORT DcmOtherDouble
-  : public DcmFloatingPointDouble
+class DCMTK_DCMDATA_EXPORT DcmOtherLong
+  : public DcmUnsignedLong
 {
 
  public:
@@ -41,34 +41,34 @@ class DCMTK_DCMDATA_EXPORT DcmOtherDouble
      *  @param tag DICOM tag for the new element
      *  @param len value length for the new element
      */
-    DcmOtherDouble(const DcmTag &tag,
-                   const Uint32 len = 0);
+    DcmOtherLong(const DcmTag &tag,
+                 const Uint32 len = 0);
 
     /** copy constructor
      *  @param old element to be copied
      */
-    DcmOtherDouble(const DcmOtherDouble &old);
+    DcmOtherLong(const DcmOtherLong &old);
 
     /** destructor
      */
-    virtual ~DcmOtherDouble();
+    virtual ~DcmOtherLong();
 
     /** assignment operator
      *  @param obj element to be assigned/copied
      *  @return reference to this object
      */
-    DcmOtherDouble &operator=(const DcmOtherDouble &obj);
+    DcmOtherLong &operator=(const DcmOtherLong &obj);
 
     /** clone method
      *  @return deep copy of this object
      */
-    virtual DcmObject *clone() const
+    virtual DcmOtherLong *clone() const
     {
-      return new DcmOtherDouble(*this);
+      return new DcmOtherLong(*this);
     }
 
-    /** Virtual object copying. This method can be used for DcmObject
-     *  and derived classes to get a deep copy of an object. Internally
+    /** virtual object copying. This method can be used for DcmObject
+     *  and derived classes to get a deep copy of an object. Internally,
      *  the assignment operator is called if the given DcmObject parameter
      *  is of the same type as "this" object instance. If not, an error
      *  is returned. This function permits copying an object by value
@@ -82,7 +82,7 @@ class DCMTK_DCMDATA_EXPORT DcmOtherDouble
     virtual OFCondition copyFrom(const DcmObject& rhs);
 
     /** get element type identifier
-     *  @return type identifier of this class (EVR_OD)
+     *  @return type identifier of this class (EVR_OL)
      */
     virtual DcmEVR ident() const;
 
@@ -109,4 +109,4 @@ class DCMTK_DCMDATA_EXPORT DcmOtherDouble
 };
 
 
-#endif // DCVROD_H
+#endif // DCVROL_H
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrpn.h b/dcmdata/include/dcmtk/dcmdata/dcvrpn.h
index ad42d2c..d485489 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrpn.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrpn.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
@@ -282,6 +282,8 @@ class DCMTK_DCMDATA_EXPORT DcmPersonName
      *    (See DcmElement::checkVM() for a list of valid values.)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrsh.h b/dcmdata/include/dcmtk/dcmdata/dcvrsh.h
index a5956fd..98bbb31 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrsh.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrsh.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
@@ -114,6 +114,8 @@ class DCMTK_DCMDATA_EXPORT DcmShortString
      *    (See DcmElement::checkVM() for a list of valid values.)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrst.h b/dcmdata/include/dcmtk/dcmdata/dcvrst.h
index 0595756..4536249 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrst.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrst.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
@@ -124,6 +124,8 @@ class DCMTK_DCMDATA_EXPORT DcmShortText
      *  @param value string value to be checked
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvruc.h b/dcmdata/include/dcmtk/dcmdata/dcvruc.h
index 97f1827..60bbde7 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvruc.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvruc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, OFFIS e.V.
+ *  Copyright (C) 2015-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -113,6 +113,8 @@ class DCMTK_DCMDATA_EXPORT DcmUnlimitedCharacters
      *    (See DcmElement::checkVM() for a list of valid values.)
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrul.h b/dcmdata/include/dcmtk/dcmdata/dcvrul.h
index 39eae5e..be292d0 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrul.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrul.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
@@ -63,7 +63,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLong
      *  with a given object of the same type. The tag of the element is also
      *  considered as the first component that is compared, followed by the
      *  object types (VR, i.e. DCMTK'S EVR) and the comparison of all value
-     *  components of the object, preferrably in the order declared in the
+     *  components of the object, preferably in the order declared in the
      *  object (if applicable).
      *  @param  rhs the right hand side of the comparison
      *  @return 0 if the object values are equal.
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrulup.h b/dcmdata/include/dcmtk/dcmdata/dcvrulup.h
index c2c2de2..8d0f3d5 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrulup.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrulup.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
@@ -53,10 +53,10 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
      */
     virtual ~DcmUnsignedLongOffset();
 
-    /** assignment operator. 
-     *  @param the offset to be copied
+    /** assignment operator.
+     *  @param obj the offset to be copied
      */
-    DcmUnsignedLongOffset &operator=(const DcmUnsignedLongOffset &);
+    DcmUnsignedLongOffset &operator=(const DcmUnsignedLongOffset &obj);
 
     /** clone method
      *  @return deep copy of this object
@@ -65,7 +65,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
     {
       return new DcmUnsignedLongOffset(*this);
     }
-    
+
     /** Virtual object copying. This method can be used for DcmObject
      *  and derived classes to get a deep copy of an object. Internally
      *  the assignment operator is called if the given DcmObject parameter
@@ -78,7 +78,7 @@ class DCMTK_DCMDATA_EXPORT DcmUnsignedLongOffset
      *                class type as "this" object
      *  @return EC_Normal if copying was successful, error otherwise
      */
-    virtual OFCondition copyFrom(const DcmObject& rhs);    
+    virtual OFCondition copyFrom(const DcmObject& rhs);
 
     /** get element type identifier
      *  @return type identifier of this class (internal type: EVR_up)
diff --git a/dcmdata/include/dcmtk/dcmdata/dcvrut.h b/dcmdata/include/dcmtk/dcmdata/dcvrut.h
index 5ed25d4..56f370f 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcvrut.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcvrut.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
@@ -124,6 +124,8 @@ class DCMTK_DCMDATA_EXPORT DcmUnlimitedText
      *  @param value string value to be checked
      *  @param charset character set (according to the value of the SpecificCharacterSet
      *    element) to be used for checking the string value. The default is ASCII (7-bit).
+     *    Currently, the VR checker only supports ASCII (ISO_IR 6) and Latin-1 (ISO_IR 100).
+     *    All other values disable the check of the value representation, e.g. "UNKNOWN".
      *  @return status of the check, EC_Normal if value is correct, an error code otherwise
      */
     static OFCondition checkStringValue(const OFString &value,
diff --git a/dcmdata/include/dcmtk/dcmdata/dcxfer.h b/dcmdata/include/dcmtk/dcmdata/dcxfer.h
index 8e99e84..c1ea907 100644
--- a/dcmdata/include/dcmtk/dcmdata/dcxfer.h
+++ b/dcmdata/include/dcmtk/dcmdata/dcxfer.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
@@ -26,6 +26,12 @@
 #include "dcmtk/dcmdata/dctypes.h"
 #include "dcmtk/dcmdata/dcvr.h"
 
+// include this file in doxygen documentation
+
+/** @file dcxfer.h
+ *  @brief definition and handling of transfer syntaxes
+ */
+
 /** enumeration of all DICOM transfer syntaxes known to the toolkit
  */
 typedef enum {
diff --git a/dcmdata/libi2d/Makefile.dep b/dcmdata/libi2d/Makefile.dep
index 950b0c9..7bf6384 100644
--- a/dcmdata/libi2d/Makefile.dep
+++ b/dcmdata/libi2d/Makefile.dep
@@ -14,6 +14,8 @@ i2d.o: i2d.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -98,6 +100,8 @@ i2dbmps.o: i2dbmps.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/libi2d/i2define.h \
@@ -122,6 +126,8 @@ i2djpgs.o: i2djpgs.cc ../../config/include/dcmtk/config/osconfig.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/libi2d/i2dimgs.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -175,6 +181,8 @@ i2dplnsc.o: i2dplnsc.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -227,6 +235,8 @@ i2dplsc.o: i2dplsc.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -279,6 +289,8 @@ i2dplvlp.o: i2dplvlp.cc ../../config/include/dcmtk/config/osconfig.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 \
diff --git a/dcmdata/libsrc/CMakeLists.txt b/dcmdata/libsrc/CMakeLists.txt
index 02d16bc..fec02e5 100644
--- a/dcmdata/libsrc/CMakeLists.txt
+++ b/dcmdata/libsrc/CMakeLists.txt
@@ -7,9 +7,9 @@ DCMTK_ADD_LIBRARY(dcmdata
   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 dcvrpn dcvrpobw dcvrsh
-  dcvrsl dcvrss dcvrst dcvrtm dcvruc dcvrui dcvrul dcvrulup dcvrur dcvrus dcvrut
-  dcwcache dcxfer vrscan vrscanl)
+  dcvrfd dcvrfl dcvris dcvrlo dcvrlt dcvrobow dcvrod dcvrof dcvrol dcvrpn dcvrpobw
+  dcvrsh dcvrsl dcvrss dcvrst dcvrtm dcvruc dcvrui dcvrul dcvrulup dcvrur dcvrus
+  dcvrut dcwcache dcxfer vrscan vrscanl)
 
 DCMTK_TARGET_LINK_MODULES(dcmdata ofstd oflog)
 DCMTK_TARGET_LINK_LIBRARIES(dcmdata ${ZLIB_LIBS})
diff --git a/dcmdata/libsrc/Makefile.dep b/dcmdata/libsrc/Makefile.dep
index 6d182f2..b328a01 100644
--- a/dcmdata/libsrc/Makefile.dep
+++ b/dcmdata/libsrc/Makefile.dep
@@ -38,7 +38,9 @@ cmdlnarg.o: cmdlnarg.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/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 dcbytstr.o: dcbytstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -51,6 +53,8 @@ dcbytstr.o: dcbytstr.cc ../../config/include/dcmtk/config/osconfig.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/dcbytstr.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -104,6 +108,8 @@ dcchrstr.o: dcchrstr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcitem.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/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -180,6 +186,8 @@ dccodec.o: dccodec.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -206,6 +214,8 @@ dcdatset.o: dcdatset.cc ../../config/include/dcmtk/config/osconfig.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/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/dcmdata/dctypes.h \
@@ -288,7 +298,10 @@ dcdatutl.o: dcdatutl.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 ../include/dcmtk/dcmdata/dcvr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
  ../include/dcmtk/dcmdata/dcobject.h ../include/dcmtk/dcmdata/dcerror.h \
@@ -315,6 +328,8 @@ dcddirif.o: dcddirif.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.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 \
@@ -380,6 +395,8 @@ dcdicdir.o: dcdicdir.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.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 \
@@ -447,6 +464,8 @@ dcdict.o: dcdict.cc ../../config/include/dcmtk/config/osconfig.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/dcmdata/dcdict.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/dcmdata/dchashdi.h ../include/dcmtk/dcmdata/dcdefine.h \
@@ -507,6 +526,8 @@ dcdirrec.o: dcdirrec.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -572,7 +593,8 @@ dcdirrec.o: dcdirrec.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcspchrs.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcspchrs.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
 dcelem.o: dcelem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -586,6 +608,8 @@ dcelem.o: dcelem.cc ../../config/include/dcmtk/config/osconfig.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/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -650,6 +674,8 @@ dcfilefo.o: dcfilefo.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -709,6 +735,8 @@ dcfilter.o: dcfilter.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -787,7 +815,9 @@ dchashdi.o: dchashdi.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/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 dcistrma.o: dcistrma.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcistrma.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -802,6 +832,8 @@ dcistrma.o: dcistrma.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -846,6 +878,8 @@ dcistrmb.o: dcistrmb.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -890,6 +924,8 @@ dcistrmf.o: dcistrmf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -934,6 +970,8 @@ dcistrmz.o: dcistrmz.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -978,6 +1016,8 @@ dcitem.o: dcitem.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1027,13 +1067,14 @@ dcitem.o: dcitem.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvris.h ../include/dcmtk/dcmdata/dcvrlo.h \
  ../include/dcmtk/dcmdata/dcchrstr.h ../include/dcmtk/dcmdata/dcvrlt.h \
  ../include/dcmtk/dcmdata/dcvrod.h ../include/dcmtk/dcmdata/dcvrof.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/dcvrul.h \
  ../include/dcmtk/dcmdata/dcvrpn.h ../include/dcmtk/dcmdata/dcvrsh.h \
  ../include/dcmtk/dcmdata/dcvrsl.h ../include/dcmtk/dcmdata/dcvrss.h \
  ../include/dcmtk/dcmdata/dcvrst.h ../include/dcmtk/dcmdata/dcvrtm.h \
  ../include/dcmtk/dcmdata/dcvruc.h ../include/dcmtk/dcmdata/dcvrui.h \
- ../include/dcmtk/dcmdata/dcvrul.h ../include/dcmtk/dcmdata/dcvrulup.h \
- ../include/dcmtk/dcmdata/dcvrur.h ../include/dcmtk/dcmdata/dcvrus.h \
- ../include/dcmtk/dcmdata/dcvrut.h ../include/dcmtk/dcmdata/dcspchrs.h \
+ ../include/dcmtk/dcmdata/dcvrulup.h ../include/dcmtk/dcmdata/dcvrur.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/ofutil.h \
@@ -1083,6 +1124,8 @@ dclist.o: dclist.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/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
 dcmetinf.o: dcmetinf.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1097,6 +1140,8 @@ dcmetinf.o: dcmetinf.cc ../../config/include/dcmtk/config/osconfig.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/dcmdata/dcmetinf.h ../include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/dcmdata/dctypes.h \
@@ -1147,6 +1192,8 @@ dcobject.o: dcobject.cc ../../config/include/dcmtk/config/osconfig.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/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -1223,6 +1270,8 @@ dcostrma.o: dcostrma.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcostrmz.h ../include/dcmtk/dcmdata/dcerror.h
@@ -1267,6 +1316,8 @@ dcostrmb.o: dcostrmb.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h
@@ -1311,6 +1362,8 @@ dcostrmf.o: dcostrmf.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h
@@ -1355,6 +1408,8 @@ dcostrmz.o: dcostrmz.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcerror.h
@@ -1373,6 +1428,8 @@ dcpath.o: dcpath.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1452,6 +1509,8 @@ dcpcache.o: dcpcache.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h ../include/dcmtk/dcmdata/dctag.h \
  ../include/dcmtk/dcmdata/dcstack.h
 dcpixel.o: dcpixel.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1500,6 +1559,8 @@ dcpixel.o: dcpixel.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/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/dccodec.h ../include/dcmtk/dcmdata/dcpixseq.h \
@@ -1521,6 +1582,8 @@ dcpixseq.o: dcpixseq.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
@@ -1602,6 +1665,8 @@ dcpxitem.o: dcpxitem.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/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/dcofsetl.h ../include/dcmtk/dcmdata/dcswap.h \
@@ -1648,6 +1713,8 @@ dcrleccd.o: dcrleccd.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1703,6 +1770,8 @@ dcrlecce.o: dcrlecce.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1756,6 +1825,8 @@ dcrlecp.o: dcrlecp.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
@@ -1801,6 +1872,8 @@ dcrledrg.o: dcrledrg.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcrleccd.h ../include/dcmtk/dcmdata/dcrlecp.h
@@ -1846,6 +1919,8 @@ dcrleerg.o: dcrleerg.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcxfer.h ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcrlecce.h ../include/dcmtk/dcmdata/dcrlecp.h
@@ -1895,6 +1970,8 @@ dcrlerp.o: dcrlerp.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/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
 dcsequen.o: dcsequen.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1909,6 +1986,8 @@ dcsequen.o: dcsequen.cc ../../config/include/dcmtk/config/osconfig.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/dcmdata/dcsequen.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
@@ -1969,6 +2048,8 @@ dcspchrs.o: dcspchrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcdefine.h ../include/dcmtk/dcmdata/dcitem.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/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
@@ -2055,6 +2136,8 @@ dcswap.o: dcswap.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
 dctag.o: dctag.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2125,6 +2208,8 @@ dctypes.o: dctypes.cc ../../config/include/dcmtk/config/osconfig.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
 dcuid.o: dcuid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
@@ -2167,6 +2252,8 @@ dcuid.o: dcuid.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofcrc32.h \
  ../../ofstd/include/dcmtk/ofstd/ofnetdb.h
 dcvr.o: dcvr.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2210,7 +2297,9 @@ dcvr.o: dcvr.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/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 dcvrae.o: dcvrae.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrae.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dctypes.h \
@@ -2252,6 +2341,8 @@ dcvrae.o: dcvrae.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2299,6 +2390,8 @@ dcvras.o: dcvras.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2350,6 +2443,8 @@ dcvrat.o: dcvrat.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/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
 dcvrcs.o: dcvrcs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2393,6 +2488,8 @@ dcvrcs.o: dcvrcs.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2440,6 +2537,8 @@ dcvrda.o: dcvrda.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2488,6 +2587,8 @@ dcvrds.o: dcvrds.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2535,6 +2636,8 @@ dcvrdt.o: dcvrdt.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2557,6 +2660,8 @@ dcvrfd.o: dcvrfd.cc ../../config/include/dcmtk/config/osconfig.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/dcmdata/dcvrfd.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2603,6 +2708,8 @@ dcvrfl.o: dcvrfl.cc ../../config/include/dcmtk/config/osconfig.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/dcmdata/dcvrfl.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2678,6 +2785,8 @@ dcvris.o: dcvris.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2725,6 +2834,8 @@ dcvrlo.o: dcvrlo.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2772,6 +2883,8 @@ dcvrlt.o: dcvrlt.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2790,6 +2903,8 @@ dcvrobow.o: dcvrobow.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
  ../include/dcmtk/dcmdata/dcvrobow.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
@@ -2872,9 +2987,11 @@ dcvrod.o: dcvrod.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/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/dcuid.h
+ ../include/dcmtk/dcmdata/dcswap.h
 dcvrof.o: dcvrof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofuuid.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -2921,9 +3038,62 @@ dcvrof.o: dcvrof.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/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/dcuid.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 \
+ ../../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 \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/dcvrul.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 \
+ ../../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 \
+ ../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
 dcvrpn.o: dcvrpn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dcvrpn.h ../include/dcmtk/dcmdata/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dctypes.h \
@@ -2965,6 +3135,8 @@ dcvrpn.o: dcvrpn.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3016,6 +3188,8 @@ dcvrpobw.o: dcvrpobw.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/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
 dcvrsh.o: dcvrsh.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3059,6 +3233,8 @@ dcvrsh.o: dcvrsh.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3110,6 +3286,8 @@ dcvrsl.o: dcvrsl.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/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
 dcvrss.o: dcvrss.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3157,6 +3335,8 @@ dcvrss.o: dcvrss.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/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
 dcvrst.o: dcvrst.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3200,6 +3380,8 @@ dcvrst.o: dcvrst.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3246,6 +3428,8 @@ dcvrtm.o: dcvrtm.cc ../../config/include/dcmtk/config/osconfig.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/dcbytstr.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3293,6 +3477,8 @@ dcvruc.o: dcvruc.cc ../../config/include/dcmtk/config/osconfig.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/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
@@ -3312,6 +3498,8 @@ dcvrui.o: dcvrui.cc ../../config/include/dcmtk/config/osconfig.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/dcvrui.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -3393,6 +3581,8 @@ dcvrul.o: dcvrul.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/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
 dcvrulup.o: dcvrulup.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3440,6 +3630,8 @@ dcvrulup.o: dcvrulup.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/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
 dcvrur.o: dcvrur.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3482,6 +3674,8 @@ dcvrur.o: dcvrur.cc ../../config/include/dcmtk/config/osconfig.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/dcbytstr.h \
  ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3533,6 +3727,8 @@ dcvrus.o: dcvrus.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/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
 dcvrut.o: dcvrut.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3575,6 +3771,8 @@ dcvrut.o: dcvrut.cc ../../config/include/dcmtk/config/osconfig.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/dcchrstr.h \
  ../include/dcmtk/dcmdata/dcbytstr.h ../include/dcmtk/dcmdata/dcelem.h \
  ../include/dcmtk/dcmdata/dcobject.h \
@@ -3597,6 +3795,8 @@ dcwcache.o: dcwcache.cc ../../config/include/dcmtk/config/osconfig.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/dcistrma.h ../include/dcmtk/dcmdata/dcxfer.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -3671,6 +3871,8 @@ dcxfer.o: dcxfer.cc ../../config/include/dcmtk/config/osconfig.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/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmdata/dcuid.h
@@ -3693,6 +3895,8 @@ mkdeftag.o: mkdeftag.cc ../../config/include/dcmtk/config/osconfig.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/dcdicent.h ../include/dcmtk/dcmdata/dctagkey.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
@@ -3715,6 +3919,8 @@ mkdictbi.o: mkdictbi.cc ../../config/include/dcmtk/config/osconfig.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/dcdicent.h ../include/dcmtk/dcmdata/dctagkey.h \
  ../include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
@@ -3733,6 +3939,8 @@ vrscan.o: vrscan.cc ../../config/include/dcmtk/config/osconfig.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 \
diff --git a/dcmdata/libsrc/Makefile.in b/dcmdata/libsrc/Makefile.in
index ab80da9..f844257 100644
--- a/dcmdata/libsrc/Makefile.in
+++ b/dcmdata/libsrc/Makefile.in
@@ -42,7 +42,7 @@ objs = dcpixseq.o dcpxitem.o dcuid.o dcerror.o \
 	dccodec.o dcvrda.o dcvrds.o dcvrdt.o dcvris.o dcvrtm.o dcvrui.o \
 	dcchrstr.o dcvrlo.o dcvrlt.o dcvrpn.o dcvrsh.o dcvrst.o dcvrobow.o \
 	dcvrat.o dcvrss.o dcvrus.o dcvrsl.o dcvrul.o dcvrulup.o dcvrfl.o \
-	dcvrfd.o dcvrpobw.o dcvrof.o dcvrod.o dcdirrec.o dcdicdir.o \
+	dcvrfd.o dcvrpobw.o dcvrof.o dcvrod.o dcvrol.o dcdirrec.o dcdicdir.o \
 	dcrleccd.o dcrlecce.o dcrlecp.o dcrlerp.o dcrledrg.o dcrleerg.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 \
diff --git a/dcmdata/libsrc/dcdatset.cc b/dcmdata/libsrc/dcdatset.cc
index 99d227e..3fcf6c3 100644
--- a/dcmdata/libsrc/dcdatset.cc
+++ b/dcmdata/libsrc/dcdatset.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
@@ -291,6 +291,7 @@ void DcmDataset::print(STD_NAMESPACE ostream&out,
 OFCondition DcmDataset::writeXML(STD_NAMESPACE ostream &out,
                                  const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     /* the Native DICOM Model as defined for Application Hosting needs special handling */
     if (flags & DCMTypes::XF_useNativeModel)
     {
@@ -318,18 +319,20 @@ OFCondition DcmDataset::writeXML(STD_NAMESPACE ostream &out,
         elementList->seek(ELP_first);
         do {
             dO = elementList->get();
-            dO->writeXML(out, flags & ~DCMTypes::XF_useXMLNamespace);
-        } while (elementList->seek(ELP_next));
+            l_error = dO->writeXML(out, flags & ~DCMTypes::XF_useXMLNamespace);
+        } while (l_error.good() && elementList->seek(ELP_next));
     }
-    /* write XML end tag (depending on output format) */
-    if (flags & DCMTypes::XF_useNativeModel)
+    if (l_error.good())
     {
-        out << "</NativeDicomModel>" << OFendl;
-    } else {
-        out << "</data-set>" << OFendl;
+        /* write XML end tag (depending on output format) */
+        if (flags & DCMTypes::XF_useNativeModel)
+        {
+            out << "</NativeDicomModel>" << OFendl;
+        } else {
+            out << "</data-set>" << OFendl;
+        }
     }
-    /* always report success */
-    return EC_Normal;
+    return l_error;
 }
 
 
@@ -366,13 +369,13 @@ OFCondition DcmDataset::read(DcmInputStream &inStream,
                     case EXS_LittleEndianExplicit:
                     case EXS_BigEndianExplicit:
                     case EXS_BigEndianImplicit:
-                        DCMDATA_DEBUG("DcmDataset::read() trying to detect transfer syntax of uncompressed dataset");
+                        DCMDATA_DEBUG("DcmDataset::read() trying to detect transfer syntax of uncompressed data set");
                         OriginalXfer = checkTransferSyntax(inStream);
                         if ((xfer != EXS_Unknown) && (OriginalXfer != xfer))
-                            DCMDATA_WARN("DcmDataset: Wrong transfer syntax specified, detecting from dataset");
+                            DCMDATA_WARN("DcmDataset: Wrong transfer syntax specified, detecting from data set");
                         break;
                     default:
-                        DCMDATA_DEBUG("DcmDataset::read() dataset seems to be compressed, so transfer syntax is not detected");
+                        DCMDATA_DEBUG("DcmDataset::read() data set seems to be compressed, so transfer syntax is not detected");
                         OriginalXfer = xfer;
                         break;
                 }
@@ -384,7 +387,7 @@ OFCondition DcmDataset::read(DcmInputStream &inStream,
                 /* If the transfer syntax is given, we want to use it. */
                 if (xfer == EXS_Unknown)
                 {
-                    DCMDATA_DEBUG("DcmDataset::read() trying to detect transfer syntax of dataset (because it is unknown)");
+                    DCMDATA_DEBUG("DcmDataset::read() trying to detect transfer syntax of data set (because it is unknown)");
                     OriginalXfer = checkTransferSyntax(inStream);
                 } else
                     OriginalXfer = xfer;
diff --git a/dcmdata/libsrc/dcdatutl.cc b/dcmdata/libsrc/dcdatutl.cc
index 01214ed..eaabb37 100644
--- a/dcmdata/libsrc/dcdatutl.cc
+++ b/dcmdata/libsrc/dcdatutl.cc
@@ -1,9 +1,9 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2011-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  This software and supporting documentation are maintained by
+ *  This software and supporting documentation were developed by
  *
  *    OFFIS e.V.
  *    R&D Division Health
@@ -11,9 +11,9 @@
  *    D-26121 Oldenburg, Germany
  *
  *
- *  Module:  dcmiod
+ *  Module:  dcmdata
  *
- *  Author:  Michael Onken
+ *  Author:  Joerg Riesmeier, Michael Onken
  *
  *  Purpose: Static helper functionality for dcmdata module
  *
@@ -26,17 +26,17 @@
 #include "dcmtk/dcmdata/dcmetinf.h"
 #include "dcmtk/dcmdata/dcfilefo.h"
 
-// --- static helpers ---
 
+// --- static helpers ---
 
-OFCondition DcmDataUtil::getSOPInstanceFromFile(const OFString &filename,
+OFCondition DcmDataUtil::getSOPInstanceFromFile(const OFFilename &filename,
                                                 OFString &sopClassUID,
                                                 OFString &sopInstanceUID,
                                                 OFString &transferSyntaxUID,
                                                 const E_FileReadMode readMode)
 {
   OFCondition status = EC_IllegalParameter;
-  if (!filename.empty())
+  if (!filename.isEmpty())
   {
     DCMDATA_DEBUG("getting SOP Class UID, SOP Instance UID and Transfer Syntax UID from DICOM file");
     sopClassUID.clear();
@@ -46,7 +46,7 @@ OFCondition DcmDataUtil::getSOPInstanceFromFile(const OFString &filename,
     if (readMode != ERM_dataset)
     {
       DcmMetaInfo metaInfo;
-      status = metaInfo.loadFile(filename.c_str());
+      status = metaInfo.loadFile(filename);
       if (status.good())
       {
         // try to get the UIDs from the meta-header
@@ -64,7 +64,7 @@ OFCondition DcmDataUtil::getSOPInstanceFromFile(const OFString &filename,
       if (status.bad() || sopClassUID.empty() || sopInstanceUID.empty() || transferSyntaxUID.empty())
       {
         DcmFileFormat fileformat;
-        status = fileformat.loadFile(filename.c_str(), EXS_Unknown, EGL_noChange, 256 /* maxReadLength */, readMode);
+        status = fileformat.loadFile(filename, EXS_Unknown, EGL_noChange, 256 /* maxReadLength */, readMode);
         if (status.good())
         {
           DcmDataset *dataset = fileformat.getDataset();
diff --git a/dcmdata/libsrc/dcddirif.cc b/dcmdata/libsrc/dcddirif.cc
index b038410..e58b064 100644
--- a/dcmdata/libsrc/dcddirif.cc
+++ b/dcmdata/libsrc/dcddirif.cc
@@ -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
@@ -622,6 +622,9 @@ OFString DicomDirInterface::recordTypeToName(const E_DirRecType recordType)
         case ERT_SurfaceScan:
             recordName = "SurfaceScan";
             break;
+        case ERT_Tract:
+            recordName = "Tract";
+            break;
         default:
             recordName = "(unknown-directory-record-type)";
             break;
@@ -660,7 +663,8 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
              compare(sopClass, UID_RadiopharmaceuticalRadiationDoseSRStorage) ||
              compare(sopClass, UID_SpectaclePrescriptionReportStorage) ||
              compare(sopClass, UID_MacularGridThicknessAndVolumeReportStorage) ||
-             compare(sopClass, UID_ImplantationPlanSRDocumentStorage))
+             compare(sopClass, UID_ImplantationPlanSRDocumentStorage) ||
+             compare(sopClass, UID_AcquisitionContextSRStorage))
     {
         result = ERT_SRDocument;
     }
@@ -750,13 +754,18 @@ static E_DirRecType sopClassToRecordType(const OFString &sopClass)
         result = ERT_ImplantGroup;
     else if (compare(sopClass, UID_ImplantAssemblyTemplateStorage))
         result = ERT_ImplantAssy;
-    else if (compare(sopClass, UID_RTBeamsDeliveryInstructionStorage))
+    else if (compare(sopClass, UID_RTBeamsDeliveryInstructionStorage) ||
+             compare(sopClass, UID_RTBrachyApplicationSetupDeliveryInstructionStorage))
+    {
         result = ERT_Plan;
+    }
     else if (compare(sopClass, UID_SurfaceScanMeshStorage) ||
              compare(sopClass, UID_SurfaceScanPointCloudStorage))
     {
         result = ERT_SurfaceScan;
     }
+    else if (compare(sopClass, UID_TractographyResultsStorage))
+        result = ERT_Tract;
     return result;
 }
 
@@ -943,6 +952,7 @@ static OFCondition insertSortedUnder(DcmDirectoryRecord *parent,
             case ERT_Surface:
             case ERT_Measurement:
             case ERT_SurfaceScan:
+            case ERT_Tract:
                 /* try to insert based on InstanceNumber */
                 result = insertWithISCriterion(parent, child, DCM_InstanceNumber);
                 break;
@@ -1494,6 +1504,9 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                 case AP_GeneralPurposeBDMPEG2MPatHL:
                 case AP_GeneralPurposeBDMPEG4HPatLV41:
                 case AP_GeneralPurposeBDMPEG4HPatLV41BD:
+                case AP_GeneralPurposeBDMPEG4HPatLV42_2D:
+                case AP_GeneralPurposeBDMPEG4HPatLV42_3D:
+                case AP_GeneralPurposeBDMPEG4StereoHPatLV42:
                 case AP_USBandFlashJPEG:
                 case AP_USBandFlashJPEG2000:
                 case AP_GeneralPurposeMIME:
@@ -1508,6 +1521,12 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                         expectedTransferSyntax = UID_MPEG4HighProfileLevel4_1TransferSyntax;
                     else if (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD)
                         expectedTransferSyntax = UID_MPEG4BDcompatibleHighProfileLevel4_1TransferSyntax;
+                    else if (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D)
+                        expectedTransferSyntax = UID_MPEG4HighProfileLevel4_2_For2DVideoTransferSyntax;
+                    else if (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D)
+                        expectedTransferSyntax = UID_MPEG4HighProfileLevel4_2_For3DVideoTransferSyntax;
+                    else if (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42)
+                        expectedTransferSyntax = UID_MPEG4StereoHighProfileLevel4_2TransferSyntax;
                     /* is it an image ? */
                     for (int i = 0; i < numberOfDcmImageSOPClassUIDs && !found; i++)
                         found = compare(mediaSOPClassUID, dcmImageSOPClassUIDs[i]);
@@ -1516,10 +1535,12 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                     {
                         found = compare(mediaSOPClassUID, UID_RTDoseStorage) ||
                                 compare(mediaSOPClassUID, UID_RTStructureSetStorage) ||
-                                compare(mediaSOPClassUID, UID_RTBeamsTreatmentRecordStorage) ||
                                 compare(mediaSOPClassUID, UID_RTPlanStorage) ||
-                                compare(mediaSOPClassUID, UID_RTBrachyTreatmentRecordStorage) ||
                                 compare(mediaSOPClassUID, UID_RTTreatmentSummaryRecordStorage) ||
+                                compare(mediaSOPClassUID, UID_RTBeamsTreatmentRecordStorage) ||
+                                compare(mediaSOPClassUID, UID_RTBeamsDeliveryInstructionStorage) ||
+                                compare(mediaSOPClassUID, UID_RTBrachyTreatmentRecordStorage) ||
+                                compare(mediaSOPClassUID, UID_RTBrachyApplicationSetupDeliveryInstructionStorage) ||
                                 compare(mediaSOPClassUID, UID_RTIonPlanStorage) ||
                                 compare(mediaSOPClassUID, UID_RTIonBeamsTreatmentRecordStorage);
                     }
@@ -1539,7 +1560,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 compare(mediaSOPClassUID, UID_RadiopharmaceuticalRadiationDoseSRStorage) ||
                                 compare(mediaSOPClassUID, UID_SpectaclePrescriptionReportStorage) ||
                                 compare(mediaSOPClassUID, UID_MacularGridThicknessAndVolumeReportStorage) ||
-                                compare(mediaSOPClassUID, UID_ImplantationPlanSRDocumentStorage);
+                                compare(mediaSOPClassUID, UID_ImplantationPlanSRDocumentStorage) ||
+                                compare(mediaSOPClassUID, UID_AcquisitionContextSRStorage);
                      }
                     /* is it one of the waveform SOP Classes? */
                     if (!found)
@@ -1619,7 +1641,8 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 compare(mediaSOPClassUID, UID_RealWorldValueMappingStorage) ||
                                 compare(mediaSOPClassUID, UID_HangingProtocolStorage) ||
                                 compare(mediaSOPClassUID, UID_StereometricRelationshipStorage) ||
-                                compare(mediaSOPClassUID, UID_ColorPaletteStorage);
+                                compare(mediaSOPClassUID, UID_ColorPaletteStorage) ||
+                                compare(mediaSOPClassUID, UID_TractographyResultsStorage);
                     }
                     /* the following SOP classes have been retired with previous editions of the DICOM standard */
                     if (!found && RetiredSOPClassSupport)
@@ -1805,6 +1828,45 @@ OFCondition DicomDirInterface::checkSOPClassAndXfer(DcmMetaInfo *metainfo,
                                 OFSTRINGSTREAM_FREESTR(tmpString)
                             }
                             break;
+                        case AP_GeneralPurposeBDMPEG4HPatLV42_2D:
+                        case AP_GeneralPurposeBDMPEG4HPatLV42_3D:
+                        case AP_GeneralPurposeBDMPEG4StereoHPatLV42:
+                            /* compare with expected transfer syntax */
+                            found = compare(transferSyntax, expectedTransferSyntax);
+                            if (found)
+                            {
+                                /* check for multi-frame composite IOD */
+                                if (!isMultiframeStorageSOPClass(mediaSOPClassUID))
+                                {
+                                    /* create error message */
+                                    OFOStringStream oss;
+                                    oss << xferName << " only for multi-frame composite IODs: " << filename
+                                        << OFStringStream_ends;
+                                    OFSTRINGSTREAM_GETSTR(oss, tmpString)
+                                    if (TransferSyntaxCheck)
+                                    {
+                                        DCMDATA_ERROR(tmpString);
+                                        result = EC_ApplicationProfileViolated;
+                                    } else
+                                        DCMDATA_WARN(tmpString);
+                                    OFSTRINGSTREAM_FREESTR(tmpString)
+                                }
+                            } else {
+                                const OFString expXferName = dcmFindNameOfUID(expectedTransferSyntax.c_str(), "");
+                                /* create error message */
+                                OFOStringStream oss;
+                                oss << expXferName << " expected but " << xferName << " found: " << filename
+                                    << OFStringStream_ends;
+                                OFSTRINGSTREAM_GETSTR(oss, tmpString)
+                                if (TransferSyntaxCheck)
+                                {
+                                    DCMDATA_ERROR(tmpString);
+                                    result = EC_ApplicationProfileViolated;
+                                } else
+                                    DCMDATA_WARN(tmpString);
+                                OFSTRINGSTREAM_FREESTR(tmpString)
+                            }
+                            break;
                         case AP_XrayAngiographicDVD:
                             if (compare(mediaSOPClassUID, UID_XRayAngiographicImageStorage))
                             {
@@ -2595,6 +2657,7 @@ OFCondition DicomDirInterface::checkMandatoryAttributes(DcmMetaInfo *metainfo,
                 case ERT_ValueMap:
                 case ERT_Surface:
                 case ERT_Measurement:
+                case ERT_Tract:
                     if (!checkExistsWithValue(dataset, DCM_InstanceNumber, filename))
                         result = EC_InvalidTag;
                     if (!checkExistsWithValue(dataset, DCM_ContentDate, filename))
@@ -2629,6 +2692,9 @@ OFCondition DicomDirInterface::checkMandatoryAttributes(DcmMetaInfo *metainfo,
                             (ApplicationProfile == AP_GeneralPurposeBDMPEG2MPatHL) ||
                             (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41) ||
                             (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD) ||
+                            (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D) ||
+                            (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D) ||
+                            (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42) ||
                             (ApplicationProfile == AP_USBandFlashJPEG) ||
                             (ApplicationProfile == AP_USBandFlashJPEG2000) ||
                             (ApplicationProfile == AP_MPEG2MPatMLDVD))
@@ -2744,7 +2810,7 @@ OFCondition DicomDirInterface::loadAndCheckDicomFile(const OFFilename &filename,
             /* check for empty dataset */
             if ((dataset == NULL) || (dataset->card() == 0))
             {
-                DCMDATA_ERROR("file contains no data (no dataset): " << filename);
+                DCMDATA_ERROR("file contains no data (no data set): " << filename);
                 result = EC_CorruptedData;
             }
             /* only proceed if previous checks have been passed */
@@ -2858,6 +2924,7 @@ OFBool DicomDirInterface::recordMatchesDataset(DcmDirectoryRecord *record,
             case ERT_ImplantAssy:
             case ERT_Plan:
             case ERT_SurfaceScan:
+            case ERT_Tract:
                 /* The attribute ReferencedSOPInstanceUID is automatically
                  * put into a Directory Record when a filename is present.
                 */
@@ -2918,6 +2985,9 @@ DcmDirectoryRecord *DicomDirInterface::buildPatientRecord(DcmDirectoryRecord *re
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG2MPatHL) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42) ||
                 (ApplicationProfile == AP_USBandFlashJPEG) ||
                 (ApplicationProfile == AP_USBandFlashJPEG2000) ||
                 (ApplicationProfile == AP_MPEG2MPatMLDVD))
@@ -3008,6 +3078,9 @@ DcmDirectoryRecord *DicomDirInterface::buildSeriesRecord(DcmDirectoryRecord *rec
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG2MPatHL) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42) ||
                 (ApplicationProfile == AP_USBandFlashJPEG) ||
                 (ApplicationProfile == AP_USBandFlashJPEG2000) ||
                 (ApplicationProfile == AP_MPEG2MPatMLDVD))
@@ -3595,6 +3668,9 @@ DcmDirectoryRecord *DicomDirInterface::buildSpectroscopyRecord(DcmDirectoryRecor
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG2MPatHL) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41) ||
                 (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV41BD) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_2D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4HPatLV42_3D) ||
+                (ApplicationProfile == AP_GeneralPurposeBDMPEG4StereoHPatLV42) ||
                 (ApplicationProfile == AP_USBandFlashJPEG) ||
                 (ApplicationProfile == AP_USBandFlashJPEG2000))
             {
@@ -4006,6 +4082,40 @@ DcmDirectoryRecord *DicomDirInterface::buildSurfaceScanRecord(DcmDirectoryRecord
 }
 
 
+// create or update tract record and copy required values from dataset
+DcmDirectoryRecord *DicomDirInterface::buildTractRecord(DcmDirectoryRecord *record,
+                                                        DcmFileFormat *fileformat,
+                                                        const OFString &referencedFileID,
+                                                        const OFFilename &sourceFilename)
+{
+    /* create new surface record */
+    if (record == NULL)
+        record = new DcmDirectoryRecord(ERT_Tract, referencedFileID.c_str(), sourceFilename, fileformat);
+    if (record != NULL)
+    {
+        /* check whether new record is ok */
+        if (record->error().good())
+        {
+            DcmDataset *dataset = fileformat->getDataset();
+            /* copy attribute values from dataset to surface record */
+            copyElementType1(dataset, DCM_ContentDate, record, sourceFilename);
+            copyElementType1(dataset, DCM_ContentTime, record, sourceFilename);
+            copyElementType1(dataset, DCM_InstanceNumber, record, sourceFilename);
+            copyElementType1(dataset, DCM_ContentLabel, record, sourceFilename);
+            copyElementType2(dataset, DCM_ContentDescription, record, sourceFilename);
+            copyElementType2(dataset, DCM_ContentCreatorName, record, sourceFilename);
+        } else {
+            printRecordErrorMessage(record->error(), ERT_Tract, "create");
+            /* free memory */
+            delete record;
+            record = NULL;
+        }
+    } else
+        printRecordErrorMessage(EC_MemoryExhausted, ERT_Tract, "create");
+    return record;
+}
+
+
 // create or update image record and copy required values from dataset
 DcmDirectoryRecord *DicomDirInterface::buildImageRecord(DcmDirectoryRecord *record,
                                                         DcmFileFormat *fileformat,
@@ -4042,6 +4152,9 @@ DcmDirectoryRecord *DicomDirInterface::buildImageRecord(DcmDirectoryRecord *reco
                 case AP_GeneralPurposeBDMPEG2MPatHL:
                 case AP_GeneralPurposeBDMPEG4HPatLV41:
                 case AP_GeneralPurposeBDMPEG4HPatLV41BD:
+                case AP_GeneralPurposeBDMPEG4HPatLV42_2D:
+                case AP_GeneralPurposeBDMPEG4HPatLV42_3D:
+                case AP_GeneralPurposeBDMPEG4StereoHPatLV42:
                 case AP_USBandFlashJPEG:
                 case AP_USBandFlashJPEG2000:
                     copyElementType1(dataset, DCM_Rows, record, sourceFilename);
@@ -4430,6 +4543,9 @@ DcmDirectoryRecord *DicomDirInterface::addRecord(DcmDirectoryRecord *parent,
                 case ERT_SurfaceScan:
                     record = buildSurfaceScanRecord(record, fileformat, referencedFileID, sourceFilename);
                     break;
+                case ERT_Tract:
+                    record = buildTractRecord(record, fileformat, referencedFileID, sourceFilename);
+                    break;
                 default:
                     /* it can only be an image */
                     record = buildImageRecord(record, fileformat, referencedFileID, sourceFilename);
@@ -4611,6 +4727,7 @@ void DicomDirInterface::inventMissingInstanceLevelAttributes(DcmDirectoryRecord
                 case ERT_Measurement:
                 case ERT_Plan:
                 case ERT_SurfaceScan:
+                case ERT_Tract:
                     /* nothing to do */
                     break;
                 default:
@@ -5066,6 +5183,15 @@ const char *DicomDirInterface::getProfileName(const E_ApplicationProfile profile
         case AP_GeneralPurposeBDMPEG4HPatLV41BD:
             result = "STD-GEN-BD-MPEG4-HPLV41BD";
             break;
+        case AP_GeneralPurposeBDMPEG4HPatLV42_2D:
+            result = "STD-GEN-BD-MPEG4-HPLV42-2D";
+            break;
+        case AP_GeneralPurposeBDMPEG4HPatLV42_3D:
+            result = "STD-GEN-BD-MPEG4-HPLV42-3D";
+            break;
+        case AP_GeneralPurposeBDMPEG4StereoHPatLV42:
+            result = "STD-GEN-BD-MPEG4-SHPLV42";
+            break;
         case AP_USBandFlashJPEG:
             result = "STD-GEN-USB/MMC/CF/SD-JPEG";
             break;
diff --git a/dcmdata/libsrc/dcdictbi.cc b/dcmdata/libsrc/dcdictbi.cc
index e858ec4..5f98fe2 100644
--- a/dcmdata/libsrc/dcdictbi.cc
+++ b/dcmdata/libsrc/dcdictbi.cc
@@ -4,7 +4,7 @@
 **
 **   User: joergr
 **   Host: thinkpad
-**   Date: 2015-09-18 11:18:13
+**   Date: 2016-01-25 17:53:36
 **   Prog: /home/joergr/Source/dcmtk-full/public/dcmdata/libsrc/mkdictbi
 **
 **   From: ../data/dicom.dic
@@ -520,6 +520,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_AE, "RetrieveAETitle", 1, -1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0008, 0x0055, 0x0008, 0x0055,
+      EVR_AE, "StationAETitle", 1, 1, "CP_1516",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0008, 0x0056, 0x0008, 0x0056,
       EVR_CS, "InstanceAvailability", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -900,6 +904,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "ReferencedSOPSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0008, 0x119a, 0x0008, 0x119a,
+      EVR_SQ, "OtherFailuresSequence", 1, 1, "CP_1364",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0008, 0x1200, 0x0008, 0x1200,
       EVR_SQ, "StudiesContainingOtherReferencedInstancesSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -1966,6 +1974,18 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "IssuerOfPatientIDQualifiersSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0010, 0x0026, 0x0010, 0x0026,
+      EVR_SQ, "SourcePatientGroupIdentificationSequence", 1, 1, "CP_1457",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0027, 0x0010, 0x0027,
+      EVR_SQ, "GroupOfPatientsIdentificationSequence", 1, 1, "CP_1457",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0028, 0x0010, 0x0028,
+      EVR_US, "SubjectRelativePositionInImage", 3, 3, "CP_1457",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0010, 0x0030, 0x0010, 0x0030,
       EVR_DA, "PatientBirthDate", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -1998,6 +2018,38 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "QualityControlSubjectTypeCodeSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0010, 0x0212, 0x0010, 0x0212,
+      EVR_UC, "StrainDescription", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0213, 0x0010, 0x0213,
+      EVR_LO, "StrainNomenclature", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0214, 0x0010, 0x0214,
+      EVR_LO, "StrainStockNumber", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0215, 0x0010, 0x0215,
+      EVR_SQ, "StrainSourceRegistryCodeSequence", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0216, 0x0010, 0x0216,
+      EVR_SQ, "StrainStockSequence", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0217, 0x0010, 0x0217,
+      EVR_LO, "StrainSource", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0218, 0x0010, 0x0218,
+      EVR_UT, "StrainAdditionalInformation", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0010, 0x0219, 0x0010, 0x0219,
+      EVR_SQ, "StrainCodeSequence", 1, 1, "CP_1478",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0010, 0x1000, 0x0010, 0x1000,
       EVR_LO, "OtherPatientIDs", 1, -1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -20654,6 +20706,14 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "UsedSegmentsSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0062, 0x0020, 0x0062, 0x0020,
+      EVR_UT, "TrackingID", 1, 1, "CP_1496",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0062, 0x0021, 0x0062, 0x0021,
+      EVR_UI, "TrackingUID", 1, 1, "CP_1496",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0064, 0x0002, 0x0064, 0x0002,
       EVR_SQ, "DeformableRegistrationSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -20875,19 +20935,83 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0066, 0x0040, 0x0066, 0x0040,
-      EVR_UL, "LongPrimitivePointIndexList", 1, -1, "DICOM",
+      EVR_OL, "LongPrimitivePointIndexList", 1, 1, "CP_1499",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0066, 0x0041, 0x0066, 0x0041,
-      EVR_UL, "LongTrianglePointIndexList", 3, -1, "DICOM",
+      EVR_OL, "LongTrianglePointIndexList", 1, 1, "CP_1499",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0066, 0x0042, 0x0066, 0x0042,
-      EVR_UL, "LongEdgePointIndexList", 2, -1, "DICOM",
+      EVR_OL, "LongEdgePointIndexList", 1, 1, "CP_1499",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0066, 0x0043, 0x0066, 0x0043,
-      EVR_UL, "LongVertexPointIndexList", 1, -1, "DICOM",
+      EVR_OL, "LongVertexPointIndexList", 1, 1, "CP_1499",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0101, 0x0066, 0x0101,
+      EVR_SQ, "TrackSetSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0102, 0x0066, 0x0102,
+      EVR_SQ, "TrackSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0103, 0x0066, 0x0103,
+      EVR_OW, "RecommendedDisplayCIELabValueList", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0104, 0x0066, 0x0104,
+      EVR_SQ, "TrackingAlgorithmIdentificationSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0105, 0x0066, 0x0105,
+      EVR_UL, "TrackSetNumber", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0106, 0x0066, 0x0106,
+      EVR_LO, "TrackSetLabel", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0107, 0x0066, 0x0107,
+      EVR_UT, "TrackSetDescription", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0108, 0x0066, 0x0108,
+      EVR_SQ, "TrackSetAnatomicalTypeCodeSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0121, 0x0066, 0x0121,
+      EVR_SQ, "MeasurementsSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0124, 0x0066, 0x0124,
+      EVR_SQ, "TrackSetStatisticsSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0125, 0x0066, 0x0125,
+      EVR_OF, "FloatingPointValues", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0129, 0x0066, 0x0129,
+      EVR_OL, "TrackPointIndexList", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0130, 0x0066, 0x0130,
+      EVR_SQ, "TrackStatisticsSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0132, 0x0066, 0x0132,
+      EVR_SQ, "MeasurementValuesSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0133, 0x0066, 0x0133,
+      EVR_SQ, "DiffusionAcquisitionCodeSequence", 1, 1, "Supplement_181",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0066, 0x0134, 0x0066, 0x0134,
+      EVR_SQ, "DiffusionModelCodeSequence", 1, 1, "Supplement_181",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
   , { 0x0068, 0x6210, 0x0068, 0x6210,
@@ -21530,6 +21654,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "MatrixSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0070, 0x030b, 0x0070, 0x030b,
+      EVR_FD, "FrameOfReferenceToDisplayedCoordinateSystemTransformationMatrix", 16, 16, "CP_1487",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0070, 0x030c, 0x0070, 0x030c,
       EVR_CS, "FrameOfReferenceTransformationMatrixType", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -22446,6 +22574,62 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_FD, "DoubleExposureFieldDelta", 4, 4, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x0074, 0x1401, 0x0074, 0x1401,
+      EVR_SQ, "BrachyTaskSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1402, 0x0074, 0x1402,
+      EVR_DS, "ContinuationStartTotalReferenceAirKerma", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1403, 0x0074, 0x1403,
+      EVR_DS, "ContinuationEndTotalReferenceAirKerma", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1404, 0x0074, 0x1404,
+      EVR_IS, "ContinuationPulseNumber", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1405, 0x0074, 0x1405,
+      EVR_SQ, "ChannelDeliveryOrderSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1406, 0x0074, 0x1406,
+      EVR_IS, "ReferencedChannelNumber", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1407, 0x0074, 0x1407,
+      EVR_DS, "StartCumulativeTimeWeight", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1408, 0x0074, 0x1408,
+      EVR_DS, "EndCumulativeTimeWeight", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x1409, 0x0074, 0x1409,
+      EVR_SQ, "OmittedChannelSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140a, 0x0074, 0x140a,
+      EVR_CS, "ReasonForChannelOmission", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140b, 0x0074, 0x140b,
+      EVR_LO, "ReasonForChannelOmissionDescription", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140c, 0x0074, 0x140c,
+      EVR_IS, "ChannelDeliveryOrderIndex", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140d, 0x0074, 0x140d,
+      EVR_SQ, "ChannelDeliveryContinuationSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x0074, 0x140e, 0x0074, 0x140e,
+      EVR_SQ, "OmittedApplicationSetupSequence", 1, 1, "Supplement_184",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x0076, 0x0001, 0x0076, 0x0001,
       EVR_LO, "ImplantAssemblyTemplateName", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -25004,6 +25188,18 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_FL, "AverageBeamDosePointSSD", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x0090, 0x300a, 0x0090,
+      EVR_CS, "BeamDoseType", 1, 1, "CP_1431",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0091, 0x300a, 0x0091,
+      EVR_DS, "AlternateBeamDose", 1, 1, "CP_1431",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0092, 0x300a, 0x0092,
+      EVR_CS, "AlternateBeamDoseType", 1, 1, "CP_1431",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300a, 0x00a0, 0x300a, 0x00a0,
       EVR_IS, "NumberOfBrachyApplicationSetups", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -25888,6 +26084,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_CS, "ScanMode", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x0309, 0x300a, 0x0309,
+      EVR_CS, "ModulatedScanModeType", 1, 1, "CP_1432",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300a, 0x030a, 0x300a, 0x030a,
       EVR_FL, "VirtualSourceAxisDistances", 2, 2, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -25996,6 +26196,10 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_LO, "PatientSupportAccessoryCode", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x0355, 0x300a, 0x0355,
+      EVR_LO, "TrayAccessoryCode", 1, 1, "CP_1504",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300a, 0x0356, 0x300a, 0x0356,
       EVR_FL, "FixationLightAzimuthalAngle", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
@@ -26208,6 +26412,54 @@ static const DBI_SimpleEntry simpleBuiltinDict[] = {
       EVR_SQ, "DeviceMotionParameterCodeSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
       NULL }
+  , { 0x300a, 0x0501, 0x300a, 0x0501,
+      EVR_FL, "DistalDepthFraction", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0502, 0x300a, 0x0502,
+      EVR_FL, "DistalDepth", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0503, 0x300a, 0x0503,
+      EVR_FL, "NominalRangeModulatioFractions", 2, 2, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0504, 0x300a, 0x0504,
+      EVR_FL, "NominalRangeModulatedRegionDepths", 2, 2, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0505, 0x300a, 0x0505,
+      EVR_SQ, "DepthDoseParametersSequence", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0506, 0x300a, 0x0506,
+      EVR_SQ, "DeliveredDepthDoseParametersSequence", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0507, 0x300a, 0x0507,
+      EVR_FL, "DeliveredDistalDepthFraction", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0508, 0x300a, 0x0508,
+      EVR_FL, "DeliveredDistalDepth", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0509, 0x300a, 0x0509,
+      EVR_FL, "DeliveredNominalRangeModulationFractions", 2, 2, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0510, 0x300a, 0x0510,
+      EVR_FL, "DeliveredNominalRangeModulatedRegionDepths", 2, 2, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0511, 0x300a, 0x0511,
+      EVR_CS, "DeliveredReferenceDoseDefinition", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
+  , { 0x300a, 0x0512, 0x300a, 0x0512,
+      EVR_CS, "ReferenceDoseDefinition", 1, 1, "CP_1460",
+      DcmDictRange_Unspecified, DcmDictRange_Unspecified,
+      NULL }
   , { 0x300c, 0x0002, 0x300c, 0x0002,
       EVR_SQ, "ReferencedRTPlanSequence", 1, 1, "DICOM",
       DcmDictRange_Unspecified, DcmDictRange_Unspecified,
diff --git a/dcmdata/libsrc/dcdirrec.cc b/dcmdata/libsrc/dcdirrec.cc
index cad9da7..e863e25 100644
--- a/dcmdata/libsrc/dcdirrec.cc
+++ b/dcmdata/libsrc/dcdirrec.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
@@ -101,7 +101,8 @@ static const char *DRTypeNames[] =
     "IMPLANT GROUP",
     "IMPLANT ASSY",
     "PLAN",
-    "SURFACE SCAN"
+    "SURFACE SCAN",
+    "TRACT"
 };
 
 static const short DIM_OF_DRTypeNames = OFstatic_cast(short, (sizeof(DRTypeNames) / sizeof(DRTypeNames[0])));
@@ -341,7 +342,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_FilmBox:
+        case ERT_FilmBox:  // retired
             switch (lowerRecord)
             {
                 case ERT_ImageBox:
@@ -353,7 +354,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_FilmSession:
+        case ERT_FilmSession:  // retired
             switch (lowerRecord)
             {
                 case ERT_FilmBox:
@@ -378,7 +379,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_PrintQueue:
+        case ERT_PrintQueue:  // retired
             switch (lowerRecord)
             {
                 case ERT_FilmSession:
@@ -390,7 +391,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_Results:
+        case ERT_Results:  // retired
             switch (lowerRecord)
             {
                 case ERT_Interpretation:
@@ -430,6 +431,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                 case ERT_Measurement:
                 case ERT_Plan:
                 case ERT_SurfaceScan:
+                case ERT_Tract:
                 case ERT_Private:
                     l_error = EC_Normal;
                     break;
@@ -454,7 +456,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_Topic:
+        case ERT_Topic:  // retired
             switch (lowerRecord)
             {
                 case ERT_Curve:
@@ -486,7 +488,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
                     break;
             }
             break;
-        case ERT_Mrdr:
+        case ERT_Mrdr:  // retired
             l_error = EC_IllegalCall;
             break;
         case ERT_Curve:
@@ -524,6 +526,7 @@ OFCondition DcmDirectoryRecord::checkHierarchy(const E_DirRecType upperRecord,
         case ERT_ImplantAssy:
         case ERT_Plan:
         case ERT_SurfaceScan:
+        case ERT_Tract:
         case ERT_Private:
             switch (lowerRecord)
             {
@@ -593,7 +596,7 @@ E_DirRecType DcmDirectoryRecord::lookForRecordType()
 static void hostToDicomFilename(char *fname)
 {
     /*
-    ** Massage filename into dicom format.
+    ** Massage filename into DICOM format.
     ** Eliminate any invalid characters.
     ** Most commonly there is a '.' at the end of a filename.
     */
@@ -1254,10 +1257,11 @@ void DcmDirectoryRecord::print(STD_NAMESPACE ostream&out,
 OFCondition DcmDirectoryRecord::writeXML(STD_NAMESPACE ostream &out,
                                          const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* in Native DICOM Model, there is no concept of a DICOMDIR */
-        return makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
+        l_error = makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
             "Cannot convert Directory Record to Native DICOM Model");
     } else {
         /* XML start tag for "item" */
@@ -1278,16 +1282,18 @@ OFCondition DcmDirectoryRecord::writeXML(STD_NAMESPACE ostream &out,
             elementList->seek(ELP_first);
             do {
                 dO = elementList->get();
-                dO->writeXML(out, flags);
-            } while (elementList->seek(ELP_next));
+                l_error = dO->writeXML(out, flags);
+            } while (l_error.good() && elementList->seek(ELP_next));
+        }
+        if (l_error.good())
+        {
+            if (lowerLevelList->card() > 0)
+                lowerLevelList->writeXML(out, flags);
+            /* XML end tag for "item" */
+            out << "</item>" << OFendl;
         }
-        if (lowerLevelList->card() > 0)
-            lowerLevelList->writeXML(out, flags);
-        /* XML end tag for "item" */
-        out << "</item>" << OFendl;
-        /* always report success */
-        return EC_Normal;
     }
+    return l_error;
 }
 
 
diff --git a/dcmdata/libsrc/dcelem.cc b/dcmdata/libsrc/dcelem.cc
index b1b6763..2b57715 100644
--- a/dcmdata/libsrc/dcelem.cc
+++ b/dcmdata/libsrc/dcelem.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
@@ -1465,7 +1465,7 @@ void DcmElement::writeXMLStartTag(STD_NAMESPACE ostream &out,
                     DCMDATA_WARN("Cannot write private creator for group 0x"
                         << STD_NAMESPACE hex << STD_NAMESPACE setfill('0') << STD_NAMESPACE setw(4)
                         << tag.getGTag() << STD_NAMESPACE dec << STD_NAMESPACE setfill(' ')
-                        << " to XML output: Not present in dataset");
+                        << " to XML output: Not present in data set");
                 }
             }
         } else {
diff --git a/dcmdata/libsrc/dcfilefo.cc b/dcmdata/libsrc/dcfilefo.cc
index 322c96a..b757820 100644
--- a/dcmdata/libsrc/dcfilefo.cc
+++ b/dcmdata/libsrc/dcfilefo.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
@@ -181,6 +181,7 @@ void DcmFileFormat::print(STD_NAMESPACE ostream &out,
 OFCondition DcmFileFormat::writeXML(STD_NAMESPACE ostream &out,
                                     const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* in Native DICOM Model, there is no concept of a "file format" */
@@ -188,13 +189,12 @@ OFCondition DcmFileFormat::writeXML(STD_NAMESPACE ostream &out,
         if (dset != NULL)
         {
             /* write content of dataset */
-            return dset->writeXML(out, flags);
+            l_error = dset->writeXML(out, flags);
         } else {
-            return makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
-                "Cannot convert to Native DICOM Model: No dataset present");
+            l_error = makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
+                "Cannot convert to Native DICOM Model: No data set present");
         }
     } else {
-        OFCondition result = EC_CorruptedData;
         /* XML start tag for "file-format" */
         out << "<file-format";
         if (flags & DCMTypes::XF_useXMLNamespace)
@@ -208,14 +208,19 @@ OFCondition DcmFileFormat::writeXML(STD_NAMESPACE ostream &out,
             itemList->seek(ELP_first);
             do {
                 dO = itemList->get();
-                dO->writeXML(out, flags & ~DCMTypes::XF_useXMLNamespace);
-            } while (itemList->seek(ELP_next));
-            result = EC_Normal;
+                l_error = dO->writeXML(out, flags & ~DCMTypes::XF_useXMLNamespace);
+            } while (l_error.good() && itemList->seek(ELP_next));
+        } else {
+            /* a file format should never be empty */
+            l_error = EC_CorruptedData;
+        }
+        if (l_error.good())
+        {
+            /* XML end tag for "file-format" */
+            out << "</file-format>" << OFendl;
         }
-        /* XML end tag for "file-format" */
-        out << "</file-format>" << OFendl;
-        return result;
     }
+    return l_error;
 }
 
 
diff --git a/dcmdata/libsrc/dcitem.cc b/dcmdata/libsrc/dcitem.cc
index 2e55c64..5494c9d 100644
--- a/dcmdata/libsrc/dcitem.cc
+++ b/dcmdata/libsrc/dcitem.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
@@ -54,6 +54,7 @@
 #include "dcmtk/dcmdata/dcvrobow.h"
 #include "dcmtk/dcmdata/dcvrod.h"
 #include "dcmtk/dcmdata/dcvrof.h"
+#include "dcmtk/dcmdata/dcvrol.h"
 #include "dcmtk/dcmdata/dcvrpn.h"
 #include "dcmtk/dcmdata/dcvrsh.h"
 #include "dcmtk/dcmdata/dcvrsl.h"
@@ -176,7 +177,7 @@ int DcmItem::compare(const DcmItem& rhs) const
             if (rhsVal)
             {
                 int result = val->compare(*rhsVal);
-                if (val != 0)
+                if (result != 0)
                 {
                     return result;
                 }
@@ -494,6 +495,7 @@ void DcmItem::print(STD_NAMESPACE ostream &out,
 OFCondition DcmItem::writeXML(STD_NAMESPACE ostream &out,
                               const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (!(flags & DCMTypes::XF_useNativeModel))
     {
         /* XML start tag for "item" */
@@ -513,16 +515,18 @@ OFCondition DcmItem::writeXML(STD_NAMESPACE ostream &out,
         elementList->seek(ELP_first);
         do {
             dO = elementList->get();
-            dO->writeXML(out, flags);
-        } while (elementList->seek(ELP_next));
+            l_error = dO->writeXML(out, flags);
+        } while (l_error.good() && elementList->seek(ELP_next));
     }
-    if (!(flags & DCMTypes::XF_useNativeModel))
+    if (l_error.good())
     {
-        /* XML end tag for "item" */
-        out << "</item>" << OFendl;
+        if (!(flags & DCMTypes::XF_useNativeModel))
+        {
+            /* XML end tag for "item" */
+            out << "</item>" << OFendl;
+        }
     }
-    /* always report success */
-    return EC_Normal;
+    return l_error;
 }
 
 
@@ -1010,7 +1014,7 @@ OFCondition DcmItem::readTagAndLength(DcmInputStream &inStream,
             if (newEVR != vr.getEVR())
             {
                 /* ignore explicit VR in dataset if tag is defined in data dictionary */
-                DCMDATA_DEBUG("DcmItem::readTagAndLength() ignoring explicit VR in dataset ("
+                DCMDATA_DEBUG("DcmItem::readTagAndLength() ignoring explicit VR in data set ("
                     << vr.getVRName() << ") for element " << newTag
                     << ", using the one from data dictionary (" << newTag.getVRName() << ")");
             }
@@ -1179,7 +1183,7 @@ OFCondition DcmItem::readSubElement(DcmInputStream &inStream,
         {
             // produce diagnostics
             DCMDATA_WARN("DcmItem: Element " << newTag
-                << " found twice in one dataset/item, ignoring second entry");
+                << " found twice in one data set or item, ignoring second entry");
             delete subElem;
         }
     }
@@ -1291,9 +1295,9 @@ OFCondition DcmItem::read(DcmInputStream & inStream,
                 /* if desired, accept premature sequence delimitation item and continue as if item has been completely read. */
                 /* The stream position has been rewound to the start position of the sequence end */
                 /* delimiter tag in order to let DcmSequenceOfItems handle the delimiter in the reading routine. */
-                else if ( (errorFlag == EC_PrematureSequDelimitationItem) && dcmIgnoreParsingErrors.get() )
+                else if ((errorFlag == EC_PrematureSequDelimitationItem) && dcmIgnoreParsingErrors.get())
                 {
-                     DCMDATA_WARN("DcmItem: Sequence delimitation occured before all bytes announced by explicit item length could be read"
+                     DCMDATA_WARN("DcmItem: Sequence delimitation occurred before all bytes announced by explicit item length could be read"
                          << ", trying to continue as if item was completely read");
                     errorFlag = EC_ItemEnd;  // make sure that error code leads to normal return from item reading loop
                     break; // we are completed with the item since sequence is closed
@@ -1320,9 +1324,11 @@ OFCondition DcmItem::read(DcmInputStream & inStream,
                     /* for this element; hence lastElementComplete is true again */
                     if (errorFlag.good())
                         lastElementComplete = OFTrue;
+                    /* in data sets, group 0x0000 to 0x0003, 0x0005, 0x0007 and 0xFFFF are not allowed */
+                    if ((newTag.getGroup() == 0x0000) || (newTag.getGroup() == 0x0002) || !newTag.hasValidGroup())
+                        DCMDATA_WARN("DcmItem: Invalid Element " << newTag << " found in data set");
                 }
-            } else
-            {
+            } else {
                 /* if lastElementComplete is false, we have only read the current element's */
                 /* tag and length (and possibly VR) information as well as maybe some data */
                 /* data value information. We need to continue reading the data value */
@@ -1347,7 +1353,7 @@ OFCondition DcmItem::read(DcmInputStream & inStream,
                           ident() == EVR_dataset)
                     {
                         DCMDATA_WARN("DcmItem: Element " << newTag.getTagName() << " " << newTag
-                            << " encountered, skipping rest of dataset");
+                            << " encountered, skipping rest of data set");
                         readStopElem = OFTrue;
                     }
                 }
@@ -2290,15 +2296,18 @@ OFCondition newDicomElement(DcmElement *&newElement,
             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;
+            {
+                // 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;
@@ -2853,6 +2862,7 @@ OFCondition DcmItem::findAndGetLongInt(const DcmTagKey& tagKey,
         switch (elem->ident())
         {
             case EVR_UL:
+            case EVR_OL:
             case EVR_up:
                 Uint32 ul;
                 status = elem->getUint32(ul, pos);
@@ -3328,6 +3338,9 @@ OFCondition DcmItem::putAndInsertString(const DcmTag& tag,
         case EVR_OF:
             elem = new DcmOtherFloat(tag);
             break;
+        case EVR_OL:
+            elem = new DcmOtherLong(tag);
+            break;
         case EVR_PN:
             elem = new DcmPersonName(tag);
             break;
@@ -3713,6 +3726,9 @@ OFCondition DcmItem::putAndInsertUint32(const DcmTag& tag,
         case EVR_UL:
             elem = new DcmUnsignedLong(tag);
             break;
+        case EVR_OL:
+            elem = new DcmOtherLong(tag);
+            break;
         case EVR_UNKNOWN:
             /* Unknown VR, e.g. tag not found in data dictionary */
             status = EC_UnknownVR;
@@ -3737,6 +3753,42 @@ OFCondition DcmItem::putAndInsertUint32(const DcmTag& tag,
 }
 
 
+OFCondition DcmItem::putAndInsertUint32Array(const DcmTag& tag,
+                                             const Uint32 *value,
+                                             const unsigned long count,
+                                             const OFBool replaceOld)
+{
+    OFCondition status = EC_Normal;
+    /* create new element */
+    DcmElement *elem = NULL;
+    switch(tag.getEVR())
+    {
+        case EVR_OL:
+            elem = new DcmOtherLong(tag);
+            break;
+        case EVR_UL:
+            elem = new DcmUnsignedLong(tag);
+            break;
+        default:
+            status = EC_IllegalCall;
+            break;
+    }
+    if (elem != NULL)
+    {
+        /* put value */
+        status = elem->putUint32Array(value, count);
+        /* insert into dataset/item */
+        if (status.good())
+            status = insert(elem, replaceOld);
+        /* could not be inserted, therefore, delete it immediately */
+        if (status.bad())
+            delete elem;
+    } else if (status.good())
+        status = EC_MemoryExhausted;
+    return status;
+}
+
+
 OFCondition DcmItem::putAndInsertSint32(const DcmTag& tag,
                                         const Sint32 value,
                                         const unsigned long pos,
@@ -4028,6 +4080,9 @@ OFCondition DcmItem::insertEmptyElement(const DcmTag& tag,
         case EVR_OF:
             elem = new DcmOtherFloat(tag);
             break;
+        case EVR_OL:
+            elem = new DcmOtherLong(tag);
+            break;
         case EVR_PN:
             elem = new DcmPersonName(tag);
             break;
diff --git a/dcmdata/libsrc/dcmetinf.cc b/dcmdata/libsrc/dcmetinf.cc
index d9d3659..8ab4f6f 100644
--- a/dcmdata/libsrc/dcmetinf.cc
+++ b/dcmdata/libsrc/dcmetinf.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
@@ -173,10 +173,11 @@ void DcmMetaInfo::print(STD_NAMESPACE ostream&out,
 OFCondition DcmMetaInfo::writeXML(STD_NAMESPACE ostream &out,
                                   const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* in Native DICOM Model, there is no concept of a "file format" */
-        return makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
+        l_error = makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
             "Cannot convert File Meta Information to Native DICOM Model");
     } else {
         OFString xmlString;
@@ -193,14 +194,16 @@ OFCondition DcmMetaInfo::writeXML(STD_NAMESPACE ostream &out,
             do
             {
                 dO = elementList->get();
-                dO->writeXML(out, flags);
-            } while (elementList->seek(ELP_next));
+                l_error = dO->writeXML(out, flags);
+            } while (l_error.good() && elementList->seek(ELP_next));
+        }
+        if (l_error.good())
+        {
+            /* XML end tag for "meta-header" */
+            out << "</meta-header>" << OFendl;
         }
-        /* XML end tag for "meta-header" */
-        out << "</meta-header>" << OFendl;
-        /* always report success */
-        return EC_Normal;
     }
+    return l_error;
 }
 
 
diff --git a/dcmdata/libsrc/dcpxitem.cc b/dcmdata/libsrc/dcpxitem.cc
index f771494..892390e 100644
--- a/dcmdata/libsrc/dcpxitem.cc
+++ b/dcmdata/libsrc/dcpxitem.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, 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
@@ -210,49 +210,56 @@ OFCondition DcmPixelItem::createOffsetTable(const DcmOffsetList &offsetList)
 OFCondition DcmPixelItem::writeXML(STD_NAMESPACE ostream&out,
                                    const size_t flags)
 {
-    /* XML start tag for "item" */
-    out << "<pixel-item";
-    /* value length in bytes = 0..max */
-    out << " len=\"" << getLengthField() << "\"";
-    /* value loaded = no (or absent)*/
-    if (!valueLoaded())
-        out << " loaded=\"no\"";
-    /* pixel item contains binary data */
-    if (!(flags & DCMTypes::XF_writeBinaryData))
-        out << " binary=\"hidden\"";
-    else if (flags & DCMTypes::XF_encodeBase64)
-        out << " binary=\"base64\"";
-    else
-        out << " binary=\"yes\"";
-    out << ">";
-    /* write element value (if loaded) */
-    if (valueLoaded() && (flags & DCMTypes::XF_writeBinaryData))
+    if (flags & DCMTypes::XF_useNativeModel)
     {
-        /* encode binary data as Base64 */
-        if (flags & DCMTypes::XF_encodeBase64)
+        /* in Native DICOM Model, there is no concept of a "pixel item" */
+        return makeOFCondition(OFM_dcmdata, EC_CODE_CannotConvertToXML, OF_error,
+            "Cannot convert Pixel Item to Native DICOM Model");
+    } else {
+        /* XML start tag for "item" */
+        out << "<pixel-item";
+        /* value length in bytes = 0..max */
+        out << " len=\"" << getLengthField() << "\"";
+        /* value loaded = no (or absent)*/
+        if (!valueLoaded())
+            out << " loaded=\"no\"";
+        /* pixel item contains binary data */
+        if (!(flags & DCMTypes::XF_writeBinaryData))
+            out << " binary=\"hidden\"";
+        else if (flags & DCMTypes::XF_encodeBase64)
+            out << " binary=\"base64\"";
+        else
+            out << " binary=\"yes\"";
+        out << ">";
+        /* write element value (if loaded) */
+        if (valueLoaded() && (flags & DCMTypes::XF_writeBinaryData))
         {
-            /* pixel items always contain 8 bit data, therefore, byte swapping not required */
-            OFStandard::encodeBase64(out, OFstatic_cast(Uint8 *, getValue()), OFstatic_cast(size_t, getLengthField()));
-        } else {
-            /* get and check 8 bit data */
-            Uint8 *byteValues = NULL;
-            if (getUint8Array(byteValues).good() && (byteValues != NULL))
+            /* encode binary data as Base64 */
+            if (flags & DCMTypes::XF_encodeBase64)
             {
-                const unsigned long count = getLengthField();
-                out << STD_NAMESPACE hex << STD_NAMESPACE setfill('0');
-                /* print byte values in hex mode */
-                out << STD_NAMESPACE setw(2) << OFstatic_cast(int, *(byteValues++));
-                for (unsigned long i = 1; i < count; i++)
-                    out << "\\" << STD_NAMESPACE setw(2) << OFstatic_cast(int, *(byteValues++));
-                /* reset i/o manipulators */
-                out << STD_NAMESPACE dec << STD_NAMESPACE setfill(' ');
+                /* pixel items always contain 8 bit data, therefore, byte swapping not required */
+                OFStandard::encodeBase64(out, OFstatic_cast(Uint8 *, getValue()), OFstatic_cast(size_t, getLengthField()));
+            } else {
+                /* get and check 8 bit data */
+                Uint8 *byteValues = NULL;
+                if (getUint8Array(byteValues).good() && (byteValues != NULL))
+                {
+                    const unsigned long count = getLengthField();
+                    out << STD_NAMESPACE hex << STD_NAMESPACE setfill('0');
+                    /* print byte values in hex mode */
+                    out << STD_NAMESPACE setw(2) << OFstatic_cast(int, *(byteValues++));
+                    for (unsigned long i = 1; i < count; i++)
+                        out << "\\" << STD_NAMESPACE setw(2) << OFstatic_cast(int, *(byteValues++));
+                    /* reset i/o manipulators */
+                    out << STD_NAMESPACE dec << STD_NAMESPACE setfill(' ');
+                }
             }
         }
+        /* XML end tag for "item" */
+        out << "</pixel-item>" << OFendl;
+        /* always report success */
+        return EC_Normal;
     }
-    /* XML end tag for "item" */
-    out << "</pixel-item>" << OFendl;
-    /* always report success */
-    return EC_Normal;
 }
 
 
diff --git a/dcmdata/libsrc/dcsequen.cc b/dcmdata/libsrc/dcsequen.cc
index b4c77d3..2b149e9 100644
--- a/dcmdata/libsrc/dcsequen.cc
+++ b/dcmdata/libsrc/dcsequen.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
@@ -305,6 +305,7 @@ void DcmSequenceOfItems::print(STD_NAMESPACE ostream&out,
 OFCondition DcmSequenceOfItems::writeXML(STD_NAMESPACE ostream&out,
                                          const size_t flags)
 {
+    OFCondition l_error = EC_Normal;
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* use common method from DcmElement to write start tag */
@@ -320,12 +321,17 @@ OFCondition DcmSequenceOfItems::writeXML(STD_NAMESPACE ostream&out,
             {
                 out << "<Item number=\"" << (itemNo++) << "\">" << OFendl;
                 dO = itemList->get();
-                dO->writeXML(out, flags);
+                l_error = dO->writeXML(out, flags);
+                /* exit loop in case of error */
+                if (l_error.bad()) break;
                 out << "</Item>" << OFendl;
             } while (itemList->seek(ELP_next));
         }
-        /* use common method from DcmElement to write end tag */
-        DcmElement::writeXMLEndTag(out, flags);
+        if (l_error.good())
+        {
+            /* use common method from DcmElement to write end tag */
+            DcmElement::writeXMLEndTag(out, flags);
+        }
     } else {
         OFString xmlString;
         DcmVR vr(getTag().getVR());
@@ -357,14 +363,16 @@ OFCondition DcmSequenceOfItems::writeXML(STD_NAMESPACE ostream&out,
             do
             {
                 dO = itemList->get();
-                dO->writeXML(out, flags);
-            } while (itemList->seek(ELP_next));
+                l_error = dO->writeXML(out, flags);
+            } while (l_error.good() && itemList->seek(ELP_next));
+        }
+        if (l_error.good())
+        {
+            /* XML end tag for "sequence" */
+            out << "</sequence>" << OFendl;
         }
-        /* XML end tag for "sequence" */
-        out << "</sequence>" << OFendl;
     }
-    /* always report success */
-    return EC_Normal;
+    return l_error;
 }
 
 
diff --git a/dcmdata/libsrc/dcuid.cc b/dcmdata/libsrc/dcuid.cc
index fbb75c0..5e48791 100644
--- a/dcmdata/libsrc/dcuid.cc
+++ b/dcmdata/libsrc/dcuid.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
@@ -136,7 +136,8 @@ static const UIDNameMap uidNameMap[] = {
     { UID_RFC2557MIMEEncapsulationTransferSyntax,              "RFC2557MIMEEncapsulation" },
     { UID_XMLEncodingTransferSyntax,                           "XMLEncoding" },
 
-    // Storage
+    // Storage (DICOM)
+    { UID_AcquisitionContextSRStorage,                         "AcquisitionContextSRStorage" },
     { UID_AmbulatoryECGWaveformStorage,                        "AmbulatoryECGWaveformStorage" },
     { UID_ArterialPulseWaveformStorage,                        "ArterialPulseWaveformStorage" },
     { UID_AutorefractionMeasurementsStorage,                   "AutorefractionMeasurementsStorage" },
@@ -218,7 +219,9 @@ static const UIDNameMap uidNameMap[] = {
     { UID_RawDataStorage,                                      "RawDataStorage" },
     { UID_RealWorldValueMappingStorage,                        "RealWorldValueMappingStorage" },
     { UID_RespiratoryWaveformStorage,                          "RespiratoryWaveformStorage" },
+    { UID_RTBeamsDeliveryInstructionStorage,                   "RTBeamsDeliveryInstructionStorage" },
     { UID_RTBeamsTreatmentRecordStorage,                       "RTBeamsTreatmentRecordStorage" },
+    { UID_RTBrachyApplicationSetupDeliveryInstructionStorage,  "RTBrachyApplicationSetupDeliveryInstructionStorage" },
     { UID_RTBrachyTreatmentRecordStorage,                      "RTBrachyTreatmentRecordStorage" },
     { UID_RTDoseStorage,                                       "RTDoseStorage" },
     { UID_RTImageStorage,                                      "RTImageStorage" },
@@ -237,6 +240,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_SurfaceScanMeshStorage,                              "SurfaceScanMeshStorage" },
     { UID_SurfaceScanPointCloudStorage,                        "SurfaceScanPointCloudStorage" },
     { UID_SurfaceSegmentationStorage,                          "SurfaceSegmentationStorage" },
+    { UID_TractographyResultsStorage,                          "TractographyResultsStorage" },
     { UID_TwelveLeadECGWaveformStorage,                        "TwelveLeadECGWaveformStorage" },
     { UID_UltrasoundImageStorage,                              "UltrasoundImageStorage" },
     { UID_UltrasoundMultiframeImageStorage,                    "UltrasoundMultiframeImageStorage" },
@@ -295,7 +299,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_MOVECompositeInstanceRootRetrieve,                         "MOVECompositeInstanceRootRetrieve" },
     { UID_RETIRED_MOVEPatientStudyOnlyQueryRetrieveInformationModel, "RETIRED_MOVEPatientStudyOnlyQueryRetrieveInformationModel" },
 
-    // Worklist
+    // Modality Worklist
     { UID_FINDModalityWorklistInformationModel,                "FINDModalityWorklistInformationModel" },
 
     // General Purpose Worklist
@@ -309,8 +313,7 @@ static const UIDNameMap uidNameMap[] = {
     { UID_ModalityPerformedProcedureStepRetrieveSOPClass,      "ModalityPerformedProcedureStepRetrieveSOPClass" },
     { UID_ModalityPerformedProcedureStepSOPClass,              "ModalityPerformedProcedureStepSOPClass" },
 
-    // Radiotherapy Treatment Delivery
-    { UID_RTBeamsDeliveryInstructionStorage,                   "RTBeamsDeliveryInstructionStorage" },
+    // Radiotherapy
     { UID_RTConventionalMachineVerification,                   "RTConventionalMachineVerification" },
     { UID_RTIonMachineVerification,                            "RTIonMachineVerification" },
 
@@ -533,6 +536,7 @@ static const int uidNameMap_size = OFstatic_cast(int, sizeof(uidNameMap) / sizeo
  */
 
 const char* dcmAllStorageSOPClassUIDs[] = {
+    UID_AcquisitionContextSRStorage,
     UID_AmbulatoryECGWaveformStorage,
     UID_ArterialPulseWaveformStorage,
     UID_AutorefractionMeasurementsStorage,
@@ -614,6 +618,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_RespiratoryWaveformStorage,
     UID_RTBeamsDeliveryInstructionStorage,
     UID_RTBeamsTreatmentRecordStorage,
+    UID_RTBrachyApplicationSetupDeliveryInstructionStorage,
     UID_RTBrachyTreatmentRecordStorage,
     UID_RTDoseStorage,
     UID_RTImageStorage,
@@ -632,6 +637,7 @@ const char* dcmAllStorageSOPClassUIDs[] = {
     UID_SurfaceScanMeshStorage,
     UID_SurfaceScanPointCloudStorage,
     UID_SurfaceSegmentationStorage,
+    UID_TractographyResultsStorage,
     UID_TwelveLeadECGWaveformStorage,
     UID_UltrasoundImageStorage,
     UID_UltrasoundMultiframeImageStorage,
@@ -803,6 +809,7 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
     UID_XRayRadiationDoseSRStorage,
     UID_XRayRadiofluoroscopicImageStorage,
     // recently approved
+//  UID_AcquisitionContextSRStorage,
 //  UID_BreastProjectionXRayImageStorageForPresentation,
 //  UID_BreastProjectionXRayImageStorageForProcessing,
 //  UID_CompositingPlanarMPRVolumetricPresentationStateStorage
@@ -814,6 +821,8 @@ const char* dcmLongSCUStorageSOPClassUIDs[] = {
 //  UID_LegacyConvertedEnhancedPETImageStorage,
 //  UID_ParametricMapStorage,
 //  UID_RadiopharmaceuticalRadiationDoseSRStorage,
+//  UID_RTBrachyApplicationSetupDeliveryInstructionStorage,
+//  UID_TractographyResultsStorage,
 //  UID_WideFieldOphthalmicPhotographyStereographicProjectionImageStorage,
 //  UID_WideFieldOphthalmicPhotography3DCoordinatesImageStorage,
     // retired
@@ -1043,6 +1052,7 @@ typedef struct {
 ** the size of an image being transmitted).
 */
 static const DcmModalityTable modalities[] = {
+    { UID_AcquisitionContextSRStorage,                             "SRa", 4096 },
     { UID_AmbulatoryECGWaveformStorage,                            "ECA", 4096 },
     { UID_ArterialPulseWaveformStorage,                            "WVa", 4096 },
     { UID_AutorefractionMeasurementsStorage,                       "OPa", 4096 },
@@ -1124,6 +1134,7 @@ static const DcmModalityTable modalities[] = {
     { UID_RespiratoryWaveformStorage,                              "WVr", 4096 },
     { UID_RTBeamsDeliveryInstructionStorage,                       "RTd", 4096 },
     { UID_RTBeamsTreatmentRecordStorage,                           "RTb", 4096 },
+    { UID_RTBrachyApplicationSetupDeliveryInstructionStorage,      "RTa", 4096 },
     { UID_RTBrachyTreatmentRecordStorage,                          "RTr", 4096 },
     { UID_RTDoseStorage,                                           "RD",  4096 },
     { UID_RTImageStorage,                                          "RI",  4096 },
@@ -1142,6 +1153,7 @@ static const DcmModalityTable modalities[] = {
     { UID_SurfaceScanMeshStorage,                                  "SSm", 4096 },
     { UID_SurfaceScanPointCloudStorage,                            "SSp", 4096 },
     { UID_SurfaceSegmentationStorage,                              "SGs", 4096 },
+    { UID_TractographyResultsStorage,                              "TR",  4096 },
     { UID_TwelveLeadECGWaveformStorage,                            "TLE", 4096 },
     { UID_UltrasoundImageStorage,                                  "US",  512 * 512 },
     { UID_UltrasoundMultiframeImageStorage,                        "USm", 512 * 512 },
@@ -1372,22 +1384,12 @@ typedef bool(WINAPI *pSnmpExtensionInit) (
         OUT HANDLE *hPollForTrapEvent,
         OUT AsnObjectIdentifier *supportedView);
 
-typedef bool(WINAPI *pSnmpExtensionTrap) (
-        OUT AsnObjectIdentifier *enterprise,
-        OUT AsnInteger32 *genericTrap,
-        OUT AsnInteger32 *specificTrap,
-        OUT AsnTimeticks *timeStamp,
-        OUT SnmpVarBindList *variableBindings);
-
 typedef bool(WINAPI *pSnmpExtensionQuery) (
         IN BYTE requestType,
         IN OUT SnmpVarBindList *variableBindings,
         OUT AsnInteger32 *errorStatus,
         OUT AsnInteger32 *errorIndex);
 
-typedef bool(WINAPI *pSnmpExtensionInitEx) (
-        OUT AsnObjectIdentifier *supportedView);
-
 typedef struct _ASTAT_
 {
     ADAPTER_STATUS adapt;
@@ -1454,7 +1456,6 @@ static unsigned char *getMACAddress(unsigned char buffer[6])
                 UINT OID_ipMACEntAddr[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 6};
                 AsnObjectIdentifier MIB_ifMACEntAddr = {sizeof(OID_ipMACEntAddr) / sizeof(UINT), OID_ipMACEntAddr};
                 AsnObjectIdentifier MIB_ifEntryType = {sizeof(OID_ifEntryType) / sizeof(UINT), OID_ifEntryType};
-                AsnObjectIdentifier MIB_ifEntryNum = {sizeof(OID_ifEntryNum) / sizeof(UINT), OID_ifEntryNum};
                 SnmpVarBindList varBindList;
                 SnmpVarBind varBind[2];
                 AsnInteger32 errorStatus;
@@ -1464,18 +1465,12 @@ static unsigned char *getMACAddress(unsigned char buffer[6])
                 int dtmp;
                 int j = 0;
                 pSnmpExtensionInit m_Init = (pSnmpExtensionInit)GetProcAddress(m_hInst2, "SnmpExtensionInit");
-                /* pSnmpExtensionInitEx m_InitEx = (pSnmpExtensionInitEx)GetProcAddress(m_hInst2, "SnmpExtensionInitEx"); */
                 pSnmpExtensionQuery m_Query = (pSnmpExtensionQuery)GetProcAddress(m_hInst2, "SnmpExtensionQuery");
-                /* pSnmpExtensionTrap m_Trap = (pSnmpExtensionTrap)GetProcAddress(m_hInst2, "SnmpExtensionTrap"); */
                 m_Init(GetTickCount(), &PollForTrapEvent, &SupportedView);
                 /* initialize the variable list to be retrieved by m_Query */
                 varBindList.list = varBind;
                 varBind[0].name = MIB_NULL;
                 varBind[1].name = MIB_NULL;
-                /* copy in the OID to find the number of entries in the interface table */
-                varBindList.len = 1;        /* only retrieving one item */
-                m_Copy(&varBind[0].name, &MIB_ifEntryNum);
-                ret = m_Query(SNMP_PDU_GETNEXT, &varBindList, &errorStatus, &errorIndex);
                 varBindList.len = 2;
                 /* copy in the OID of ifType, the type of interface */
                 m_Copy(&varBind[0].name, &MIB_ifEntryType);
diff --git a/dcmdata/libsrc/dcvr.cc b/dcmdata/libsrc/dcvr.cc
index c09a4ea..09c8b15 100644
--- a/dcmdata/libsrc/dcvr.cc
+++ b/dcmdata/libsrc/dcvr.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
@@ -34,8 +34,9 @@
 */
 OFGlobal<OFBool> dcmEnableUnknownVRGeneration(OFTrue);
 OFGlobal<OFBool> dcmEnableUnlimitedTextVRGeneration(OFTrue);
-OFGlobal<OFBool> dcmEnableOtherFloatStringVRGeneration(OFTrue);
-OFGlobal<OFBool> dcmEnableOtherDoubleStringVRGeneration(OFTrue);
+OFGlobal<OFBool> dcmEnableOtherFloatVRGeneration(OFTrue);
+OFGlobal<OFBool> dcmEnableOtherDoubleVRGeneration(OFTrue);
+OFGlobal<OFBool> dcmEnableOtherLongVRGeneration(OFTrue);
 OFGlobal<OFBool> dcmEnableUniversalResourceIdentifierOrLocatorVRGeneration(OFTrue);
 OFGlobal<OFBool> dcmEnableUnlimitedCharactersVRGeneration(OFTrue);
 OFGlobal<OFBool> dcmEnableUnknownVRConversion(OFFalse);
@@ -47,8 +48,9 @@ void dcmEnableGenerationOfNewVRs()
 {
     dcmEnableUnknownVRGeneration.set(OFTrue);
     dcmEnableUnlimitedTextVRGeneration.set(OFTrue);
-    dcmEnableOtherFloatStringVRGeneration.set(OFTrue);
-    dcmEnableOtherDoubleStringVRGeneration.set(OFTrue);
+    dcmEnableOtherFloatVRGeneration.set(OFTrue);
+    dcmEnableOtherDoubleVRGeneration.set(OFTrue);
+    dcmEnableOtherLongVRGeneration.set(OFTrue);
     dcmEnableUniversalResourceIdentifierOrLocatorVRGeneration.set(OFTrue);
     dcmEnableUnlimitedCharactersVRGeneration.set(OFTrue);
 }
@@ -57,8 +59,9 @@ void dcmDisableGenerationOfNewVRs()
 {
     dcmEnableUnknownVRGeneration.set(OFFalse);
     dcmEnableUnlimitedTextVRGeneration.set(OFFalse);
-    dcmEnableOtherFloatStringVRGeneration.set(OFFalse);
-    dcmEnableOtherDoubleStringVRGeneration.set(OFFalse);
+    dcmEnableOtherFloatVRGeneration.set(OFFalse);
+    dcmEnableOtherDoubleVRGeneration.set(OFFalse);
+    dcmEnableOtherLongVRGeneration.set(OFFalse);
     dcmEnableUniversalResourceIdentifierOrLocatorVRGeneration.set(OFFalse);
     dcmEnableUnlimitedCharactersVRGeneration.set(OFFalse);
 }
@@ -101,6 +104,7 @@ static const DcmVREntry DcmVRDict[] = {
     { 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 },
@@ -285,7 +289,7 @@ DcmVR::getValidEVR() const
             }
             break;
         case EVR_OF:
-            if (!dcmEnableOtherFloatStringVRGeneration.get())
+            if (!dcmEnableOtherFloatVRGeneration.get())
             {
                 if (dcmEnableUnknownVRGeneration.get())
                     evr = EVR_UN; /* handle OF as if UN */
@@ -294,7 +298,7 @@ DcmVR::getValidEVR() const
             }
             break;
         case EVR_OD:
-            if (!dcmEnableOtherDoubleStringVRGeneration.get())
+            if (!dcmEnableOtherDoubleVRGeneration.get())
             {
                 if (dcmEnableUnknownVRGeneration.get())
                     evr = EVR_UN; /* handle OD as if UN */
@@ -302,6 +306,15 @@ DcmVR::getValidEVR() const
                     evr = EVR_OB; /* handle OD as if OB */
             }
             break;
+        case EVR_OL:
+            if (!dcmEnableOtherLongVRGeneration.get())
+            {
+                if (dcmEnableUnknownVRGeneration.get())
+                    evr = EVR_UN; /* handle OL as if UN */
+                else
+                    evr = EVR_OB; /* handle OL as if OB */
+            }
+            break;
         case EVR_UR:
             if (!dcmEnableUniversalResourceIdentifierOrLocatorVRGeneration.get())
             {
diff --git a/dcmdata/libsrc/dcvrfd.cc b/dcmdata/libsrc/dcvrfd.cc
index 307e920..a408dfa 100644
--- a/dcmdata/libsrc/dcvrfd.cc
+++ b/dcmdata/libsrc/dcvrfd.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
@@ -165,7 +165,7 @@ void DcmFloatingPointDouble::print(STD_NAMESPACE ostream&out,
         errorFlag = getFloat64Array(doubleVals);
         if (doubleVals != NULL)
         {
-            const unsigned long count = getVM();
+            const unsigned long count = getLengthField() / OFstatic_cast(unsigned long, sizeof(Float64)) /* do not use getVM()! */;
             const unsigned long maxLength = (flags & DCMTypes::PF_shortenLongTagValues) ?
                 DCM_OptPrintLineLength : OFstatic_cast(unsigned long, -1) /*unlimited*/;
             unsigned long printedLength = 0;
diff --git a/dcmdata/libsrc/dcvrfl.cc b/dcmdata/libsrc/dcvrfl.cc
index cd2a388..070719f 100644
--- a/dcmdata/libsrc/dcvrfl.cc
+++ b/dcmdata/libsrc/dcvrfl.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
@@ -168,7 +168,7 @@ void DcmFloatingPointSingle::print(STD_NAMESPACE ostream&out,
         {
             const unsigned long count = getLengthField() / OFstatic_cast(unsigned long, sizeof(Float32)) /* do not use getVM()! */;
             const unsigned long maxLength = (flags & DCMTypes::PF_shortenLongTagValues) ?
-                DCM_OptPrintLineLength : OFstatic_cast(unsigned long, -1);
+                DCM_OptPrintLineLength : OFstatic_cast(unsigned long, -1) /*unlimited*/;
             unsigned long printedLength = 0;
             unsigned long newLength = 0;
             char buffer[64];
diff --git a/dcmdata/libsrc/dcvrod.cc b/dcmdata/libsrc/dcvrod.cc
index 8200617..9ecd24e 100644
--- a/dcmdata/libsrc/dcvrod.cc
+++ b/dcmdata/libsrc/dcvrod.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013, 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
@@ -25,9 +25,7 @@
 #include "dcmtk/ofstd/ofuuid.h"
 
 #include "dcmtk/dcmdata/dcvrod.h"
-#include "dcmtk/dcmdata/dcvrfd.h"
 #include "dcmtk/dcmdata/dcswap.h"
-#include "dcmtk/dcmdata/dcuid.h"      /* for UID generation */
 
 
 // ********************************
@@ -79,7 +77,7 @@ DcmEVR DcmOtherDouble::ident() const
 
 
 OFCondition DcmOtherDouble::checkValue(const OFString & /*vm*/,
-                                      const OFBool /*oldFormat*/)
+                                       const OFBool /*oldFormat*/)
 {
     /* currently no checks are performed */
     return EC_Normal;
@@ -88,7 +86,7 @@ OFCondition DcmOtherDouble::checkValue(const OFString & /*vm*/,
 
 unsigned long DcmOtherDouble::getVM()
 {
-    /* value multiplicity for OF is defined as 1 */
+    /* value multiplicity for OD is defined as 1 */
     return 1;
 }
 
@@ -101,7 +99,7 @@ OFCondition DcmOtherDouble::writeXML(STD_NAMESPACE ostream &out,
 {
     /* always write XML start tag */
     writeXMLStartTag(out, flags);
-    /* OF data requires special handling in the Native DICOM Model format */
+    /* OD data requires special handling in the Native DICOM Model format */
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* for an empty value field, we do not need to do anything */
diff --git a/dcmdata/libsrc/dcvrof.cc b/dcmdata/libsrc/dcvrof.cc
index cf0c87e..d9acb36 100644
--- a/dcmdata/libsrc/dcvrof.cc
+++ b/dcmdata/libsrc/dcvrof.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2013, 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
@@ -25,9 +25,7 @@
 #include "dcmtk/ofstd/ofuuid.h"
 
 #include "dcmtk/dcmdata/dcvrof.h"
-#include "dcmtk/dcmdata/dcvrfl.h"
 #include "dcmtk/dcmdata/dcswap.h"
-#include "dcmtk/dcmdata/dcuid.h"      /* for UID generation */
 
 
 // ********************************
diff --git a/dcmdata/libsrc/dcvrof.cc b/dcmdata/libsrc/dcvrol.cc
similarity index 56%
copy from dcmdata/libsrc/dcvrof.cc
copy to dcmdata/libsrc/dcvrol.cc
index cf0c87e..60c0197 100644
--- a/dcmdata/libsrc/dcvrof.cc
+++ b/dcmdata/libsrc/dcvrol.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2002-2013, OFFIS e.V.
+ *  Copyright (C) 2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -15,7 +15,7 @@
  *
  *  Author:  Joerg Riesmeier
  *
- *  Purpose: Implementation of class DcmOtherFloat
+ *  Purpose: Implementation of class DcmOtherLong
  *
  */
 
@@ -24,46 +24,44 @@
 
 #include "dcmtk/ofstd/ofuuid.h"
 
-#include "dcmtk/dcmdata/dcvrof.h"
-#include "dcmtk/dcmdata/dcvrfl.h"
+#include "dcmtk/dcmdata/dcvrol.h"
 #include "dcmtk/dcmdata/dcswap.h"
-#include "dcmtk/dcmdata/dcuid.h"      /* for UID generation */
 
 
 // ********************************
 
 
-DcmOtherFloat::DcmOtherFloat(const DcmTag &tag,
-                             const Uint32 len)
-  : DcmFloatingPointSingle(tag, len)
+DcmOtherLong::DcmOtherLong(const DcmTag &tag,
+                           const Uint32 len)
+  : DcmUnsignedLong(tag, len)
 {
 }
 
 
-DcmOtherFloat::DcmOtherFloat(const DcmOtherFloat &old)
-  : DcmFloatingPointSingle(old)
+DcmOtherLong::DcmOtherLong(const DcmOtherLong &old)
+  : DcmUnsignedLong(old)
 {
 }
 
 
-DcmOtherFloat::~DcmOtherFloat()
+DcmOtherLong::~DcmOtherLong()
 {
 }
 
 
-DcmOtherFloat &DcmOtherFloat::operator=(const DcmOtherFloat &obj)
+DcmOtherLong &DcmOtherLong::operator=(const DcmOtherLong &obj)
 {
-    DcmFloatingPointSingle::operator=(obj);
+    DcmUnsignedLong::operator=(obj);
     return *this;
 }
 
 
-OFCondition DcmOtherFloat::copyFrom(const DcmObject& rhs)
+OFCondition DcmOtherLong::copyFrom(const DcmObject& rhs)
 {
   if (this != &rhs)
   {
     if (rhs.ident() != ident()) return EC_IllegalCall;
-    *this = OFstatic_cast(const DcmOtherFloat &, rhs);
+    *this = OFstatic_cast(const DcmOtherLong &, rhs);
   }
   return EC_Normal;
 }
@@ -72,23 +70,23 @@ OFCondition DcmOtherFloat::copyFrom(const DcmObject& rhs)
 // ********************************
 
 
-DcmEVR DcmOtherFloat::ident() const
+DcmEVR DcmOtherLong::ident() const
 {
-    return EVR_OF;
+    return EVR_OL;
 }
 
 
-OFCondition DcmOtherFloat::checkValue(const OFString & /*vm*/,
-                                      const OFBool /*oldFormat*/)
+OFCondition DcmOtherLong::checkValue(const OFString & /*vm*/,
+                                     const OFBool /*oldFormat*/)
 {
     /* currently no checks are performed */
     return EC_Normal;
 }
 
 
-unsigned long DcmOtherFloat::getVM()
+unsigned long DcmOtherLong::getVM()
 {
-    /* value multiplicity for OF is defined as 1 */
+    /* value multiplicity for OL is defined as 1 */
     return 1;
 }
 
@@ -96,12 +94,12 @@ unsigned long DcmOtherFloat::getVM()
 // ********************************
 
 
-OFCondition DcmOtherFloat::writeXML(STD_NAMESPACE ostream &out,
-                                    const size_t flags)
+OFCondition DcmOtherLong::writeXML(STD_NAMESPACE ostream &out,
+                                   const size_t flags)
 {
     /* always write XML start tag */
     writeXMLStartTag(out, flags);
-    /* OF data requires special handling in the Native DICOM Model format */
+    /* OL data requires special handling in the Native DICOM Model format */
     if (flags & DCMTypes::XF_useNativeModel)
     {
         /* for an empty value field, we do not need to do anything */
@@ -113,7 +111,7 @@ OFCondition DcmOtherFloat::writeXML(STD_NAMESPACE ostream &out,
                 out << "<InlineBinary>";
                 Uint8 *byteValues = OFstatic_cast(Uint8 *, getValue());
                 /* Base64 encoder requires big endian input data */
-                swapIfNecessary(EBO_BigEndian, gLocalByteOrder, byteValues, getLengthField(), sizeof(Float32));
+                swapIfNecessary(EBO_BigEndian, gLocalByteOrder, byteValues, getLengthField(), sizeof(Uint32));
                 /* update the byte order indicator variable correspondingly */
                 setByteOrder(EBO_BigEndian);
                 OFStandard::encodeBase64(out, byteValues, OFstatic_cast(size_t, getLengthField()));
@@ -130,20 +128,16 @@ OFCondition DcmOtherFloat::writeXML(STD_NAMESPACE ostream &out,
         /* write element value (if loaded) */
         if (valueLoaded())
         {
-            Float32 *floatValues = NULL;
-            /* get and check 32 bit float data */
-            if (getFloat32Array(floatValues).good() && (floatValues != NULL))
+            Uint32 *uintVals = NULL;
+            /* get and check 32 bit data */
+            if (getUint32Array(uintVals).good() && (uintVals != NULL))
             {
-                /* increase default precision - see DcmFloatingPointSingle::print() */
-                const STD_NAMESPACE streamsize oldPrecision = out.precision(8);
                 /* we cannot use getVM() since it always returns 1 */
-                const size_t count = getLengthField() / sizeof(Float32);
-                /* print float values with separators */
-                out << (*(floatValues++));
+                const size_t count = getLengthField() / sizeof(Uint32);
+                /* print unsigned long values in hex mode */
+                out << (*(uintVals++));
                 for (unsigned long i = 1; i < count; i++)
-                    out << "\\" << (*(floatValues++));
-                /* reset i/o manipulators */
-                out.precision(oldPrecision);
+                    out << "\\" << (*(uintVals++));
             }
         }
     }
diff --git a/dcmdata/libsrc/dcvrul.cc b/dcmdata/libsrc/dcvrul.cc
index 28a535a..84bf281 100644
--- a/dcmdata/libsrc/dcvrul.cc
+++ b/dcmdata/libsrc/dcvrul.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
@@ -163,7 +163,7 @@ void DcmUnsignedLong::print(STD_NAMESPACE ostream&out,
         errorFlag = getUint32Array(uintVals);
         if (uintVals != NULL)
         {
-            const unsigned long count = getVM();
+            const unsigned long count = getLengthField() / OFstatic_cast(unsigned long, sizeof(Uint32)) /* do not use getVM()! */;
             const unsigned long maxLength = (flags & DCMTypes::PF_shortenLongTagValues) ?
                 DCM_OptPrintLineLength : OFstatic_cast(unsigned long, -1) /*unlimited*/;
             unsigned long printedLength = 0;
diff --git a/dcmdata/tests/CMakeLists.txt b/dcmdata/tests/CMakeLists.txt
index 928940b..30c4178 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 tvrui tstrval tspchrs tvrpn 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)
 
 # 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 a3b461a..2062e60 100644
--- a/dcmdata/tests/Makefile.dep
+++ b/dcmdata/tests/Makefile.dep
@@ -16,6 +16,8 @@ tchval.o: tchval.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -77,7 +79,8 @@ tchval.o: tchval.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/vrscan.h \
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/vrscan.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h
 tdict.o: tdict.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
@@ -97,6 +100,8 @@ tdict.o: tdict.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -142,6 +147,8 @@ telemlen.o: telemlen.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -203,8 +210,8 @@ telemlen.o: telemlen.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcpxitem.h \
- ../include/dcmtk/dcmdata/dcostrmb.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcostrmb.h
 tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -223,6 +230,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -264,6 +273,8 @@ tfilter.o: tfilter.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -316,6 +327,8 @@ ti2dbmp.o: ti2dbmp.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -363,6 +376,8 @@ tparent.o: tparent.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -424,8 +439,9 @@ tparent.o: tparent.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h dctmacro.h \
- ../include/dcmtk/dcmdata/dcistrmb.h ../include/dcmtk/dcmdata/dcostrmb.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ dctmacro.h ../include/dcmtk/dcmdata/dcistrmb.h \
+ ../include/dcmtk/dcmdata/dcostrmb.h
 tparser.o: tparser.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -444,6 +460,8 @@ tparser.o: tparser.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -506,9 +524,9 @@ tparser.o: tparser.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcpxitem.h \
- ../include/dcmtk/dcmdata/dcistrmb.h ../include/dcmtk/dcmdata/dcostrmb.h \
- dctmacro.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpxitem.h ../include/dcmtk/dcmdata/dcistrmb.h \
+ ../include/dcmtk/dcmdata/dcostrmb.h dctmacro.h
 tpath.o: tpath.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -527,6 +545,8 @@ tpath.o: tpath.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -588,7 +608,8 @@ tpath.o: tpath.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcpath.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcpath.h
 tpread.o: tpread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
@@ -607,6 +628,8 @@ tpread.o: tpread.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -668,8 +691,9 @@ tpread.o: tpread.cc ../../config/include/dcmtk/config/osconfig.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/cmdlnarg.h ../include/dcmtk/dcmdata/dcostrmz.h \
- ../include/dcmtk/dcmdata/dcistrmz.h ../include/dcmtk/dcmdata/dcfcache.h
+ ../include/dcmtk/dcmdata/dcvrol.h ../include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmdata/dcostrmz.h ../include/dcmtk/dcmdata/dcistrmz.h \
+ ../include/dcmtk/dcmdata/dcfcache.h
 tspchrs.o: tspchrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -688,6 +712,8 @@ tspchrs.o: tspchrs.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -735,6 +761,8 @@ tstrval.o: tstrval.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -782,6 +810,8 @@ tvrcomp.o: tvrcomp.cc ../../config/include/dcmtk/config/osconfig.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/dcvras.h ../include/dcmtk/dcmdata/dcbytstr.h \
  ../include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -850,6 +880,8 @@ tvrdatim.o: tvrdatim.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -904,6 +936,8 @@ tvrds.o: tvrds.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -953,6 +987,8 @@ tvrfd.o: tvrfd.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -983,6 +1019,58 @@ tvrfd.o: tvrfd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmdata/dctypes.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
+tvrol.o: tvrol.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/dcdatset.h ../include/dcmtk/dcmdata/dcitem.h \
+ ../include/dcmtk/dcmdata/dctypes.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/dcvrol.h ../include/dcmtk/dcmdata/dcvrul.h \
+ ../include/dcmtk/dcmdata/dcelem.h ../include/dcmtk/dcmdata/dcdeftag.h
 tvrpn.o: tvrpn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -1001,6 +1089,8 @@ tvrpn.o: tvrpn.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1049,6 +1139,8 @@ tvrui.o: tvrui.cc ../../config/include/dcmtk/config/osconfig.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 \
diff --git a/dcmdata/tests/Makefile.in b/dcmdata/tests/Makefile.in
index 563cc66..d95ae9c 100644
--- a/dcmdata/tests/Makefile.in
+++ b/dcmdata/tests/Makefile.in
@@ -22,8 +22,8 @@ LOCALLIBS = -ldcmdata -loflog -lofstd $(ZLIBLIBS) $(ICONVLIBS)
 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 tstrval.o tspchrs.o tvrpn.o tparent.o \
-	tfilter.o tvrcomp.o
+	tdict.o tvrds.o tvrfd.o tvrui.o tvrol.o tstrval.o tspchrs.o tvrpn.o \
+	tparent.o tfilter.o tvrcomp.o
 
 progs = tests
 
diff --git a/dcmdata/tests/tchval.cc b/dcmdata/tests/tchval.cc
index 9b96696..4c2416a 100644
--- a/dcmdata/tests/tchval.cc
+++ b/dcmdata/tests/tchval.cc
@@ -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
@@ -250,6 +250,7 @@ OFTEST(dcmdata_checkStringValue)
   CHECK_GOOD( "UI-10", DcmUniqueIdentifier::checkStringValue("1.2.3.4.5.6.7.8.9.0\\99", "2") )
   CHECK_GOOD( "UI-11", DcmUniqueIdentifier::checkStringValue("1.2.3.4.5.6.7.8.9.0.123.456.789.0.111222333444555666777888999000", "1") )
   CHECK_BAD ( "UI-12", DcmUniqueIdentifier::checkStringValue("1.2.3.4.5.6.7.8.9.0.123.456.789.10.111222333444555666777888999000", "1") )
+  CHECK_BAD ( "UI-13", DcmUniqueIdentifier::checkStringValue("007", "1") )
 
   /* test "Universal Resource Identifier or Universal Resource Locator (URI/URL)" */
   CHECK_GOOD( "UR-01", DcmUniversalResourceIdentifierOrLocator::checkStringValue("http://www.dcmtk.org/ ") )
diff --git a/dcmdata/tests/telemlen.cc b/dcmdata/tests/telemlen.cc
index e731320..4b094ad 100644
--- a/dcmdata/tests/telemlen.cc
+++ b/dcmdata/tests/telemlen.cc
@@ -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
@@ -111,6 +111,7 @@ OFTEST(dcmdata_elementLength_pixelSequence)
 TEST_VR(EVR_OB)
 TEST_VR(EVR_OD)
 TEST_VR(EVR_OF)
+TEST_VR(EVR_OL)
 TEST_VR(EVR_OW)
 TEST_VR(EVR_SQ)
 TEST_VR(EVR_UC)
diff --git a/dcmdata/tests/tests.cc b/dcmdata/tests/tests.cc
index 335333f..805f087 100644
--- a/dcmdata/tests/tests.cc
+++ b/dcmdata/tests/tests.cc
@@ -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
@@ -38,6 +38,7 @@ OFTEST_REGISTER(dcmdata_floatingPointDouble);
 OFTEST_REGISTER(dcmdata_personName);
 OFTEST_REGISTER(dcmdata_uniqueIdentifier_1);
 OFTEST_REGISTER(dcmdata_uniqueIdentifier_2);
+OFTEST_REGISTER(dcmdata_otherLong);
 OFTEST_REGISTER(dcmdata_VRCompare);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_AE);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_AS);
@@ -54,6 +55,7 @@ OFTEST_REGISTER(dcmdata_elementLength_EVR_LT);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OB);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OD);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OF);
+OFTEST_REGISTER(dcmdata_elementLength_EVR_OL);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OW);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_OverlayData);
 OFTEST_REGISTER(dcmdata_elementLength_EVR_PN);
diff --git a/dcmdata/tests/tvrcomp.cc b/dcmdata/tests/tvrcomp.cc
index b7e8dcd..e14a6a6 100644
--- a/dcmdata/tests/tvrcomp.cc
+++ b/dcmdata/tests/tvrcomp.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014, OFFIS e.V.
+ *  Copyright (C) 2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -15,7 +15,7 @@
  *
  *  Author:  Michael Onken
  *
- *  Purpose: test program for compare() method of VR classes
+ *  Purpose: tests for compare() as well as < and > operators of VR classes
  *
  */
 
@@ -72,27 +72,41 @@ static void checkByteString(const DcmTagKey& key)
   obj1.putOFStringArray("TEST");
   obj2.putOFStringArray("TEST");
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putOFStringArray("TEST" /* same value*/);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second string longer
   obj2.putOFStringArray("TEST_LONG");
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putOFStringArray("TEST\\TEST");
   obj2.putOFStringArray("TEST\\TEST\\TEST");
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -104,33 +118,47 @@ static void checkAttributeTags()
   DcmAttributeTag objOtherTag(DCM_UndefinedTagKey);
 
   // Check equality
-  obj1.putTagVal(DcmTagKey(0010,0010));
-  obj2.putTagVal(DcmTagKey(0010,0010));
+  obj1.putTagVal(DCM_PatientName);
+  obj2.putTagVal(DCM_PatientName);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
-  objOtherTag.putTagVal(DcmTagKey(0010,0010));
+  objOtherTag.putTagVal(DCM_PatientName);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
-  obj2.putTagVal(DcmTagKey(0010,0020));
+  obj2.putTagVal(DCM_PatientID);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
-  obj1.putTagVal(DcmTagKey(0010,0010), 1); // VM = 2
-  obj2.putTagVal(DcmTagKey(0010,0010), 0);
-  obj2.putTagVal(DcmTagKey(0010,0010), 1);
-  obj2.putTagVal(DcmTagKey(0010,0010), 2); // VM = 3
+  obj1.putTagVal(DCM_PatientName, 1); // VM = 2
+  obj2.putTagVal(DCM_PatientName, 0);
+  obj2.putTagVal(DCM_PatientName, 1);
+  obj2.putTagVal(DCM_PatientName, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -145,20 +173,30 @@ static void checkFloatingPointDouble()
   obj1.putFloat64(10.0);
   obj2.putFloat64(10.0);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj2) && (obj1 >= obj1) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putFloat64(10.0);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putFloat64(100.50);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putFloat64(10.0);     // VM = 2
@@ -167,8 +205,12 @@ static void checkFloatingPointDouble()
   obj2.putFloat64(10.0, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -183,20 +225,30 @@ static void checkFloatingPointSingle()
   obj1.putFloat32(10.0);
   obj2.putFloat32(10.0);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putFloat32(10.0);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putFloat32(100.50);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putFloat32(10.0);     // VM = 2
@@ -205,8 +257,12 @@ static void checkFloatingPointSingle()
   obj2.putFloat32(10.0, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 template <typename BinaryOBOWType>
@@ -222,21 +278,31 @@ static void checkOtherByteOtherWord(const DcmTagKey& tagKey)
   obj1.putUint8Array(testData, 1);
   obj2.putUint8Array(testData, 1);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putUint8Array(testData, 1);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   Uint8 biggerTestData[1] = {101};
   obj2.putUint8Array(biggerTestData, 1);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   Uint8 largeVMTestData[2] = {100, 101};
@@ -245,8 +311,12 @@ static void checkOtherByteOtherWord(const DcmTagKey& tagKey)
   obj2.putUint8Array(evenLargerVMTestData, 3); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -261,20 +331,30 @@ static void checkSignedLong()
   obj1.putSint32(-10);
   obj2.putSint32(-10);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putSint32(-10);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putSint32(-5);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
+
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putSint32(-10);     // VM = 2
@@ -283,8 +363,12 @@ static void checkSignedLong()
   obj2.putSint32(-10, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -299,20 +383,30 @@ static void checkSignedShort()
   obj1.putSint16(-10);
   obj2.putSint16(-10);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putSint16(-10);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putSint16(-5);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putSint16(-10);     // VM = 2
@@ -321,8 +415,12 @@ static void checkSignedShort()
   obj2.putSint16(-10, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -337,20 +435,30 @@ static void checkUnsignedLong()
   obj1.putUint32(10);
   obj2.putUint32(10);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj1) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putUint32(10);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putUint32(10000);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putUint32(10);     // VM = 2
@@ -359,8 +467,12 @@ static void checkUnsignedLong()
   obj2.putUint32(10, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -375,20 +487,30 @@ static void checkUnsignedShort()
   obj1.putUint16(10);
   obj2.putUint16(10);
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj2) && (obj1 >= obj2) );
 
   // Check differing tags (DCM_UndefinedTagKey always smaller than any other key)
   objOtherTag.putUint16(10);
   OFCHECK(obj1.compare(objOtherTag) < 0);
+  OFCHECK(obj1 < objOtherTag);
+  OFCHECK(obj1 <= objOtherTag);
   // Reverse test should yield opposite result
   OFCHECK(objOtherTag.compare(obj1) > 0);
+  OFCHECK(objOtherTag > obj1);
+  OFCHECK(objOtherTag >= obj1);
 
   // Check second attribute larger
   obj2.putUint16(10000);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM
   obj1.putUint16(10);     // VM = 2
@@ -397,8 +519,12 @@ static void checkUnsignedShort()
   obj2.putUint16(10, 2); // VM = 3
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 }
 
 
@@ -408,31 +534,40 @@ static void checkDcmItemAndSequences()
   DcmItem obj1;
   DcmItem obj2;
 
-  obj1.putAndInsertUint16(DcmTagKey(0x0028,0x0010) /* Rows */, 10);
-  obj1.putAndInsertUint16(DcmTagKey(0x0028,0x0020) /* Columns */, 10);
-  obj2.putAndInsertUint16(DcmTagKey(0x0028,0x0010) /* Rows */, 10);
-  obj2.putAndInsertUint16(DcmTagKey(0x0028,0x0020) /* Columns */, 10);
+  obj1.putAndInsertUint16(DCM_Rows, 10);
+  obj1.putAndInsertUint16(DCM_Columns, 10);
+  obj2.putAndInsertUint16(DCM_Rows, 10);
+  obj2.putAndInsertUint16(DCM_Columns, 10);
 
   // Check equality
   OFCHECK_EQUAL(obj1.compare(obj2), 0);
+  OFCHECK( (obj1 <= obj2) && (obj2 <= obj1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(obj2.compare(obj1), 0);
+  OFCHECK( (obj2 >= obj2) && (obj1 >= obj1) );
 
-  // Check values in second item larger
-  obj2.putAndInsertUint16(DcmTagKey(0x0028,0x0010) /* Rows */, 100);
-  obj2.putAndInsertUint16(DcmTagKey(0x0028,0x0020) /* Columns */, 100);
+  // Check values in second item larger. Make sure that the first value remains equal.
+  obj2.putAndInsertUint16(DCM_Columns, 100);
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2);
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1);
+  OFCHECK(obj2 >= obj1);
 
   // Test different VM (i.e. item cardinality):
   // obj1 has VM = 2
   // Make obj2 VM = 3 by adding another tag
-  obj2.insertEmptyElement(DcmTagKey(0x7fe0,0x0010) /* Pixel Data */);
+  obj2.insertEmptyElement(DCM_PixelData);
 
   OFCHECK(obj1.compare(obj2) < 0);
+  OFCHECK(obj1 < obj2);
+  OFCHECK(obj1 <= obj2 );
   // Reverse test should yield opposite result
   OFCHECK(obj2.compare(obj1) > 0);
+  OFCHECK(obj2 > obj1 );
+  OFCHECK(obj2 >= obj1 );
 
   // Check sequences
 
@@ -446,8 +581,10 @@ static void checkDcmItemAndSequences()
 
   // Check equality
   OFCHECK_EQUAL(seq1.compare(seq2), 0);
+  OFCHECK( (seq1 <= seq2) && (seq2 <= seq1) );
   // Reverse test should yield same result
   OFCHECK_EQUAL(seq2.compare(seq1), 0);
+  OFCHECK( (seq2 >= seq1) && (seq1 >= seq2) );
 
   // Test different VM (i.e. sequence cardinality):
   // seq1 has VM = 2
@@ -455,8 +592,12 @@ static void checkDcmItemAndSequences()
   seq2.insertAtCurrentPos(new DcmItem());;
 
   OFCHECK(seq1.compare(seq2) < 0);
+  OFCHECK(seq1 < seq2);
+  OFCHECK(seq1 <= seq2);
   // Reverse test should yield opposite result
   OFCHECK(seq2.compare(seq1) > 0);
+  OFCHECK(seq2 > seq1);
+  OFCHECK(seq2 >= seq1);
 }
 
 
diff --git a/dcmdata/tests/tvrol.cc b/dcmdata/tests/tvrol.cc
new file mode 100644
index 0000000..96d2bfd
--- /dev/null
+++ b/dcmdata/tests/tvrol.cc
@@ -0,0 +1,51 @@
+/*
+ *
+ *  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:  dcmdata
+ *
+ *  Author:  Joerg Riesmeier
+ *
+ *  Purpose: test program for class DcmOtherLong
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmdata/dcdatset.h"
+#include "dcmtk/dcmdata/dcvrol.h"
+#include "dcmtk/dcmdata/dcdeftag.h"
+
+
+OFTEST(dcmdata_otherLong)
+{
+    DcmOtherLong otherLong(DCM_TrackPointIndexList);
+    /* append new values */
+    OFCHECK(otherLong.putUint32(1, 0).good());
+    OFCHECK(otherLong.putUint32(22, 1).good());
+    OFCHECK(otherLong.putUint32(333, 2).good());
+    OFCHECK(otherLong.putUint32(4444, 3).good());
+    OFCHECK(otherLong.putUint32(55555, 4).good());
+    OFCHECK(otherLong.putUint32(666666, 5).good());
+    OFCHECK(otherLong.putUint32(7777777, 6).good());
+    OFCHECK(otherLong.putUint32(88888888, 7).good());
+    OFCHECK(otherLong.putUint32(999999999, 8).good());
+    /* value multiplicity should always be 1 */
+    OFCHECK_EQUAL(otherLong.getVM(), 1);
+    /* get value as an array and check number of entries */
+    Uint32 *uintVals = NULL;
+    OFCHECK(otherLong.getUint32Array(uintVals).good());
+    OFCHECK(uintVals != NULL);
+    OFCHECK_EQUAL(otherLong.getLengthField() / sizeof(Uint32), 9);
+}
diff --git a/dcmfg/include/dcmtk/dcmfg/fgderimg.h b/dcmfg/include/dcmtk/dcmfg/fgderimg.h
index b892dca..3ea9136 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgderimg.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgderimg.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -224,8 +224,8 @@ public:
 
   /** Set Derivation Description
    *  @param  value Value to be set (single value only) or "" for no value
-   *  @param  checkValue Check 'value' for conformance with VR (ST) and VM (1) if
-   *          enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setDerivationDescription(const OFString &value,
diff --git a/dcmfg/include/dcmtk/dcmfg/fgfracon.h b/dcmfg/include/dcmtk/dcmfg/fgfracon.h
index 1cde4af..9f5f01d 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgfracon.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgfracon.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -225,8 +225,8 @@ public:
 
   /** Set Frame Acquisition Number
    *  @param  value Value that should be set
-   *  @param  checkValue If OFTrue, basic checks are performed whether the value is
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setFrameAcquisitionNumber(const Uint16& value,
@@ -281,8 +281,8 @@ public:
    *  @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
    *          starts with 0), i.e.\ select the 1st, 2nd, ..nth dimension
-   *  @param  checkValue If OFTrue, basic checks are performed whether the
-   *          valid for this attribute
+   *  @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,
@@ -291,8 +291,8 @@ public:
 
   /** Set Temporal Position Index
    *  @param  value Value that should be set
-   *  @param  checkValue If OFTrue, basic checks are performed whether the value is
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setTemporalPositionIndex(const Uint32& value,
@@ -309,8 +309,8 @@ public:
 
   /** Set In-Stack Position Number
    *  @param  value Value that should be set
-   *  @param  checkValue If OFTrue, basic checks are performed whether the value is
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setInStackPositionNumber(const Uint32& value,
@@ -318,8 +318,8 @@ public:
 
   /** Set Frame Comments
    *  @param  value Value that should be set
-   *  @param  checkValue If OFTrue, basic checks are performed whether the value is
-   *          valid for this attribute
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value was set, error otherwise
    */
   virtual OFCondition setFrameComments(const OFString& value,
diff --git a/dcmfg/include/dcmtk/dcmfg/fgframevoilut.h b/dcmfg/include/dcmtk/dcmfg/fgframevoilut.h
index 0c12580..c7120d8 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgframevoilut.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgframevoilut.h
@@ -134,8 +134,8 @@ public:
 
   /** Set Window Width
    *  @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
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setWindowWidth(const OFString& value,
diff --git a/dcmfg/include/dcmtk/dcmfg/fgpixmsr.h b/dcmfg/include/dcmtk/dcmfg/fgpixmsr.h
index 895f6bf..4387acd 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgpixmsr.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgpixmsr.h
@@ -103,7 +103,7 @@ public:
 
   /** Set Pixel Spacing
    *  @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
+   *  @param  checkValue Check 'value' for conformance with VR (DS) and VM (2) if
    *          enabled
    *  @return EC_Normal if successful, an error code otherwise
    */
diff --git a/dcmfg/include/dcmtk/dcmfg/fgplanposvol.h b/dcmfg/include/dcmtk/dcmfg/fgplanposvol.h
index 224395c..3e7f78e 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgplanposvol.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgplanposvol.h
@@ -101,7 +101,8 @@ public:
    *  hand corner (center of the first voxel transmitted) of the frame, in mm.
    *  @param  value X,Y or Z coordinate of upper left hand corner voxel in mm
    *  @param  pos pos 0 is x, pos 1 is Y, pos 2 addresses Z coordinate
-   *  @param  checkValue Check coordinates for validity, including VR (FD)
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setImagePositionVolume(const Float64& value,
@@ -113,7 +114,8 @@ public:
    *  @param  valueX X coordinate of upper left hand corner voxel in mm
    *  @param  valueY coordinate of upper left hand corner voxel in mm
    *  @param  valueZ coordinate of upper left hand corner voxel in mm
-   *  @param  checkValue Check coordinates for validity, including VR (FD)
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setImagePositionVolume(const Float64& valueX,
diff --git a/dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h b/dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
index 4217749..1390ad5 100644
--- a/dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
+++ b/dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
@@ -282,8 +282,8 @@ public:
    *  @param  value Value to be set. If Pixel Representation is -1 (signed
    *          pixel data) value  must be -2^15  < value < 2^15-1. Otherwise use
    *          setRealWorldValueFirstValueMappedUnSigned().
-   *  @param  checkValue Check 'value' for conformance with VR (SS) and VM (1)
-   *          if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueFirstValueMappeSigned(const Sint16 &value,
@@ -304,8 +304,8 @@ public:
    *  @param  value Value to be set. If Pixel Representation is -1 (signed
    *          pixel data) value  must be -2^15  < value < 2^15-1. Otherwise use
    *          setRealWorldValueLastValueMappedUnSigned().
-   *  @param  checkValue Check 'value' for conformance with VR (SS) and VM (1)
-   *          if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueLastValueMappedSigned(const Sint16 &value,
@@ -313,7 +313,8 @@ public:
 
   /** Set Real World Value Intercept
    *  @param  value Value to be set
-   *  @param  checkValue Check 'value' for conformance with VR (FD) and VM (1) if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueIntercept(const Float64& value,
@@ -321,7 +322,8 @@ public:
 
   /** Set Real World Value Slope
    *  @param  value Value to be set
-   *  @param  checkValue Check 'value' for conformance with VR (FD) and VM (1) if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setRealWorldValueSlope(const Float64& value,
diff --git a/dcmfg/libsrc/Makefile.dep b/dcmfg/libsrc/Makefile.dep
index f1e984a..e0a32be 100644
--- a/dcmfg/libsrc/Makefile.dep
+++ b/dcmfg/libsrc/Makefile.dep
@@ -40,6 +40,8 @@ fg.o: fg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.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 \
@@ -107,6 +109,7 @@ fg.o: fg.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 \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgbase.h
 fgbase.o: fgbase.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -121,6 +124,8 @@ fgbase.o: fgbase.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -219,6 +224,7 @@ fgbase.o: fgbase.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 \
  ../include/dcmtk/dcmfg/fgdefine.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
@@ -252,6 +258,8 @@ fgderimg.o: fgderimg.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -350,6 +358,7 @@ fgderimg.o: fgderimg.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 \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
@@ -405,6 +414,8 @@ fgfact.o: fgfact.cc ../../config/include/dcmtk/config/osconfig.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/dctagkey.h \
@@ -473,6 +484,7 @@ fgfact.o: fgfact.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 \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgderimg.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodmacro.h \
@@ -534,6 +546,8 @@ fgfracon.o: fgfracon.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -600,6 +614,7 @@ fgfracon.o: fgfracon.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 \
  ../include/dcmtk/dcmfg/fgbase.h ../include/dcmtk/dcmfg/fgtypes.h \
  ../include/dcmtk/dcmfg/fgdefine.h
@@ -653,6 +668,8 @@ fgframevoilut.o: fgframevoilut.cc \
  ../../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 \
@@ -720,6 +737,7 @@ fgframevoilut.o: fgframevoilut.cc \
  ../../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
 fgimagedatatype.o: fgimagedatatype.cc \
@@ -772,6 +790,8 @@ fgimagedatatype.o: fgimagedatatype.cc \
  ../../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 \
@@ -839,6 +859,7 @@ fgimagedatatype.o: fgimagedatatype.cc \
  ../../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
 fginterface.o: fginterface.cc \
@@ -893,6 +914,8 @@ fginterface.o: fginterface.cc \
  ../../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/dctagkey.h \
@@ -958,6 +981,7 @@ fginterface.o: fginterface.cc \
  ../../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/fgtypes.h ../include/dcmtk/dcmfg/fgdefine.h \
  ../include/dcmtk/dcmfg/fg.h ../include/dcmtk/dcmfg/fgbase.h \
@@ -977,6 +1001,8 @@ fgpixmsr.o: fgpixmsr.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1073,6 +1099,7 @@ fgpixmsr.o: fgpixmsr.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 \
  ../include/dcmtk/dcmfg/fgdefine.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
@@ -1093,6 +1120,8 @@ fgplanor.o: fgplanor.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1191,6 +1220,7 @@ fgplanor.o: fgplanor.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 \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgfact.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
@@ -1246,6 +1276,8 @@ fgplanorvol.o: fgplanorvol.cc \
  ../../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 \
@@ -1315,6 +1347,7 @@ fgplanorvol.o: fgplanorvol.cc \
  ../../dcmdata/include/dcmtk/dcmdata/dcvrfl.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
 fgplanpo.o: fgplanpo.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1330,6 +1363,8 @@ fgplanpo.o: fgplanpo.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1428,6 +1463,7 @@ fgplanpo.o: fgplanpo.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 \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgfact.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
@@ -1485,6 +1521,8 @@ fgplanposvol.o: fgplanposvol.cc \
  ../../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 \
@@ -1552,6 +1590,7 @@ fgplanposvol.o: fgplanposvol.cc \
  ../../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
 fgrealworldvaluemapping.o: fgrealworldvaluemapping.cc \
@@ -1568,6 +1607,8 @@ fgrealworldvaluemapping.o: fgrealworldvaluemapping.cc \
  ../../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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1666,6 +1707,7 @@ fgrealworldvaluemapping.o: fgrealworldvaluemapping.cc \
  ../../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 \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
@@ -1691,6 +1733,8 @@ fgseg.o: fgseg.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1787,6 +1831,7 @@ fgseg.o: fgseg.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 \
  ../include/dcmtk/dcmfg/fgdefine.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodutil.h \
@@ -1833,6 +1878,8 @@ fgtypes.o: fgtypes.cc ../../config/include/dcmtk/config/osconfig.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/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1903,6 +1950,7 @@ fgtypes.o: fgtypes.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 \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fgbase.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodcommn.h \
@@ -1972,6 +2020,8 @@ fgusimagedescription.o: fgusimagedescription.cc \
  ../../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 \
@@ -2039,6 +2089,7 @@ fgusimagedescription.o: fgusimagedescription.cc \
  ../../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 ../include/dcmtk/dcmfg/fgbase.h
 stack.o: stack.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2104,6 +2155,8 @@ stackinterface.o: stackinterface.cc \
  ../../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/dctagkey.h \
@@ -2172,6 +2225,7 @@ stackinterface.o: stackinterface.cc \
  ../../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/fginterface.h ../include/dcmtk/dcmfg/fgtypes.h \
  ../include/dcmtk/dcmfg/fgdefine.h ../include/dcmtk/dcmfg/fg.h \
diff --git a/dcmfg/libsrc/fgderimg.cc b/dcmfg/libsrc/fgderimg.cc
index 6350298..e8776da 100644
--- a/dcmfg/libsrc/fgderimg.cc
+++ b/dcmfg/libsrc/fgderimg.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -547,11 +547,8 @@ OFCondition DerivationImageItem::getDerivationDescription(OFString& value,
 OFCondition DerivationImageItem::setDerivationDescription(const OFString& value,
                                                           const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmShortText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_DerivationDescription.putOFStringArray(value);
-  return result;
-
+  (void)checkValue;
+  return m_DerivationDescription.putOFStringArray(value);
 }
 
 
diff --git a/dcmfg/libsrc/fgfracon.cc b/dcmfg/libsrc/fgfracon.cc
index 89d3556..b2ffd8a 100644
--- a/dcmfg/libsrc/fgfracon.cc
+++ b/dcmfg/libsrc/fgfracon.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -265,6 +265,7 @@ OFCondition FGFrameContent::getFrameLabel(OFString& value,
 OFCondition FGFrameContent::setFrameAcquisitionNumber(const Uint16& value,
                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   m_FrameAcquisitonNumber.putUint16(value);
   return EC_Normal;
 }
@@ -290,6 +291,7 @@ OFCondition FGFrameContent::setFrameAcquisitionDateTime(const OFString& value,
 OFCondition FGFrameContent::setFrameAcquisitionDuration(const Float64& value,
                                                         const OFBool checkValue)
 {
+  (void)checkValue;
   // basic checking always included
   return m_FrameAcquisitionDuration.putFloat64(value);
 }
@@ -316,7 +318,8 @@ OFCondition FGFrameContent::setDimensionIndexValues(const Uint32& value,
                                                     const unsigned int pos,
                                                     const OFBool checkValue)
 {
-  // no meaningful check possible in this context
+  // no other meaningful checks possible in this context
+  (void)checkValue;
   if (value == 0)
   {
     DCMFG_ERROR("Cannot set dimension index value 0, must be >= 1)");
@@ -329,6 +332,7 @@ OFCondition FGFrameContent::setTemporalPositionIndex(const Uint32& value,
                                                      const OFBool checkValue)
 {
   // no meaningful check possible in this context
+  (void)checkValue;
   return m_TemporalPositionIndex.putUint32(value);
 }
 
@@ -346,6 +350,7 @@ OFCondition FGFrameContent::setInStackPositionNumber(const Uint32& value,
                                                      const OFBool checkValue)
 {
   // no meaningful check possible in this context
+  (void)checkValue;
   return m_InStackPositionNumber.putUint32(value);
 }
 
@@ -353,12 +358,11 @@ OFCondition FGFrameContent::setInStackPositionNumber(const Uint32& value,
 OFCondition FGFrameContent::setFrameComments(const OFString& value,
                                              const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmLongText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_FrameComments.putOFStringArray(value);
-  return result;
+  (void)checkValue;
+  return m_FrameComments.putOFStringArray(value);
 }
 
+
 OFCondition FGFrameContent::setFrameLabel(const OFString& value,
                                           const OFBool checkValue)
 {
diff --git a/dcmfg/libsrc/fgframevoilut.cc b/dcmfg/libsrc/fgframevoilut.cc
index d88afe2..3b22012 100644
--- a/dcmfg/libsrc/fgframevoilut.cc
+++ b/dcmfg/libsrc/fgframevoilut.cc
@@ -121,6 +121,7 @@ OFCondition FGFrameVOILUT::setWindowCenter(const OFString& value,
                                            const OFBool checkValue)
 {
   // no checks at the moment
+  (void)checkValue;
   return m_WindowCenter.putOFStringArray(value);
 }
 
@@ -128,6 +129,7 @@ OFCondition FGFrameVOILUT::setWindowWidth(const OFString& value,
                                           const OFBool checkValue)
 {
   // no checks at the moment
+  (void)checkValue;
   return m_WindowWidth.putOFStringArray(value);
 }
 
diff --git a/dcmfg/libsrc/fgimagedatatype.cc b/dcmfg/libsrc/fgimagedatatype.cc
index ea83c8e..db55dc0 100644
--- a/dcmfg/libsrc/fgimagedatatype.cc
+++ b/dcmfg/libsrc/fgimagedatatype.cc
@@ -101,7 +101,7 @@ OFCondition FGImageDataType::getZeroVelocityPixelValue(Sint32& value,
   if (!m_ZeroVelocityPixelValueSS.isEmpty())
   {
     Sint16 val = 0;
-    if ( (result = m_ZeroVelocityPixelValueSS.getSint16(val)).good())
+    if ( (result = m_ZeroVelocityPixelValueSS.getSint16(val, pos)).good())
     {
       value = val;
     }
@@ -109,7 +109,7 @@ OFCondition FGImageDataType::getZeroVelocityPixelValue(Sint32& value,
   else if (!m_ZeroVelocityPixelValueUS.isEmpty())
   {
     Uint16 val = 0;
-    if ( (result = m_ZeroVelocityPixelValueUS.getUint16(val)).good())
+    if ( (result = m_ZeroVelocityPixelValueUS.getUint16(val, pos)).good())
     {
       value = val;
     }
diff --git a/dcmfg/libsrc/fginterface.cc b/dcmfg/libsrc/fginterface.cc
index 651fb9c..0837810 100644
--- a/dcmfg/libsrc/fginterface.cc
+++ b/dcmfg/libsrc/fginterface.cc
@@ -653,7 +653,7 @@ OFBool FGInterface::check()
     }
     if (!foundFrameContent)
     {
-      DCMFG_ERROR("Frame Content FGfunctioanl group missing for frame # " << frameCount );
+      DCMFG_ERROR("Frame Content Functional group missing for frame # " << frameCount );
       numErrors++;
     }
   }
diff --git a/dcmfg/libsrc/fgpixmsr.cc b/dcmfg/libsrc/fgpixmsr.cc
index 09a2041..9fa1eec 100644
--- a/dcmfg/libsrc/fgpixmsr.cc
+++ b/dcmfg/libsrc/fgpixmsr.cc
@@ -146,17 +146,33 @@ OFCondition FGPixelMeasures:: getSpacingBetweenSlices(Float64& value,
 OFCondition FGPixelMeasures::setPixelSpacing(const OFString& value,
                                              const OFBool checkValue)
 {
-  return m_PixelSpacing.putOFStringArray(value);
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "2") : EC_Normal;
+  if (result.good())
+  {
+    result = m_PixelSpacing.putOFStringArray(value);
+  }
+  return result;
 }
 
 
 OFCondition FGPixelMeasures::setSliceThickness(const OFString& value,
                                                const OFBool checkValue)
 {
-  return m_SliceThickness.putOFStringArray(value);
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+  {
+    result = m_SliceThickness.putOFStringArray(value);
+  }
+  return result;
 }
 
 OFCondition FGPixelMeasures::setSpacingBetweenSlices(const OFString& value,
                                                      const OFBool checkValue)
 {
-  return m_SpacingBetweenSlices.putOFStringArray(value);}
+  OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+  if (result.good())
+  {
+    result = m_SpacingBetweenSlices.putOFStringArray(value);
+  }
+  return result;
+}
diff --git a/dcmfg/libsrc/fgplanposvol.cc b/dcmfg/libsrc/fgplanposvol.cc
index 6ad9518..00eaf46 100644
--- a/dcmfg/libsrc/fgplanposvol.cc
+++ b/dcmfg/libsrc/fgplanposvol.cc
@@ -88,6 +88,7 @@ OFCondition FGPlanePositionVolume::setImagePositionVolume(const Float64& valueX,
                                                           const Float64& valueZ,
                                                           const OFBool checkValue)
 {
+  (void)checkValue;
   OFCondition result = m_ImagePositionVolume.putFloat64(valueX, 0);
   if (result.good()) result = m_ImagePositionVolume.putFloat64(valueY, 1);
   if (result.good()) result = m_ImagePositionVolume.putFloat64(valueZ, 2);
@@ -99,6 +100,8 @@ OFCondition FGPlanePositionVolume::setImagePositionVolume(const Float64& value,
                                                           const long unsigned int pos,
                                                           const OFBool checkValue)
 {
+  // no checks
+  (void)checkValue;
   if (pos > 2)
     return EC_ValueMultiplicityViolated;
 
diff --git a/dcmfg/libsrc/fgrealworldvaluemapping.cc b/dcmfg/libsrc/fgrealworldvaluemapping.cc
index 0a41a3e..d3051b1 100644
--- a/dcmfg/libsrc/fgrealworldvaluemapping.cc
+++ b/dcmfg/libsrc/fgrealworldvaluemapping.cc
@@ -266,6 +266,7 @@ CodeSequenceMacro& FGRealWorldValueMapping::RWVMItem::getMeasurementUnitsCode()
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMappedUnsigned(const Uint16& value,
                                                                                          const OFBool checkValue)
 {
+  (void)checkValue;
   DcmUnsignedShort* us = new DcmUnsignedShort(DCM_RealWorldValueFirstValueMapped);
   OFCondition result = us->putUint16(value);
   if (result.good()) result = m_Item->insert(us, OFTrue /* replace old */);
@@ -277,6 +278,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMapped
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMappeSigned(const Sint16& value,
                                                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   DcmSignedShort* ss = new DcmSignedShort(DCM_RealWorldValueFirstValueMapped);
   OFCondition result = ss->putSint16(value);
   if (result.good()) result = m_Item->insert(ss, OFTrue /* replace old */);
@@ -287,6 +289,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueFirstValueMappeS
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedSigned(const Sint16& value,
                                                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   DcmSignedShort* ss = new DcmSignedShort(DCM_RealWorldValueLastValueMapped);
   OFCondition result = ss->putSint16(value);
   if (result.good()) result = m_Item->insert(ss, OFTrue /* replace old */);
@@ -299,6 +302,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedS
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedUnsigned(const Uint16& value,
                                                                                         const OFBool checkValue)
 {
+  (void)checkValue;
   DcmUnsignedShort* us = new DcmUnsignedShort(DCM_RealWorldValueLastValueMapped);
   OFCondition result = us->putUint16(value);
   if (result.good()) result = m_Item->insert(us, OFTrue /* replace old */);
@@ -310,6 +314,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLastValueMappedU
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueIntercept(const Float64& value,
                                                                           const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertFloat64(DCM_RealWorldValueIntercept, value);
 }
 
@@ -317,6 +322,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueIntercept(const
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueSlope(const Float64& value,
                                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertFloat64(DCM_RealWorldValueSlope, value);
 }
 
@@ -324,6 +330,7 @@ OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueSlope(const Floa
 OFCondition FGRealWorldValueMapping::RWVMItem::setRealWorldValueLUTData(const OFVector< Float64 >& value,
                                                                         const OFBool checkValue)
 {
+  (void)checkValue;
   DcmElement *elem = NULL;
   OFCondition result = m_Item->findAndGetElement(DCM_RealWorldValueLUTData, elem);
   if (result.good())
diff --git a/dcmfg/libsrc/fgusimagedescription.cc b/dcmfg/libsrc/fgusimagedescription.cc
index 5685e7f..de06819 100644
--- a/dcmfg/libsrc/fgusimagedescription.cc
+++ b/dcmfg/libsrc/fgusimagedescription.cc
@@ -112,7 +112,16 @@ OFCondition FGUSImageDescription::setFrameType(const DcmFGTypes::E_FGUSFrameType
   value += "\\";
   value += derivedPixelContrast;
 
-  return m_FrameType.putOFStringArray(value);
+  OFCondition result;
+  if (checkValue)
+  {
+    result = DcmCodeString::checkStringValue(value, "4");
+  }
+  if (result.good())
+  {
+    result = m_FrameType.putOFStringArray(value);
+  }
+  return result;
 }
 
 
diff --git a/dcmimage/apps/Makefile.dep b/dcmimage/apps/Makefile.dep
index 1a5e6e0..c2aa1a6 100644
--- a/dcmimage/apps/Makefile.dep
+++ b/dcmimage/apps/Makefile.dep
@@ -39,6 +39,8 @@ dcm2pnm.o: dcm2pnm.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -107,6 +109,7 @@ dcm2pnm.o: dcm2pnm.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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcrledrg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
@@ -177,6 +180,8 @@ dcmquant.o: dcmquant.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -245,6 +250,7 @@ dcmquant.o: dcmquant.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 \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dimoimg.h \
@@ -309,6 +315,8 @@ dcmscale.o: dcmscale.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -377,6 +385,7 @@ dcmscale.o: dcmscale.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 \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dimoimg.h \
diff --git a/dcmimage/libsrc/Makefile.dep b/dcmimage/libsrc/Makefile.dep
index 5f351e4..40edbdd 100644
--- a/dcmimage/libsrc/Makefile.dep
+++ b/dcmimage/libsrc/Makefile.dep
@@ -38,6 +38,8 @@ diargimg.o: diargimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -116,6 +118,8 @@ dicmyimg.o: dicmyimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimage/dicmyimg.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -185,6 +189,8 @@ dicoimg.o: dicoimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -275,6 +281,8 @@ dicoopx.o: dicoopx.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmimage/dicdefin.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dipixel.h
@@ -318,6 +326,8 @@ dicopx.o: dicopx.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -388,6 +398,8 @@ dihsvimg.o: dihsvimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimage/dihsvimg.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -457,6 +469,8 @@ dilogger.o: dilogger.cc ../../config/include/dcmtk/config/osconfig.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/dcmimage/dicdefin.h
 dipalimg.o: dipalimg.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -498,6 +512,8 @@ dipalimg.o: dipalimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -576,6 +592,8 @@ dipipng.o: dipipng.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -641,6 +659,8 @@ dipitiff.o: dipitiff.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -719,6 +739,8 @@ diqtctab.o: diqtctab.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/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 \
@@ -746,7 +768,9 @@ diqtfs.o: diqtfs.cc ../../config/include/dcmtk/config/osconfig.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/oftraits.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 diqthash.o: diqthash.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimage/diqthash.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
@@ -794,6 +818,8 @@ diqthash.o: diqthash.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -884,6 +910,8 @@ diquant.o: diquant.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmimage/diqttype.h \
  ../include/dcmtk/dcmimage/dicdefin.h ../include/dcmtk/dcmimage/diqtid.h \
@@ -973,6 +1001,8 @@ diregist.o: diregist.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmimage/dicdefin.h \
  ../include/dcmtk/dcmimage/dipalimg.h ../include/dcmtk/dcmimage/dicoimg.h \
@@ -1058,6 +1088,8 @@ dirgbimg.o: dirgbimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimage/dirgbimg.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -1127,6 +1159,8 @@ diybrimg.o: diybrimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimage/diybrimg.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -1201,6 +1235,8 @@ diyf2img.o: diyf2img.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimage/diyf2img.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
@@ -1275,6 +1311,8 @@ diyp2img.o: diyp2img.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimage/diyp2img.h ../include/dcmtk/dcmimage/dicoimg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
diff --git a/dcmimgle/apps/Makefile.dep b/dcmimgle/apps/Makefile.dep
index 4f3993f..9639ef8 100644
--- a/dcmimgle/apps/Makefile.dep
+++ b/dcmimgle/apps/Makefile.dep
@@ -39,6 +39,8 @@ dcmdspfn.o: dcmdspfn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -107,6 +109,7 @@ dcmdspfn.o: dcmdspfn.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 \
  ../include/dcmtk/dcmimgle/digsdfn.h ../include/dcmtk/dcmimgle/didispfn.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diciefn.h \
@@ -139,6 +142,8 @@ dconvlum.o: dconvlum.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
diff --git a/dcmimgle/include/dcmtk/dcmimgle/dibaslut.h b/dcmimgle/include/dcmtk/dcmimgle/dibaslut.h
index 55368d1..82e7895 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/dibaslut.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/dibaslut.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2011, OFFIS e.V.
+ *  Copyright (C) 1996-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -221,7 +221,7 @@ class DCMTK_DCMIMGLE_EXPORT DiBaseLUT
      */
     inline Uint32 getAbsMaxRange() const
     {
-        return DicomImageClass::maxval(Bits, 0);
+        return OFstatic_cast(Uint32, DicomImageClass::maxval(Bits, 0));
     }
 
     /** check whether LUT is valid
diff --git a/dcmimgle/include/dcmtk/dcmimgle/diovpln.h b/dcmimgle/include/dcmtk/dcmimgle/diovpln.h
index 8cd7ff6..016cadb 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/diovpln.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/diovpln.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2011, OFFIS e.V.
+ *  Copyright (C) 1996-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -506,7 +506,7 @@ inline int DiOverlayPlane::reset(const unsigned long frame)
     int result = 0;
     if (Valid && (Data != NULL))
     {
-        const Uint32 frameNumber = FirstFrame + frame;
+        const Uint32 frameNumber = OFstatic_cast(Uint32, FirstFrame + frame);
         DCMIMGLE_TRACE("reset overlay plane in group 0x" << STD_NAMESPACE hex << GroupNumber << " to start position");
         DCMIMGLE_TRACE("  frameNumber: " << frameNumber << " (" << FirstFrame << "+" << frame
             << "), ImageFrameOrigin: " << ImageFrameOrigin << ", NumberOfFrames: " << NumberOfFrames);
diff --git a/dcmimgle/include/dcmtk/dcmimgle/dipxrept.h b/dcmimgle/include/dcmtk/dcmimgle/dipxrept.h
index 123f799..ae7db61 100644
--- a/dcmimgle/include/dcmtk/dcmimgle/dipxrept.h
+++ b/dcmimgle/include/dcmtk/dcmimgle/dipxrept.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2010, 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
@@ -27,10 +27,12 @@
 
 #include "dcmtk/dcmimgle/diutils.h"
 
+#ifndef DCMTK_EXPLICIT_SPECIALIZATION
 #ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
+#define DCMTK_EXPLICIT_SPECIALIZATION template<>
 #else
-#define EXPLICIT_SPECIALIZATION
+#define DCMTK_EXPLICIT_SPECIALIZATION
+#endif
 #endif
 
 
@@ -72,84 +74,84 @@ class DiPixelRepresentationTemplate
 /********************************************************************/
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Uint8>::getRepresentation() const
 {
     return EPR_Uint8;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Sint8>::getRepresentation() const
 {
     return EPR_Sint8;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Uint16>::getRepresentation() const
 {
     return EPR_Uint16;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Sint16>::getRepresentation() const
 {
     return EPR_Sint16;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Uint32>::getRepresentation() const
 {
     return EPR_Uint32;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline EP_Representation DiPixelRepresentationTemplate<Sint32>::getRepresentation() const
 {
     return EPR_Sint32;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Uint8>::isSigned() const
 {
     return 0;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Uint16>::isSigned() const
 {
     return 0;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Uint32>::isSigned() const
 {
     return 0;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Sint8>::isSigned() const
 {
     return 1;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Sint16>::isSigned() const
 {
     return 1;
 }
 
 
-EXPLICIT_SPECIALIZATION
+DCMTK_EXPLICIT_SPECIALIZATION
 inline int DiPixelRepresentationTemplate<Sint32>::isSigned() const
 {
     return 1;
diff --git a/dcmimgle/libsrc/Makefile.dep b/dcmimgle/libsrc/Makefile.dep
index 2e925c4..534af90 100644
--- a/dcmimgle/libsrc/Makefile.dep
+++ b/dcmimgle/libsrc/Makefile.dep
@@ -38,6 +38,8 @@ dcmimage.o: dcmimage.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -116,6 +118,8 @@ dibaslut.o: dibaslut.cc ../../config/include/dcmtk/config/osconfig.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/dcmimgle/didefine.h
 diciefn.o: diciefn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimgle/diciefn.h ../include/dcmtk/dcmimgle/didispfn.h \
@@ -161,7 +165,9 @@ diciefn.o: diciefn.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/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 dicielut.o: dicielut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimgle/dicielut.h \
  ../include/dcmtk/dcmimgle/didislut.h \
@@ -205,6 +211,8 @@ dicielut.o: dicielut.cc ../../config/include/dcmtk/config/osconfig.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/dcmimgle/didefine.h
 didislut.o: didislut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimgle/didislut.h \
@@ -248,6 +256,8 @@ didislut.o: didislut.cc ../../config/include/dcmtk/config/osconfig.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/dcmimgle/didefine.h
 didispfn.o: didispfn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -295,7 +305,9 @@ didispfn.o: didispfn.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/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 didocu.o: didocu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -337,6 +349,8 @@ didocu.o: didocu.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -405,6 +419,7 @@ didocu.o: didocu.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 \
  ../include/dcmtk/dcmimgle/didocu.h ../include/dcmtk/dcmimgle/diobjcou.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diutils.h
@@ -453,7 +468,9 @@ digsdfn.o: digsdfn.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/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 digsdlut.o: digsdlut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmimgle/digsdlut.h \
  ../include/dcmtk/dcmimgle/didislut.h \
@@ -497,6 +514,8 @@ digsdlut.o: digsdlut.cc ../../config/include/dcmtk/config/osconfig.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/dcmimgle/didefine.h \
  ../include/dcmtk/dcmimgle/displint.h
 diimage.o: diimage.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -539,6 +558,8 @@ diimage.o: diimage.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -611,6 +632,8 @@ diinpx.o: diinpx.cc ../../config/include/dcmtk/config/osconfig.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/dcmimgle/didefine.h
 diluptab.o: diluptab.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
@@ -629,6 +652,8 @@ diluptab.o: diluptab.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -715,6 +740,8 @@ dimo1img.o: dimo1img.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimgle/dimo1img.h ../include/dcmtk/dcmimgle/dimoimg.h \
  ../include/dcmtk/dcmimgle/diimage.h \
@@ -778,6 +805,8 @@ dimo2img.o: dimo2img.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimgle/dimo2img.h ../include/dcmtk/dcmimgle/dimoimg.h \
  ../include/dcmtk/dcmimgle/diimage.h \
@@ -841,6 +870,8 @@ dimoimg.o: dimoimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -896,6 +927,8 @@ dimoimg3.o: dimoimg3.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -964,6 +997,8 @@ dimoimg4.o: dimoimg4.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1032,6 +1067,8 @@ dimoimg5.o: dimoimg5.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1129,6 +1166,8 @@ dimomod.o: dimomod.cc ../../config/include/dcmtk/config/osconfig.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/dcmimgle/didefine.h \
  ../include/dcmtk/dcmimgle/diobjcou.h ../include/dcmtk/dcmimgle/didocu.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1187,6 +1226,8 @@ dimoopx.o: dimoopx.cc ../../config/include/dcmtk/config/osconfig.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/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/dimopx.h \
  ../include/dcmtk/dcmimgle/dipixel.h ../include/dcmtk/dcmimgle/dimomod.h \
  ../include/dcmtk/dcmimgle/diluptab.h \
@@ -1235,6 +1276,8 @@ dimopx.o: dimopx.cc ../../config/include/dcmtk/config/osconfig.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/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/dimomod.h \
  ../include/dcmtk/dcmimgle/diluptab.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -1282,6 +1325,8 @@ diovdat.o: diovdat.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimgle/diovlay.h ../include/dcmtk/dcmimgle/diobjcou.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diovdat.h \
@@ -1327,6 +1372,8 @@ diovlay.o: diovlay.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimgle/diovlay.h ../include/dcmtk/dcmimgle/diobjcou.h \
  ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diovdat.h \
@@ -1392,6 +1439,8 @@ diovlimg.o: diovlimg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimgle/diovlimg.h \
  ../include/dcmtk/dcmimgle/dimo2img.h ../include/dcmtk/dcmimgle/dimoimg.h \
@@ -1462,6 +1511,8 @@ diovpln.o: diovpln.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -1526,5 +1577,7 @@ diutils.o: diutils.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmimgle/diutils.h ../include/dcmtk/dcmimgle/didefine.h
diff --git a/dcmimgle/libsrc/diimage.cc b/dcmimgle/libsrc/diimage.cc
index f80be77..aab805f 100644
--- a/dcmimgle/libsrc/diimage.cc
+++ b/dcmimgle/libsrc/diimage.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1996-2014, OFFIS e.V.
+ *  Copyright (C) 1996-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -117,7 +117,14 @@ DiImage::DiImage(const DiDocument *docu,
         /* start from first processed frame (might still exceed number of loaded frames) */
         RepresentativeFrame -= FirstFrame;
         int ok = (Document->getValue(DCM_Rows, Rows) > 0);
-        ok &= (Document->getValue(DCM_Columns, Columns) > 0);
+        if (!ok)
+            DCMIMGLE_ERROR("mandatory attribute 'Rows' is missing");
+        if (Document->getValue(DCM_Columns, Columns) == 0)
+        {
+            ok = 0;
+            DCMIMGLE_ERROR("mandatory attribute 'Columns' is missing");
+        }
+        /* check whether to proceed */
         if (!ok || ((Rows > 0) && (Columns > 0)))
         {
             ok &= (Document->getValue(DCM_BitsAllocated, BitsAllocated) > 0);
diff --git a/dcmiod/CMakeLists.txt b/dcmiod/CMakeLists.txt
index 807e794..58c13d5 100644
--- a/dcmiod/CMakeLists.txt
+++ b/dcmiod/CMakeLists.txt
@@ -5,6 +5,6 @@ PROJECT(dcmiod)
 INCLUDE_DIRECTORIES(${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)
+FOREACH(SUBDIR libsrc include tests)
   ADD_SUBDIRECTORY(${SUBDIR})
 ENDFOREACH(SUBDIR)
diff --git a/dcmiod/Makefile.in b/dcmiod/Makefile.in
index af66eff..6ca53d8 100644
--- a/dcmiod/Makefile.in
+++ b/dcmiod/Makefile.in
@@ -82,4 +82,4 @@ distclean:
 
 dependencies:
 	(cd libsrc && touch $(DEP) && $(MAKE) dependencies)
-#	(cd tests && touch $(DEP) && $(MAKE) dependencies)
+	(cd tests && touch $(DEP) && $(MAKE) dependencies)
diff --git a/dcmiod/include/dcmtk/dcmiod/cielabutil.h b/dcmiod/include/dcmtk/dcmiod/cielabutil.h
new file mode 100755
index 0000000..435723d
--- /dev/null
+++ b/dcmiod/include/dcmtk/dcmiod/cielabutil.h
@@ -0,0 +1,212 @@
+/*
+ *
+ *  Copyright (C) 2016, Pascal Getreuer, 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:  Pascal Getreuer, Michael Onken
+ *
+ *  Purpose: Static helper functionality for CIE<->RGB color conversions
+ *
+ */
+
+#ifndef CIELABUTIL_H
+#define CIELABUTIL_H
+
+#include "dcmtk/config/osconfig.h"
+#define INCLUDE_CMATH                // for pow() function
+#include "dcmtk/ofstd/ofstdinc.h"
+#include "dcmtk/dcmiod/ioddef.h"
+
+
+/** Class supporting color space conversions from and to CIELab. In some IODs
+ *  DICOM stores CIELab color values which must often be converted to RGB for
+ *  display or other purposes. This is supported by the functions dicomLab2RGB()
+ *  and rgb2DicomLab(). The CIELab value range in DICOM is [0,65535] for all
+ *  three values. The RGB value range in this class is [0;1]. Further functions
+ *  are available in order to convert between RGB, "normal" CIELab value range
+ *  as well as CIEXYZ. The class uses double floating point precision for
+ *  calculations.
+ */
+class DCMTK_DCMIOD_EXPORT IODCIELabUtil
+{
+public:
+
+  /// D65 standard lightpoint X component for conversion from CIEXYZ to CIELab
+  static const double D65_WHITEPOINT_X;
+  /// D65 standard lightpoint Y component for conversion from CIEXYZ to CIELab
+  static const double D65_WHITEPOINT_Y;
+  /// D65 standard lightpoint Z component for conversion from CIEXYZ to CIELab
+  static const double D65_WHITEPOINT_Z;
+
+  /** Convert CIELab color representation as found in DICOM to sRGB value
+   *  representation. See DICOM part 3 for details.
+   *  @param  R Output sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Output sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Output sRGB "R" component (blue) with 0 <= B <= 1
+   *  @param  LDicom Input DICOM CIELab luminance component with 0 <= L <= 65535
+   *  @param  aDicom Input DICOM CIELab "a" component (red<->green) with 0 <= a <= 65535
+   *  @param  bDicom Input DIOCM CIELab "b" component (blue<->yellow) with 0 <= a <= 65535
+   */
+  static void dicomLab2RGB(double& R, double& G, double& B, double LDicom, double aDicom, double bDicom);
+
+  /** Convert sRGB color representation to CIELab color representation as found
+   *  in DICOM. See DICOM part 3 for details.
+   *  @param  LDicom Output CIELab luminance component with 0 <= L <= 65535 as found
+   *          in DICOM
+   *  @param  aDicom Output CIELab "a" component (red<->green) with 0 <= a <= 65535
+   *          as found in DICOM
+   *  @param  bDicom Output CIELab "b" component (blue<->yellow) with 0 <= b <= 65535
+   *          as found in DICOM
+   *  @param  R Input sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Input sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Input sRGB "R" component (blue) with 0 <= B <= 1
+   *
+   */
+  static void rgb2DicomLab(double& LDicom, double& aDicom, double& bDicom, double R, double G, double B);
+
+  /** Convert CIELab color representation as found in DICOM to CIELab
+   *  representation. See DICOM part 3 for details.
+   *  @param  L Output CIELab luminance component with 0 <= L <= 100
+   *  @param  a Output CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Output CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   *  @param  LDicom Input CIELab luminance component with 0 <= L <= 65535 as found
+   *          in DICOM
+   *  @param  aDicom Input CIELab "a" component (red<->green) with 0 <= a <= 65535
+   *          as found in DICOM
+   *  @param  bDicom Input CIELab "b" component (blue<->yellow) with 0 <= b <= 65535
+   *          as found in DICOM
+   */
+  static void dicomlab2Lab(double& L, double& a, double& b, double LDicom, double aDicom, double bDicom);
+
+  /** Convert CIELab color representation to CIELab color representation found
+   *  in DICOM. See DICOM part 3 for details.
+   *  @param  LDicom Output CIELab luminance component with 0 <= L <= 65535 as found
+   *          in DICOM
+   *  @param  aDicom Output CIELab "a" component (red<->green) with 0 <= a <= 65535
+   *          as found in DICOM
+   *  @param  bDicom Output CIELab "b" component (blue<->yellow) with 0 <= b <= 65535
+   *          as found in DICOM
+   *  @param  L Input CIELab luminance component with 0 <= L <= 100
+   *  @param  a Input CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Input CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   *
+   */
+  static void lab2DicomLab(double& LDicom, double& aDicom, double& bDicom, double L, double a, double b);
+
+  /** Convert sRGB color representation to CIELab representation
+   *  @param  L Output CIELab luminance component with 0 <= L <= 100
+   *  @param  a Output CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Output CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   *  @param  R Input sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Input sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Input sRGB "R" component (blue) with 0 <= B <= 1
+   */
+  static void rgb2Lab(double& L, double& a, double& b, double R, double G, double B);
+
+  /** Convert sRGB color representation to CIE XYZ representation
+   *  @param  X Output CIELab XYZ "X" component with 0 <= X <= 1
+   *  @param  Y Output CIELab XYZ "Y" component with 0 <= Y <= 1
+   *  @param  Z Output CIELab XYZ "Z" component with 0 <= Z <= 1
+   *  @param  R Input sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Input sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Input sRGB "R" component (blue) with 0 <= B <= 1
+   */
+  static void rgb2Xyz(double& X, double& Y, double& Z, double R, double G, double B);
+
+
+  /** Convert CIELAB XYZ color representation to CIELab representation
+   *  @param  L Output CIELab luminance component with 0 <= L <= 100
+   *  @param  a Output CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Output CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   *  @param  X Input CIELab XYZ "X" component with 0 <= X <= 1
+   *  @param  Y Input CIELab XYZ "Y" component with 0 <= Y <= 1
+   *  @param  Z Input CIELab XYZ "Z" component with 0 <= Z <= 1
+   */
+  static void xyz2Lab(double& L, double& a, double& b, double X, double Y, double Z);
+
+  /** Convert CIELab color representation to sRGB representation
+   *  @param  R Output sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Output sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Output sRGB "R" component (blue) with 0 <= B <= 1
+   *  @param  L Input CIELab luminance component with 0 <= L <= 100
+   *  @param  a Input CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Input CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   */
+  static void lab2Rgb(double& R, double& G, double& B, double L, double a, double b);
+
+  /** Convert CIELab color representation to CIE XYZ representation
+   *  @param  X Output CIELab XYZ "X" component with 0 <= X <= 1
+   *  @param  Y Output CIELab XYZ "Y" component with 0 <= Y <= 1
+   *  @param  Z Output CIELab XYZ "Z" component with 0 <= Z <= 1
+   *  @param  L Input CIELab luminance component with 0 <= L <= 100
+   *  @param  a Input CIELab "a" component (red<->green) with -127 <= a <= 128
+   *  @param  b Input CIELab "b" component (blue<->yellow) with -127 <= b <= 128
+   */
+  static void lab2Xyz(double& X, double& Y, double& Z, double L, double a, double b);
+
+  /** Convert CIE XYZ color representation to sRGB representation
+   *  @param  R Output sRGB "R" component (red) with 0 <= R <= 1
+   *  @param  G Output sRGB "G" component (green) with 0 <= G <= 1
+   *  @param  B Output sRGB "R" component (blue) with 0 <= B <= 1
+   *  @param  X Output CIELab XYZ "X" component with 0 <= X <= 1
+   *  @param  Y Output CIELab XYZ "Y" component with 0 <= Y <= 1
+   *  @param  Z Output CIELab XYZ "Z" component with 0 <= Z <= 1
+   */
+  static void xyz2Rgb(double& R, double& G, double& B, double X, double Y, double Z);
+
+protected:
+
+  /** Perform sRGB gamma correction, transforms R to R'
+   *  @param  n The value to correct
+   *  @return The gamma-corrected value
+   */
+  static double gammaCorrection(double n);
+
+  /** Peform inverse sRGB gamma correction, transforms R' to R
+   *  @param  n The value to invert
+   *  @return The gamma-inverted value
+   */
+  static double invGammaCorrection(double n);
+
+  /** CIE L*a*b* f function (used to convert XYZ to L*a*b*)
+   *  @param  n value to convert
+   *  @return The converted value
+   */
+  static double labf(double n);
+
+  /** CIE L*a*b* inverse f function
+   *  @param n The value to compute the inverse for
+   *  @return The resulting inverse
+   */
+  static double labfInv(double n);
+
+  /** Get the minimun of two numbers
+   *  @param  a First number
+   *  @param  b Second number
+   *  @return The minimum of a, b. a if a and b are equal.
+   */
+  static double min(double a, double b);
+
+  /** Get the minimun of three numbers
+   *  @param  a First number
+   *  @param  b Second number
+   *  @param  c Third number
+   *  @return The minimum of a, b and c. If a value occurs more than once,
+   *          then preference order then a is preferred if possible, b
+   *          otherwise
+   */
+  static double min3(double a, double b, double c);
+
+};
+
+#endif // CIELABUTIL_H
diff --git a/dcmiod/include/dcmtk/dcmiod/iodmacro.h b/dcmiod/include/dcmtk/dcmiod/iodmacro.h
index 472e4af..36be4f3 100644
--- a/dcmiod/include/dcmtk/dcmiod/iodmacro.h
+++ b/dcmiod/include/dcmtk/dcmiod/iodmacro.h
@@ -842,7 +842,8 @@ public:
 
   /** Set Algorithm Parameters
    *  @param  value The value to be set
-   *  @param  checkValue If OFTrue, the given value is checked
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal, if value could be set, error otherwise
    */
   virtual OFCondition setAlgorithmParameters(const OFString& value,
@@ -1176,7 +1177,8 @@ public:
 
   /** Set Local Namespace Entity ID
    *  @param  value Value to be set
-   *  @param  checkValue If OFTrue, value is checkd for validity
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if setting was successful, error otherwise
    */
   virtual OFCondition setLocalNamespaceEntityID(const OFString& value,
@@ -1184,7 +1186,8 @@ public:
 
   /** Set Universal Entity ID
    *  @param  value Value to be set
-   *  @param  checkValue If OFTrue, value is checkd for validity
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if setting was successful, error otherwise
    */
   virtual OFCondition setUniversalEntityID(const OFString& value,
@@ -1192,7 +1195,7 @@ public:
 
   /** Set Universal Entity ID Type
    *  @param  value Value to be set
-   *  @param  checkValue If OFTrue, value is checkd for validity
+   *  @param  checkValue If OFTrue, value is checked for validity
    *  @return EC_Normal if setting was successful, error otherwise
    */
   virtual OFCondition setUniversalEntityIDType(const OFString& value,
diff --git a/dcmiod/include/dcmtk/dcmiod/iodutil.h b/dcmiod/include/dcmtk/dcmiod/iodutil.h
index 44323de..6e2f7c6 100644
--- a/dcmiod/include/dcmtk/dcmiod/iodutil.h
+++ b/dcmiod/include/dcmtk/dcmiod/iodutil.h
@@ -418,8 +418,8 @@ public:
     checkElementValue(source, seqKey, cardinality, type, exists, module.c_str());
     if (source)
     {
-      const size_t card = source->card();
-      for (size_t count = 0; count < card; count++)
+      const unsigned long card = source->card();
+      for (unsigned long count = 0; count < card; count++)
       {
         DcmItem *item = source->getItem(count);
         if (item != NULL)
diff --git a/dcmiod/include/dcmtk/dcmiod/modenhusimage.h b/dcmiod/include/dcmtk/dcmiod/modenhusimage.h
index 9057aa0..b5682df 100644
--- a/dcmiod/include/dcmtk/dcmiod/modenhusimage.h
+++ b/dcmiod/include/dcmtk/dcmiod/modenhusimage.h
@@ -488,7 +488,6 @@ public:
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setLossyImageCompressionMethod(const OFString& value,
-                                                     const unsigned long pos,
                                                      const OFBool checkValue = OFTrue);
 
   /** Set Recognizable Visual Features
@@ -542,7 +541,8 @@ public:
   /** Set Depth(s) of Focus
    *  @param  value Value to be set
    *  @param  pos Index of the value to set (0..vm-1)
-   *  @param  checkValue Check 'value' for conformance if enabled, including VR (FD)
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency with
+   *          other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setDepthsOfFocus(const Float64 value,
@@ -551,7 +551,8 @@ public:
 
   /** Set Depth(s) of Focus (convenience function)
    *  @param  values Value(s) to be set
-   *  @param  checkValue Check 'value' for conformance if enabled, including VR (FD)
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency with
+   *          other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setDepthsOfFocus(const OFVector<Float64>& values,
diff --git a/dcmiod/include/dcmtk/dcmiod/modequipment.h b/dcmiod/include/dcmtk/dcmiod/modequipment.h
index e6ce52e..36010f9 100644
--- a/dcmiod/include/dcmtk/dcmiod/modequipment.h
+++ b/dcmiod/include/dcmtk/dcmiod/modequipment.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -171,8 +171,8 @@ public:
 
     /** Set Institution Address
      *  @param  value Value to be set (single value only) or "" for no value
-     *  @param  checkValue Check 'value' for conformance with VR (ST) and VM (1)
-     *          if enabled
+     *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+     *          with other setter functions).
      *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setInstitutionAddress(const OFString &value,
diff --git a/dcmiod/include/dcmtk/dcmiod/modgeneralseries.h b/dcmiod/include/dcmtk/dcmiod/modgeneralseries.h
index 20dcdb0..38d1653 100644
--- a/dcmiod/include/dcmtk/dcmiod/modgeneralseries.h
+++ b/dcmiod/include/dcmtk/dcmiod/modgeneralseries.h
@@ -25,6 +25,7 @@
 #include "dcmtk/config/osconfig.h"
 #include "dcmtk/dcmiod/modbase.h"
 #include "dcmtk/dcmiod/ioddef.h"
+#include "dcmtk/dcmiod/iodmacro.h"
 
 /** Class representing the General Series Module:
  *
@@ -83,6 +84,21 @@ public:
    */
   virtual void ensureInstanceUID(const OFBool correctInvalid = OFFalse);
 
+  /** 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
@@ -178,6 +194,12 @@ public:
     */
   virtual OFCondition getPatientPosition(OFString &value,
                                          const signed long pos = 0) const;
+
+  /** Get reference to Referenced Performed Procedure Step
+   *  @return Reference to PPS
+   */
+  virtual SOPInstanceReferenceMacro& getReferencedPPS();
+
   /** 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)
@@ -209,9 +231,8 @@ public:
 
   /** Set Laterality
    *  @param  value Value to be set
-   *  @param  checkValue Check value (no effect in this call but included for
-   *                consistency with other methods); provided value is
-   *                always checked.
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setLaterality(const DcmIODTypes::IOD_LATERALITY value,
@@ -294,6 +315,9 @@ private:
   /// The name of this module ("GeneralSeriesModule")
   static const OFString m_ModuleName;
 
+  /// Referenced Performed Procedure Step Sequence
+  SOPInstanceReferenceMacro m_ReferencedPPS;
+
 };
 
 #endif // MODGENERALSERIES_H
diff --git a/dcmiod/include/dcmtk/dcmiod/modimagepixel.h b/dcmiod/include/dcmtk/dcmiod/modimagepixel.h
index 4ca0dcd..d76be12 100644
--- a/dcmiod/include/dcmtk/dcmiod/modimagepixel.h
+++ b/dcmiod/include/dcmtk/dcmiod/modimagepixel.h
@@ -174,8 +174,8 @@ public:
 
   /** Set Rows
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *          with other attributes if enabled
+   *  @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,
@@ -183,16 +183,16 @@ public:
 
   /** Set Columns
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *    with other attributes if enabled
+   *  @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' for conformance with VR (US) and consistency
-   *    with other attributes if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setBitsAllocated(const Uint16 value,
@@ -200,8 +200,8 @@ public:
 
   /** Set Bits Stored
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *    with other attributes if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setBitsStored(const Uint16 value,
@@ -209,8 +209,8 @@ public:
 
   /** Set High Bit
    *  @param  value Reference to variable in which the value should be stored
-   *  @param  checkValue Check 'value' for conformance with VR (US) and consistency
-   *    with other attributes if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setHighBit(const Uint16 value,
@@ -246,7 +246,7 @@ public:
 
   /** Set ICC Profile
    *  @param  values Reference to variable in which the values should be stored
-   *  @param  length Length of array provied in values parameter
+   *  @param  length Length of array provided in values parameter
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setICCProfile(const Uint8* values,
diff --git a/dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h b/dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
index da0e8d3..ded7064 100644
--- a/dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
+++ b/dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
@@ -190,7 +190,8 @@ public:
 
     /** Set Dimension Index Pointer
      *  @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
+     *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+     *          with other setter functions).
      *  @return status EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setDimensionIndexPointer(const DcmTagKey&value,
@@ -206,7 +207,8 @@ public:
 
     /** Set Dimension Index Functional Group Pointer
      *  @param  value Value to be set (single value only) or "" for no value
-     *  @param  checkValue Check 'value' for conformance with VR and VM if enabled
+     *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+     *          with other setter functions).
      *  @return status EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setFunctionalGroupPointer(const DcmTagKey& value,
@@ -214,7 +216,9 @@ public:
 
     /** Set Dimension Index Functional Group PrivateCreator
      *  @param  value Value to be set (single value only) or "" for no value
-     *  @param  checkValue Check 'value' for conformance with VR and VM if enabled
+     *  @param  checkValue Check 'value. Not evaluated (here for consistency
+     *          with other setter functions).
+     *
      *  @return status EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setFunctionalGroupPrivateCreator(const OFString& value,
diff --git a/dcmiod/include/dcmtk/dcmiod/modsynchronisation.h b/dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
index d7e0832..b72cf00 100644
--- a/dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
+++ b/dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
@@ -155,8 +155,8 @@ public:
 
     /** Set Synchronization Channel
      *  @param  value Value to be set
-     *  @param  checkValue The check parameter is provided for consistency with
-     *          other methods but does not have any effect here.
+     *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+     *          with other setter functions).
      *  @return EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setSynchronizationChannel(const OFPair<Uint16, Uint16> &value,
diff --git a/dcmiod/libsrc/CMakeLists.txt b/dcmiod/libsrc/CMakeLists.txt
index 174a1d8..6fd8efb 100644
--- a/dcmiod/libsrc/CMakeLists.txt
+++ b/dcmiod/libsrc/CMakeLists.txt
@@ -1,5 +1,6 @@
 # create library from source files
 DCMTK_ADD_LIBRARY(dcmiod
+  cielabutil
   iodcommn
   iodmacro
   iodimage
diff --git a/dcmiod/libsrc/Makefile.dep b/dcmiod/libsrc/Makefile.dep
index c18bdb9..7301f3c 100644
--- a/dcmiod/libsrc/Makefile.dep
+++ b/dcmiod/libsrc/Makefile.dep
@@ -1,3 +1,10 @@
+cielabutil.o: cielabutil.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmiod/cielabutil.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
+ ../include/dcmtk/dcmiod/ioddef.h \
+ ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcast.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexport.h
 iodcommn.o: iodcommn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmiod/iodcommn.h ../include/dcmtk/dcmiod/iodrules.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -43,8 +50,10 @@ iodcommn.o: iodcommn.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 \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/modpatient.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modpatient.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -111,6 +120,7 @@ iodcommn.o: iodcommn.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 \
  ../include/dcmtk/dcmiod/modbase.h \
  ../include/dcmtk/dcmiod/modpatientstudy.h \
@@ -170,8 +180,10 @@ iodimage.o: iodimage.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 \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/modpatient.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modpatient.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -238,6 +250,7 @@ iodimage.o: iodimage.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 \
  ../include/dcmtk/dcmiod/modbase.h \
  ../include/dcmtk/dcmiod/modpatientstudy.h \
@@ -295,6 +308,8 @@ iodmacro.o: iodmacro.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -363,6 +378,7 @@ iodmacro.o: iodmacro.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 \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -414,7 +430,10 @@ iodrules.o: iodrules.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 \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
@@ -467,6 +486,8 @@ iodtypes.o: iodtypes.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
@@ -510,6 +531,8 @@ iodutil.o: iodutil.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmiod/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
@@ -587,6 +610,8 @@ modacquisitioncontext.o: modacquisitioncontext.cc \
  ../../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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -655,6 +680,7 @@ modacquisitioncontext.o: modacquisitioncontext.cc \
  ../../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/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -680,6 +706,8 @@ modbase.o: modbase.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -770,6 +798,8 @@ modcommoninstanceref.o: modcommoninstanceref.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -836,6 +866,7 @@ modcommoninstanceref.o: modcommoninstanceref.cc \
  ../../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/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -890,6 +921,8 @@ modenhequipment.o: modenhequipment.cc \
  ../../ofstd/include/dcmtk/ofstd/ofthread.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/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -935,6 +968,8 @@ modenhusimage.o: modenhusimage.cc \
  ../../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 \
@@ -1029,6 +1064,7 @@ modenhusimage.o: modenhusimage.cc \
  ../../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/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
@@ -1082,8 +1118,10 @@ modenhusseries.o: modenhusseries.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/iodmacro.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/iodmacro.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
@@ -1149,6 +1187,7 @@ modenhusseries.o: modenhusseries.cc \
  ../../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/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
@@ -1200,6 +1239,8 @@ modequipment.o: modequipment.cc \
  ../../ofstd/include/dcmtk/ofstd/ofthread.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/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1243,6 +1284,8 @@ modfor.o: modfor.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1340,8 +1383,10 @@ modgeneralimage.o: modgeneralimage.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1394,6 +1439,8 @@ modgeneralseries.o: modgeneralseries.cc \
  ../../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 \
@@ -1433,24 +1480,64 @@ modgeneralseries.o: modgeneralseries.cc \
  ../../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/iodtypes.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/dcdicent.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdict.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrui.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcuid.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/dcvrlo.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.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 \
- ../../ofstd/include/dcmtk/ofstd/oftime.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/iodutil.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
 modgeneralstudy.o: modgeneralstudy.cc \
  ../../config/include/dcmtk/config/osconfig.h \
@@ -1473,6 +1560,8 @@ modgeneralstudy.o: modgeneralstudy.cc \
  ../../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 \
@@ -1567,6 +1656,7 @@ modgeneralstudy.o: modgeneralstudy.cc \
  ../../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/iodutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatutl.h
@@ -1586,6 +1676,8 @@ modhelp.o: modhelp.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1646,6 +1738,8 @@ modimagepixel.o: modimagepixel.cc \
  ../../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 \
@@ -1743,8 +1837,10 @@ modmultiframedimension.o: modmultiframedimension.cc \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h ../include/dcmtk/dcmiod/ioddef.h \
- ../include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstd.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1786,6 +1882,8 @@ modmultiframefg.o: modmultiframefg.cc \
  ../../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/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1889,6 +1987,8 @@ modpatient.o: modpatient.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1955,6 +2055,7 @@ modpatient.o: modpatient.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 \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -2008,6 +2109,8 @@ modpatientstudy.o: modpatientstudy.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2074,6 +2177,7 @@ modpatientstudy.o: modpatientstudy.cc \
  ../../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/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
  ../include/dcmtk/dcmiod/ioddef.h ../include/dcmtk/dcmiod/modbase.h \
@@ -2125,6 +2229,8 @@ modsegmentationseries.o: modsegmentationseries.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2191,6 +2297,7 @@ modsegmentationseries.o: modsegmentationseries.cc \
  ../../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/ioddef.h \
  ../include/dcmtk/dcmiod/iodrules.h ../include/dcmtk/dcmiod/iodtypes.h \
@@ -2217,6 +2324,8 @@ modsopcommon.o: modsopcommon.cc \
  ../../ofstd/include/dcmtk/ofstd/offile.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.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 \
@@ -2296,6 +2405,8 @@ modsynchronization.o: modsynchronization.cc \
  ../../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 \
@@ -2370,6 +2481,8 @@ modusfor.o: modusfor.cc ../../config/include/dcmtk/config/osconfig.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 \
diff --git a/dcmiod/libsrc/Makefile.in b/dcmiod/libsrc/Makefile.in
index 1b6bbc2..5cfeb14 100644
--- a/dcmiod/libsrc/Makefile.in
+++ b/dcmiod/libsrc/Makefile.in
@@ -20,8 +20,8 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
 
 LOCALDEFS =
 
-objs = iodcommn.o  iodmacro.o iodimage.o iodrules.o iodutil.o iodtypes.o  \
-	modacquisitioncontext.o modbase.o modcommoninstanceref.o \
+objs =  cielabutil.o iodcommn.o  iodmacro.o iodimage.o iodrules.o iodutil.o \
+	iodtypes.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  \
diff --git a/dcmiod/libsrc/cielabutil.cc b/dcmiod/libsrc/cielabutil.cc
new file mode 100755
index 0000000..56189eb
--- /dev/null
+++ b/dcmiod/libsrc/cielabutil.cc
@@ -0,0 +1,209 @@
+/*
+ *
+ *  Copyright (C) 2005–2010, Pascal Getreuer
+ *  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:  Pascal Getreuer, Michael Onken
+ *
+ *  Purpose: Static helper functionality for CIE<->RGB color conversions
+ *
+ */
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/dcmiod/cielabutil.h"
+#define INCLUDE_CMATH                // for pow() function
+#include "dcmtk/ofstd/ofstdinc.h"
+
+// Initialize white points of D65 light point (CIELab standard white point)
+const double IODCIELabUtil::D65_WHITEPOINT_X = 0.950456;
+const double IODCIELabUtil::D65_WHITEPOINT_Y = 1.0;
+const double IODCIELabUtil::D65_WHITEPOINT_Z = 1.088754;
+
+
+void IODCIELabUtil::dicomLab2RGB(double& R, double& G, double& B, double LDicom, double aDicom, double bDicom)
+{
+  double L, a, b;
+  dicomlab2Lab(L, a, b, LDicom, aDicom, bDicom);
+  lab2Rgb(R, G, B, L, a, b);
+}
+
+
+void IODCIELabUtil::rgb2DicomLab(double& LDicom, double& aDicom, double& bDicom, double R, double G, double B)
+{
+  double L, a, b;
+  rgb2Lab(L, a, b, R, G, B);
+  lab2DicomLab(LDicom, aDicom, bDicom, R, G, B);
+}
+
+
+void IODCIELabUtil::dicomlab2Lab(double& L, double& a, double& b, double LDicom, double aDicom, double bDicom)
+{
+  L = ((LDicom * 100.0) / 65535.0); // results in 0 <= L <= 100
+  a = ((aDicom * 255.0) / 65535.0) - 128; // results in -128 <= a <= 127
+  b = ((bDicom * 255.0) / 65535.0) - 128; // results in -128 <= b <= 127
+}
+
+
+void IODCIELabUtil::lab2DicomLab(double& LDicom, double& aDicom, double& bDicom, double L, double a, double b)
+{
+  LDicom = L * 65535.0 / 100.0; // results in 0 <= L <= 65535
+  aDicom = (a + 128) * 65535.0 / 255.0; // results in 0 <= a <= 65535
+  bDicom = (b + 128) * 65535.0 / 255.0; // results in 0 <= b <= 65535
+}
+
+
+void IODCIELabUtil::rgb2Lab(double& L, double& a, double& b, double R, double G, double B)
+{
+  double X, Y, Z;
+  rgb2Xyz(X, Y, Z, R, G, B);
+  xyz2Lab(L, a, b, X, Y, Z);
+}
+
+
+double IODCIELabUtil::gammaCorrection(double n)
+{
+  if ((n) <= 0.0031306684425005883)
+  {
+    return 12.92 * (n);
+  }
+  else
+  {
+    return (1.055*pow((n), 0.416666666666666667) - 0.055);
+  }
+}
+
+
+double IODCIELabUtil::invGammaCorrection(double n)
+{
+  if ((n) <= 0.0404482362771076)
+  {
+    return ((n) / 12.92);
+  }
+  else
+  {
+    return ( pow(((n) + 0.055)/1.055, 2.4) );
+  }
+}
+
+
+void IODCIELabUtil::rgb2Xyz(double& X, double& Y, double& Z, double R, double G, double B)
+{
+  R = invGammaCorrection(R);
+  G = invGammaCorrection(G);
+  B = invGammaCorrection(B);
+  X = (double)(0.4123955889674142161*R + 0.3575834307637148171*G + 0.1804926473817015735*B);
+  Y = (double)(0.2125862307855955516*R + 0.7151703037034108499*G + 0.07220049864333622685*B);
+  Z = (double)(0.01929721549174694484*R + 0.1191838645808485318*G + 0.9504971251315797660*B);
+}
+
+
+void IODCIELabUtil::xyz2Lab(double& L, double& a, double& b, double X, double Y, double Z)
+{
+  X /= D65_WHITEPOINT_X;
+  Y /= D65_WHITEPOINT_Y;
+  Z /= D65_WHITEPOINT_Z;
+  X = labf(X);
+  Y = labf(Y);
+  Z = labf(Z);
+  L = 116*Y - 16;
+  a = 500*(X - Y);
+  b = 200*(Y - Z);
+}
+
+
+void IODCIELabUtil::lab2Rgb(double& R, double& G, double& B, double L, double a, double b)
+{
+  double  X, Y, Z;
+  lab2Xyz(X, Y, Z, L, a, b);
+  xyz2Rgb(R, G, B, X, Y, Z);
+}
+
+
+void IODCIELabUtil::lab2Xyz(double& X, double& Y, double& Z, double L, double a, double b)
+{
+  L = (L + 16)/116;
+  a = L + a/500;
+  b = L - b/200;
+  X = D65_WHITEPOINT_X * labfInv(a);
+  Y = D65_WHITEPOINT_Y * labfInv(L);
+  Z = D65_WHITEPOINT_Z * labfInv(b);
+}
+
+
+void IODCIELabUtil::xyz2Rgb(double& R, double& G, double& B, double X, double Y, double Z)
+{
+  double R1, B1, G1, Min;
+
+  R1 = (double)( 3.2406*X - 1.5372*Y - 0.4986*Z);
+  G1 = (double)(-0.9689*X + 1.8758*Y + 0.0415*Z);
+  B1 = (double)( 0.0557*X - 0.2040*Y + 1.0570*Z);
+
+  Min = min3(R1, G1, B1);
+
+  /* Force nonnegative values so that gamma correction is well-defined. */
+  if(Min < 0)
+  {
+    R1 -= Min;
+    G1 -= Min;
+    B1 -= Min;
+  }
+
+  /* Transform from RGB to R'G'B' */
+  R = gammaCorrection(R1);
+  G = gammaCorrection(G1);
+  B = gammaCorrection(B1);
+}
+
+
+double IODCIELabUtil::labf(double n)
+{
+  if (n >= 8.85645167903563082e-3)
+  {
+    return ( pow(n, 0.333333333333333) );
+  }
+  else
+  {
+    return ( (841.0/108.0)*(n) + (4.0/29.0) );
+  }
+}
+
+
+double IODCIELabUtil::labfInv(double n)
+{
+  if ( (n) >= 0.206896551724137931 )
+  {
+    return (n)*(n)*(n);
+  }
+  else
+  {
+    return (108.0/841.0)*((n) - (4.0/29.0));
+  }
+}
+
+
+double IODCIELabUtil::min(double a, double b)
+{
+  if (a <= b)
+    return a;
+  else
+    return b;
+}
+
+
+double IODCIELabUtil::min3(double a, double b, double c)
+{
+  if (a <= b)
+    return min(a,c);
+  else
+    return min (b,c);
+}
diff --git a/dcmiod/libsrc/iodmacro.cc b/dcmiod/libsrc/iodmacro.cc
index 909a0c5..2e87256 100644
--- a/dcmiod/libsrc/iodmacro.cc
+++ b/dcmiod/libsrc/iodmacro.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -536,6 +536,7 @@ OFCondition ImageSOPInstanceReferenceMacro::setReferencedFrameNumber(const OFVec
 OFCondition ImageSOPInstanceReferenceMacro::addReferencedFrameNumber(const Uint16& value,
                                                                      const OFBool checkValue)
 {
+  (void)checkValue;
   const unsigned long count = ReferencedFrameNumber.getVM();
   return ReferencedFrameNumber.putUint16(value, count /* starts with 0, so add new value at the end */);
 }
@@ -552,6 +553,7 @@ OFCondition ImageSOPInstanceReferenceMacro::setReferencedSegmentNumber(const OFV
 OFCondition ImageSOPInstanceReferenceMacro::addReferencedSegmentNumber(const Uint16& value,
                                                                        const OFBool checkValue)
 {
+  (void)checkValue;
   const unsigned long count = ReferencedSegmentNumber.getVM();
   return ReferencedSegmentNumber.putUint16(value, count /* starts with 0, so add new value at the end */);
 
@@ -1090,10 +1092,8 @@ OFCondition AlgorithmIdentificationMacro::setAlgorithmVersion(const OFString& va
 OFCondition AlgorithmIdentificationMacro::setAlgorithmParameters(const OFString& value,
                                                                  const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmLongText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_AlgorithmParameters.putOFStringArray(value);
-  return result;
+  (void)checkValue;
+  return m_AlgorithmParameters.putOFStringArray(value);
 }
 
 
@@ -1277,6 +1277,7 @@ void ContentIdentificationMacro::clearData()
 
 OFCondition ContentIdentificationMacro::check(const OFBool quiet)
 {
+  (void)quiet;
   OFCondition result;
   OFBool failure = m_ContentLabel.isEmpty() || m_InstanceNumber.isEmpty();
   if (!failure)
@@ -1352,7 +1353,16 @@ OFVector<ContentIdentificationMacro::AlternateContentDescriptionItem*>& ContentI
 OFCondition ContentIdentificationMacro::setInstanceNumber(const OFString& value,
                                                           const OFBool checkValue)
 {
-  return m_InstanceNumber.putOFStringArray(value);
+  OFCondition result;
+  if (checkValue)
+  {
+    result = (checkValue) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+  }
+  if (result.good())
+  {
+    result = m_InstanceNumber.putOFStringArray(value);
+  }
+  return result;
 }
 
 
@@ -1604,20 +1614,16 @@ void HL7HierarchicDesignatorMacro::resetRules()
 OFCondition HL7HierarchicDesignatorMacro::setLocalNamespaceEntityID(const OFString& value,
                                                                     const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmUnlimitedText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_LocalNamespaceEntityID,value);
-  return result;
+  (void)checkValue;
+  return m_Item->putAndInsertOFStringArray(DCM_LocalNamespaceEntityID,value);
 }
 
 
 OFCondition HL7HierarchicDesignatorMacro::setUniversalEntityID(const OFString& value,
                                                                const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmUnlimitedText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_UniversalEntityID,value);
-  return result;
+  (void) checkValue;
+  return m_Item->putAndInsertOFStringArray(DCM_UniversalEntityID,value);
 }
 
 
diff --git a/dcmiod/libsrc/iodutil.cc b/dcmiod/libsrc/iodutil.cc
index b422495..721334f 100644
--- a/dcmiod/libsrc/iodutil.cc
+++ b/dcmiod/libsrc/iodutil.cc
@@ -546,7 +546,7 @@ OFCondition DcmIODUtil::decompress(DcmDataset& dset)
   {
     if (EC_Normal != dset.chooseRepresentation(EXS_LittleEndianExplicit, NULL))
     {
-      DCMIOD_ERROR("No conversion uncompressed transfer syntax possible!");
+      DCMIOD_ERROR("No conversion to uncompressed transfer syntax possible!");
       return IOD_EC_CannotDecompress;
     }
   }
diff --git a/dcmiod/libsrc/modenhusimage.cc b/dcmiod/libsrc/modenhusimage.cc
index 980ac0e..ac77db0 100644
--- a/dcmiod/libsrc/modenhusimage.cc
+++ b/dcmiod/libsrc/modenhusimage.cc
@@ -405,7 +405,16 @@ OFCondition IODEnhUSImageModule::setImageType(const DcmIODTypes::IOD_ENHUSIMAGET
   value += "\\";
   value += derivedPixelContrast;
 
-  return m_Item->putAndInsertOFStringArray(DCM_ImageType, value);
+  OFCondition result;
+  if (checkValue)
+  {
+    result = DcmCodeString::checkStringValue(value, "2");
+  }
+  if (result.good())
+  {
+    result = m_Item->putAndInsertOFStringArray(DCM_ImageType, value);
+  }
+  return result;
 }
 
 
@@ -534,7 +543,6 @@ OFCondition IODEnhUSImageModule::setLossyImageCompression(const OFString& value,
 
 
 OFCondition IODEnhUSImageModule::setLossyImageCompressionMethod(const OFString& value,
-                                                                const unsigned long pos,
                                                                 const OFBool checkValue)
 {
   OFCondition result = (checkValue) ? DcmCodeString::checkStringValue(value, "1-n") : EC_Normal;
@@ -596,7 +604,8 @@ OFCondition IODEnhUSImageModule::setBoneThermalIndex(const OFString& value,
 }
 
 
-OFCondition IODEnhUSImageModule::setCranialThermalIndex(const OFString& value, const bool checkValue)
+OFCondition IODEnhUSImageModule::setCranialThermalIndex(const OFString& value,
+                                                        const bool checkValue)
 {
   OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
   if (result.good())
@@ -605,7 +614,8 @@ OFCondition IODEnhUSImageModule::setCranialThermalIndex(const OFString& value, c
 }
 
 
-OFCondition IODEnhUSImageModule::setSoftTissueThermalIndex(const OFString& value, const bool checkValue)
+OFCondition IODEnhUSImageModule::setSoftTissueThermalIndex(const OFString& value,
+                                                           const bool checkValue)
 {
   OFCondition result = (checkValue) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
   if (result.good())
@@ -614,14 +624,19 @@ OFCondition IODEnhUSImageModule::setSoftTissueThermalIndex(const OFString& value
 }
 
 
-OFCondition IODEnhUSImageModule::setDepthsOfFocus(const Float64 value, const long unsigned int pos, const bool checkValue)
+OFCondition IODEnhUSImageModule::setDepthsOfFocus(const Float64 value,
+                                                  const long unsigned int pos,
+                                                  const bool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertFloat64(DCM_DepthsOfFocus, value, pos);
 }
 
 
-OFCondition IODEnhUSImageModule::setDepthsOfFocus(const OFVector< Float64 >& values, const bool checkValue)
+OFCondition IODEnhUSImageModule::setDepthsOfFocus(const OFVector< Float64 >& values,
+                                                  const bool checkValue)
 {
+  (void)checkValue;
   DcmElement* elem = newDicomElement(DCM_DepthsOfFocus);
   if (!elem)
     return EC_MemoryExhausted;
@@ -645,7 +660,8 @@ OFCondition IODEnhUSImageModule::setDepthsOfFocus(const OFVector< Float64 >& val
 }
 
 
-OFCondition IODEnhUSImageModule::setDepthsOfScanField(const OFString& value, const bool checkValue)
+OFCondition IODEnhUSImageModule::setDepthsOfScanField(const OFString& value,
+                                                      const bool checkValue)
 {
   OFCondition result = (checkValue) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
   if (result.good())
diff --git a/dcmiod/libsrc/modenhusseries.cc b/dcmiod/libsrc/modenhusseries.cc
index fbce1ed..ea9726f 100644
--- a/dcmiod/libsrc/modenhusseries.cc
+++ b/dcmiod/libsrc/modenhusseries.cc
@@ -93,8 +93,7 @@ IODEnhancedUSSeriesModule::~IODEnhancedUSSeriesModule()
 OFCondition IODEnhancedUSSeriesModule::getModality(OFString &value,
                                                    const signed long pos) const
 {
-  value = "US";
-  return EC_Normal;
+  return DcmIODUtil::getStringValueFromItem(DCM_Modality, *m_Item, value, pos);
 }
 
 
diff --git a/dcmiod/libsrc/modequipment.cc b/dcmiod/libsrc/modequipment.cc
index 675ccbf..10f1cde 100644
--- a/dcmiod/libsrc/modequipment.cc
+++ b/dcmiod/libsrc/modequipment.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -160,10 +160,8 @@ OFCondition IODGeneralEquipmentModule::setInstitutionName(const OFString& value,
 OFCondition IODGeneralEquipmentModule::setInstitutionAddress(const OFString& value,
                                                              const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmShortText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_InstitutionAddress, value);
-  return result;
+  (void)checkValue;
+  return m_Item->putAndInsertOFStringArray(DCM_InstitutionAddress, value);
 }
 
 
diff --git a/dcmiod/libsrc/modgeneralimage.cc b/dcmiod/libsrc/modgeneralimage.cc
index e724b01..c12bfb5 100644
--- a/dcmiod/libsrc/modgeneralimage.cc
+++ b/dcmiod/libsrc/modgeneralimage.cc
@@ -299,10 +299,8 @@ OFCondition IODGeneralImageModule::setAcquisitionDateTime(const OFString &value,
 OFCondition IODGeneralImageModule::setImageComments(const OFString &value,
                                                     const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmLongText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_Item->putAndInsertOFStringArray(DCM_ImageComments, value);
-  return result;
+  (void)checkValue;
+  return  m_Item->putAndInsertOFStringArray(DCM_ImageComments, value);
 }
 
 
diff --git a/dcmiod/libsrc/modgeneralseries.cc b/dcmiod/libsrc/modgeneralseries.cc
index 5602b04..3577fc9 100644
--- a/dcmiod/libsrc/modgeneralseries.cc
+++ b/dcmiod/libsrc/modgeneralseries.cc
@@ -82,6 +82,31 @@ void IODGeneralSeriesModule::resetRules()
   m_Rules->addRule(new IODRule(DCM_OperatorsName, "1-n","3", m_ModuleName, DcmIODTypes::IE_SERIES), OFTrue);
   m_Rules->addRule(new IODRule(DCM_BodyPartExamined, "1","3", m_ModuleName, DcmIODTypes::IE_SERIES), OFTrue);
   m_Rules->addRule(new IODRule(DCM_PatientPosition, "1","2C", m_ModuleName, DcmIODTypes::IE_SERIES), OFTrue);
+  m_Rules->addRule(new IODRule(DCM_ReferencedPerformedProcedureStepSequence, "1","3", m_ModuleName, DcmIODTypes::IE_SERIES), OFTrue);
+}
+
+
+OFCondition IODGeneralSeriesModule::read(DcmItem& source,
+                                         const OFBool clearOldData)
+{
+  if (clearOldData)
+    clearData();
+
+  IODComponent::read(source, OFFalse /* data already cleared */);
+  DcmIODUtil::readSingleItem<SOPInstanceReferenceMacro>(source, DCM_ReferencedPerformedProcedureStepSequence, m_ReferencedPPS, m_Rules->getByTag(DCM_ReferencedPerformedProcedureStepSequence));
+
+  return EC_Normal;
+}
+
+
+OFCondition IODGeneralSeriesModule::write(DcmItem& destination)
+{
+  OFCondition result = EC_Normal;
+
+  result = IODComponent::write(destination);
+  DcmIODUtil::writeSingleItem<SOPInstanceReferenceMacro>(result, DCM_ReferencedPerformedProcedureStepSequence, m_ReferencedPPS, destination, m_Rules->getByTag(DCM_ReferencedPerformedProcedureStepSequence));
+
+  return result;
 }
 
 
@@ -193,6 +218,12 @@ OFCondition IODGeneralSeriesModule::getPatientPosition(OFString &value,
 }
 
 
+SOPInstanceReferenceMacro& IODGeneralSeriesModule::getReferencedPPS()
+{
+  return m_ReferencedPPS;
+}
+
+
 OFCondition IODGeneralSeriesModule::setModality(const OFString &value,
                                                 const OFBool checkValue)
 {
@@ -226,6 +257,7 @@ OFCondition IODGeneralSeriesModule::setSeriesNumber(const OFString &value,
 OFCondition IODGeneralSeriesModule::setLaterality(const DcmIODTypes::IOD_LATERALITY laterality,
                                                   const OFBool checkValue)
 {
+  (void)checkValue;
   OFCondition result;
   switch(laterality)
   {
diff --git a/dcmiod/libsrc/modimagepixel.cc b/dcmiod/libsrc/modimagepixel.cc
index e7fb2ca..8c934ee 100644
--- a/dcmiod/libsrc/modimagepixel.cc
+++ b/dcmiod/libsrc/modimagepixel.cc
@@ -201,6 +201,7 @@ OFCondition IODImagePixelModule::setPhotometricInterpretation(const OFString& va
 OFCondition IODImagePixelModule::setRows(const Uint16 value,
                                          const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_Rows, value);
 }
 
@@ -208,6 +209,7 @@ OFCondition IODImagePixelModule::setRows(const Uint16 value,
 OFCondition IODImagePixelModule::setColumns(const Uint16 value,
                                             const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_Columns, value);
 }
 
@@ -215,6 +217,7 @@ OFCondition IODImagePixelModule::setColumns(const Uint16 value,
 OFCondition IODImagePixelModule::setBitsAllocated(const Uint16 value,
                                                   const OFBool checkValue)
 {
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_BitsAllocated, value);
 }
 
@@ -222,7 +225,7 @@ OFCondition IODImagePixelModule::setBitsAllocated(const Uint16 value,
 OFCondition IODImagePixelModule::setBitsStored(const Uint16 value,
                                                const OFBool checkValue)
 {
-  // TODO: check consistency between bits allocated, bits stored and high bit if possible
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_BitsStored, value);
 }
 
@@ -230,7 +233,7 @@ OFCondition IODImagePixelModule::setBitsStored(const Uint16 value,
 OFCondition IODImagePixelModule::setHighBit(const Uint16 value,
                                             const OFBool checkValue)
 {
-  // TODO: check consistency between bits allocated, bits stored and high bit if possible
+  (void)checkValue;
   return m_Item->putAndInsertUint16(DCM_HighBit, value);
 }
 
diff --git a/dcmiod/libsrc/modmultiframedimension.cc b/dcmiod/libsrc/modmultiframedimension.cc
index 6dd6e75..d92f4f2 100644
--- a/dcmiod/libsrc/modmultiframedimension.cc
+++ b/dcmiod/libsrc/modmultiframedimension.cc
@@ -495,8 +495,9 @@ OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setDimensionDescri
 
 
 OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setFunctionalGroupPointer(const DcmTagKey& value,
-                                                                                               const OFBool checkValue)
+                                                                                        const OFBool checkValue)
 {
+  (void)checkValue;
   if (value == DCM_UndefinedTagKey)
     return EC_IllegalParameter;
 
@@ -526,8 +527,9 @@ OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setFunctionalGroup
 
 
 OFCondition IODMultiframeDimensionModule::DimensionIndexItem::setDimensionIndexPointer(const DcmTagKey& value,
-                                                                                              const OFBool checkValue)
+                                                                                       const OFBool checkValue)
 {
+  (void)checkValue;
   if (value == DCM_UndefinedTagKey)
     return EC_IllegalParameter;
 
diff --git a/dcmiod/libsrc/modsynchronization.cc b/dcmiod/libsrc/modsynchronization.cc
index 60a5ab9..9345a76 100644
--- a/dcmiod/libsrc/modsynchronization.cc
+++ b/dcmiod/libsrc/modsynchronization.cc
@@ -173,6 +173,7 @@ OFCondition IODSynchronizationModule::setTriggerSourceOrType(const OFString &val
 OFCondition IODSynchronizationModule::setSynchronizationChannel(const OFPair<Uint16, Uint16> &value,
                                                                 const OFBool checkValue)
 {
+  (void)checkValue;
   OFCondition result = m_Item->putAndInsertUint16(DCM_SynchronizationChannel, value.first, 0);
   if (result.good())
   {
diff --git a/dcmiod/tests/CMakeLists.txt b/dcmiod/tests/CMakeLists.txt
new file mode 100644
index 0000000..3a04022
--- /dev/null
+++ b/dcmiod/tests/CMakeLists.txt
@@ -0,0 +1,8 @@
+# declare executables
+DCMTK_ADD_EXECUTABLE(dcmiod_tests tests tcielabutil)
+
+# make sure executables are linked to the corresponding libraries
+DCMTK_TARGET_LINK_MODULES(dcmiod_tests dcmiod dcmdata oflog ofstd)
+
+# This macro parses tests.cc and registers all tests
+DCMTK_ADD_TESTS(dcmiod)
diff --git a/dcmwlm/apps/Makefile.dep b/dcmiod/tests/Makefile.dep
similarity index 52%
copy from dcmwlm/apps/Makefile.dep
copy to dcmiod/tests/Makefile.dep
index e72949e..7ef8406 100644
--- a/dcmwlm/apps/Makefile.dep
+++ b/dcmiod/tests/Makefile.dep
@@ -1,22 +1,26 @@
-wlcefs.o: wlcefs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../dcmnet/include/dcmtk/dcmnet/cond.h \
- ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.h \
+tcielabutil.o: tcielabutil.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 \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.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 \
- ../../dcmnet/include/dcmtk/dcmnet/dndefine.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
- ../../ofstd/include/dcmtk/ofstd/ofbmanip.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 \
@@ -39,63 +43,29 @@ wlcefs.o: wlcefs.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 \
+ ../include/dcmtk/dcmiod/cielabutil.h ../include/dcmtk/dcmiod/ioddef.h
+tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../../ofstd/include/dcmtk/ofstd/oftest.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 \
- ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
- ../include/dcmtk/dcmwlm/wltypdef.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../include/dcmtk/dcmwlm/wldefine.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
- ../../dcmnet/include/dcmtk/dcmnet/assoc.h \
- ../../dcmnet/include/dcmtk/dcmnet/lst.h \
- ../../dcmnet/include/dcmtk/dcmnet/dul.h \
- ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcuserid.h \
- ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
- ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
- ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrat.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvrlo.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcchrstr.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcbytstr.h \
- ../include/dcmtk/dcmwlm/wlds.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcsequen.h \
- ../include/dcmtk/dcmwlm/wldsfs.h ../include/dcmtk/dcmwlm/wlfsim.h \
- ../include/dcmtk/dcmwlm/wlmactmg.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcostrmz.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h wlcefs.h
-wlmscpfs.o: wlmscpfs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../dcmnet/include/dcmtk/dcmnet/cond.h \
- ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.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 \
+ ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
+ ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.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 \
- ../../dcmnet/include/dcmtk/dcmnet/dndefine.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
- ../../ofstd/include/dcmtk/ofstd/ofbmanip.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 \
@@ -117,32 +87,4 @@ wlmscpfs.o: wlmscpfs.cc ../../config/include/dcmtk/config/osconfig.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/offile.h \
- ../../ofstd/include/dcmtk/ofstd/ofstd.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
- ../include/dcmtk/dcmwlm/wltypdef.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
- ../include/dcmtk/dcmwlm/wldefine.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
- ../../ofstd/include/dcmtk/ofstd/ofglobal.h wlcefs.h \
- ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
- ../../dcmnet/include/dcmtk/dcmnet/lst.h \
- ../../dcmnet/include/dcmtk/dcmnet/dul.h \
- ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcuserid.h \
- ../../dcmnet/include/dcmtk/dcmnet/assoc.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctag.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
- ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
- ../include/dcmtk/dcmwlm/wlds.h ../include/dcmtk/dcmwlm/wldsfs.h \
- ../include/dcmtk/dcmwlm/wlfsim.h
+ ../../oflog/include/dcmtk/oflog/tracelog.h
diff --git a/dcmiod/tests/Makefile.in b/dcmiod/tests/Makefile.in
index fd8adce..9aab2c8 100644
--- a/dcmiod/tests/Makefile.in
+++ b/dcmiod/tests/Makefile.in
@@ -5,25 +5,55 @@
 @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@
 
+ofstddir = $(top_srcdir)/../ofstd
+oflogdir = $(top_srcdir)/../oflog
+dcmdatadir = $(top_srcdir)/../dcmdata
+dcmioddir = $(top_srcdir)/../dcmiod
 
-all:
+LOCALINCLUDES = -I$(dcmioddir)/include -I$(dcmdatadir)/include -I$(oflogdir)/include -I$(ofstddir)/include
+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)
 
-check:
+test_objs = tests.o tcielabutil.o
+objs = tests.o $(test_objs)
+progs = tests
 
-check-exhaustive:
 
-install:
+all: $(progs)
+
+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)
+
+install: all
+
+
+check: tests
+	./tests
+
+check-exhaustive: tests
+	./tests -x
+
 
 clean:
-	rm -f $(TRASH)
+	rm -f $(objs) $(progs) $(TRASH)
 
 distclean:
-	rm -f $(DISTTRASH)
+	rm -f $(objs) $(progs) $(DISTTRASH)
+
 
 dependencies:
+	$(CXX) -MM $(defines) $(includes) $(CPPFLAGS) $(CXXFLAGS) *.cc  > $(DEP)
+
+include $(DEP)
diff --git a/dcmiod/tests/tcielabutil.cc b/dcmiod/tests/tcielabutil.cc
new file mode 100644
index 0000000..87f98ca
--- /dev/null
+++ b/dcmiod/tests/tcielabutil.cc
@@ -0,0 +1,129 @@
+/*
+ *
+ *  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:  dcmseg
+ *
+ *  Author:  Michael Onken
+ *
+ *  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/cielabutil.h"
+#define INCLUDE_CSTDLIB               // for srand()
+#define INCLUDE_CTIME                 // for time() initialization of srand()
+#include "dcmtk/ofstd/ofstdinc.h"
+
+OFTEST(dcmiod_tcielabutil)
+{
+  // Result variables for testing
+  double r1, r2, r3;
+  r1=r2=r3 = 0.0;
+
+  // Test RGB -> CIELab conversion with medium values
+  IODCIELabUtil::rgb2Lab(r1, r2, r3 /* L,a,b */, 0.5, 0.5, 0.5);
+  OFCHECK( fabs(53.388 - r1) < 0.001 );
+  OFCHECK( fabs(0.006 - r2) < 0.001 );
+  OFCHECK( fabs(-0.010 - r3) < 0.001 );
+
+  // Test RGB -> CIEXYZ conversion with medium values
+  r1=r2=r3 = 0;
+  IODCIELabUtil::rgb2Xyz(r1, r2, r3 /* X,Y,Z */, 0.5, 0.5, 0.5);
+  OFCHECK( fabs(0.203 - r1) < 0.001 );
+  OFCHECK( fabs(0.214 - r2) < 0.001 );
+  OFCHECK( fabs(0.233 - r3) < 0.001 );
+
+  // Test RGB -> CIELab conversion with minimum value
+  r1=r2=r3 = 0;
+  IODCIELabUtil::rgb2Lab(r1, r2, r3 /* L,a,b */, 0, 0, 0);
+  OFCHECK( fabs(0 - r1) < 0.001 );
+  OFCHECK( fabs(0 - r2) < 0.001 );
+  OFCHECK( fabs(0 - r3) < 0.001 );
+
+  // Test RGB -> XYZ conversion with minimum values
+  r1=r2=r3 = 0;
+  IODCIELabUtil::rgb2Xyz(r1, r2, r3 /* X,Y,Z */, 0, 0, 0);
+  OFCHECK( fabs(0 - r1) < 0.001 );
+  OFCHECK( fabs(0 - r2) < 0.001 );
+  OFCHECK( fabs(0 - r3) < 0.001 );
+
+  // Test DICOM CIELab to "normalized" CIELab conversion with maximum values
+  r1=r2=r3 = 0;
+  IODCIELabUtil::dicomlab2Lab(r1, r2, r3, 65535, 65535, 65535 );
+  OFCHECK( fabs(100 - r1) < 0.001 );
+  OFCHECK( fabs(127 - r2) < 0.001 );
+  OFCHECK( fabs(127 - r3) < 0.001 );
+
+  // Test DICOM CIELab to "normalized" CIELab conversion with minimum values
+  r1=r2=r3 = 0;
+  IODCIELabUtil::dicomlab2Lab(r1, r2, r3, 0, 0, 0 );
+  OFCHECK( fabs(0 - r1) < 0.001 );
+  OFCHECK( fabs(-128 - r2) < 0.001 );
+  OFCHECK( fabs(-128 - r3) < 0.001 );
+
+  // Convert between colorspaces back and forth and check whether deviation after
+  // roundtrip is less than around 1 promille
+
+  // Initialize random numbers
+  srand (OFstatic_cast(unsigned int, time (NULL)));
+
+  // We do 1000 runs
+  for (size_t run = 0; run < 1000; run++)
+  {
+    // i1, i2, i3: Input for conversion
+    // r1, r2, r3: Results of conversion
+    // o1, o2, o3: Output of inverse conversion (should equal i1, i2, i3)
+    double i1, i2, i3, o1, o2, o3;
+    i1 = i2 = i3 = r1 = r2 = r3 = o1 = o2 = o3 = 0.0;
+
+    // Roundtrip RGB -> CIELab -> RGB
+    i1 = (double)rand() / (double)RAND_MAX;
+    i2 = (double)rand() / (double)RAND_MAX;
+    i3 = (double)rand() / (double)RAND_MAX;
+    IODCIELabUtil::rgb2Lab(r1, r2, r3, i1, i2, i3);
+    IODCIELabUtil::lab2Rgb(o1, o2, o3, r1, r2, r3);
+    OFCHECK( fabs(i1 - o1) < 0.001 );
+    OFCHECK( fabs(i2 - o2) < 0.001 );
+    OFCHECK( fabs(i3 - o3) < 0.001 );
+
+    // Roundtrip CIELab -> DICOM CIELab -> CIELab
+    i1 = i2 = i3 = r1 = r2 = r3 = o1 = o2 = o3 = 0.0;
+    i1 = ((double)rand() / ((double)RAND_MAX)) * 100.0;
+    i2 = ((double)rand() / ((double)RAND_MAX)) * 255.0 - 128;
+    i3 = ((double)rand() / ((double)RAND_MAX)) * 255.0 - 128;
+    IODCIELabUtil::lab2DicomLab(r1, r2, r3, i1, i2, i3);
+    IODCIELabUtil::dicomlab2Lab(o1, o2, o3, r1, r2, r3);
+    OFCHECK( fabs(i1 - o1) < 0.001 );
+    OFCHECK( fabs(i2 - o2) < 0.001 );
+    OFCHECK( fabs(i3 - o3) < 0.001 );
+
+    // Roundtrip RGB -> CIEXYZ -> CIELab -> dicomCIELab -> RGB
+    i1 = i2 = i3 = r1 = r2 = r3 = o1 = o2 = o3 = 0.0;
+    i1 = ((double)rand() / ((double)RAND_MAX));
+    i2 = ((double)rand() / ((double)RAND_MAX));
+    i3 = ((double)rand() / ((double)RAND_MAX));
+    IODCIELabUtil::rgb2Xyz(r1, r2, r3, i1, i2, i3);
+    IODCIELabUtil::xyz2Lab(o1, o2, o3, r1, r2, r3);
+    IODCIELabUtil::lab2DicomLab(r1, r2, r3, o1, o2, o3);
+    IODCIELabUtil::dicomLab2RGB(o1, o2, o3, r1, r2, r3);
+
+    OFCHECK( fabs(i1 - o1) < 0.001 );
+    OFCHECK( fabs(i2 - o2) < 0.001 );
+    OFCHECK( fabs(i3 - o3) < 0.001 );
+
+  }
+}
diff --git a/dcmiod/tests/tests.cc b/dcmiod/tests/tests.cc
new file mode 100644
index 0000000..3f583bf
--- /dev/null
+++ b/dcmiod/tests/tests.cc
@@ -0,0 +1,26 @@
+/*
+ *
+ *  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:  Michael Onken
+ *
+ *  Purpose: main test program
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/oftest.h"
+
+OFTEST_REGISTER(dcmiod_tcielabutil);
+OFTEST_MAIN("dcmiod")
diff --git a/dcmjpeg/apps/Makefile.dep b/dcmjpeg/apps/Makefile.dep
index fde9a84..be75e57 100644
--- a/dcmjpeg/apps/Makefile.dep
+++ b/dcmjpeg/apps/Makefile.dep
@@ -39,6 +39,8 @@ dcmcjpeg.o: dcmcjpeg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -107,6 +109,7 @@ dcmcjpeg.o: dcmcjpeg.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 \
  ../include/dcmtk/dcmjpeg/djdecode.h ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -159,6 +162,8 @@ dcmdjpeg.o: dcmdjpeg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -227,6 +232,7 @@ dcmdjpeg.o: dcmdjpeg.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 \
  ../include/dcmtk/dcmjpeg/djdecode.h ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -275,6 +281,8 @@ dcmj2pnm.o: dcmj2pnm.cc ../../dcmimage/apps/dcm2pnm.cc \
  ../../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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -343,6 +351,7 @@ dcmj2pnm.o: dcmj2pnm.cc ../../dcmimage/apps/dcm2pnm.cc \
  ../../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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcrledrg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
@@ -416,6 +425,8 @@ dcmmkdir.o: dcmmkdir.cc ../../dcmdata/apps/dcmgpdir.cc \
  ../../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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -484,6 +495,7 @@ dcmmkdir.o: dcmmkdir.cc ../../dcmdata/apps/dcmgpdir.cc \
  ../../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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcddirif.h \
  ../../dcmimage/include/dcmtk/dcmimage/diregist.h \
diff --git a/dcmjpeg/docs/dcmmkdir.man b/dcmjpeg/docs/dcmmkdir.man
index 60bd299..0109ba2 100644
--- a/dcmjpeg/docs/dcmmkdir.man
+++ b/dcmjpeg/docs/dcmmkdir.man
@@ -32,6 +32,12 @@ Currently the following profiles are supported (others might be added later):
     (STD-GEN-BD-MPEG4-HPLV41)
 \li General Purpose BD Interchange with MPEG-4 AVC/H.264 BD-Compatible
     HiP\@Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
+\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 2D
+    video (STD-GEN-BD-MPEG4-HPLV42-2D)
+\li General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP\@Level4.2 for 3D
+    video (STD-GEN-BD-MPEG4-HPLV42-3D)
+\li General Purpose BD Interchange with MPEG-4 AVC/H.264 Stereo HiP\@Level4.2
+    (STD-GEN-BD-MPEG4-SHPLV42)
 \li General Purpose USB and Flash Memory Interchange with JPEG
     (STD-GEN-USB/MMC/CF/SD-JPEG)
 \li General Purpose USB and Flash Memory Interchange with JPEG 2000
@@ -243,6 +249,18 @@ profiles:
           General Purpose BD Interchange with MPEG-4 AVC/H.264
           BD-Compatible HiP at Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
 
+        --general-bd-mpeg4-hp2d
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          HiP at Level4.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+
+        --general-bd-mpeg4-hp3d
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          HiP at Level4.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+
+        --general-bd-mpeg4-hpst
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          Stereo HiP at Level4.2 (STD-GEN-BD-MPEG4-SHPLV42)
+
   -Pfl  --usb-and-flash-jpeg
           General Purpose USB/Flash Memory Interchange with JPEG
           (STD-GEN-USB/MMC/CF/SD-JPEG)
@@ -459,6 +477,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/libsrc/Makefile.dep b/dcmjpeg/libsrc/Makefile.dep
index a6e247d..6350cba 100644
--- a/dcmjpeg/libsrc/Makefile.dep
+++ b/dcmjpeg/libsrc/Makefile.dep
@@ -19,6 +19,8 @@ ddpiimpl.o: ddpiimpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.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 \
@@ -126,6 +128,8 @@ dipijpeg.o: dipijpeg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diimage.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -195,6 +199,8 @@ djcodecd.o: djcodecd.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -265,6 +271,8 @@ djcodece.o: djcodece.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -359,6 +367,8 @@ djcparam.o: djcparam.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -409,6 +419,8 @@ djdecbas.o: djdecbas.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -470,6 +482,8 @@ djdecext.o: djdecext.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -532,6 +546,8 @@ djdeclol.o: djdeclol.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -594,6 +610,8 @@ djdecode.o: djdecode.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmjpeg/djdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dccodec.h \
@@ -648,6 +666,8 @@ djdecpro.o: djdecpro.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -710,6 +730,8 @@ djdecsps.o: djdecsps.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -772,6 +794,8 @@ djdecsv1.o: djdecsv1.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -833,6 +857,8 @@ djdijg12.o: djdijg12.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -886,6 +912,8 @@ djdijg16.o: djdijg16.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -939,6 +967,8 @@ djdijg8.o: djdijg8.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../include/dcmtk/dcmjpeg/djutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
@@ -993,6 +1023,8 @@ djeijg12.o: djeijg12.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
@@ -1048,6 +1080,8 @@ djeijg16.o: djeijg16.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
@@ -1103,6 +1137,8 @@ djeijg8.o: djeijg8.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diutils.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
@@ -1158,6 +1194,8 @@ djencbas.o: djencbas.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1219,6 +1257,8 @@ djencext.o: djencext.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1281,6 +1321,8 @@ djenclol.o: djenclol.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1343,6 +1385,8 @@ djencode.o: djencode.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmjpeg/djdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -1397,6 +1441,8 @@ djencpro.o: djencpro.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1459,6 +1505,8 @@ djencsps.o: djencsps.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1521,6 +1569,8 @@ djencsv1.o: djencsv1.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1591,6 +1641,8 @@ djrplol.o: djrplol.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/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 \
@@ -1646,6 +1698,8 @@ djrploss.o: djrploss.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/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 \
@@ -1692,6 +1746,8 @@ djutils.o: djutils.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/didefine.h \
  ../include/dcmtk/dcmjpeg/djdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
diff --git a/dcmjpls/apps/Makefile.dep b/dcmjpls/apps/Makefile.dep
index 8b0228e..28bdffb 100644
--- a/dcmjpls/apps/Makefile.dep
+++ b/dcmjpls/apps/Makefile.dep
@@ -39,6 +39,8 @@ dcmcjpls.o: dcmcjpls.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -107,6 +109,7 @@ dcmcjpls.o: dcmcjpls.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 \
  ../../dcmimage/include/dcmtk/dcmimage/diregist.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diregbas.h \
@@ -158,6 +161,8 @@ dcmdjpls.o: dcmdjpls.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -226,6 +231,7 @@ dcmdjpls.o: dcmdjpls.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 \
  ../../dcmimage/include/dcmtk/dcmimage/diregist.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/diregbas.h \
@@ -276,6 +282,8 @@ dcml2pnm.o: dcml2pnm.cc ../../dcmimage/apps/dcm2pnm.cc \
  ../../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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -344,6 +352,7 @@ dcml2pnm.o: dcml2pnm.cc ../../dcmimage/apps/dcm2pnm.cc \
  ../../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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcrledrg.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/dcmimage.h \
diff --git a/dcmjpls/libcharls/Makefile.dep b/dcmjpls/libcharls/Makefile.dep
index 09b842d..e9e67ba 100644
--- a/dcmjpls/libcharls/Makefile.dep
+++ b/dcmjpls/libcharls/Makefile.dep
@@ -22,7 +22,9 @@ intrface.o: intrface.cc config.h util.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h header.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h header.h \
  ../../ofstd/include/dcmtk/ofstd/ofaptr.h streams.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h
diff --git a/dcmjpls/libcharls/header.cc b/dcmjpls/libcharls/header.cc
index 15f839f..11c3879 100644
--- a/dcmjpls/libcharls/header.cc
+++ b/dcmjpls/libcharls/header.cc
@@ -226,6 +226,7 @@ JLSInputStream::JLSInputStream(const BYTE* pdata, size_t cbyteLength) :
 		_rect()
 {
 	::memset(&_info, 0, sizeof(_info));
+	::memset(&_rect, 0, sizeof(_rect));
 }
 
 //
diff --git a/dcmjpls/libsrc/Makefile.dep b/dcmjpls/libsrc/Makefile.dep
index 74e6ae3..db23719 100644
--- a/dcmjpls/libsrc/Makefile.dep
+++ b/dcmjpls/libsrc/Makefile.dep
@@ -40,6 +40,8 @@ djcodecd.o: djcodecd.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -109,6 +111,8 @@ djcodece.o: djcodece.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -207,6 +211,8 @@ djcparam.o: djcparam.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -253,6 +259,8 @@ djdecode.o: djdecode.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmjpls/dldefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dccodec.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -302,6 +310,8 @@ djencode.o: djencode.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmjpls/dldefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -362,6 +372,8 @@ djrparam.o: djrparam.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/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 \
@@ -407,6 +419,8 @@ djutils.o: djutils.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/dcmjpls/dldefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
diff --git a/dcmnet/apps/Makefile.dep b/dcmnet/apps/Makefile.dep
index e5cdec2..d18e931 100644
--- a/dcmnet/apps/Makefile.dep
+++ b/dcmnet/apps/Makefile.dep
@@ -10,6 +10,8 @@ dcmrecv.o: dcmrecv.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -110,6 +112,7 @@ dcmrecv.o: dcmrecv.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 \
  ../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 \
@@ -121,7 +124,7 @@ dcmrecv.o: dcmrecv.cc ../../config/include/dcmtk/config/osconfig.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
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmnet/diutil.h
 dcmsend.o: dcmsend.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -134,6 +137,8 @@ dcmsend.o: dcmsend.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -234,6 +239,7 @@ dcmsend.o: dcmsend.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 \
  ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
  ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dimse.h \
@@ -302,6 +308,8 @@ echoscu.o: echoscu.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -370,6 +378,8 @@ findscu.o: findscu.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -416,7 +426,9 @@ getscu.o: getscu.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 ../include/dcmtk/dcmnet/scu.h \
+ ../../ofstd/include/dcmtk/ofstd/ofcond.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h ../include/dcmtk/dcmnet/scu.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -509,6 +521,7 @@ getscu.o: getscu.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 \
  ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -535,6 +548,8 @@ movescu.o: movescu.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -607,6 +622,8 @@ storescp.o: storescp.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -692,6 +709,8 @@ storescu.o: storescu.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.h \
  ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
@@ -778,6 +797,8 @@ termscu.o: termscu.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
diff --git a/dcmnet/apps/movescu.cc b/dcmnet/apps/movescu.cc
index e86bad4..6c514be 100644
--- a/dcmnet/apps/movescu.cc
+++ b/dcmnet/apps/movescu.cc
@@ -1289,6 +1289,10 @@ storeSCPCallback(
          /* create full path name for the output file */
          OFString ofname;
          OFStandard::combineDirAndFilename(ofname, opt_outputDirectory, cbdata->imageFileName, OFTrue /* allowEmptyDirName */);
+         if (OFStandard::fileExists(ofname))
+         {
+           OFLOG_WARN(movescuLogger, "DICOM file already exists, overwriting: " << ofname);
+         }
 
          E_TransferSyntax xfer = opt_writeTransferSyntax;
          if (xfer == EXS_Unknown) xfer = (*imageDataSet)->getOriginalXfer();
diff --git a/dcmnet/docs/storescp.man b/dcmnet/docs/storescp.man
index 8b705e4..72c3fbc 100644
--- a/dcmnet/docs/storescp.man
+++ b/dcmnet/docs/storescp.man
@@ -604,6 +604,7 @@ SpatialFiducialsStorage                              1.2.840.10008.5.1.4.1.1.66.
 DeformableSpatialRegistrationStorage                 1.2.840.10008.5.1.4.1.1.66.3
 SegmentationStorage                                  1.2.840.10008.5.1.4.1.1.66.4
 SurfaceSegmentationStorage                           1.2.840.10008.5.1.4.1.1.66.5
+TractographyResultsStorage                           1.2.840.10008.5.1.4.1.1.66.6
 RealWorldValueMappingStorage                         1.2.840.10008.5.1.4.1.1.67
 SurfaceScanMeshStorage                               1.2.840.10008.5.1.4.1.1.68.1
 SurfaceScanPointCloudStorage                         1.2.840.10008.5.1.4.1.1.68.2
@@ -652,6 +653,7 @@ XRayRadiationDoseSRStorage                           1.2.840.10008.5.1.4.1.1.88.
 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
 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
@@ -676,6 +678,7 @@ DICONDE_EddyCurrentImageStorage                      1.2.840.10008.5.1.4.1.1.601
 DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601.2
 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
@@ -837,6 +840,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1996-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1996-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmnet/etc/storescp.cfg b/dcmnet/etc/storescp.cfg
index a251423..24db915 100644
--- a/dcmnet/etc/storescp.cfg
+++ b/dcmnet/etc/storescp.cfg
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2003-2015, 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
@@ -201,6 +201,7 @@ PresentationContext128 = DRAFT_WaveformStorage\UncompressedOrZlib
 #
 # the following SOP classes are missing in the above list:
 #
+# - AcquisitionContextSRStorage
 # - BreastProjectionXRayImageStorageForPresentation
 # - BreastProjectionXRayImageStorageForProcessing
 # - CompositingPlanarMPRVolumetricPresentationStateStorage
@@ -211,6 +212,8 @@ PresentationContext128 = DRAFT_WaveformStorage\UncompressedOrZlib
 # - LegacyConvertedEnhancedPETImageStorage
 # - ParametricMapStorage
 # - RadiopharmaceuticalRadiationDoseSRStorage
+# - RTBrachyApplicationSetupDeliveryInstructionStorage
+# - TractographyResultsStorage
 # - WideFieldOphthalmicPhotographyStereographicProjectionImageStorage
 # - WideFieldOphthalmicPhotography3DCoordinatesImageStorage
 #
diff --git a/dcmnet/etc/storescu.cfg b/dcmnet/etc/storescu.cfg
index 47605be..4d3f6d6 100644
--- a/dcmnet/etc/storescu.cfg
+++ b/dcmnet/etc/storescu.cfg
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2003-2015, 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
@@ -199,6 +199,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 #
 # the following SOP classes are missing in the above list:
 #
+# - AcquisitionContextSRStorage
 # - ArterialPulseWaveformStorage
 # - AutorefractionMeasurementsStorage
 # - BasicStructuredDisplayStorage
@@ -239,6 +240,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - RealWorldValueMappingStorage
 # - RespiratoryWaveformStorage
 # - RTBeamsDeliveryInstructionStorage
+# - RTBrachyApplicationSetupDeliveryInstructionStorage
 # - RTIonBeamsTreatmentRecordStorage
 # - RTIonPlanStorage
 # - SegmentationStorage
@@ -247,6 +249,7 @@ PresentationContext128 = VideoPhotographicImageStorage\MPEG2
 # - SurfaceScanMeshStorage
 # - SurfaceScanPointCloudStorage
 # - SurfaceSegmentationStorage
+# - TractographyResultsStorage
 # - VisualAcuityMeasurementsStorage
 # - VLWholeSlideMicroscopyImageStorage
 # - WideFieldOphthalmicPhotographyStereographicProjectionImageStorage
diff --git a/dcmnet/include/dcmtk/dcmnet/dccftsmp.h b/dcmnet/include/dcmtk/dcmnet/dccftsmp.h
index d89c13a..22c4e16 100644
--- a/dcmnet/include/dcmtk/dcmnet/dccftsmp.h
+++ b/dcmnet/include/dcmtk/dcmnet/dccftsmp.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
@@ -15,7 +15,7 @@
  *
  *  Author:  Marco Eichelberg
  *
- *  Purpose: 
+ *  Purpose:
  *    class DcmTransferSyntaxMap
  *
  */
@@ -63,12 +63,6 @@ public:
    */
   OFMap<OFString, DcmTransferSyntaxList*>::const_iterator end();
 
-  /** get transfer syntax list denoted by given key
-   *  @param ts the name of the transfer syntax list
-   *  @param the transfer syntax list
-   */
-  const DcmTransferSyntaxList* getTSList(const OFString& ts);
-
   /** Resets DcmTransferSyntaxMap and frees any allocated memory
    */
   void clear();
@@ -85,9 +79,7 @@ public:
    *  @param transferSyntaxUID transfer syntax UID
    *  @return EC_Normal if successful, an error code otherwise
    */
-  OFCondition add(
-    const char *key,
-    const char *transferSyntaxUID);
+  OFCondition add(const char *key, const char *transferSyntaxUID);
 
   /** checks if the key is known
    *  @param key key name, must not be NULL
diff --git a/dcmnet/include/dcmtk/dcmnet/diutil.h b/dcmnet/include/dcmtk/dcmnet/diutil.h
index 4b32d46..101affe 100644
--- a/dcmnet/include/dcmtk/dcmnet/diutil.h
+++ b/dcmnet/include/dcmtk/dcmnet/diutil.h
@@ -132,4 +132,16 @@ DCMTK_DCMNET_EXPORT const char *DU_nactionStatusString(Uint16 statusCode);
 DCMTK_DCMNET_EXPORT const char *DU_ndeleteStatusString(Uint16 statusCode);
 DCMTK_DCMNET_EXPORT const char *DU_neventReportStatusString(Uint16 statusCode);
 
+/** Logs result of a select() call. According to the select() documentation,
+ *  a value of > 1 means that data has arrived. This is logged on TRACE level
+ *  since it should be a very regular case. If select() returns 0, a timeout
+ *  has occured, and in case of -1 another error happened (e.g. interrupt).
+ *  These two events are logged to DEBUG log level.
+ *  Note that this function makes use of errno (Unix) or WSAGetLastError()
+ *  (Windows aka Winsock), so it must be called right after the select() call
+ *  since otherwise the error might be already cleared or modified.
+ *  @param  selectReturnValue The return value returned by select()
+ */
+DCMTK_DCMNET_EXPORT void DU_logSelectResult(int selectReturnValue);
+
 #endif
diff --git a/dcmnet/include/dcmtk/dcmnet/dstorscu.h b/dcmnet/include/dcmtk/dcmnet/dstorscu.h
index 73f62c8..d651053 100644
--- a/dcmnet/include/dcmtk/dcmnet/dstorscu.h
+++ b/dcmnet/include/dcmtk/dcmnet/dstorscu.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2014, OFFIS e.V.
+ *  Copyright (C) 2011-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -265,7 +265,7 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
      *                       conformance.  If OFFalse, only empty values are rejected.
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition addDicomFile(const OFString &filename,
+    OFCondition addDicomFile(const OFFilename &filename,
                              const E_FileReadMode readMode = ERM_fileOnly,
                              const OFBool checkValues = OFTrue);
 
@@ -371,7 +371,7 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
          *  @param  transferSyntaxUID  Transfer Syntax UID of the SOP instance to be
          *                             transferred
          */
-        TransferEntry(const OFString &filename,
+        TransferEntry(const OFFilename &filename,
                       const E_FileReadMode readMode,
                       const OFString &sopClassUID,
                       const OFString &sopInstanceUID,
@@ -398,7 +398,7 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
         ~TransferEntry();
 
         /// filename of the SOP instance to be transferred (if no 'Dataset' given)
-        const OFString Filename;
+        const OFFilename Filename;
         /// read mode that should be used to read the given SOP instance from file
         const E_FileReadMode FileReadMode;
         /// dataset of the SOP instance to be transferred (if no 'Filename' given)
@@ -450,12 +450,10 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
      *                       only empty values are rejected.
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition addDicomFilesFromDICOMDIR(const OFString &filename,
+    OFCondition addDicomFilesFromDICOMDIR(const OFFilename &filename,
                                           const E_FileReadMode readMode,
                                           const OFBool checkValues);
 
-    // --- static methods ---
-
     /** check given SOP Class UID, SOP Instance UID and Transfer Syntax UID for validity and
      *  conformance to the DICOM standard.  For all UID values, the compliance with the
      *  requirements of the value representation "Unique Identifier" (UI) and value
@@ -464,6 +462,8 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
      *  For the Transfer Syntax UID, it is checked whether it is known and generally
      *  supported.  Further checks will be performed when the list of presentation contexts is
      *  created for the association negotiation.
+     *  This method is called for each SOP instance that is added to the transfer list by one
+     *  of the following methods: addDicomFile(), addDataset(), addDicomFilesFromDICOMDIR()
      *  @param  sopClassUID        value of the SOP Class UID to be checked
      *  @param  sopInstanceUID     value of the SOP Instance UID to be checked
      *  @param  transferSyntaxUID  value of the Transfer Syntax UID to be checked
@@ -472,10 +472,10 @@ class DCMTK_DCMNET_EXPORT DcmStorageSCU
      *                             are rejected.
      *  @return status, EC_Normal if successful, an error code otherwise
      */
-    static OFCondition checkSOPInstance(const OFString &sopClassUID,
-                                        const OFString &sopInstanceUID,
-                                        const OFString &transferSyntaxUID,
-                                        const OFBool checkValues);
+    virtual OFCondition checkSOPInstance(const OFString &sopClassUID,
+                                         const OFString &sopInstanceUID,
+                                         const OFString &transferSyntaxUID,
+                                         const OFBool checkValues);
 
     /** This method is called each time a SOP instance is sent to a peer.  Since it is called
      *  after the SOP instance has been processed, the transfer entry passed to this method
diff --git a/dcmnet/include/dcmtk/dcmnet/scp.h b/dcmnet/include/dcmtk/dcmnet/scp.h
index 24f93e4..dfe0c0b 100644
--- a/dcmnet/include/dcmtk/dcmnet/scp.h
+++ b/dcmnet/include/dcmtk/dcmnet/scp.h
@@ -30,6 +30,7 @@
 #include "dcmtk/dcmnet/assoc.h"
 #include "dcmtk/dcmnet/dimse.h"     /* DIMSE network layer */
 #include "dcmtk/dcmnet/scpcfg.h"
+#include "dcmtk/dcmnet/diutil.h"    /* for DCMNET_WARN() */
 
 #ifdef WITH_ZLIB
 #include <zlib.h>     /* for zlibVersion() */
@@ -653,9 +654,26 @@ protected:
    *  @param reqDataset [out] Pointer to the dataset received
    *  @return status, EC_Normal if successful, an error code otherwise
    */
+  virtual OFCondition receiveFINDRequest(T_DIMSE_C_FindRQ &reqMessage,
+                                         const T_ASC_PresentationContextID presID,
+                                         DcmDataset *&reqDataset);
+
+  /** Handle C-FIND request. This function is deprecated and will be removed in
+   *  the future. For now it calls receiveFINDRequest() which should be used
+   *  instead.
+   *  @param reqMessage [in]  The C-FIND request message that was received
+   *  @param presID     [in]  The presentation context to be used. By default, the
+   *                          presentation context of the request is used.
+   *  @param reqDataset [out] Pointer to the dataset received
+   *  @return status, EC_Normal if successful, an error code otherwise
+   */
   virtual OFCondition handleFINDRequest(T_DIMSE_C_FindRQ &reqMessage,
                                         const T_ASC_PresentationContextID presID,
-                                        DcmDataset *&reqDataset);
+                                        DcmDataset *&reqDataset)
+  {
+    DCMNET_WARN("handleFINDRequest() is deprecated, use receiveFINDRequest() instead");
+    return receiveFINDRequest(reqMessage, presID, reqDataset);
+  }
 
   /** Respond to the C-FIND request
    *  @param presID        [in] The presentation context ID to respond to
@@ -706,10 +724,29 @@ protected:
    *  @param moveDest   [out] The move destination where to send the instances
    *  @return status, EC_Normal if successful, an error code otherwise
    */
+  virtual OFCondition receiveMOVERequest(T_DIMSE_C_MoveRQ &reqMessage,
+                                         const T_ASC_PresentationContextID presID,
+                                         DcmDataset *&reqDataset,
+                                         OFString &moveDest);
+
+  /** Receive C-MOVE request on the currently active association. This function
+   *  is deprecated and will be removed in the future. For now it calls
+   *  receiveMOVERequest() which should be used instead.
+   *  @param reqMessage [in]  The C-MOVE request message that was received
+   *  @param presID     [in]  The presentation context to be used. By default, the
+   *                          presentation context of the request is used.
+   *  @param reqDataset [out] Pointer to the dataset received
+   *  @param moveDest   [out] The move destination where to send the instances
+   *  @return status, EC_Normal if successful, an error code otherwise
+   */
   virtual OFCondition handleMOVERequest(T_DIMSE_C_MoveRQ &reqMessage,
                                         const T_ASC_PresentationContextID presID,
                                         DcmDataset *&reqDataset,
-                                        OFString &moveDest);
+                                        OFString &moveDest)
+  {
+    DCMNET_WARN("handleMOVERequest() is deprecated, use receiveMOVERequest() instead");
+    return receiveMOVERequest(reqMessage, presID, reqDataset, moveDest);
+  }
 
   /** Respond to the C-MOVE request
    *  @param presID        [in] The presentation context ID to respond to
@@ -754,10 +791,29 @@ protected:
    *  @param actionTypeID [out] Action Type ID from the command set received
    *  @return status, EC_Normal if successful, an error code otherwise
    */
+  virtual OFCondition receiveACTIONRequest(T_DIMSE_N_ActionRQ &reqMessage,
+                                           const T_ASC_PresentationContextID presID,
+                                           DcmDataset *&reqDataset,
+                                           Uint16 &actionTypeID);
+
+  /** Receive N-ACTION request on the currently opened association. This
+   *  function is deprecated and will be removed in the future. For now it calls
+   *  receiveACTIONRequest() which should be used instead.
+   *  @param reqMessage   [in]  The N-ACTION request message that was received
+   *  @param presID       [in]  The presentation context to be used. By default, the
+   *                            presentation context of the request is used.
+   *  @param reqDataset   [out] Pointer to the dataset received
+   *  @param actionTypeID [out] Action Type ID from the command set received
+   *  @return status, EC_Normal if successful, an error code otherwise
+   */
   virtual OFCondition handleACTIONRequest(T_DIMSE_N_ActionRQ &reqMessage,
                                           const T_ASC_PresentationContextID presID,
                                           DcmDataset *&reqDataset,
-                                          Uint16 &actionTypeID);
+                                          Uint16 &actionTypeID)
+  {
+    DCMNET_WARN("handleACTIONRequest() is deprecated, use receiveACTIONRequest() instead");
+    return receiveACTIONRequest(reqMessage, presID, reqDataset, actionTypeID);
+  }
 
   /** Respond to the N-ACTION request
    *  @param presID         [in] The presentation context ID to respond to
diff --git a/dcmnet/include/dcmtk/dcmnet/scu.h b/dcmnet/include/dcmtk/dcmnet/scu.h
index c1acb81..2090051 100644
--- a/dcmnet/include/dcmtk/dcmnet/scu.h
+++ b/dcmnet/include/dcmtk/dcmnet/scu.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2014, OFFIS e.V.
+ *  Copyright (C) 2008-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -291,7 +291,7 @@ public:
    *          failure of the storage request, EC_Normal will be returned.
    */
   virtual OFCondition sendSTORERequest(const T_ASC_PresentationContextID presID,
-                                       const OFString &dicomFile,
+                                       const OFFilename &dicomFile,
                                        DcmDataset *dataset,
                                        Uint16 &rspStatusCode,
                                        const OFString &moveOriginatorAETitle = "",
diff --git a/dcmnet/libsrc/Makefile.dep b/dcmnet/libsrc/Makefile.dep
index 8ac78d3..7804750 100644
--- a/dcmnet/libsrc/Makefile.dep
+++ b/dcmnet/libsrc/Makefile.dep
@@ -44,6 +44,8 @@ assoc.o: assoc.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -124,6 +126,8 @@ dcasccff.o: dcasccff.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -184,6 +188,8 @@ dcasccfg.o: dcasccfg.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -301,6 +307,8 @@ dccfrsmp.o: dccfrsmp.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofcmdln.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/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -369,6 +377,8 @@ dccfuidh.o: dccfuidh.cc ../../config/include/dcmtk/config/osconfig.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/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
 dcmlayer.o: dcmlayer.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -429,6 +439,8 @@ dcmtrans.o: dcmtrans.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -490,6 +502,8 @@ dcompat.o: dcompat.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/diutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
@@ -555,6 +569,8 @@ dcuserid.o: dcuserid.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h dulstruc.h
 dfindscu.o: dfindscu.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmnet/dfindscu.h \
@@ -598,6 +614,8 @@ dfindscu.o: dfindscu.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -672,6 +690,8 @@ dimcancl.o: dimcancl.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -702,6 +722,8 @@ dimcmd.o: dimcmd.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -797,6 +819,8 @@ dimdump.o: dimdump.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -858,6 +882,8 @@ dimecho.o: dimecho.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -919,6 +945,8 @@ dimfind.o: dimfind.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -980,6 +1008,8 @@ dimget.o: dimget.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1042,6 +1072,8 @@ dimmove.o: dimmove.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1103,6 +1135,8 @@ dimse.o: dimse.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1186,6 +1220,8 @@ dimstore.o: dimstore.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1205,18 +1241,23 @@ dimstore.o: dimstore.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrma.h
 diutil.o: diutil.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.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/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.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 \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.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/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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -1245,10 +1286,7 @@ diutil.o: diutil.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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1311,6 +1349,8 @@ dstorscp.o: dstorscp.cc ../../config/include/dcmtk/config/osconfig.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/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1381,6 +1421,7 @@ dstorscp.o: dstorscp.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 \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -1438,6 +1479,8 @@ dstorscu.o: dstorscu.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -1506,6 +1549,7 @@ dstorscu.o: dstorscu.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 \
  ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -1564,6 +1608,8 @@ dul.o: dul.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -1627,6 +1673,8 @@ dulconst.o: dulconst.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/diutil.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
@@ -1689,12 +1737,25 @@ dulextra.o: dulextra.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../include/dcmtk/dcmnet/extneg.h ../include/dcmtk/dcmnet/dcuserid.h \
  dulstruc.h dulpriv.h ../include/dcmtk/dcmnet/dcmtrans.h \
- ../include/dcmtk/dcmnet/dcmlayer.h
+ ../include/dcmtk/dcmnet/dcmlayer.h ../include/dcmtk/dcmnet/diutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.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/dcmnet/dimse.h ../include/dcmtk/dcmnet/assoc.h
 dulfsm.o: dulfsm.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
@@ -1740,6 +1801,8 @@ dulfsm.o: dulfsm.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1762,16 +1825,21 @@ dulfsm.o: dulfsm.cc ../../config/include/dcmtk/config/osconfig.h \
 dulparse.o: dulparse.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/dcmnet/dicom.h ../include/dcmtk/dcmnet/cond.h \
- ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.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/ofstring.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcerror.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/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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmnet/dndefine.h ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -1800,10 +1868,7 @@ dulparse.o: dulparse.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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1866,6 +1931,8 @@ dulpres.o: dulpres.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -1932,6 +1999,8 @@ scp.o: scp.cc ../../config/include/dcmtk/config/osconfig.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/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2002,6 +2071,7 @@ scp.o: scp.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 \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -2064,6 +2134,8 @@ scpcfg.o: scpcfg.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmnet/lst.h ../include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2127,6 +2199,8 @@ scppool.o: scppool.cc ../../config/include/dcmtk/config/osconfig.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/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2197,6 +2271,7 @@ scppool.o: scppool.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 \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -2250,6 +2325,8 @@ scpthrd.o: scpthrd.cc ../../config/include/dcmtk/config/osconfig.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/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -2320,6 +2397,7 @@ scpthrd.o: scpthrd.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 \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -2374,6 +2452,8 @@ scu.o: scu.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2442,6 +2522,7 @@ scu.o: scu.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 \
  ../include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
diff --git a/dcmnet/libsrc/assoc.cc b/dcmnet/libsrc/assoc.cc
index ea7f9ab..22cacce 100644
--- a/dcmnet/libsrc/assoc.cc
+++ b/dcmnet/libsrc/assoc.cc
@@ -1684,6 +1684,10 @@ ASC_associationWaiting(T_ASC_Network * network, int timeout)
 #else
     nfound = select(s + 1, &fdset, NULL, NULL, &t);
 #endif
+    if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+    {
+      DU_logSelectResult(nfound);
+    }
     return nfound > 0;
 }
 
diff --git a/dcmnet/libsrc/dccftsmp.cc b/dcmnet/libsrc/dccftsmp.cc
index 6ea6dee..c78b618 100644
--- a/dcmnet/libsrc/dccftsmp.cc
+++ b/dcmnet/libsrc/dccftsmp.cc
@@ -77,15 +77,6 @@ OFMap<OFString, DcmTransferSyntaxList*>::const_iterator DcmTransferSyntaxMap::en
   return map_.end();
 }
 
-const DcmTransferSyntaxList* DcmTransferSyntaxMap::getTSList(const OFString& ts)
-{
-  OFMap<OFString, DcmTransferSyntaxList*>::const_iterator it = map_.begin();
-  if ( it == map_.end() )
-  {
-    return NULL;
-  }
-  return (*it).second;
-}
 
 void DcmTransferSyntaxMap::clear()
 {
@@ -97,7 +88,6 @@ void DcmTransferSyntaxMap::clear()
   }
 }
 
-
 size_t DcmTransferSyntaxMap::size() const
 {
   return map_.size();
diff --git a/dcmnet/libsrc/dcmtrans.cc b/dcmnet/libsrc/dcmtrans.cc
index 892bd57..3e28918 100644
--- a/dcmnet/libsrc/dcmtrans.cc
+++ b/dcmnet/libsrc/dcmtrans.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
@@ -193,6 +193,10 @@ OFBool DcmTransportConnection::fastSelectReadableAssociation(DcmTransportConnect
 #else
   int nfound = select(maxsocketfd + 1, &fdset, NULL, NULL, &t);
 #endif
+  if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+  {
+    DU_logSelectResult(nfound);
+  }
   if (nfound<=0) return OFFalse;      /* none available for reading */
 
   for (i=0; i<connCount; i++)
@@ -317,7 +321,14 @@ OFBool DcmTCPConnection::networkDataAvailable(int timeout)
 #else
   nfound = select(getSocket() + 1, &fdset, NULL, NULL, &t);
 #endif
-  if (nfound <= 0) return OFFalse;
+  if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+  {
+    DU_logSelectResult(nfound);
+  }
+  if (nfound <= 0)
+  {
+    return OFFalse;
+  }
   else
   {
     if (FD_ISSET(getSocket(), &fdset)) return OFTrue;
@@ -358,3 +369,4 @@ const char *DcmTCPConnection::errorString(DcmTransportLayerStatus code)
   }
   return "unknown error code";
 }
+
diff --git a/dcmnet/libsrc/diutil.cc b/dcmnet/libsrc/diutil.cc
index 27625ee..34e8f99 100644
--- a/dcmnet/libsrc/diutil.cc
+++ b/dcmnet/libsrc/diutil.cc
@@ -102,6 +102,7 @@
 #include <stat.h>
 #endif
 
+#include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/dcmnet/diutil.h"
 #include "dcmtk/dcmdata/dcdatset.h"
 #include "dcmtk/dcmdata/dcfilefo.h"
@@ -854,3 +855,37 @@ DU_neventReportStatusString(Uint16 statusCode)
     }
     return s;
 }
+
+void DU_logSelectResult(int selectReturnValue)
+{
+  if (selectReturnValue < 0)
+  {
+#ifdef HAVE_WINSOCK_H
+    LPVOID errBuf = NULL;
+    OFString err;
+    // Obtain an error string from system error code
+    if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+      NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), OFreinterpret_cast(LPTSTR, &errBuf), 0, NULL) > 0)
+    {
+      err = (OFstatic_cast(const char *, errBuf));
+    } else
+      err = "Unknown Winsock error code";
+    LocalFree(errBuf);
+    DCMNET_DEBUG("Windows Socket error while waiting for incoming network data: " << err);
+#else
+    // POSIX interface
+    char buf[256];
+    DCMNET_DEBUG("Error while waiting for incoming network data: " << OFStandard::strerror(errno, buf, 256));
+#endif
+  }
+  else if (selectReturnValue == 0)
+  {
+    DCMNET_DEBUG("Timeout while waiting for incoming network data");
+  }
+  else
+  {
+    // This function is only meant to be used for return values <= 0, handle
+    // normal case anyway
+    DCMNET_TRACE("Receiving data via select()");
+  }
+}
diff --git a/dcmnet/libsrc/dstorscu.cc b/dcmnet/libsrc/dstorscu.cc
index 96beda6..c26d410 100644
--- a/dcmnet/libsrc/dstorscu.cc
+++ b/dcmnet/libsrc/dstorscu.cc
@@ -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
@@ -61,7 +61,7 @@ static const OFString &dicomToHostFilename(const OFString &dicomFilename,
 
 // implementation of the internal class/struct for a single transfer entry
 
-DcmStorageSCU::TransferEntry::TransferEntry(const OFString &filename,
+DcmStorageSCU::TransferEntry::TransferEntry(const OFFilename &filename,
                                             const E_FileReadMode readMode,
                                             const OFString &sopClassUID,
                                             const OFString &sopInstanceUID,
@@ -358,13 +358,13 @@ OFCondition DcmStorageSCU::removeSOPInstance(const OFString &sopClassUID,
 }
 
 
-OFCondition DcmStorageSCU::addDicomFile(const OFString &filename,
+OFCondition DcmStorageSCU::addDicomFile(const OFFilename &filename,
                                         const E_FileReadMode readMode,
                                         const OFBool checkValues)
 {
     OFCondition status = EC_IllegalParameter;
     // check for non-empty filename
-    if (!filename.empty())
+    if (!filename.isEmpty())
     {
         DCMNET_DEBUG("adding DICOM file '" << filename << "'");
         const size_t numInstances = TransferList.size();
@@ -464,20 +464,20 @@ OFCondition DcmStorageSCU::addDataset(DcmDataset *dataset,
 }
 
 
-OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFString &filename,
+OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFFilename &filename,
                                                      const E_FileReadMode readMode,
                                                      const OFBool checkValues)
 {
     DCMNET_DEBUG("adding DICOM files referenced from '" << filename << "'");
     // read the DICOMDIR file (always require meta-header to be present)
     DcmFileFormat fileformat;
-    OFCondition status = fileformat.loadFile(filename.c_str(), EXS_Unknown, EGL_noChange, DCM_MaxReadLength, ERM_fileOnly);
+    OFCondition status = fileformat.loadFile(filename, EXS_Unknown, EGL_noChange, DCM_MaxReadLength, ERM_fileOnly);
     if (status.good())
     {
         DcmStack stack;
         // do not use the DcmDirectoryRecord class, but access the data elements directly
         DcmDataset *dataset = fileformat.getDataset();
-        OFString dirName;
+        OFFilename dirName;
         OFStandard::getDirNameFromPath(dirName, filename, OFFalse /* assumeDirName */);
         // iterate over all items (directory records) where ReferencedFileID is present
         while (dataset->search(DCM_ReferencedFileID, stack, ESM_afterStackTop, OFTrue).good())
@@ -485,7 +485,8 @@ OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFString &filename,
             // make sure that the dataset and element pointer are there
             if (stack.card() > 1)
             {
-                OFString pathName, fileID, sopClassUID, sopInstanceUID, transferSyntaxUID;
+                OFFilename pathName;
+                OFString fileID, sopClassUID, sopInstanceUID, transferSyntaxUID;
                 // first, get the name of the referenced DICOM file
                 DcmElement *element = OFstatic_cast(DcmElement *, stack.top());
                 if (element != NULL)
@@ -508,9 +509,9 @@ OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFString &filename,
                     if (status.good())
                     {
                         OFString tmpString;
+                        const OFFilename tmpFilename(dicomToHostFilename(fileID, tmpString), pathName.usesWideChars() /*convert*/);
                         // consider that the value of ReferencedFileID is relative to the DICOMDIR
-                        OFStandard::combineDirAndFilename(pathName, dirName, dicomToHostFilename(fileID, tmpString),
-                            OFTrue /* allowEmptyDirName */);
+                        OFStandard::combineDirAndFilename(pathName, dirName, tmpFilename, OFTrue /* allowEmptyDirName */);
                         // create a new entry ...
                         TransferEntry *entry = new TransferEntry(pathName, readMode, sopClassUID, sopInstanceUID, transferSyntaxUID);
                         if (entry != NULL)
@@ -528,7 +529,7 @@ OFCondition DcmStorageSCU::addDicomFilesFromDICOMDIR(const OFString &filename,
                         DCMNET_DEBUG("successfully added SOP instance " << sopInstanceUID << " to the transfer list");
                     } else {
                         DCMNET_ERROR("cannot add DICOM file from DICOMDIR to the transfer list: "
-                            << (pathName.empty() ? fileID : pathName) << ": " << status.text());
+                            << (pathName.isEmpty() ? fileID : pathName) << ": " << status.text());
                     }
                 } else {
                     DCMNET_ERROR("cannot add DICOM file from DICOMDIR with empty filename");
@@ -806,7 +807,7 @@ OFCondition DcmStorageSCU::sendSOPInstances()
                     break;
                 }
                 // output debug information on the SOP instance to be sent
-                if ((*CurrentTransferEntry)->Filename.empty())
+                if ((*CurrentTransferEntry)->Filename.isEmpty())
                 {
                     if ((*CurrentTransferEntry)->Dataset != NULL)
                     {
@@ -825,11 +826,17 @@ OFCondition DcmStorageSCU::sendSOPInstances()
                 } else {
                     DCMNET_DEBUG("sending SOP instance from file: " << (*CurrentTransferEntry)->Filename);
                     // load SOP instance from DICOM file
-                    status = fileformat.loadFile((*CurrentTransferEntry)->Filename.c_str(), EXS_Unknown, EGL_noChange,
+                    status = fileformat.loadFile((*CurrentTransferEntry)->Filename, EXS_Unknown, EGL_noChange,
                         DCM_MaxReadLength, (*CurrentTransferEntry)->FileReadMode);
-                    // do not store the dataset pointer in the transfer entry, because this pointer
-                    // will become invalid for the next iteration of this while-loop.
-                    dataset = fileformat.getDataset();
+                    if (status.good())
+                    {
+                        // do not store the dataset pointer in the transfer entry, because this pointer
+                        // will become invalid for the next iteration of this while-loop.
+                        dataset = fileformat.getDataset();
+                    } else {
+                        DCMNET_ERROR("cannot send SOP instance from file: " << (*CurrentTransferEntry)->Filename
+                            << ": " << status.text());
+                    }
                 }
                 // send SOP instance to the peer using a C-STORE request message
                 if (status.good())
@@ -870,7 +877,7 @@ OFCondition DcmStorageSCU::sendSOPInstances()
                     // ... remember that this SOP instance has already been sent
                     (*CurrentTransferEntry)->RequestSent = OFTrue;
                     // check whether we need to compact or delete the dataset
-                    if ((*CurrentTransferEntry)->Filename.empty() && ((*CurrentTransferEntry)->Dataset != NULL))
+                    if ((*CurrentTransferEntry)->Filename.isEmpty() && ((*CurrentTransferEntry)->Dataset != NULL))
                     {
                         if ((*CurrentTransferEntry)->DatasetHandlingMode == HM_compactAfterSend)
                         {
@@ -914,7 +921,7 @@ OFCondition DcmStorageSCU::sendSOPInstances()
 }
 
 
-void DcmStorageSCU::notifySOPInstanceSent(const TransferEntry &transferEntry)
+void DcmStorageSCU::notifySOPInstanceSent(const TransferEntry & /*transferEntry*/)
 {
     // do nothing in the default implementation
 }
@@ -1040,7 +1047,7 @@ OFCondition DcmStorageSCU::createReportFile(const OFString &filename) const
             {
                 DcmXfer orgXfer((*transferEntry)->TransferSyntaxUID.c_str());
                 stream << "Number        : " << (++counter) << OFendl;
-                if (!(*transferEntry)->Filename.empty())
+                if (!(*transferEntry)->Filename.isEmpty())
                     stream << "Filename      : " << (*transferEntry)->Filename << OFendl;
                 stream << "SOP Instance  : " << (*transferEntry)->SOPInstanceUID << OFendl;
                 stream << "SOP Class     : " << (*transferEntry)->SOPClassUID << " = "
diff --git a/dcmnet/libsrc/dul.cc b/dcmnet/libsrc/dul.cc
index 434681a..1bb8c56 100644
--- a/dcmnet/libsrc/dul.cc
+++ b/dcmnet/libsrc/dul.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -380,7 +380,7 @@ DUL_InitializeNetwork(const char *mode,
 **
 **
 ** Algorithm:
-**      Close the socket and free the memeory occupied by the network key
+**      Close the socket and free the memory occupied by the network key
 */
 OFCondition
 DUL_DropNetwork(DUL_NETWORKKEY ** callerNetworkKey)
@@ -1450,8 +1450,8 @@ DUL_DefaultServiceParameters(DUL_ASSOCIATESERVICEPARAMETERS * params)
         "",                     /* Called implementation class UID */
         "",                     /* Called implementation vers name */
         0,                      /* peer max pdu */
-        NULL,                   /* Requested Extended Negotation List */
-        NULL,                   /* Accepted Extended Negotation List */
+        NULL,                   /* Requested Extended Negotiation List */
+        NULL,                   /* Accepted Extended Negotiation List */
         NULL,                   /* Requested User Identify Negotiation */
         NULL,                   /* Accepted User Identify Negotiation */
         OFFalse                 /* don't use Secure Transport Layer */
@@ -1591,6 +1591,10 @@ receiveTransportConnectionTCP(PRIVATE_NETWORKKEY ** network,
             nfound = select((*network)->networkSpecific.TCP.listenSocket + 1,
                             &fdset, NULL, NULL, &timeout_val);
 #endif
+            if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+            {
+                DU_logSelectResult(nfound);
+            }
             if (nfound > 0) {
                 if (FD_ISSET((*network)->networkSpecific.TCP.listenSocket, &fdset))
                     connected++;
@@ -1618,6 +1622,10 @@ receiveTransportConnectionTCP(PRIVATE_NETWORKKEY ** network,
                 nfound = select((*network)->networkSpecific.TCP.listenSocket + 1,
                                 &fdset, NULL, NULL, &timeout_val);
 #endif
+                if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+                {
+                    DU_logSelectResult(nfound);
+                }
                 if (nfound > 0) {
                     if (FD_ISSET((*network)->networkSpecific.TCP.listenSocket,
                                  &fdset))
@@ -2072,7 +2080,7 @@ initializeNetworkTCP(PRIVATE_NETWORKKEY ** key, void *parameter)
       int sock;
       struct sockaddr_in server;
 
-      /* Create socket for internet type communication */
+      /* Create socket for Internet type communication */
       (*key)->networkSpecific.TCP.port = *(int *) parameter;
       (*key)->networkSpecific.TCP.listenSocket = socket(AF_INET, SOCK_STREAM, 0);
       sock = (*key)->networkSpecific.TCP.listenSocket;
@@ -2127,7 +2135,14 @@ initializeNetworkTCP(PRIVATE_NETWORKKEY ** key, void *parameter)
         return makeDcmnetCondition(DULC_TCPINITERROR, OF_error, msg.c_str());
       }
 #endif
-      listen(sock, PRV_LISTENBACKLOG);
+      /* Listen on the socket */
+      if (listen(sock, PRV_LISTENBACKLOG) < 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());
+      }
     }
 
     (*key)->networkSpecific.TCP.tLayer = new DcmTransportLayer((*key)->applicationFunction);
@@ -2411,7 +2426,7 @@ static SC_MAP scMap[] = {
 **      Display the contents of the presentation context list
 **
 ** Parameter Dictionary:
-**      l  Head of the list of various presentation conmtexts.
+**      l  Head of the list of various presentation contexts.
 **
 ** Return Values:
 **
@@ -2650,7 +2665,7 @@ clearRequestorsParams(DUL_ASSOCIATESERVICEPARAMETERS * params)
 /* clearPresentationContext
 **
 ** Purpose:
-**      Free the memory oocupied by the given presentation context.
+**      Free the memory occupied by the given presentation context.
 **
 ** Parameter Dictionary:
 **      l  Head of list of the presentation contexts to be freed.
diff --git a/dcmnet/libsrc/dulextra.cc b/dcmnet/libsrc/dulextra.cc
index f80c921..f7d143f 100644
--- a/dcmnet/libsrc/dulextra.cc
+++ b/dcmnet/libsrc/dulextra.cc
@@ -97,6 +97,7 @@
 #include "dulstruc.h"
 #include "dulpriv.h"
 #include "dcmtk/dcmnet/dcmtrans.h"
+#include "dcmtk/dcmnet/diutil.h"
 
 OFBool
 DUL_dataWaiting(DUL_ASSOCIATIONKEY * callerAssociation, int timeout)
@@ -152,6 +153,10 @@ DUL_associationWaiting(DUL_NETWORKKEY * callerNet, int timeout)
 #else
     nfound = select(s + 1, &fdset, NULL, NULL, &t);
 #endif
+    if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+    {
+        DU_logSelectResult(nfound);
+    }
     if (nfound <= 0) assocWaiting = OFFalse;
     else
     {
diff --git a/dcmnet/libsrc/dulfsm.cc b/dcmnet/libsrc/dulfsm.cc
index edf7f30..eadee9c 100644
--- a/dcmnet/libsrc/dulfsm.cc
+++ b/dcmnet/libsrc/dulfsm.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2012, OFFIS e.V.
+ *  Copyright (C) 1994-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -1391,7 +1391,7 @@ DT_2_IndicatePData(PRIVATE_NETWORKKEY ** /*network*/,
     }
 
     /* if after having counted the PDVs the length variable does not equal */
-    /* 0, the PDV lenghts did not add up correctly. Something is fishy. */
+    /* 0, the PDV lengths did not add up correctly. Something is fishy. */
     if (length != 0)
     {
        char buf[256];
@@ -2242,9 +2242,9 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
     Sint32 connectTimeout = dcmConnectionTimeout.get();
 
 #ifdef HAVE_WINSOCK_H
-      u_long arg = TRUE;
+    u_long arg = TRUE;
 #else
-      int flags = 0;
+    int flags = 0;
 #endif
 
     if (connectTimeout >= 0)
@@ -2259,7 +2259,10 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
     }
 
     // depending on the socket mode, connect will block or return immediately
-    int rc = connect(s, (struct sockaddr *) & server, sizeof(server));
+    int rc;
+    do {
+        rc = connect(s, (struct sockaddr *) & server, sizeof(server));
+    } while (rc == -1 && errno == EINTR);
 
 #ifdef HAVE_WINSOCK_H
     if (rc == SOCKET_ERROR && WSAGetLastError() == WSAEWOULDBLOCK)
@@ -2281,7 +2284,14 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
         timeout.tv_sec = connectTimeout;
         timeout.tv_usec = 0;
 
-        rc = select(s+1, NULL, &fdSet, NULL, &timeout);
+        do {
+            rc = select(s + 1, NULL, &fdSet, NULL, &timeout);
+        } while (rc == -1 && errno == EINTR);
+
+        if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+        {
+            DU_logSelectResult(rc);
+        }
 
         // reset socket to blocking mode
 #ifdef HAVE_WINSOCK_H
@@ -2364,7 +2374,7 @@ requestAssociationTCP(PRIVATE_NETWORKKEY ** network,
 
     if (rc < 0)
     {
-        // an error other than timeout in non-blocking mode has occured,
+        // an error other than timeout in non-blocking mode has occurred,
         // either in connect() or in select().
 #ifdef HAVE_WINSOCK_H
         (void) shutdown(s,  1 /* SD_SEND */);
@@ -2963,7 +2973,7 @@ sendPDataTCP(PRIVATE_ASSOCIATIONKEY ** association,
         /* because the current PDV's length can be greater than maxLength, we need */
         /* to start another loop so that we are able to send data gradually. So, */
         /* as long as this is the first iteration or length is greater than 0 and */
-        /* at the same time no error occured, do the following */
+        /* at the same time no error occurred, do the following */
         firstTrip = OFTrue;
         while ((firstTrip || (length > 0)) && (cond.good())) {
             /* indicate that the first iteration has been executed */
@@ -3307,8 +3317,8 @@ readPDUHead(PRIVATE_ASSOCIATIONKEY ** association,
         *PDULength = (*association)->nextPDULength;
 
         /* check if the value in the length field of the PDU shows a legal value; */
-        /* there is a maximum lenght for PDUs which shall be sent over the network. */
-        /* the lenght of this PDU must not be greater than the specified maximum length. */
+        /* there is a maximum length for PDUs which shall be sent over the network. */
+        /* the length of this PDU must not be greater than the specified maximum length. */
         /* (bugfix - thanks to B. Gorissen, Philips Medical Systems) */
         if ((*PDUType == DUL_TYPEDATA) && (*PDULength > (*association)->maxPDVInput))
         {
@@ -3616,7 +3626,7 @@ defragmentTCP(DcmTransportConnection *connection, DUL_BLOCKOPTIONS block, time_t
     while (l > 0)
     {
         /* receive data from the network connection; wait until */
-        /* we actually did receive data or an error occured */
+        /* we actually did receive data or an error occurred */
         do
         {
             /* if DUL_NOBLOCK is specified as a blocking option, we only want to wait a certain
@@ -3647,7 +3657,7 @@ defragmentTCP(DcmTransportConnection *connection, DUL_BLOCKOPTIONS block, time_t
             if (rtnLen != NULL)
                 *rtnLen += (unsigned long) bytesRead;
         } else {
-            /* in case we did not receive any data, an error must have occured; return a corresponding result value */
+            /* in case we did not receive any data, an error must have occurred; return a corresponding result value */
             return DUL_NETWORKCLOSED;
         }
     }
@@ -3765,7 +3775,7 @@ setTCPBufferLength(int sock)
 **      internalList            Input list from which the two output lists
 **                              are derived
 **      SCUSCPRoleList          Role list (returned to the caller)
-**      userContextList         User context list (returend to the caller)
+**      userContextList         User context list (returned to the caller)
 **
 ** Return Values:
 **
@@ -3880,7 +3890,7 @@ findPresentationCtx(
 /* findSCUSCPRole
 **
 ** Purpose:
-**      Search for a SCUSCP role list, given the abstarct syntax as the
+**      Search for a SCUSCP role list, given the abstract syntax as the
 **      key.
 **
 ** Parameter Dictionary:
diff --git a/dcmnet/libsrc/dulparse.cc b/dcmnet/libsrc/dulparse.cc
index e07a0ca..8a10d32 100644
--- a/dcmnet/libsrc/dulparse.cc
+++ b/dcmnet/libsrc/dulparse.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 1994-2011, OFFIS e.V.
+ *  Copyright (C) 1994-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were partly developed by
@@ -69,6 +69,7 @@
 #include "dcmtk/ofstd/ofstdinc.h"
 
 #include "dcmtk/ofstd/ofstream.h"
+#include "dcmtk/ofstd/ofstd.h"  // for OFStandard::safeSubtract() and safeAdd()
 #include "dcmtk/dcmnet/dicom.h"
 #include "dcmtk/dcmnet/cond.h"
 #include "dcmtk/dcmnet/lst.h"
@@ -109,6 +110,9 @@ static OFCondition
 makeLengthError(const char *pdu, unsigned long bufSize, unsigned long minSize = 0,
         unsigned long length = 0);
 
+static OFCondition
+makeUnderflowError(const char *pdu, unsigned long minuend, unsigned long subtrahend);
+
 /* parseAssociate
 **
 ** Purpose:
@@ -119,7 +123,7 @@ makeLengthError(const char *pdu, unsigned long bufSize, unsigned long minSize =
 **      buf             Buffer holding the PDU in the stream format
 **      pduLength       Length of the buffer
 **      assoc           The Associate PDU to be extracted
-**                      (returend to the caller)
+**                      (returned to the caller)
 **
 ** Return Values:
 **
@@ -236,6 +240,8 @@ parseAssociate(unsigned char *buf, unsigned long pduLength,
             DCMNET_TRACE("Successfully parsed Presentation Context");
             break;
         case DUL_TYPEUSERINFO:
+            // parse user info, which can contain several sub-items like User
+            // Identity Negotiation or SOP Class Extended Negotiation
             cond = parseUserInfo(&assoc->userInfo, buf, &itemLength, assoc->type, pduLength);
             if (cond.bad())
                 return cond;
@@ -246,7 +252,8 @@ parseAssociate(unsigned char *buf, unsigned long pduLength,
         default:
             cond = parseDummy(buf, &itemLength, pduLength);
             buf += itemLength;
-            pduLength -= itemLength;
+            if (!OFStandard::safeSubtract(pduLength, itemLength, pduLength))
+              return makeUnderflowError("unknown item type", pduLength, itemLength);
             break;
         }
     }
@@ -405,7 +412,8 @@ parsePresentationContext(unsigned char type,
             default:
                 cond = parseDummy(buf, &length, presentationLength);
                 buf += length;
-                presentationLength -= length;
+                if (!OFStandard::safeSubtract(presentationLength, length, presentationLength))
+                  return makeUnderflowError("unknown presentation context type", presentationLength, length);
                 break;
             }
         }
@@ -440,7 +448,7 @@ parseUserInfo(DUL_USERINFO * userInfo,
               unsigned char *buf,
               unsigned long *itemLength,
               unsigned char typeRQorAC,
-              unsigned long availData)
+              unsigned long availData /* bytes left for in this PDU */)
 {
     unsigned short userLength;
     unsigned long length;
@@ -449,25 +457,34 @@ parseUserInfo(DUL_USERINFO * userInfo,
     SOPClassExtendedNegotiationSubItem *extNeg = NULL;
     UserIdentityNegotiationSubItem *usrIdent = NULL;
 
-    // The minimum allowed size is 4 byte, else we read past the buffer end
+    // minimum allowed size is 4 byte (case where the length of the user data is 0),
+    // else we read past the buffer end
     if (availData < 4)
         return makeLengthError("user info", availData, 4);
 
+    // skip item type (50H) field
     userInfo->type = *buf++;
+    // skip unused ("reserved") field
     userInfo->rsv1 = *buf++;
+    // get and remeber announced length of user data
     EXTRACT_SHORT_BIG(buf, userInfo->length);
+    // .. and skip over the two length field bytes
     buf += 2;
 
+    // userLength contains announced length of full user item structure,
+    // will be used here to count down the available data later
     userLength = userInfo->length;
+    // itemLength contains full length of the user item including the 4 bytes extra header (type, reserved + 2 for length)
     *itemLength = userLength + 4;
 
-    // Does this item claim to be larger than the available data?
-    if (availData - 4 < userLength)
+    // does this item claim to be larger than the available data?
+    if (availData < *itemLength)
         return makeLengthError("user info", availData, 0, userLength);
 
     DCMNET_TRACE("Parsing user info field ("
             << STD_NAMESPACE hex << STD_NAMESPACE setfill('0') << STD_NAMESPACE setw(2) << (unsigned int)userInfo->type
             << STD_NAMESPACE dec << "), Length: " << (unsigned long)userInfo->length);
+    // parse through different types of user items as long as we have data
     while (userLength > 0) {
         DCMNET_TRACE("Parsing remaining " << (long)userLength << " bytes of User Information" << OFendl
                 << "Next item type: "
@@ -493,7 +510,8 @@ parseUserInfo(DUL_USERINFO * userInfo,
         case DUL_TYPEASYNCOPERATIONS:
             cond = parseDummy(buf, &length, userLength);
             buf += length;
-            userLength -= (unsigned short) length;
+            if (!OFStandard::safeSubtract(userLength, OFstatic_cast(short unsigned int, length), userLength))
+              return makeLengthError("asynchronous operation user item type", userLength, length);
             break;
         case DUL_TYPESCUSCPROLE:
             role = (PRV_SCUSCPROLE*)malloc(sizeof(PRV_SCUSCPROLE));
@@ -545,9 +563,14 @@ parseUserInfo(DUL_USERINFO * userInfo,
           userLength -= (unsigned short) length;
           break;
         default:
-            cond = parseDummy(buf, &length, userLength);
+            // we hit an unknown user item that is not defined in the standard
+            // or still unknown to DCMTK
+            cond = parseDummy(buf, &length /* returns bytes "handled" by parseDummy */, userLength /* data available in bytes for user item */);
+            // skip the bytes read
             buf += length;
-            userLength -= (unsigned short) length;
+            // subtract bytes of parsed data from available data bytes
+            if (!OFStandard::safeSubtract(userLength, OFstatic_cast(unsigned short, length), userLength))
+              return makeUnderflowError("unknown user item", userLength, length);
             break;
         }
     }
@@ -604,8 +627,9 @@ parseMaxPDU(DUL_MAXLENGTH * max, unsigned char *buf,
 **      User Length
 **
 ** Parameter Dictionary:
-**      buf             The buffer that is to be parsed
-**      itemLength      Length of structure extracted.
+**      buf             The buffer that is to be parsed (input/output value)
+**      itemLength      Length of structure extracted (output value)
+*       availData       Number of bytes announced to be available for this sub item (input value)
 **
 ** Return Values:
 **
@@ -617,23 +641,26 @@ parseMaxPDU(DUL_MAXLENGTH * max, unsigned char *buf,
 static OFCondition
 parseDummy(unsigned char *buf, unsigned long *itemLength, unsigned long availData)
 {
-    unsigned short
-        userLength;
-
     // Is there enough data for the length field?
     if (availData < 4)
         return makeLengthError("dummy item", availData, 4);
 
+    // Get announced length of this sub-item and skip over the bytes read
+    // 1 byte item-type (e.g. 58H for User Identity Negotiation), 1 byte reserved,
+    // and 2 bytes length field
+    unsigned short userLength;
     buf++;
     buf++;
     EXTRACT_SHORT_BIG(buf, userLength);
     buf += 2;
 
+    // Return full length (announced + 4 extra bytes)
+    *itemLength = userLength + 4;
+
     // Is there less data than the length field claims there is?
     if (availData - 4 < userLength)
         return makeLengthError("dummy item", availData, 0, userLength);
 
-    *itemLength = userLength + 4;
     return EC_Normal;
 }
 
@@ -682,8 +709,11 @@ parseSCUSCPRole(PRV_SCUSCPROLE * role, unsigned char *buf,
     if (role->length - 4 < UIDLength)
         return makeLengthError("SCU-SCP role list UID", role->length, 0, UIDLength);
 
-    (void) memcpy(role->SOPClassUID, buf, UIDLength);
-    role->SOPClassUID[UIDLength] = '\0';
+    OFStandard::strlcpy(role->SOPClassUID, (char*)buf, sizeof(role->SOPClassUID));
+    if (UIDLength > sizeof(role->SOPClassUID))
+    {
+      DCMNET_WARN("Provided role SOP Class UID " << role->SOPClassUID << " is shorter than its announced length " << UIDLength << " (ignored)");
+    }
     buf += UIDLength;
     role->SCURole = *buf++;
     role->SCPRole = *buf++;
@@ -705,7 +735,6 @@ parseSCUSCPRole(PRV_SCUSCPROLE * role, unsigned char *buf,
 ** Return Values:
 **
 */
-
 static OFCondition
 parseExtNeg(SOPClassExtendedNegotiationSubItem* extNeg, unsigned char *buf,
                 unsigned long *length, unsigned long availData)
@@ -795,6 +824,31 @@ makeLengthError(const char *pdu, unsigned long bufSize, unsigned long minSize,
     return ret;
 }
 
+/* makeUnderflowError
+ *
+ * This function is used to generate the OFCondition code if an underflow
+ * computation has been detected.
+ *
+ * @param pdu The name of the field or PDU which caused the invalid computation
+ * @param minuend The field (probably length) subtracted from
+ * @param subtrahend The number subtracted from minuend
+ */
+static OFCondition
+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 << "." << OFStringStream_ends;
+
+  OFCondition ret;
+  OFSTRINGSTREAM_GETSTR(stream, tmpString)
+  ret = makeDcmnetCondition(DULC_INCORRECTBUFFERLENGTH, OF_error, tmpString);
+  OFSTRINGSTREAM_FREESTR(tmpString)
+  return ret;
+}
+
+
 /* trim_trailing_spaces
 **
 ** Purpose:
diff --git a/dcmnet/libsrc/scp.cc b/dcmnet/libsrc/scp.cc
index f7405f6..af52ad9 100644
--- a/dcmnet/libsrc/scp.cc
+++ b/dcmnet/libsrc/scp.cc
@@ -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
@@ -22,7 +22,6 @@
 #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
 
 #include "dcmtk/dcmnet/scp.h"
-#include "dcmtk/dcmnet/diutil.h"
 #include "dcmtk/dcmnet/assoc.h"
 #include "dcmtk/dcmdata/dcostrmf.h" /* for class DcmOutputFileStream */
 
@@ -801,9 +800,9 @@ Uint16 DcmSCP::checkSTORERequest(T_DIMSE_C_StoreRQ & /*reqMessage*/,
 
 // -- C-FIND --
 
-OFCondition DcmSCP::handleFINDRequest(T_DIMSE_C_FindRQ &reqMessage,
-                                      const T_ASC_PresentationContextID presID,
-                                      DcmDataset *&reqDataset)
+OFCondition DcmSCP::receiveFINDRequest(T_DIMSE_C_FindRQ &reqMessage,
+                                       const T_ASC_PresentationContextID presID,
+                                       DcmDataset *&reqDataset)
 {
   // Do some basic validity checks
   if (m_assoc == NULL)
@@ -916,10 +915,10 @@ OFCondition DcmSCP::checkForCANCEL(T_ASC_PresentationContextID presID,
 
 // -- C-MOVE --
 
-OFCondition DcmSCP::handleMOVERequest(T_DIMSE_C_MoveRQ &reqMessage,
-                                      const T_ASC_PresentationContextID presID,
-                                      DcmDataset *&reqDataset,
-                                      OFString &moveDest)
+OFCondition DcmSCP::receiveMOVERequest(T_DIMSE_C_MoveRQ &reqMessage,
+                                       const T_ASC_PresentationContextID presID,
+                                       DcmDataset *&reqDataset,
+                                       OFString &moveDest)
 {
   // Do some basic validity checks
   if (m_assoc == NULL)
@@ -1040,10 +1039,10 @@ OFCondition DcmSCP::sendMOVEResponse(const T_ASC_PresentationContextID presID,
 
 // -- N-ACTION --
 
-OFCondition DcmSCP::handleACTIONRequest(T_DIMSE_N_ActionRQ &reqMessage,
-                                        const T_ASC_PresentationContextID presID,
-                                        DcmDataset *&reqDataset,
-                                        Uint16 &actionTypeID)
+OFCondition DcmSCP::receiveACTIONRequest(T_DIMSE_N_ActionRQ &reqMessage,
+                                         const T_ASC_PresentationContextID presID,
+                                         DcmDataset *&reqDataset,
+                                         Uint16 &actionTypeID)
 {
   // Do some basic validity checks
   if (m_assoc == NULL)
@@ -1895,21 +1894,21 @@ void DcmSCP::notifyAssociationRequest(const T_ASC_Parameters &params,
 
 // ----------------------------------------------------------------------------
 
-OFBool DcmSCP::checkCalledAETitleAccepted(const OFString& calledAETitle)
+OFBool DcmSCP::checkCalledAETitleAccepted(const OFString& /*calledAETitle*/)
 {
   return OFTrue;
 }
 
 // ----------------------------------------------------------------------------
 
-OFBool DcmSCP::checkCallingAETitleAccepted(const OFString& callingAETitle)
+OFBool DcmSCP::checkCallingAETitleAccepted(const OFString& /*callingAETitle*/)
 {
   return OFTrue;
 }
 
 // ----------------------------------------------------------------------------
 
-OFBool DcmSCP::checkCallingHostAccepted(const OFString& hostOrIP)
+OFBool DcmSCP::checkCallingHostAccepted(const OFString& /*hostOrIP*/)
 {
   return OFTrue;
 }
diff --git a/dcmnet/libsrc/scu.cc b/dcmnet/libsrc/scu.cc
index 315eec8..1e0ecd4 100644
--- a/dcmnet/libsrc/scu.cc
+++ b/dcmnet/libsrc/scu.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2008-2014, OFFIS e.V.
+ *  Copyright (C) 2008-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -680,7 +680,7 @@ OFCondition DcmSCU::sendECHORequest(const T_ASC_PresentationContextID presID)
 
 // Sends C-STORE request to another DICOM application
 OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
-                                     const OFString &dicomFile,
+                                     const OFFilename &dicomFile,
                                      DcmDataset *dataset,
                                      Uint16 &rspStatusCode,
                                      const OFString &moveOriginatorAETitle,
@@ -705,12 +705,12 @@ OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
   req->MessageID = nextMessageID();
   /* Load file if necessary */
   DcmFileFormat *fileformat = NULL;
-  if (!dicomFile.empty())
+  if (!dicomFile.isEmpty())
   {
     fileformat = new DcmFileFormat();
     if (fileformat == NULL)
       return EC_MemoryExhausted;
-    cond = fileformat->loadFile(dicomFile.c_str());
+    cond = fileformat->loadFile(dicomFile);
     if (cond.bad())
     {
       delete fileformat;
@@ -729,7 +729,7 @@ OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
   if (sopClassUID.empty() || sopInstanceUID.empty() || ((pcid == 0) && (xferSyntax == EXS_Unknown)))
   {
     DCMNET_ERROR("Cannot send SOP instance, missing information:");
-    if (!dicomFile.empty())
+    if (!dicomFile.isEmpty())
       DCMNET_ERROR("  DICOM Filename   : " << dicomFile);
     DCMNET_ERROR("  SOP Class UID    : " << sopClassUID);
     DCMNET_ERROR("  SOP Instance UID : " << sopInstanceUID);
@@ -799,6 +799,7 @@ OFCondition DcmSCU::sendSTORERequest(const T_ASC_PresentationContextID presID,
     OFString xferName = xfer.getXferName();
     DCMNET_ERROR("No presentation context found for sending C-STORE with SOP Class / Transfer Syntax: "
       << sopClassName << " / " << xferName);
+    delete fileformat;
     return DIMSE_NOVALIDPRESENTATIONCONTEXTID;
   }
 
@@ -1370,8 +1371,12 @@ OFCondition DcmSCU::handleSTORERequest(const T_ASC_PresentationContextID /* pres
   }
 
   OFString filename = createStorageFilename(incomingObject);
+  if (OFStandard::fileExists(filename))
+  {
+    DCMNET_WARN("DICOM file already exists, overwriting: " << filename);
+  }
   DcmFileFormat dcmff(incomingObject, OFFalse /* do not copy but take ownership */);
-  result = dcmff.saveFile(filename.c_str());
+  result = dcmff.saveFile(filename);
   if (result.good())
   {
     E_TransferSyntax xferSyntax;
@@ -1388,8 +1393,8 @@ OFCondition DcmSCU::handleSTORERequest(const T_ASC_PresentationContextID /* pres
 }
 
 OFCondition DcmSCU::handleSTORERequestFile(T_ASC_PresentationContextID *presID,
-                                           const OFString& filename,
-                                           T_DIMSE_C_StoreRQ* request)
+                                           const OFString &filename,
+                                           T_DIMSE_C_StoreRQ *request)
 {
   if (filename.empty())
     return EC_IllegalParameter;
@@ -1413,7 +1418,7 @@ OFCondition DcmSCU::handleSTORERequestFile(T_ASC_PresentationContextID *presID,
     delete filestream;
     if (cond != EC_Normal)
     {
-      unlink(filename.c_str());
+      OFStandard::deleteFile(filename);
     }
     DCMNET_DEBUG("Received dataset on presentation context " << OFstatic_cast(unsigned int, *presID));
   }
@@ -1482,7 +1487,7 @@ OFString DcmSCU::createStorageFilename(DcmDataset *dataset)
 
 
 OFCondition DcmSCU::ignoreSTORERequest(T_ASC_PresentationContextID presID,
-                                       const T_DIMSE_C_StoreRQ& request)
+                                       const T_DIMSE_C_StoreRQ &request)
 {
 
   /* We cannot create the filestream, so ignore the incoming dataset and return an out-of-resources error to the SCU */
@@ -1500,9 +1505,9 @@ OFCondition DcmSCU::ignoreSTORERequest(T_ASC_PresentationContextID presID,
 }
 
 
-void DcmSCU::notifyInstanceStored(const OFString& filename,
-                                  const OFString& sopClassUID,
-                                  const OFString& sopInstanceUID) const
+void DcmSCU::notifyInstanceStored(const OFString &filename,
+                                  const OFString &sopClassUID,
+                                  const OFString &sopInstanceUID) const
 {
   DCMNET_DEBUG("Stored instance to disk:");
   DCMNET_DEBUG("  Filename: " << filename);
diff --git a/dcmnet/tests/Makefile.dep b/dcmnet/tests/Makefile.dep
index da9df02..e7e8333 100644
--- a/dcmnet/tests/Makefile.dep
+++ b/dcmnet/tests/Makefile.dep
@@ -16,6 +16,8 @@ tdump.o: tdump.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -81,6 +83,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -123,6 +127,8 @@ tpool.o: tpool.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -216,6 +222,7 @@ tpool.o: tpool.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 \
  ../include/dcmtk/dcmnet/assoc.h ../include/dcmtk/dcmnet/dicom.h \
  ../include/dcmtk/dcmnet/cond.h ../include/dcmtk/dcmnet/dndefine.h \
@@ -228,4 +235,5 @@ tpool.o: tpool.cc ../../config/include/dcmtk/config/osconfig.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/scu.h
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmnet/diutil.h \
+ ../include/dcmtk/dcmnet/scu.h
diff --git a/dcmpstat/apps/Makefile.dep b/dcmpstat/apps/Makefile.dep
index 91abd2b..c76e103 100644
--- a/dcmpstat/apps/Makefile.dep
+++ b/dcmpstat/apps/Makefile.dep
@@ -15,6 +15,8 @@ dcmmkcrv.o: dcmmkcrv.cc ../../config/include/dcmtk/config/osconfig.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/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -107,6 +109,7 @@ dcmmkcrv.o: dcmmkcrv.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
 dcmmklut.o: dcmmklut.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstream.h \
@@ -149,6 +152,8 @@ dcmmklut.o: dcmmklut.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -217,6 +222,7 @@ dcmmklut.o: dcmmklut.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 \
  ../../dcmimgle/include/dcmtk/dcmimgle/dicrvfit.h \
  ../../dcmimgle/include/dcmtk/dcmimgle/digsdfn.h \
@@ -263,6 +269,8 @@ dcmp2pgm.o: dcmp2pgm.cc ../../config/include/dcmtk/config/osconfig.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/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -335,6 +343,7 @@ dcmp2pgm.o: dcmp2pgm.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -417,6 +426,8 @@ dcmprscp.o: dcmprscp.cc ../../config/include/dcmtk/config/osconfig.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/dcmpstat/dviface.h ../include/dcmtk/dcmpstat/dvpscf.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -490,6 +501,7 @@ dcmprscp.o: dcmprscp.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -568,6 +580,8 @@ dcmprscu.o: dcmprscu.cc ../../config/include/dcmtk/config/osconfig.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/dcmpstat/dviface.h ../include/dcmtk/dcmpstat/dvpscf.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -641,6 +655,7 @@ dcmprscu.o: dcmprscu.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -704,6 +719,8 @@ dcmpschk.o: dcmpschk.cc ../../config/include/dcmtk/config/osconfig.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/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -796,6 +813,7 @@ dcmpschk.o: dcmpschk.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 \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
  ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
@@ -829,6 +847,8 @@ dcmpsmk.o: dcmpsmk.cc ../../config/include/dcmtk/config/osconfig.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/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -921,6 +941,7 @@ dcmpsmk.o: dcmpsmk.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 \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
  ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
@@ -978,6 +999,8 @@ dcmpsprt.o: dcmpsprt.cc ../../config/include/dcmtk/config/osconfig.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/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -1050,6 +1073,7 @@ dcmpsprt.o: dcmpsprt.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -1133,6 +1157,8 @@ dcmpsrcv.o: dcmpsrcv.cc ../../config/include/dcmtk/config/osconfig.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/dcmpstat/dvpscf.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -1226,6 +1252,7 @@ dcmpsrcv.o: dcmpsrcv.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
  ../include/dcmtk/dcmpstat/dvpsgal.h ../include/dcmtk/dcmpstat/dvpscul.h \
@@ -1276,6 +1303,8 @@ dcmpssnd.o: dcmpssnd.cc ../../config/include/dcmtk/config/osconfig.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/dcmpstat/dvpscf.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
diff --git a/dcmpstat/libsrc/Makefile.dep b/dcmpstat/libsrc/Makefile.dep
index 92bd789..85a137e 100644
--- a/dcmpstat/libsrc/Makefile.dep
+++ b/dcmpstat/libsrc/Makefile.dep
@@ -40,6 +40,8 @@ dcmpstat.o: dcmpstat.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -108,6 +110,7 @@ dcmpstat.o: dcmpstat.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 \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dvpsovl.h \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsgll.h \
@@ -166,6 +169,8 @@ dviface.o: dviface.cc ../../config/include/dcmtk/config/osconfig.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/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -238,6 +243,7 @@ dviface.o: dviface.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -300,6 +306,7 @@ dviface.o: dviface.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsdefine.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
+ ../../dcmsr/include/dcmtk/dcmsr/dsrposcn.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrtnant.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrdoctn.h \
  ../../dcmsr/include/dcmtk/dcmsr/dsrcodvl.h \
@@ -321,6 +328,7 @@ 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 \
@@ -361,6 +369,8 @@ dvpsab.o: dvpsab.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -425,6 +435,8 @@ dvpsabl.o: dvpsabl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -488,6 +500,8 @@ dvpsal.o: dvpsal.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -543,6 +557,8 @@ dvpsall.o: dvpsall.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -642,6 +658,7 @@ dvpsall.o: dvpsall.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 \
  ../include/dcmtk/dcmpstat/dvpsgl.h
 dvpscf.o: dvpscf.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -684,6 +701,8 @@ dvpscf.o: dvpscf.cc ../../config/include/dcmtk/config/osconfig.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/dctypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -732,6 +751,8 @@ dvpscu.o: dvpscu.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -801,6 +822,7 @@ dvpscu.o: dvpscu.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 \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h
 dvpscul.o: dvpscul.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -818,6 +840,8 @@ dvpscul.o: dvpscul.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -900,6 +924,8 @@ dvpsda.o: dvpsda.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -968,6 +994,7 @@ dvpsda.o: dvpsda.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 \
  ../include/dcmtk/dcmpstat/dvpsril.h ../include/dcmtk/dcmpstat/dvpstyp.h \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsri.h \
@@ -989,6 +1016,8 @@ dvpsdal.o: dvpsdal.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1085,6 +1114,7 @@ dvpsdal.o: dvpsdal.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 \
  ../include/dcmtk/dcmpstat/dvpsril.h ../include/dcmtk/dcmpstat/dvpsri.h
 dvpsfs.o: dvpsfs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1130,6 +1160,8 @@ dvpsfs.o: dvpsfs.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1198,6 +1230,7 @@ dvpsfs.o: dvpsfs.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 \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -1273,6 +1306,8 @@ dvpsga.o: dvpsga.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
@@ -1345,6 +1380,7 @@ dvpsga.o: dvpsga.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 \
  ../include/dcmtk/dcmpstat/dvpsgr.h
 dvpsgal.o: dvpsgal.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1362,6 +1398,8 @@ dvpsgal.o: dvpsgal.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1461,6 +1499,7 @@ dvpsgal.o: dvpsgal.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 \
  ../include/dcmtk/dcmpstat/dvpsgr.h ../include/dcmtk/dcmpstat/dvpsri.h
 dvpsgl.o: dvpsgl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1505,6 +1544,8 @@ dvpsgl.o: dvpsgl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1573,6 +1614,7 @@ dvpsgl.o: dvpsgl.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 \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsdef.h
 dvpsgll.o: dvpsgll.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1590,6 +1632,8 @@ dvpsgll.o: dvpsgll.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1686,6 +1730,7 @@ dvpsgll.o: dvpsgll.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 \
  ../include/dcmtk/dcmpstat/dvpsdef.h ../include/dcmtk/dcmpstat/dvpsgal.h \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -1735,6 +1780,8 @@ dvpsgr.o: dvpsgr.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1803,6 +1850,7 @@ dvpsgr.o: dvpsgr.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 \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
  ../include/dcmtk/dcmpstat/dvpsdef.h
@@ -1821,6 +1869,8 @@ dvpsgrl.o: dvpsgrl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1917,6 +1967,7 @@ dvpsgrl.o: dvpsgrl.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 \
  ../include/dcmtk/dcmpstat/dvpstyp.h
 dvpshlp.o: dvpshlp.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1934,6 +1985,8 @@ dvpshlp.o: dvpshlp.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2033,6 +2086,7 @@ dvpshlp.o: dvpshlp.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
 dvpsib.o: dvpsib.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -2050,6 +2104,8 @@ dvpsib.o: dvpsib.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -2145,6 +2201,7 @@ dvpsib.o: dvpsib.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 \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -2176,6 +2233,8 @@ dvpsibl.o: dvpsibl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -2272,6 +2331,7 @@ dvpsibl.o: dvpsibl.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 \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -2329,6 +2389,8 @@ dvpsmsg.o: dvpsmsg.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2380,6 +2442,8 @@ dvpsov.o: dvpsov.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2448,6 +2512,7 @@ dvpsov.o: dvpsov.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 \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsdef.h
 dvpsovl.o: dvpsovl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2465,6 +2530,8 @@ dvpsovl.o: dvpsovl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -2561,6 +2628,7 @@ dvpsovl.o: dvpsovl.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
 dvpspl.o: dvpspl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
@@ -2579,6 +2647,8 @@ dvpspl.o: dvpspl.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -2688,6 +2758,8 @@ dvpspl2.o: dvpspl2.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/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 \
@@ -2781,6 +2853,8 @@ dvpspll.o: dvpspll.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -2862,6 +2936,7 @@ dvpspll.o: dvpspll.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
 dvpspr.o: dvpspr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstring.h \
@@ -2903,6 +2978,8 @@ dvpspr.o: dvpspr.cc ../../config/include/dcmtk/config/osconfig.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/dcmpstat/dvpspr.h \
  ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -2981,6 +3058,8 @@ dvpsprt.o: dvpsprt.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -3057,6 +3136,7 @@ dvpsprt.o: dvpsprt.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -3099,6 +3179,8 @@ dvpsri.o: dvpsri.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -3158,6 +3240,8 @@ dvpsril.o: dvpsril.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3225,6 +3309,8 @@ dvpsrs.o: dvpsrs.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -3287,6 +3373,8 @@ dvpsrsl.o: dvpsrsl.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3387,6 +3475,8 @@ dvpssp.o: dvpssp.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -3462,6 +3552,7 @@ dvpssp.o: dvpssp.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -3547,6 +3638,8 @@ dvpsspl.o: dvpsspl.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/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 \
@@ -3623,6 +3716,7 @@ dvpsspl.o: dvpsspl.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 \
  ../include/dcmtk/dcmpstat/dvpsovl.h ../include/dcmtk/dcmpstat/dvpsgll.h \
  ../include/dcmtk/dcmpstat/dvpsrsl.h ../include/dcmtk/dcmpstat/dvpsall.h \
@@ -3664,6 +3758,8 @@ dvpssv.o: dvpssv.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3734,6 +3830,8 @@ dvpssvl.o: dvpssvl.cc ../../config/include/dcmtk/config/osconfig.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/dcelem.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -3826,6 +3924,8 @@ dvpstat.o: dvpstat.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3894,6 +3994,7 @@ dvpstat.o: dvpstat.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 \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dvpsovl.h \
  ../include/dcmtk/dcmpstat/dpdefine.h ../include/dcmtk/dcmpstat/dvpsgll.h \
@@ -3970,6 +4071,8 @@ dvpstx.o: dvpstx.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4038,6 +4141,7 @@ dvpstx.o: dvpstx.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 \
  ../include/dcmtk/dcmpstat/dvpstyp.h ../include/dcmtk/dcmpstat/dpdefine.h \
  ../include/dcmtk/dcmpstat/dvpsdef.h
@@ -4056,6 +4160,8 @@ dvpstxl.o: dvpstxl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -4152,6 +4258,7 @@ dvpstxl.o: dvpstxl.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 \
  ../include/dcmtk/dcmpstat/dvpstyp.h
 dvpsvl.o: dvpsvl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4197,6 +4304,8 @@ dvpsvl.o: dvpsvl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4265,6 +4374,7 @@ dvpsvl.o: dvpsvl.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 \
  ../include/dcmtk/dcmpstat/dvpssv.h ../include/dcmtk/dcmpstat/dvpsril.h \
  ../include/dcmtk/dcmpstat/dvpsdef.h ../include/dcmtk/dcmpstat/dvpsri.h
@@ -4283,6 +4393,8 @@ dvpsvll.o: dvpsvll.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -4379,6 +4491,7 @@ dvpsvll.o: dvpsvll.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
 dvpsvw.o: dvpsvw.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmpstat/dvpsvw.h ../include/dcmtk/dcmpstat/dpdefine.h \
@@ -4424,6 +4537,8 @@ dvpsvw.o: dvpsvw.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcxfer.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
@@ -4490,6 +4605,7 @@ dvpsvw.o: dvpsvw.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
 dvpsvwl.o: dvpsvwl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdeftag.h \
@@ -4537,6 +4653,8 @@ dvpsvwl.o: dvpsvwl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -4602,6 +4720,8 @@ dvsighdl.o: dvsighdl.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcobject.h \
diff --git a/dcmpstat/tests/Makefile.dep b/dcmpstat/tests/Makefile.dep
index cb75cd5..3bceee7 100644
--- a/dcmpstat/tests/Makefile.dep
+++ b/dcmpstat/tests/Makefile.dep
@@ -39,6 +39,8 @@ msgserv.o: msgserv.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcmtrans.h \
@@ -53,4 +55,18 @@ msgserv.o: msgserv.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcuserid.h
+ ../../dcmnet/include/dcmtk/dcmnet/dcuserid.h \
+ ../../dcmnet/include/dcmtk/dcmnet/diutil.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcobject.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 \
+ ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
+ ../../dcmnet/include/dcmtk/dcmnet/lst.h \
+ ../../dcmnet/include/dcmtk/dcmnet/assoc.h
diff --git a/dcmpstat/tests/msgserv.cc b/dcmpstat/tests/msgserv.cc
index 5a89013..1951477 100644
--- a/dcmpstat/tests/msgserv.cc
+++ b/dcmpstat/tests/msgserv.cc
@@ -58,6 +58,7 @@ END_EXTERN_C
 #include "dcmtk/dcmdata/dcuid.h"
 #include "dcmtk/dcmnet/dcompat.h"     /* compatability routines */
 #include "dcmtk/dcmnet/dul.h"
+#include "dcmtk/dcmnet/diutil.h"
 
 #define OFFIS_CONSOLE_APPLICATION "msgserv"
 
@@ -208,6 +209,10 @@ int main(int argc, char *argv[])
       nfound = select(s + 1, &fdset, NULL, NULL, &t);
 #endif
 
+      if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+      {
+          DU_logSelectResult(nfound);
+      }
 
       if (nfound > 0)
       {
diff --git a/dcmqrdb/apps/Makefile.dep b/dcmqrdb/apps/Makefile.dep
index 1571d43..708bae4 100644
--- a/dcmqrdb/apps/Makefile.dep
+++ b/dcmqrdb/apps/Makefile.dep
@@ -15,6 +15,8 @@ dcmqridx.o: dcmqridx.cc ../../config/include/dcmtk/config/osconfig.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/dcdict.h \
  ../../dcmdata/include/dcmtk/dcmdata/dchashdi.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
@@ -87,6 +89,8 @@ dcmqrscp.o: dcmqrscp.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
  ../../dcmnet/include/dcmtk/dcmnet/cond.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -195,6 +199,8 @@ dcmqrti.o: dcmqrti.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/assoc.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
diff --git a/dcmqrdb/docs/dcmqrscp.man b/dcmqrdb/docs/dcmqrscp.man
index fb93f90..c678668 100644
--- a/dcmqrdb/docs/dcmqrscp.man
+++ b/dcmqrdb/docs/dcmqrscp.man
@@ -709,6 +709,7 @@ SpatialFiducialsStorage                              1.2.840.10008.5.1.4.1.1.66.
 DeformableSpatialRegistrationStorage                 1.2.840.10008.5.1.4.1.1.66.3
 SegmentationStorage                                  1.2.840.10008.5.1.4.1.1.66.4
 SurfaceSegmentationStorage                           1.2.840.10008.5.1.4.1.1.66.5
+TractographyResultsStorage                           1.2.840.10008.5.1.4.1.1.66.6
 RealWorldValueMappingStorage                         1.2.840.10008.5.1.4.1.1.67
 SurfaceScanMeshStorage                               1.2.840.10008.5.1.4.1.1.68.1
 SurfaceScanPointCloudStorage                         1.2.840.10008.5.1.4.1.1.68.2
@@ -757,6 +758,7 @@ XRayRadiationDoseSRStorage                           1.2.840.10008.5.1.4.1.1.88.
 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
 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
@@ -781,6 +783,7 @@ DICONDE_EddyCurrentImageStorage                      1.2.840.10008.5.1.4.1.1.601
 DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601.2
 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
@@ -966,6 +969,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 1993-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 1993-2016 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmqrdb/libsrc/Makefile.dep b/dcmqrdb/libsrc/Makefile.dep
index 4605c41..77faaec 100644
--- a/dcmqrdb/libsrc/Makefile.dep
+++ b/dcmqrdb/libsrc/Makefile.dep
@@ -47,6 +47,8 @@ dcmqrcbf.o: dcmqrcbf.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -123,6 +125,8 @@ dcmqrcbg.o: dcmqrcbg.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -199,6 +203,8 @@ dcmqrcbm.o: dcmqrcbm.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -275,6 +281,8 @@ dcmqrcbs.o: dcmqrcbs.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -319,6 +327,8 @@ dcmqrcnf.o: dcmqrcnf.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../oflog/include/dcmtk/oflog/oflog.h \
  ../../oflog/include/dcmtk/oflog/logger.h \
  ../../oflog/include/dcmtk/oflog/config.h \
@@ -396,6 +406,8 @@ dcmqrdbi.o: dcmqrdbi.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/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 \
@@ -439,6 +451,8 @@ dcmqrdbs.o: dcmqrdbs.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -519,6 +533,8 @@ dcmqropt.o: dcmqropt.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -593,6 +609,8 @@ dcmqrptb.o: dcmqrptb.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -661,6 +679,8 @@ dcmqrsrv.o: dcmqrsrv.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
@@ -736,6 +756,8 @@ dcmqrtis.o: dcmqrtis.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/assoc.h \
  ../../dcmnet/include/dcmtk/dcmnet/lst.h \
diff --git a/dcmqrdb/libsrc/dcmqrdbi.cc b/dcmqrdb/libsrc/dcmqrdbi.cc
index f555fbb..53424b8 100644
--- a/dcmqrdb/libsrc/dcmqrdbi.cc
+++ b/dcmqrdb/libsrc/dcmqrdbi.cc
@@ -2949,7 +2949,8 @@ OFCondition DcmQueryRetrieveIndexDatabaseHandle::storeRequest (
                    (strcmp(SOPClassUID, UID_SpectaclePrescriptionReportStorage) == 0) ||
                    (strcmp(SOPClassUID, UID_MacularGridThicknessAndVolumeReportStorage) == 0) ||
                    (strcmp(SOPClassUID, UID_ImplantationPlanSRDocumentStorage) == 0) ||
-                   (strcmp(SOPClassUID, UID_RadiopharmaceuticalRadiationDoseSRStorage) == 0))
+                   (strcmp(SOPClassUID, UID_RadiopharmaceuticalRadiationDoseSRStorage) == 0) ||
+                   (strcmp(SOPClassUID, UID_AcquisitionContextSRStorage) == 0))
         {
             OFString string;
             OFString description = "unknown SR";
diff --git a/dcmrt/apps/Makefile.dep b/dcmrt/apps/Makefile.dep
index 0c4353a..f9700e9 100644
--- a/dcmrt/apps/Makefile.dep
+++ b/dcmrt/apps/Makefile.dep
@@ -15,6 +15,8 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.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/dcmrt/drtdose.h ../include/dcmtk/dcmrt/drttypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofvector.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -108,13 +110,16 @@ drtdump.o: drtdump.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -144,11 +149,14 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.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/drtpcs.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 \
@@ -156,8 +164,10 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -229,7 +239,7 @@ drtdump.o: drtdump.cc ../../config/include/dcmtk/config/osconfig.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/drtiblds.h \
- ../include/dcmtk/dcmrt/seq/drtibls.h \
+ ../include/dcmtk/dcmrt/seq/drtibls.h ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../include/dcmtk/dcmrt/seq/drticps.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
  ../include/dcmtk/dcmrt/seq/drtlsds6.h \
diff --git a/dcmrt/include/dcmtk/dcmrt/drmimage.h b/dcmrt/include/dcmtk/dcmrt/drmimage.h
index 36f427a..9431247 100644
--- a/dcmrt/include/dcmtk/dcmrt/drmimage.h
+++ b/dcmrt/include/dcmtk/dcmrt/drmimage.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012, OFFIS e.V.
+ *  Copyright (C) 2012-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -156,8 +156,8 @@ public:
     /** set automatically calculated histogram window.
      *  possibly active VOI LUT is implicitly disabled.
      *
-     ** @param  thresh  threshhold value specifying percentage of histogram border which
-     *                  shall be ignored (defaut: 5%).
+     ** @param  thresh  threshold value specifying percentage of histogram border which
+     *                  shall be ignored (default: 5%).
      *
      *  @return EC_Normal if successful, else an error code
      */
@@ -239,7 +239,7 @@ private:
      * Hide DRTImageIOD::read(). DicomImage() doesn't allow the dataset that was
      * used for loading the image to be deleted. Thus, read() cannot work.
      */
-    virtual OFCondition read(DcmItem &dataset)
+    virtual OFCondition read(DcmItem & /*dataset*/)
     {
         return EC_IllegalCall;
     }
diff --git a/dcmrt/include/dcmtk/dcmrt/drtdose.h b/dcmrt/include/dcmtk/dcmrt/drtdose.h
index 43e4081..6f90287 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDoseIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #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/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdvhs.h"   // for DVHSequence
@@ -47,6 +48,7 @@
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtpsss.h"   // for PredecessorStructureSetSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrcs.h"    // for ROIContourSequence
 #include "dcmtk/dcmrt/seq/drtrdros.h"  // for RTDoseROISequence
@@ -501,6 +503,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference 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 getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentDate (0008,0023)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1663,6 +1672,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StereoPairsPresent (0022,0028)
+     *  @param  value  reference 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 getStereoPairsPresent(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
@@ -1818,6 +1834,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -2118,6 +2146,18 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     const DRTPredecessorStructureSetSequence &getPredecessorStructureSetSequence() const
         { return PredecessorStructureSetSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -2618,6 +2658,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentDate (0008,0023)
      *  @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
@@ -3563,6 +3610,13 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StereoPairsPresent (0022,0028)
+     *  @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 setStereoPairsPresent(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
@@ -3766,6 +3820,10 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -4045,6 +4103,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DcmIntegerString NumberOfFrames;
     /// FrameIncrementPointer (0028,0009) vr=AT, vm=1-n, type=1
     DcmAttributeTag FrameIncrementPointer;
+    /// StereoPairsPresent (0022,0028) vr=CS, vm=1, type=3
+    DcmCodeString StereoPairsPresent;
 
     // --- OverlayPlaneModule (U) ---
 
@@ -4245,6 +4305,8 @@ class DCMTK_DCMRT_EXPORT DRTDoseIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/drtimage.h b/dcmrt/include/dcmtk/dcmrt/drtimage.h
index bf746cd..3b7b154 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTImageIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #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/drtcbars.h"  // for ContrastBolusAdministrationRouteSequence
 #include "dcmtk/dcmrt/seq/drtbas.h"    // for ContrastBolusAgentSequence
 #include "dcmtk/dcmrt/seq/drtces.h"    // for ContributingEquipmentSequence
@@ -51,6 +52,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrwvms.h"  // for RealWorldValueMappingSequence
 #include "dcmtk/dcmrt/seq/drtrppcs.h"  // for ReasonForPerformedProcedureCodeSequence
@@ -524,6 +526,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference 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 getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentDate (0008,0023)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1916,6 +1925,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition getStationName(OFString &value, const signed long pos = 0) const;
 
+    /** get StereoPairsPresent (0022,0028)
+     *  @param  value  reference 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 getStereoPairsPresent(OFString &value, const signed long pos = 0) const;
+
     /** get StopTrim (0008,2143)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -2215,6 +2231,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContrastBolusAdministrationRouteSequence (0018,0014)
      *  @return reference to sequence element
      */
@@ -2563,6 +2591,18 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -3019,6 +3059,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentDate (0008,0023)
      *  @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
@@ -4097,6 +4144,13 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
      */
     virtual OFCondition setStationName(const OFString &value, const OFBool check = OFTrue);
 
+    /** set StereoPairsPresent (0022,0028)
+     *  @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 setStereoPairsPresent(const OFString &value, const OFBool check = OFTrue);
+
     /** set StopTrim (0008,2143)
      *  @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
@@ -4352,6 +4406,10 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -4671,6 +4729,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DcmIntegerString NumberOfFrames;
     /// FrameIncrementPointer (0028,0009) vr=AT, vm=1-n, type=1
     DcmAttributeTag FrameIncrementPointer;
+    /// StereoPairsPresent (0022,0028) vr=CS, vm=1, type=3
+    DcmCodeString StereoPairsPresent;
 
     // --- DeviceModule (U) ---
 
@@ -4871,6 +4931,8 @@ class DCMTK_DCMRT_EXPORT DRTImageIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/drtionpl.h b/dcmrt/include/dcmtk/dcmrt/drtionpl.h
index d9acae7..889397d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #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/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -46,6 +47,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#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/drtrds.h"    // for ReferencedDoseSequence
@@ -373,6 +375,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference 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 getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1095,6 +1104,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1383,6 +1404,18 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1712,6 +1745,13 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @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
@@ -2457,6 +2497,10 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2729,6 +2773,8 @@ class DCMTK_DCMRT_EXPORT DRTIonPlanIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/drtiontr.h b/dcmrt/include/dcmtk/dcmrt/drtiontr.h
index cf177b8..546f92c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamsTreatmentRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -23,6 +23,7 @@
 #include "dcmtk/dcmrt/seq/drtcdrs.h"   // for CalculatedDoseReferenceSequence
 #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/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -45,6 +46,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#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/drtrpphs.h"  // for ReferencedPatientPhotoSequence
@@ -352,6 +354,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference 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 getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1058,6 +1067,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1322,6 +1343,18 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1680,6 +1713,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @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
@@ -2383,6 +2423,10 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2642,6 +2686,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBeamsTreatmentRecordIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/drtplan.h b/dcmrt/include/dcmtk/dcmrt/drtplan.h
index a314f9a..cc7ed76 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -24,6 +24,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #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/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -46,6 +47,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#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/drtrds.h"    // for ReferencedDoseSequence
@@ -406,6 +408,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference 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 getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -1152,6 +1161,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1416,6 +1437,18 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1795,6 +1828,13 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @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
@@ -2540,6 +2580,10 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2825,6 +2869,8 @@ class DCMTK_DCMRT_EXPORT DRTPlanIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/drtstrct.h b/dcmrt/include/dcmtk/dcmrt/drtstrct.h
index 2ba925a..21948f8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStructureSetIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #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/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -42,6 +43,7 @@
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtpsss.h"   // for PredecessorStructureSetSequence
+#include "dcmtk/dcmrt/seq/drtpdecs.h"  // for PrivateDataElementCharacteristicsSequence
 #include "dcmtk/dcmrt/seq/drtpcs.h"    // for ProcedureCodeSequence
 #include "dcmtk/dcmrt/seq/drtrcs.h"    // for ROIContourSequence
 #include "dcmtk/dcmrt/seq/drtrros.h"   // for RTROIObservationsSequence
@@ -165,6 +167,14 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFBool isClinicalTrialSeriesModulePresent(const OFBool complete = OFFalse);
 
+    /** check whether FrameOfReferenceModule (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 isFrameOfReferenceModulePresent(const OFBool complete = OFFalse);
+
     /** check whether ApprovalModule (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.
@@ -330,6 +340,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference 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 getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -365,6 +382,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getEthnicGroup(OFString &value, const signed 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
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition getFrameOfReferenceUID(OFString &value, const signed long pos = 0) const;
+
     /** get GantryID (0018,1008)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -673,6 +697,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition getPixelPaddingValue(Uint16 &value, const unsigned long pos = 0) const;
 
+    /** get PositionReferenceIndicator (0020,1040)
+     *  @param  value  reference 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 getPositionReferenceIndicator(OFString &value, const signed 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
@@ -1003,6 +1034,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1243,6 +1286,18 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     const DRTPredecessorStructureSetSequence &getPredecessorStructureSetSequence() const
         { return PredecessorStructureSetSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1584,6 +1639,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @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
@@ -1619,6 +1681,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setEthnicGroup(const OFString &value, const OFBool check = OFTrue);
 
+    /** 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
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setFrameOfReferenceUID(const OFString &value, const OFBool check = OFTrue);
+
     /** set GantryID (0018,1008)
      *  @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
@@ -1906,6 +1975,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
      */
     virtual OFCondition setPixelPaddingValue(const Uint16 value, const unsigned long pos = 0);
 
+    /** set PositionReferenceIndicator (0020,1040)
+     *  @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 setPositionReferenceIndicator(const OFString &value, const OFBool check = OFTrue);
+
     /** 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
@@ -2280,6 +2356,10 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2422,6 +2502,13 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     /// PixelPaddingValue (0028,0120) vr=US/SS, vm=1, type=1C
     DcmUnsignedShort PixelPaddingValue;
 
+    // --- FrameOfReferenceModule (U) ---
+
+    /// FrameOfReferenceUID (0020,0052) vr=UI, vm=1, type=1
+    DcmUniqueIdentifier FrameOfReferenceUID;
+    /// PositionReferenceIndicator (0020,1040) vr=LO, vm=1, type=2
+    DcmLongString PositionReferenceIndicator;
+
     // --- StructureSetModule (M) ---
 
     /// StructureSetLabel (3006,0002) vr=SH, vm=1, type=1
@@ -2520,6 +2607,8 @@ class DCMTK_DCMRT_EXPORT DRTStructureSetIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/drttreat.h b/dcmrt/include/dcmtk/dcmrt/drttreat.h
index c594974..5822e24 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtbrs.h"    // for BreedRegistrationSequence
 #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/drtces.h"    // for ContributingEquipmentSequence
 #include "dcmtk/dcmrt/seq/drtcsas.h"   // for ConversionSourceAttributesSequence
 #include "dcmtk/dcmrt/seq/drtdimcs.h"  // for DeidentificationMethodCodeSequence
@@ -42,6 +43,7 @@
 #include "dcmtk/dcmrt/seq/drtppcs.h"   // for PerformedProtocolCodeSequence
 #include "dcmtk/dcmrt/seq/drtporis.h"  // for PhysiciansOfRecordIdentificationSequence
 #include "dcmtk/dcmrt/seq/drtprsis.h"  // for PhysiciansReadingStudyIdentificationSequence
+#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/drtrpphs.h"  // for ReferencedPatientPhotoSequence
@@ -315,6 +317,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition getCommentsOnThePerformedProcedureStep(OFString &value, const signed long pos = 0) const;
 
+    /** get ConsultingPhysicianName (0008,009c)
+     *  @param  value  reference 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 getConsultingPhysicianName(OFString &value, const signed long pos = 0) const;
+
     /** get ContentQualification (0018,9004)
      *  @param  value  reference to variable in which the value should be stored
      *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -974,6 +983,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTConsentForClinicalTrialUseSequence &getConsentForClinicalTrialUseSequence() const
         { return ConsentForClinicalTrialUseSequence; }
 
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return reference to sequence element
+     */
+    DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence()
+        { return ConsultingPhysicianIdentificationSequence; }
+
+    /** get ConsultingPhysicianIdentificationSequence (0008,009d)
+     *  @return const reference to sequence element
+     */
+    const DRTConsultingPhysicianIdentificationSequence &getConsultingPhysicianIdentificationSequence() const
+        { return ConsultingPhysicianIdentificationSequence; }
+
     /** get ContributingEquipmentSequence (0018,a001)
      *  @return reference to sequence element
      */
@@ -1214,6 +1235,18 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     const DRTPhysiciansReadingStudyIdentificationSequence &getPhysiciansReadingStudyIdentificationSequence() const
         { return PhysiciansReadingStudyIdentificationSequence; }
 
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return reference to sequence element
+     */
+    DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence()
+        { return PrivateDataElementCharacteristicsSequence; }
+
+    /** get PrivateDataElementCharacteristicsSequence (0008,0300)
+     *  @return const reference to sequence element
+     */
+    const DRTPrivateDataElementCharacteristicsSequence &getPrivateDataElementCharacteristicsSequence() const
+        { return PrivateDataElementCharacteristicsSequence; }
+
     /** get ProcedureCodeSequence (0008,1032)
      *  @return reference to sequence element
      */
@@ -1548,6 +1581,13 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
      */
     virtual OFCondition setCommentsOnThePerformedProcedureStep(const OFString &value, const OFBool check = OFTrue);
 
+    /** set ConsultingPhysicianName (0008,009c)
+     *  @param  value  value to be set (possibly multi-valued) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (PN) and VM (1-n) if enabled
+     *  @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setConsultingPhysicianName(const OFString &value, const OFBool check = OFTrue);
+
     /** set ContentQualification (0018,9004)
      *  @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
@@ -2230,6 +2270,10 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DcmPersonName ReferringPhysicianName;
     /// ReferringPhysicianIdentificationSequence (0008,0096) vr=SQ, vm=1, type=3
     DRTReferringPhysicianIdentificationSequence ReferringPhysicianIdentificationSequence;
+    /// ConsultingPhysicianName (0008,009c) vr=PN, vm=1-n, type=3
+    DcmPersonName ConsultingPhysicianName;
+    /// ConsultingPhysicianIdentificationSequence (0008,009d) vr=SQ, vm=1, type=3
+    DRTConsultingPhysicianIdentificationSequence ConsultingPhysicianIdentificationSequence;
     /// StudyID (0020,0010) vr=SH, vm=1, type=2
     DcmShortString StudyID;
     /// AccessionNumber (0008,0050) vr=SH, vm=1, type=2
@@ -2458,6 +2502,8 @@ class DCMTK_DCMRT_EXPORT DRTTreatmentSummaryRecordIOD
     DRTConversionSourceAttributesSequence ConversionSourceAttributesSequence;
     /// ContentQualification (0018,9004) vr=CS, vm=1, type=3
     DcmCodeString ContentQualification;
+    /// PrivateDataElementCharacteristicsSequence (0008,0300) vr=SQ, vm=1, type=3
+    DRTPrivateDataElementCharacteristicsSequence PrivateDataElementCharacteristicsSequence;
 
     // --- CommonInstanceReferenceModule (U) ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtaadcs.h
index a2eb303..271dfb2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningAgencyOrDepartmentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for AssigningAgencyOrDepartmentCodeSequence (0040,003a)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTAssigningAgencyOrDepartmentCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtadcs.h
index 02314af..1221170 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdmittingDiagnosesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for AdmittingDiagnosesCodeSequence (0008,1084)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTAdmittingDiagnosesCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtads.h b/dcmrt/include/dcmtk/dcmrt/seq/drtads.h
index 8fedfbe..bd799e3 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdditionalDrugSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for AdditionalDrugSequence (0018,002a)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalDrugSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtafs.h
index 7a1669e..af706b1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningFacilitySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtags.h b/dcmrt/include/dcmtk/dcmrt/seq/drtags.h
index 6b2b72e..9f9fa99 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorGeometrySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtajcs.h
index a55b6b7..4d404cf 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAssigningJurisdictionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for AssigningJurisdictionCodeSequence (0040,0039)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTAssigningJurisdictionCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtarics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
index a45f1e6..6b21868 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtarics.h
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTAdditionalRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 #include "dcmtk/dcmrt/seq/drtporcs.h"  // for PurposeOfReferenceCodeSequence
 
 
@@ -161,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -168,8 +176,34 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
         /** get PurposeOfReferenceCodeSequence (0040,a170)
          *  @return reference to sequence element
          */
@@ -254,6 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -261,6 +302,20 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -268,9 +323,9 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -286,10 +341,18 @@ class DCMTK_DCMRT_EXPORT DRTAdditionalRTROIIdentificationCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// 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;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas1.h
index 3d05cd9..c1d420a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas5.h
index 7dd6132..a07e40e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas6.h
index af3ae14..2ca82ef 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtas7.h
index 93ca7c9..743c951 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtass.h b/dcmrt/include/dcmtk/dcmrt/seq/drtass.h
index bca0b79..d6f9922 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTApplicationSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbads.h
index 1834ea5..6a9203b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyAccessoryDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbas.h
index 5af60c7..6252502 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContrastBolusAgentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ContrastBolusAgentSequence (0018,0012)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAgentSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbcps.h
index 3f64028..0d01624 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl2.h
index 60f8293..a516809 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBlockSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbl5.h
index 005bca6..c0046f2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBlockSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldls.h
index f0c669e..b6a15af 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceLeafPairsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldps.h
index d47ffc9..acadc81 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDevicePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds1.h
index b0b3671..05d8c5a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds5.h
index a192fbb..e23c711 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtblds6.h
index e165dc2..b3ca61b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbldts.h
index 6a3efa5..8cc3222 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamLimitingDeviceToleranceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrcss.h
index e399279..52a1c54 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBreedRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for BreedRegistryCodeSequence (0010,2296)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTBreedRegistryCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrdrs.h
index bf9c807..1926e81 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBrachyReferencedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbrs.h
index 7878fcd..bb5998f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBreedRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbs.h
index ae710b8..a585e4d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
similarity index 85%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
index 7cbe4ac..1ef3ef9 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTRecordedCompensatorSequence
+ *  Header file for class DRTBlockSlabSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
-#ifndef DRTRCOS_H
-#define DRTRCOS_H
+#ifndef DRTBSS_H
+#define DRTBSS_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 RecordedCompensatorSequence (3008,00c0)
+/** Interface class for BlockSlabSequence (300a,0441)
  */
-class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
+class DCMTK_DCMRT_EXPORT DRTBlockSlabSequence
   : protected DRTTypes
 {
 
@@ -97,26 +97,26 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
          */
         OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
 
-        /** get CompensatorID (300a,00e5)
+        /** get BlockSlabNumber (300a,0443)
          *  @param  value  reference 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 getCompensatorID(OFString &value, const signed long pos = 0) const;
+        OFCondition getBlockSlabNumber(Uint16 &value, const unsigned long pos = 0) const;
 
-        /** get ReferencedCompensatorNumber (300c,00d0)
+        /** get BlockSlabThickness (300a,0442)
          *  @param  value  reference 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 getReferencedCompensatorNumber(OFString &value, const signed long pos = 0) const;
+        OFCondition getBlockSlabThickness(OFString &value, const signed long pos = 0) const;
 
-        /** get ReferencedCompensatorNumber (300c,00d0)
+        /** get BlockSlabThickness (300a,0442)
          *  @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 getReferencedCompensatorNumber(Sint32 &value, const unsigned long pos = 0) const;
+        OFCondition getBlockSlabThickness(Float64 &value, const unsigned long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
@@ -127,19 +127,19 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
          */
         OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
 
-        /** set CompensatorID (300a,00e5)
-         *  @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
+        /** set BlockSlabNumber (300a,0443)
+         *  @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 setCompensatorID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setBlockSlabNumber(const Uint16 value, const unsigned long pos = 0);
 
-        /** set ReferencedCompensatorNumber (300c,00d0)
+        /** set BlockSlabThickness (300a,0442)
          *  @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 (DS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setReferencedCompensatorNumber(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setBlockSlabThickness(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
@@ -148,10 +148,10 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
 
         /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
         DcmLongString AccessoryCode;
-        /// CompensatorID (300a,00e5) vr=SH, vm=1, type=3
-        DcmShortString CompensatorID;
-        /// ReferencedCompensatorNumber (300c,00d0) vr=IS, vm=1, type=1
-        DcmIntegerString ReferencedCompensatorNumber;
+        /// BlockSlabNumber (300a,0443) vr=US, vm=1, type=1
+        DcmUnsignedShort BlockSlabNumber;
+        /// BlockSlabThickness (300a,0442) vr=DS, vm=1, type=3
+        DcmDecimalString BlockSlabThickness;
 
     };
 
@@ -160,21 +160,21 @@ class DCMTK_DCMRT_EXPORT DRTRecordedCompensatorSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTRecordedCompensatorSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTBlockSlabSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTRecordedCompensatorSequence(const DRTRecordedCompensatorSequence &copy);
+    DRTBlockSlabSequence(const DRTBlockSlabSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTRecordedCompensatorSequence();
+    virtual ~DRTBlockSlabSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
      */
-    DRTRecordedCompensatorSequence &operator=(const DRTRecordedCompensatorSequence &copy);
+    DRTBlockSlabSequence &operator=(const DRTBlockSlabSequence &copy);
 
   // --- general methods ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtbvcps.h
index 04ecaf5..0084c67 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTBeamDoseVerificationControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -111,6 +111,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
          */
         OFCondition getAverageBeamDosePointSSD(Float32 &value, const unsigned long pos = 0) const;
 
+        /** get AverageBeamDosePointSourceToExternalContourSurfaceDistance (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;
+
         /** get CumulativeMetersetWeight (300a,0134)
          *  @param  value  reference 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 +169,13 @@ class DCMTK_DCMRT_EXPORT DRTBeamDoseVerificationControlPointSequence
          */
         OFCondition setAverageBeamDosePointSSD(const Float32 value, const unsigned long pos = 0);
 
+        /** set AverageBeamDosePointSourceToExternalContourSurfaceDistance (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);
+
         /** set CumulativeMetersetWeight (300a,0134)
          *  @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
@@ -187,6 +201,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;
         /// CumulativeMetersetWeight (300a,0134) vr=DS, vm=1, type=1
         DcmDecimalString CumulativeMetersetWeight;
         /// ReferencedControlPointIndex (300c,00f0) vr=IS, vm=1, type=1C
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcbars.h
index 4a0faca..b4a8b96 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContrastBolusAdministrationRouteSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtads.h"    // for AdditionalDrugSequence
+#include "dcmtk/dcmrt/seq/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ContrastBolusAdministrationRouteSequence (0018,0014)
@@ -161,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -168,6 +176,20 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
         /** get AdditionalDrugSequence (0018,002a)
@@ -182,6 +204,18 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         const DRTAdditionalDrugSequence &getAdditionalDrugSequence() const
             { return AdditionalDrugSequence; }
 
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -254,6 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -261,6 +302,20 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -270,9 +325,9 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         DRTAdditionalDrugSequence AdditionalDrugSequence;
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -288,8 +343,16 @@ class DCMTK_DCMRT_EXPORT DRTContrastBolusAdministrationRouteSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtccs.h
index 50d52e3..dbc3c4f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConceptCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ConceptCodeSequence (0040,a168)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTConceptCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcctus.h
index e7ca8f0..d9546ee 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConsentForClinicalTrialUseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcdrs.h
index 2ba99a6..e03002a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtces.h b/dcmrt/include/dcmtk/dcmrt/seq/drtces.h
index c15d103..4ff68b0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContributingEquipmentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtchs.h
index d577e33..a613817 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
index f96f3e8..014d4a4 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContentItemModifierSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcis.h
index 23c626b..2b6ca66 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContourImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcncs.h
index 8f1a226..d2fe418 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConceptNameCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ConceptNameCodeSequence (0040,a043)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTConceptNameCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcos.h
index d8d2c51..b3165ac 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcpas.h
index 49c013c..2f27218 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCorrectedParameterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
similarity index 89%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
index bf19f16..76052a2 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTPhysiciansOfRecordIdentificationSequence
+ *  Header file for class DRTConsultingPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
-#ifndef DRTPORIS_H
-#define DRTPORIS_H
+#ifndef DRTCPIS_H
+#define DRTCPIS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -23,9 +23,9 @@
 #include "dcmtk/dcmrt/seq/drtpics.h"   // for PersonIdentificationCodeSequence
 
 
-/** Interface class for PhysiciansOfRecordIdentificationSequence (0008,1049)
+/** Interface class for ConsultingPhysicianIdentificationSequence (0008,009d)
  */
-class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
+class DCMTK_DCMRT_EXPORT DRTConsultingPhysicianIdentificationSequence
   : protected DRTTypes
 {
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference 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 getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference 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 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @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
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
@@ -201,21 +217,21 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTPhysiciansOfRecordIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTConsultingPhysicianIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTPhysiciansOfRecordIdentificationSequence(const DRTPhysiciansOfRecordIdentificationSequence &copy);
+    DRTConsultingPhysicianIdentificationSequence(const DRTConsultingPhysicianIdentificationSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTPhysiciansOfRecordIdentificationSequence();
+    virtual ~DRTConsultingPhysicianIdentificationSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
      */
-    DRTPhysiciansOfRecordIdentificationSequence &operator=(const DRTPhysiciansOfRecordIdentificationSequence &copy);
+    DRTConsultingPhysicianIdentificationSequence &operator=(const DRTConsultingPhysicianIdentificationSequence &copy);
 
   // --- general methods ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcps.h
index 7c0f9e4..996ace1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -157,6 +157,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
          */
         OFCondition getDoseRateSet(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get ExternalContourEntryPoint (300a,0133)
+         *  @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 getExternalContourEntryPoint(Float32 &value, const unsigned long pos = 0) const;
+
         /** get GantryAngle (300a,011e)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -247,6 +254,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
          */
         OFCondition getPatientSupportRotationDirection(OFString &value, const signed long pos = 0) const;
 
+        /** get SourceToExternalContourDistance (300a,0132)
+         *  @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 getSourceToExternalContourDistance(Float32 &value, const unsigned long pos = 0) const;
+
         /** get SourceToSurfaceDistance (300a,0130)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -473,6 +487,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
          */
         OFCondition setDoseRateSet(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ExternalContourEntryPoint (300a,0133)
+         *  @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 setExternalContourEntryPoint(const Float32 value, const unsigned long pos = 0);
+
         /** set GantryAngle (300a,011e)
          *  @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
@@ -529,6 +550,13 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
          */
         OFCondition setPatientSupportRotationDirection(const OFString &value, const OFBool check = OFTrue);
 
+        /** set SourceToExternalContourDistance (300a,0132)
+         *  @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 setSourceToExternalContourDistance(const Float32 value, const unsigned long pos = 0);
+
         /** set SourceToSurfaceDistance (300a,0130)
          *  @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
@@ -630,6 +658,8 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
         DcmDecimalString CumulativeMetersetWeight;
         /// DoseRateSet (300a,0115) vr=DS, vm=1, type=3
         DcmDecimalString DoseRateSet;
+        /// ExternalContourEntryPoint (300a,0133) vr=FL, vm=3, type=3
+        DcmFloatingPointSingle ExternalContourEntryPoint;
         /// GantryAngle (300a,011e) vr=DS, vm=1, type=1C
         DcmDecimalString GantryAngle;
         /// GantryPitchAngle (300a,014a) vr=FL, vm=1, type=3
@@ -650,6 +680,8 @@ class DCMTK_DCMRT_EXPORT DRTControlPointSequence
         DRTReferencedDoseReferenceSequenceInRTBeamsModule ReferencedDoseReferenceSequence;
         /// ReferencedDoseSequence (300c,0080) vr=SQ, vm=1, type=1C
         DRTReferencedDoseSequence ReferencedDoseSequence;
+        /// SourceToExternalContourDistance (300a,0132) vr=FL, vm=1, type=3
+        DcmFloatingPointSingle SourceToExternalContourDistance;
         /// SourceToSurfaceDistance (300a,0130) vr=DS, vm=1, type=3
         DcmDecimalString SourceToSurfaceDistance;
         /// SurfaceEntryPoint (300a,012e) vr=DS, vm=3, type=3
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcs.h
index 42fe9b0..1e90545 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcsas.h
index dbbf746..e57aa0e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTConversionSourceAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcshs.h
index c8b3114..273d59e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelShieldSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
index d43fa12..279ba04 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTCodingSchemeIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtcss.h
index 279e938..5368bc5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTChannelSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ChannelSourceSequence (003a,0208)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTChannelSourceSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdcs.h
index e8f4977..49f3811 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDerivationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for DerivationCodeSequence (0008,9215)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTDerivationCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
similarity index 85%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
index a62626e..9e66cb6 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTDICOMMediaRetrievalSequence
+ *  Header file for class DRTDeidentificationActionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
-#ifndef DRTDIMRS_H
-#define DRTDIMRS_H
+#ifndef DRTDIAS_H
+#define DRTDIAS_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 DICOMMediaRetrievalSequence (0040,e022)
+/** Interface class for DeidentificationActionSequence (0008,0305)
  */
-class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
+class DCMTK_DCMRT_EXPORT DRTDeidentificationActionSequence
   : protected DRTTypes
 {
 
@@ -90,45 +90,45 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
 
       // --- get DICOM attribute values ---
 
-        /** get StorageMediaFileSetID (0088,0130)
+        /** get DeidentificationAction (0008,0307)
          *  @param  value  reference 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 getStorageMediaFileSetID(OFString &value, const signed long pos = 0) const;
+        OFCondition getDeidentificationAction(OFString &value, const signed long pos = 0) const;
 
-        /** get StorageMediaFileSetUID (0088,0140)
+        /** get IdentifyingPrivateElements (0008,0306)
          *  @param  value  reference 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 getStorageMediaFileSetUID(OFString &value, const signed long pos = 0) const;
+        OFCondition getIdentifyingPrivateElements(Uint16 &value, const unsigned long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
-        /** set StorageMediaFileSetID (0088,0130)
+        /** set DeidentificationAction (0008,0307)
          *  @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 (CS) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setStorageMediaFileSetID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setDeidentificationAction(const OFString &value, const OFBool check = OFTrue);
 
-        /** set StorageMediaFileSetUID (0088,0140)
-         *  @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
+        /** set IdentifyingPrivateElements (0008,0306)
+         *  @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 setStorageMediaFileSetUID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setIdentifyingPrivateElements(const Uint16 value, const unsigned long pos = 0);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// StorageMediaFileSetID (0088,0130) vr=SH, vm=1, type=2
-        DcmShortString StorageMediaFileSetID;
-        /// StorageMediaFileSetUID (0088,0140) vr=UI, vm=1, type=1
-        DcmUniqueIdentifier StorageMediaFileSetUID;
+        /// DeidentificationAction (0008,0307) vr=CS, vm=1, type=1
+        DcmCodeString DeidentificationAction;
+        /// IdentifyingPrivateElements (0008,0306) vr=US, vm=1-n, type=1
+        DcmUnsignedShort IdentifyingPrivateElements;
 
     };
 
@@ -137,21 +137,21 @@ class DCMTK_DCMRT_EXPORT DRTDICOMMediaRetrievalSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTDICOMMediaRetrievalSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTDeidentificationActionSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTDICOMMediaRetrievalSequence(const DRTDICOMMediaRetrievalSequence &copy);
+    DRTDeidentificationActionSequence(const DRTDeidentificationActionSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTDICOMMediaRetrievalSequence();
+    virtual ~DRTDeidentificationActionSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
      */
-    DRTDICOMMediaRetrievalSequence &operator=(const DRTDICOMMediaRetrievalSequence &copy);
+    DRTDeidentificationActionSequence &operator=(const DRTDeidentificationActionSequence &copy);
 
   // --- general methods ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdimcs.h
index 7bc7c7d..40d30cb 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeidentificationMethodCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for DeidentificationMethodCodeSequence (0012,0064)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTDeidentificationMethodCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdimrs.h
index a62626e..9bca717 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDICOMMediaRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdirs.h
index 7f1d796..ca2f907 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDICOMRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdrs.h
index b2669c3..254a86f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtds.h
index 4ed6395..c1c1a54 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for DeviceSequence (0050,0010)
@@ -244,6 +245,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition getInterMarkerDistance(Float64 &value, const unsigned 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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
+
         /** get Manufacturer (0008,0070)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -265,6 +273,34 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -393,6 +429,13 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition setInterMarkerDistance(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
+
         /** set Manufacturer (0008,0070)
          *  @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
@@ -414,6 +457,20 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -421,9 +478,9 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -453,14 +510,22 @@ class DCMTK_DCMRT_EXPORT DRTDeviceSequence
         DcmLongString DeviceSerialNumber;
         /// DeviceVolume (0050,0018) vr=DS, vm=1, type=3
         DcmDecimalString DeviceVolume;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
         /// InterMarkerDistance (0050,0019) vr=DS, vm=1, type=3
         DcmDecimalString InterMarkerDistance;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// Manufacturer (0008,0070) vr=LO, vm=1, type=3
         DcmLongString Manufacturer;
         /// ManufacturerModelName (0008,1090) vr=LO, vm=1, type=3
         DcmLongString ManufacturerModelName;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdspcs.h
index f0a9066..258b1b9 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDigitalSignaturePurposeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for DigitalSignaturePurposeCodeSequence (0400,0401)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTDigitalSignaturePurposeCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdss.h
index cc0a984..6def9ee 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDigitalSignaturesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdvhs.h
index da915c9..ec4b5ce 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDVHSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtdvrrs.h
index 3065b72..4bffe6d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTDVHReferencedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drteas.h b/dcmrt/include/dcmtk/dcmrt/seq/drteas.h
index da128b2..ca2279e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTEncryptedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
similarity index 78%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
index d43fa12..0bedc2c 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcsis.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTCodingSchemeIdentificationSequence
+ *  Header file for class DRTEquivalentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
-#ifndef DRTCSIS_H
-#define DRTCSIS_H
+#ifndef DRTECS_H
+#define DRTECS_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 CodingSchemeIdentificationSequence (0008,0110)
+/** Interface class for EquivalentCodeSequence (0008,0121)
  */
-class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
+class DCMTK_DCMRT_EXPORT DRTEquivalentCodeSequence
   : protected DRTTypes
 {
 
@@ -90,125 +90,109 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
 
       // --- get DICOM attribute values ---
 
-        /** get CodingSchemeDesignator (0008,0102)
-         *  @param  value  reference 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 getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
-
-        /** get CodingSchemeExternalID (0008,0114)
+        /** get CodeMeaning (0008,0104)
          *  @param  value  reference 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 getCodingSchemeExternalID(OFString &value, const signed long pos = 0) const;
+        OFCondition getCodeMeaning(OFString &value, const signed long pos = 0) const;
 
-        /** get CodingSchemeName (0008,0115)
+        /** get CodeValue (0008,0100)
          *  @param  value  reference 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 getCodingSchemeName(OFString &value, const signed long pos = 0) const;
+        OFCondition getCodeValue(OFString &value, const signed long pos = 0) const;
 
-        /** get CodingSchemeRegistry (0008,0112)
+        /** get CodingSchemeDesignator (0008,0102)
          *  @param  value  reference 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 getCodingSchemeRegistry(OFString &value, const signed long pos = 0) const;
+        OFCondition getCodingSchemeDesignator(OFString &value, const signed long pos = 0) const;
 
-        /** get CodingSchemeResponsibleOrganization (0008,0116)
+        /** get CodingSchemeVersion (0008,0103)
          *  @param  value  reference 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 getCodingSchemeResponsibleOrganization(OFString &value, const signed long pos = 0) const;
+        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
 
-        /** get CodingSchemeUID (0008,010c)
+        /** 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
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getCodingSchemeUID(OFString &value, const signed long pos = 0) const;
+        OFCondition getLongCodeValue(OFString &value, const signed long pos = 0) const;
 
-        /** get CodingSchemeVersion (0008,0103)
+        /** 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
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getCodingSchemeVersion(OFString &value, const signed long pos = 0) const;
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
-        /** set CodingSchemeDesignator (0008,0102)
-         *  @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
-         *  @return status, EC_Normal if successful, an error code otherwise
-         */
-        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
-
-        /** set CodingSchemeExternalID (0008,0114)
+        /** set CodeMeaning (0008,0104)
          *  @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
+         *  @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 setCodingSchemeExternalID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setCodeMeaning(const OFString &value, const OFBool check = OFTrue);
 
-        /** set CodingSchemeName (0008,0115)
+        /** set CodeValue (0008,0100)
          *  @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
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setCodingSchemeName(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setCodeValue(const OFString &value, const OFBool check = OFTrue);
 
-        /** set CodingSchemeRegistry (0008,0112)
+        /** set CodingSchemeDesignator (0008,0102)
          *  @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 (SH) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setCodingSchemeRegistry(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setCodingSchemeDesignator(const OFString &value, const OFBool check = OFTrue);
 
-        /** set CodingSchemeResponsibleOrganization (0008,0116)
+        /** set CodingSchemeVersion (0008,0103)
          *  @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
+         *  @param  check  check 'value' for conformance with VR (SH) and VM (1) if enabled
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setCodingSchemeResponsibleOrganization(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
 
-        /** set CodingSchemeUID (0008,010c)
+        /** 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 (UI) 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 setCodingSchemeUID(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setLongCodeValue(const OFString &value, const OFBool check = OFTrue);
 
-        /** set CodingSchemeVersion (0008,0103)
+        /** 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 (SH) and VM (1) if enabled
+         *  @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 setCodingSchemeVersion(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
+        DcmLongString CodeMeaning;
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
+        DcmShortString CodeValue;
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
-        /// CodingSchemeExternalID (0008,0114) vr=ST, vm=1, type=2C
-        DcmShortText CodingSchemeExternalID;
-        /// CodingSchemeName (0008,0115) vr=ST, vm=1, type=3
-        DcmShortText CodingSchemeName;
-        /// CodingSchemeRegistry (0008,0112) vr=LO, vm=1, type=1C
-        DcmLongString CodingSchemeRegistry;
-        /// CodingSchemeResponsibleOrganization (0008,0116) vr=ST, vm=1, type=3
-        DcmShortText CodingSchemeResponsibleOrganization;
-        /// CodingSchemeUID (0008,010c) vr=UI, vm=1, type=1C
-        DcmUniqueIdentifier CodingSchemeUID;
-        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=3
+        /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
@@ -217,21 +201,21 @@ class DCMTK_DCMRT_EXPORT DRTCodingSchemeIdentificationSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTCodingSchemeIdentificationSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTEquivalentCodeSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTCodingSchemeIdentificationSequence(const DRTCodingSchemeIdentificationSequence &copy);
+    DRTEquivalentCodeSequence(const DRTEquivalentCodeSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTCodingSchemeIdentificationSequence();
+    virtual ~DRTEquivalentCodeSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
      */
-    DRTCodingSchemeIdentificationSequence &operator=(const DRTCodingSchemeIdentificationSequence &copy);
+    DRTEquivalentCodeSequence &operator=(const DRTEquivalentCodeSequence &copy);
 
   // --- general methods ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtes.h b/dcmrt/include/dcmtk/dcmrt/seq/drtes.h
index 962bae7..91d4851 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTExposureSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfds.h
index f395854..3958b4e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFixationDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfes.h
index 2cdce0b..c0b838a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFrameExtractionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfgs.h
index 1ebd6af..271ad22 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfgss.h
index eb8aadc..2d51366 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionGroupSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfms.h
index bd0235a..8f86405 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFluenceMapSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtfsss.h
index 8994fdd..ae70ff5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTFractionStatusSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtgas.h
index 436ce96..996eb8b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTGeneralAccessorySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drthsdrs.h
index 56fb978..0b84aa3 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTHL7StructuredDocumentReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiais.h
index 870e1eb..3426c48 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfAdmissionIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtians.h b/dcmrt/include/dcmtk/dcmrt/seq/drtians.h
index b055948..d3c22e6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfAccessionNumberSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiblds.h
index 1cdc7c0..253673f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamLimitingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtibls.h
index 295adb7..d1cf983 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtbss.h"    // for BlockSlabSequence
 
 
 /** Interface class for IonBlockSequence (300a,03a6)
@@ -208,6 +209,34 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
          */
         OFCondition getMaterialID(OFString &value, const signed long pos = 0) const;
 
+        /** get NumberOfBlockSlabItems (300a,0440)
+         *  @param  value  reference 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 getNumberOfBlockSlabItems(OFString &value, const signed long pos = 0) const;
+
+        /** get NumberOfBlockSlabItems (300a,0440)
+         *  @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 getNumberOfBlockSlabItems(Sint32 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get BlockSlabSequence (300a,0441)
+         *  @return reference to sequence element
+         */
+        DRTBlockSlabSequence &getBlockSlabSequence()
+            { return BlockSlabSequence; }
+
+        /** get BlockSlabSequence (300a,0441)
+         *  @return const reference to sequence element
+         */
+        const DRTBlockSlabSequence &getBlockSlabSequence() const
+            { return BlockSlabSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set AccessoryCode (300a,00f9)
@@ -294,6 +323,13 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
          */
         OFCondition setMaterialID(const OFString &value, const OFBool check = OFTrue);
 
+        /** set NumberOfBlockSlabItems (300a,0440)
+         *  @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
+         */
+        OFCondition setNumberOfBlockSlabItems(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -313,6 +349,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
         DcmIntegerString BlockNumber;
         /// BlockNumberOfPoints (300a,0104) vr=IS, vm=1, type=1
         DcmIntegerString BlockNumberOfPoints;
+        /// BlockSlabSequence (300a,0441) vr=SQ, vm=1, type=1C
+        DRTBlockSlabSequence BlockSlabSequence;
         /// BlockThickness (300a,0100) vr=DS, vm=1, type=1
         DcmDecimalString BlockThickness;
         /// BlockTrayID (300a,00f5) vr=SH, vm=1, type=3
@@ -323,6 +361,8 @@ class DCMTK_DCMRT_EXPORT DRTIonBlockSequence
         DcmFloatingPointSingle IsocenterToBlockTrayDistance;
         /// MaterialID (300a,00e1) vr=SH, vm=1, type=2
         DcmShortString MaterialID;
+        /// NumberOfBlockSlabItems (300a,0440) vr=IS, vm=1, type=3
+        DcmIntegerString NumberOfBlockSlabItems;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtibs.h
index c350fce..105ab41 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h b/dcmrt/include/dcmtk/dcmrt/seq/drticpds.h
index 6fc504c..5cd017c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonControlPointDeliverySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drticps.h b/dcmrt/include/dcmtk/dcmrt/seq/drticps.h
index 03e3ed6..e13581a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -145,6 +145,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
          */
         OFCondition getCumulativeMetersetWeight(Float64 &value, const unsigned long pos = 0) const;
 
+        /** get ExternalContourEntryPoint (300a,0133)
+         *  @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 getExternalContourEntryPoint(Float32 &value, const unsigned long pos = 0) const;
+
         /** get GantryAngle (300a,011e)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -520,6 +527,13 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
          */
         OFCondition setCumulativeMetersetWeight(const OFString &value, const OFBool check = OFTrue);
 
+        /** set ExternalContourEntryPoint (300a,0133)
+         *  @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 setExternalContourEntryPoint(const Float32 value, const unsigned long pos = 0);
+
         /** set GantryAngle (300a,011e)
          *  @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
@@ -717,6 +731,8 @@ class DCMTK_DCMRT_EXPORT DRTIonControlPointSequence
         DcmIntegerString ControlPointIndex;
         /// CumulativeMetersetWeight (300a,0134) vr=DS, vm=1, type=2
         DcmDecimalString CumulativeMetersetWeight;
+        /// ExternalContourEntryPoint (300a,0133) vr=FL, vm=3, type=3
+        DcmFloatingPointSingle ExternalContourEntryPoint;
         /// GantryAngle (300a,011e) vr=DS, vm=1, type=1C
         DcmDecimalString GantryAngle;
         /// GantryPitchAngle (300a,014a) vr=FL, vm=1, type=2C
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtics.h
index c97c606..653883f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTInstitutionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for InstitutionCodeSequence (0008,0082)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTInstitutionCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiis.h
index 19bdc23..de08f19 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIconImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtipiqs.h
index 648d59d..60405a4 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfPatientIDQualifiersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtircs.h
index 5fc7c21..0cd3969 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonRangeCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiseis.h
index 18e2aec..bc19b3e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIssuerOfServiceEpisodeIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtitts.h
index 41b526d..957209a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiwps.h
index a7528f9..fb5df8b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtiws.h
index 8f76f8e..5e4800c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTIonWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds.h
index 217f2c7..0bd66a7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds6.h
index 2eb3330..45ec9aa 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtlsds7.h
index 62ea3d3..4f57af6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmacds.h
index 38ffb0f..9ebcc72 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmas.h
index 10abeac..040061c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTModifiedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmdrs.h
index 6470bc6..4b6cd50 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmls.h
index 15164f6..3fab93e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTModalityLUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmps.h
index 85b1217..8cb09f2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMACParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmss.h
index 9f5dc94..586f153 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMotionSynchronizationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtmucs.h
index 5e7dfe3..6f73d72 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTMeasurementUnitsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for MeasurementUnitsCodeSequence (0040,08ea)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTMeasurementUnitsCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h b/dcmrt/include/dcmtk/dcmrt/seq/drtoas.h
index 83cba3b..b0de7e0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOriginalAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtois.h b/dcmrt/include/dcmtk/dcmrt/seq/drtois.h
index 9091837..68c33b9 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOperatorIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference 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 getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference 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 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @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
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTOperatorIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtopis.h
index 2aeeeb6..c1f068f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOtherPatientIDsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtos.h
index 5571074..eee419e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTOverrideSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpbcs.h
index 5edfd0e..a044d02 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientBreedCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PatientBreedCodeSequence (0010,2293)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPatientBreedCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpcs.h
index 7e036ae..06942a6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ProcedureCodeSequence (0008,1032)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTProcedureCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpcxs.h
index 9bbc1a7..db5baa5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTProtocolContextSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
similarity index 76%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
index b445293..7cbca8a 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
@@ -1,29 +1,30 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
+ *  Header file for class DRTPrivateDataElementCharacteristicsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
-#ifndef DRTRSHS6_H
-#define DRTRSHS6_H
+#ifndef DRTPDECS_H
+#define DRTPDECS_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/drtdias.h"   // for DeidentificationActionSequence
 
 
-/** Interface class for RangeShifterSettingsSequence (300a,0360) in RTIonBeamsModule
+/** Interface class for PrivateDataElementCharacteristicsSequence (0008,0300)
  */
-class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
+class DCMTK_DCMRT_EXPORT DRTPrivateDataElementCharacteristicsSequence
   : protected DRTTypes
 {
 
@@ -90,84 +91,93 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
 
       // --- get DICOM attribute values ---
 
-        /** get IsocenterToRangeShifterDistance (300a,0364)
-         *  @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;
-
-        /** get RangeShifterSetting (300a,0362)
+        /** get BlockIdentifyingInformationStatus (0008,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
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition getRangeShifterSetting(OFString &value, const signed long pos = 0) const;
+        OFCondition getBlockIdentifyingInformationStatus(OFString &value, const signed long pos = 0) const;
 
-        /** get RangeShifterWaterEquivalentThickness (300a,0366)
+        /** get NonidentifyingPrivateElements (0008,0304)
          *  @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 getNonidentifyingPrivateElements(Uint16 &value, const unsigned long pos = 0) const;
 
-        /** get ReferencedRangeShifterNumber (300c,0100)
+        /** get PrivateCreatorReference (0008,0302)
          *  @param  value  reference 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 getReferencedRangeShifterNumber(OFString &value, const signed long pos = 0) const;
+        OFCondition getPrivateCreatorReference(OFString &value, const signed long pos = 0) const;
 
-        /** get ReferencedRangeShifterNumber (300c,0100)
+        /** get PrivateGroupReference (0008,0301)
          *  @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 getReferencedRangeShifterNumber(Sint32 &value, const unsigned long pos = 0) const;
+        OFCondition getPrivateGroupReference(Uint16 &value, const unsigned long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get DeidentificationActionSequence (0008,0305)
+         *  @return reference to sequence element
+         */
+        DRTDeidentificationActionSequence &getDeidentificationActionSequence()
+            { return DeidentificationActionSequence; }
+
+        /** get DeidentificationActionSequence (0008,0305)
+         *  @return const reference to sequence element
+         */
+        const DRTDeidentificationActionSequence &getDeidentificationActionSequence() const
+            { return DeidentificationActionSequence; }
 
       // --- set DICOM attribute values ---
 
-        /** set IsocenterToRangeShifterDistance (300a,0364)
+        /** set BlockIdentifyingInformationStatus (0008,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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setBlockIdentifyingInformationStatus(const OFString &value, const OFBool check = OFTrue);
+
+        /** set NonidentifyingPrivateElements (0008,0304)
          *  @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=1-n
          *  @return status, EC_Normal if successful, an error code otherwise
          */
-        OFCondition setIsocenterToRangeShifterDistance(const Float32 value, const unsigned long pos = 0);
+        OFCondition setNonidentifyingPrivateElements(const Uint16 value, const unsigned long pos = 0);
 
-        /** set RangeShifterSetting (300a,0362)
+        /** set PrivateCreatorReference (0008,0302)
          *  @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 setRangeShifterSetting(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setPrivateCreatorReference(const OFString &value, const OFBool check = OFTrue);
 
-        /** set RangeShifterWaterEquivalentThickness (300a,0366)
+        /** set PrivateGroupReference (0008,0301)
          *  @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 setRangeShifterWaterEquivalentThickness(const Float32 value, const unsigned long pos = 0);
-
-        /** set ReferencedRangeShifterNumber (300c,0100)
-         *  @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
-         */
-        OFCondition setReferencedRangeShifterNumber(const OFString &value, const OFBool check = OFTrue);
+        OFCondition setPrivateGroupReference(const Uint16 value, const unsigned long pos = 0);
 
       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;
+        /// BlockIdentifyingInformationStatus (0008,0303) vr=CS, vm=1, type=1
+        DcmCodeString BlockIdentifyingInformationStatus;
+        /// DeidentificationActionSequence (0008,0305) vr=SQ, vm=1, type=3
+        DRTDeidentificationActionSequence DeidentificationActionSequence;
+        /// NonidentifyingPrivateElements (0008,0304) vr=US, vm=1-n, type=1C
+        DcmUnsignedShort NonidentifyingPrivateElements;
+        /// PrivateCreatorReference (0008,0302) vr=LO, vm=1, type=1
+        DcmLongString PrivateCreatorReference;
+        /// PrivateGroupReference (0008,0301) vr=US, vm=1, type=1
+        DcmUnsignedShort PrivateGroupReference;
 
     };
 
@@ -176,21 +186,21 @@ class DCMTK_DCMRT_EXPORT DRTRangeShifterSettingsSequenceInRTIonBeamsModule
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const OFBool emptyDefaultSequence = OFFalse);
+    DRTPrivateDataElementCharacteristicsSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
+    DRTPrivateDataElementCharacteristicsSequence(const DRTPrivateDataElementCharacteristicsSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTRangeShifterSettingsSequenceInRTIonBeamsModule();
+    virtual ~DRTPrivateDataElementCharacteristicsSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
      */
-    DRTRangeShifterSettingsSequenceInRTIonBeamsModule &operator=(const DRTRangeShifterSettingsSequenceInRTIonBeamsModule &copy);
+    DRTPrivateDataElementCharacteristicsSequence &operator=(const DRTPrivateDataElementCharacteristicsSequence &copy);
 
   // --- general methods ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpfms.h
index 517b2ec..6a2c744 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPrimaryFluenceModeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpics.h
index 2424ab3..1837914 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPersonIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PersonIdentificationCodeSequence (0040,1101)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPersonIdentificationCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtporcs.h
index c218d0e..3f60799 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPurposeOfReferenceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PurposeOfReferenceCodeSequence (0040,a170)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPurposeOfReferenceCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtporis.h
index bf19f16..c320ab3 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPhysiciansOfRecordIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference 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 getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference 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 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @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
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansOfRecordIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtppcs.h
index 03a6d40..61d2314 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPerformedProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 #include "dcmtk/dcmrt/seq/drtpcxs.h"   // for ProtocolContextSequence
 
 
@@ -161,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -168,8 +176,34 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
         /** get ProtocolContextSequence (0040,0440)
          *  @return reference to sequence element
          */
@@ -254,6 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -261,6 +302,20 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -268,9 +323,9 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -286,10 +341,18 @@ class DCMTK_DCMRT_EXPORT DRTPerformedProtocolCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
         /// ProtocolContextSequence (0040,0440) vr=SQ, vm=1, type=3
         DRTProtocolContextSequence ProtocolContextSequence;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtprsis.h
index a560793..77a56c7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPhysiciansReadingStudyIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference 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 getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference 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 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @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
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTPhysiciansReadingStudyIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpscs.h
index 6f4ba68..4e449dd 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSpeciesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PatientSpeciesCodeSequence (0010,2202)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPatientSpeciesCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpsics.h
index 46cb679..4b78266 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSizeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for PatientSizeCodeSequence (0010,1021)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTPatientSizeCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpss.h
index 541893b..8686840 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPatientSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpsss.h
index 91b1607..2d03e6c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPredecessorStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtpvis.h
index 6926f5a..b0ec587 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTPlannedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h b/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
similarity index 97%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
index f96f3e8..510cac7 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtcims.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTContentItemModifierSequence
+ *  Header file for class DRTQuantityDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
-#ifndef DRTCIMS_H
-#define DRTCIMS_H
+#ifndef DRTQDS_H
+#define DRTQDS_H
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
@@ -25,9 +25,9 @@
 #include "dcmtk/dcmrt/seq/drtrsos.h"   // for ReferencedSOPSequence
 
 
-/** Interface class for ContentItemModifierSequence (0040,0441)
+/** Interface class for QuantityDefinitionSequence (0040,9220)
  */
-class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
+class DCMTK_DCMRT_EXPORT DRTQuantityDefinitionSequence
   : protected DRTTypes
 {
 
@@ -356,21 +356,21 @@ class DCMTK_DCMRT_EXPORT DRTContentItemModifierSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTContentItemModifierSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTQuantityDefinitionSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTContentItemModifierSequence(const DRTContentItemModifierSequence &copy);
+    DRTQuantityDefinitionSequence(const DRTQuantityDefinitionSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTContentItemModifierSequence();
+    virtual ~DRTQuantityDefinitionSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
      */
-    DRTContentItemModifierSequence &operator=(const DRTContentItemModifierSequence &copy);
+    DRTQuantityDefinitionSequence &operator=(const DRTQuantityDefinitionSequence &copy);
 
   // --- general methods ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtras.h b/dcmrt/include/dcmtk/dcmrt/seq/drtras.h
index 681d262..93c3fb5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas2.h
index fadcc95..cd7017b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbas8.h
index 934aa5b..9bd023c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbls.h
index 69924ab..2fe4014 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos1.h
index be5681a..ddf9cd5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos6.h
index db2c780..50524c8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbos7.h
index 3d91181..2f63cf4 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs2.h
index cc048d5..ff39330 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs4.h
index 215f533..4eb30e6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrbs8.h
index 034c158..335d75e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcdrs.h
index ca185f0..8928e89 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcos.h
index 7cbe4ac..eba6728 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcps.h
index 2587dcc..9f1e496 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrcs.h
index b13309a..d24f3e9 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -105,6 +105,20 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
          */
         OFCondition getROIDisplayColor(Sint32 &value, const unsigned long pos = 0) const;
 
+        /** get RecommendedDisplayCIELabValue (0062,000d)
+         *  @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;
+
+        /** get RecommendedDisplayGrayscaleValue (0062,000c)
+         *  @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;
+
         /** 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), -1 for all components
@@ -142,6 +156,20 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
          */
         OFCondition setROIDisplayColor(const OFString &value, const OFBool check = OFTrue);
 
+        /** set RecommendedDisplayCIELabValue (0062,000d)
+         *  @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 setRecommendedDisplayCIELabValue(const Uint16 value, const unsigned long pos = 0);
+
+        /** set RecommendedDisplayGrayscaleValue (0062,000c)
+         *  @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 setRecommendedDisplayGrayscaleValue(const Uint16 value, const unsigned long pos = 0);
+
         /** set ReferencedROINumber (3006,0084)
          *  @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
@@ -158,6 +186,10 @@ class DCMTK_DCMRT_EXPORT DRTROIContourSequence
         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;
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdros.h
index 0b07647..80bfbe0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTDoseROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs1.h
index 987808a..3173828 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs6.h
index 74e7779..1732084 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrdrs8.h
index 8bbf638..119e77f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrds.h
index 149b087..40e6bca 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedDoseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrecs.h
index 511d034..20b6b1e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIElementalCompositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrfgs.h
index 0c8ae11..79fad86 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrfors.h
index c4b587f..514fb87 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedFrameOfReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrics.h
index 5361e91..2aee19a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for RTROIIdentificationCodeSequence (3006,0086)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTRTROIIdentificationCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrims.h
index 44ea3ee..c5cc089 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtris.h b/dcmrt/include/dcmtk/dcmrt/seq/drtris.h
index 6140668..e02c599 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrlsds.h
index ee9c34f..c802d6d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmdrs.h
index c8bf123..b8e7da6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrms.h
index a28fae0..f45f87e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss6.h
index 05e6170..9cf6e01 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrmss7.h
index 6abee71..f0356b7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpcs.h
index 7a07df0..75b8e93 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for RequestedProcedureCodeSequence (0032,1064)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTRequestedProcedureCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpis.h
index c87c406..4f466b1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferringPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -113,6 +113,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
          */
         OFCondition getPersonAddress(OFString &value, const signed long pos = 0) const;
 
+        /** get PersonTelecomInformation (0040,1104)
+         *  @param  value  reference 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 getPersonTelecomInformation(OFString &value, const signed long pos = 0) const;
+
         /** get PersonTelephoneNumbers (0040,1103)
          *  @param  value  reference 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 +176,13 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
          */
         OFCondition setPersonAddress(const OFString &value, const OFBool check = OFTrue);
 
+        /** set PersonTelecomInformation (0040,1104)
+         *  @param  value  value to be set (single value only) or "" for no value
+         *  @param  check  check 'value' for conformance with VR (LT) and VM (1) if enabled
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setPersonTelecomInformation(const OFString &value, const OFBool check = OFTrue);
+
         /** set PersonTelephoneNumbers (0040,1103)
          *  @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
@@ -191,6 +205,8 @@ class DCMTK_DCMRT_EXPORT DRTReferringPhysicianIdentificationSequence
         DcmShortText PersonAddress;
         /// PersonIdentificationCodeSequence (0040,1101) vr=SQ, vm=1, type=1
         DRTPersonIdentificationCodeSequence PersonIdentificationCodeSequence;
+        /// PersonTelecomInformation (0040,1104) vr=LT, vm=1, type=3
+        DcmLongText PersonTelecomInformation;
         /// PersonTelephoneNumbers (0040,1103) vr=LO, vm=1-n, type=3
         DcmLongString PersonTelephoneNumbers;
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrppcs.h
index 8a598f4..165744d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReasonForPerformedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ReasonForPerformedProcedureCodeSequence (0040,1012)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTReasonForPerformedProcedureCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpphs.h
index 5415659..d726488 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPatientPhotoSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 #include "dcmtk/dcmrt/seq/drtdimrs.h"  // for DICOMMediaRetrievalSequence
 #include "dcmtk/dcmrt/seq/drtdirs.h"   // for DICOMRetrievalSequence
 #include "dcmtk/dcmrt/seq/drtrsos.h"   // for ReferencedSOPSequence
+#include "dcmtk/dcmrt/seq/drtwrsrs.h"  // for WADORSRetrievalSequence
 #include "dcmtk/dcmrt/seq/drtwrs.h"    // for WADORetrievalSequence
 #include "dcmtk/dcmrt/seq/drtxrs.h"    // for XDSRetrievalSequence
 
@@ -154,6 +155,18 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
         const DRTReferencedSOPSequence &getReferencedSOPSequence() const
             { return ReferencedSOPSequence; }
 
+        /** get WADORSRetrievalSequence (0040,e025)
+         *  @return reference to sequence element
+         */
+        DRTWADORSRetrievalSequence &getWADORSRetrievalSequence()
+            { return WADORSRetrievalSequence; }
+
+        /** get WADORSRetrievalSequence (0040,e025)
+         *  @return const reference to sequence element
+         */
+        const DRTWADORSRetrievalSequence &getWADORSRetrievalSequence() const
+            { return WADORSRetrievalSequence; }
+
         /** get WADORetrievalSequence (0040,e023)
          *  @return reference to sequence element
          */
@@ -218,6 +231,8 @@ class DCMTK_DCMRT_EXPORT DRTReferencedPatientPhotoSequence
         DcmUniqueIdentifier StudyInstanceUID;
         /// TypeOfInstances (0040,e020) vr=CS, vm=1, type=1
         DcmCodeString TypeOfInstances;
+        /// WADORSRetrievalSequence (0040,e025) vr=SQ, vm=1, type=1C
+        DRTWADORSRetrievalSequence WADORSRetrievalSequence;
         /// WADORetrievalSequence (0040,e023) vr=SQ, vm=1, type=1C
         DRTWADORetrievalSequence WADORetrievalSequence;
         /// XDSRetrievalSequence (0040,e024) vr=SQ, vm=1, type=1C
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrpps.h
index fd49083..193865c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTROIPhysicalPropertiesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrppss.h
index 7a2464d..7d24177 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPerformedProcedureStepSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrps.h
index 6b1d61b..921b614 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedPatientSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris1.h
index 8c0f2ce..ac4456b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris6.h
index 31842d6..ffd2638 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrris9.h
index f0f02e7..08e660a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrms.h
index 51d9e45..d6bbcf5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrros.h
index 6b2cd86..e2c9b7f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrpcs.h
index ea42bbb..2b34845 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReasonForRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for ReasonForRequestedProcedureCodeSequence (0040,100a)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTReasonForRequestedProcedureCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrros.h
index ebb0abd..d37493c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRelatedRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrs.h
index 83bdeca..471d72f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTRelatedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrshs.h
index 5f6a9e9..bb9f495 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps.h
index cba2380..0b9a7ec 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps3.h
index cc3549c..73272e9 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps4.h
index 7617b17..7e5706f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrrtps5.h
index a212069..db4fe1f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedRTPlanSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrscs.h
index 19a9f90..4ee8114 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRequestingServiceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for RequestingServiceCodeSequence (0032,1034)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTRequestingServiceCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsers.h
index cb28b07..a0e546e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrses.h
index 057206f..b6aabfd 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs.h
index 86c552b..e7f5d44 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs6.h
index b445293..7476aaf 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrshs7.h
index e8a81f2..51d0ec0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsis.h
index 60359ac..cc41a4f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSetupImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsns.h
index 8a22dd7..6339f1e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsos.h
index 1c7d6b9..31275ea 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSOPSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsrs.h
index c35f0bf..40fd303 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedSpatialRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrss.h
index 13f81aa..c8bb63c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsss.h
index 948bc9e..4bff060 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrsts.h
index c5b1497..524f0aa 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs2.h
index 274dc95..0697321 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrtrs4.h
index dd6ad29..2a18110 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrvis.h
index 370cf5f..61a716f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTReferencedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrws.h
index a5bc8f2..1d1e6ff 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRecordedWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h b/dcmrt/include/dcmtk/dcmrt/seq/drtrwvms.h
index a773b0b..b9f9037 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTRealWorldValueMappingSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtmucs.h"   // for MeasurementUnitsCodeSequence
+#include "dcmtk/dcmrt/seq/drtqds.h"    // for QuantityDefinitionSequence
 
 
 /** Interface class for RealWorldValueMappingSequence (0040,9096)
@@ -154,6 +155,18 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
         const DRTMeasurementUnitsCodeSequence &getMeasurementUnitsCodeSequence() const
             { return MeasurementUnitsCodeSequence; }
 
+        /** get QuantityDefinitionSequence (0040,9220)
+         *  @return reference to sequence element
+         */
+        DRTQuantityDefinitionSequence &getQuantityDefinitionSequence()
+            { return QuantityDefinitionSequence; }
+
+        /** get QuantityDefinitionSequence (0040,9220)
+         *  @return const reference to sequence element
+         */
+        const DRTQuantityDefinitionSequence &getQuantityDefinitionSequence() const
+            { return QuantityDefinitionSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set LUTExplanation (0028,3003)
@@ -216,6 +229,8 @@ class DCMTK_DCMRT_EXPORT DRTRealWorldValueMappingSequence
         DcmShortString LUTLabel;
         /// MeasurementUnitsCodeSequence (0040,08ea) vr=SQ, vm=1, type=1
         DRTMeasurementUnitsCodeSequence MeasurementUnitsCodeSequence;
+        /// QuantityDefinitionSequence (0040,9220) vr=SQ, vm=1, type=3
+        DRTQuantityDefinitionSequence QuantityDefinitionSequence;
         /// RealWorldValueFirstValueMapped (0040,9216) vr=US/SS, vm=1, type=1
         DcmUnsignedShort RealWorldValueFirstValueMapped;
         /// RealWorldValueIntercept (0040,9224) vr=FD, vm=1, type=1C
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h b/dcmrt/include/dcmtk/dcmrt/seq/drtscris.h
index a48d844..70c5a4c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStudiesContainingOtherReferencedInstancesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsdcs.h
index 141f6dd..52646b8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSeriesDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for SeriesDescriptionCodeSequence (0008,103f)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTSeriesDescriptionCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsds.h
index 7c12dc6..06db62c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSetupDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h b/dcmrt/include/dcmtk/dcmrt/seq/drtshds.h
index 5597715..a66db0d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTShieldingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsis.h
index 2057dfc..967bda6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h b/dcmrt/include/dcmtk/dcmrt/seq/drtsns.h
index 0f7c06d..db03a31 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtspccs.h
index 1d70487..6ec77c8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSegmentedPropertyCategoryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 
 
 /** Interface class for SegmentedPropertyCategoryCodeSequence (0062,0003)
@@ -160,6 +161,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -167,6 +175,34 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
+      // --- get DICOM sequence attributes ---
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
       // --- set DICOM attribute values ---
 
         /** set CodeMeaning (0008,0104)
@@ -239,6 +275,13 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -246,6 +289,20 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -253,9 +310,9 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -271,8 +328,16 @@ class DCMTK_DCMRT_EXPORT DRTSegmentedPropertyCategoryCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtspcs.h
index 94774f8..075109f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTScheduledProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -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/drtecs.h"    // for EquivalentCodeSequence
 #include "dcmtk/dcmrt/seq/drtpcxs.h"   // for ProtocolContextSequence
 
 
@@ -161,6 +162,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -168,8 +176,34 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         OFCondition getMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition getURNCodeValue(OFString &value, const signed long pos = 0) const;
+
       // --- get DICOM sequence attributes ---
 
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return reference to sequence element
+         */
+        DRTEquivalentCodeSequence &getEquivalentCodeSequence()
+            { return EquivalentCodeSequence; }
+
+        /** get EquivalentCodeSequence (0008,0121)
+         *  @return const reference to sequence element
+         */
+        const DRTEquivalentCodeSequence &getEquivalentCodeSequence() const
+            { return EquivalentCodeSequence; }
+
         /** get ProtocolContextSequence (0040,0440)
          *  @return reference to sequence element
          */
@@ -254,6 +288,13 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        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
@@ -261,6 +302,20 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
          */
         OFCondition setMappingResource(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
+         *  @return status, EC_Normal if successful, an error code otherwise
+         */
+        OFCondition setURNCodeValue(const OFString &value, const OFBool check = OFTrue);
+
       private:
 
         /// internal flag used to mark the empty default item
@@ -268,9 +323,9 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
 
         /// CodeMeaning (0008,0104) vr=LO, vm=1, type=1
         DcmLongString CodeMeaning;
-        /// CodeValue (0008,0100) vr=SH, vm=1, type=1
+        /// CodeValue (0008,0100) vr=SH, vm=1, type=1C
         DcmShortString CodeValue;
-        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1
+        /// CodingSchemeDesignator (0008,0102) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeDesignator;
         /// CodingSchemeVersion (0008,0103) vr=SH, vm=1, type=1C
         DcmShortString CodingSchemeVersion;
@@ -286,10 +341,18 @@ class DCMTK_DCMRT_EXPORT DRTScheduledProtocolCodeSequence
         DcmCodeString ContextIdentifier;
         /// ContextUID (0008,0117) vr=UI, vm=1, type=3
         DcmUniqueIdentifier ContextUID;
+        /// EquivalentCodeSequence (0008,0121) vr=SQ, vm=1, type=3
+        DRTEquivalentCodeSequence EquivalentCodeSequence;
+        /// LongCodeValue (0008,0119) vr=UC, vm=1, type=1C
+        DcmUnlimitedCharacters LongCodeValue;
         /// MappingResource (0008,0105) vr=CS, vm=1, type=1C
         DcmCodeString MappingResource;
+        /// MappingResourceUID (0008,0118) vr=UI, vm=1, type=3
+        DcmUniqueIdentifier MappingResourceUID;
         /// ProtocolContextSequence (0040,0440) vr=SQ, vm=1, type=3
         DRTProtocolContextSequence ProtocolContextSequence;
+        /// URNCodeValue (0008,0120) vr=UR, vm=1, type=1C
+        DcmUniversalResourceIdentifierOrLocator URNCodeValue;
 
     };
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtss.h b/dcmrt/include/dcmtk/dcmrt/seq/drtss.h
index af8d824..418ba83 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtssrs.h
index 3bfac5e..5c87802 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTStructureSetROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms0.h
index 4fe2110..d226e57 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h b/dcmrt/include/dcmtk/dcmrt/seq/drttms9.h
index 7e38c56..f05b97a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h b/dcmrt/include/dcmtk/dcmrt/seq/drttscds.h
index 1d1e593..e021480 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h b/dcmrt/include/dcmtk/dcmrt/seq/drttsibs.h
index b267b34..a76b007 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSessionIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h b/dcmrt/include/dcmtk/dcmrt/seq/drttsmds.h
index 9f72066..6bab8b3 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drttts.h b/dcmrt/include/dcmtk/dcmrt/seq/drttts.h
index f707f6f..c3073b3 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h b/dcmrt/include/dcmtk/dcmrt/seq/drtvls.h
index a13b76d..c2374d6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTVOILUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwps.h
index 18fbf0a..62fcd56 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
index dcd0cf5..e1c2a36 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWADORetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
similarity index 91%
copy from dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
copy to dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
index dcd0cf5..964ba62 100644
--- a/dcmrt/include/dcmtk/dcmrt/seq/drtwrs.h
+++ b/dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
@@ -1,19 +1,19 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class DRTWADORetrievalSequence
+ *  Header file for class DRTWADORSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
-#ifndef DRTWRS_H
-#define DRTWRS_H
+#ifndef DRTWRSRS_H
+#define DRTWRSRS_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 WADORetrievalSequence (0040,e023)
+/** Interface class for WADORSRetrievalSequence (0040,e025)
  */
-class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
+class DCMTK_DCMRT_EXPORT DRTWADORSRetrievalSequence
   : protected DRTTypes
 {
 
@@ -90,29 +90,29 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
 
       // --- get DICOM attribute values ---
 
-        /** get RetrieveURI (0040,e010)
+        /** get RetrieveURL (0008,1190)
          *  @param  value  reference 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 getRetrieveURI(OFString &value, const signed long pos = 0) const;
+        OFCondition getRetrieveURL(OFString &value, const signed long pos = 0) const;
 
       // --- set DICOM attribute values ---
 
-        /** set RetrieveURI (0040,e010)
+        /** set RetrieveURL (0008,1190)
          *  @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);
+        OFCondition setRetrieveURL(const OFString &value, const OFBool check = OFTrue);
 
       private:
 
         /// internal flag used to mark the empty default item
         /*const*/ OFBool EmptyDefaultItem;
 
-        /// RetrieveURI (0040,e010) vr=UR, vm=1, type=1
-        DcmUniversalResourceIdentifierOrLocator RetrieveURI;
+        /// RetrieveURL (0008,1190) vr=UR, vm=1, type=1
+        DcmUniversalResourceIdentifierOrLocator RetrieveURL;
 
     };
 
@@ -121,21 +121,21 @@ class DCMTK_DCMRT_EXPORT DRTWADORetrievalSequence
     /** (default) constructor
      *  @param emptyDefaultSequence internal flag used to mark the empty default sequence
      */
-    DRTWADORetrievalSequence(const OFBool emptyDefaultSequence = OFFalse);
+    DRTWADORSRetrievalSequence(const OFBool emptyDefaultSequence = OFFalse);
 
     /** copy constructor
      *  @param copy sequence object to be copied
      */
-    DRTWADORetrievalSequence(const DRTWADORetrievalSequence &copy);
+    DRTWADORSRetrievalSequence(const DRTWADORSRetrievalSequence &copy);
 
     /** destructor
      */
-    virtual ~DRTWADORetrievalSequence();
+    virtual ~DRTWADORSRetrievalSequence();
 
     /** assigment operator
      *  @param copy sequence object to be copied
      */
-    DRTWADORetrievalSequence &operator=(const DRTWADORetrievalSequence &copy);
+    DRTWADORSRetrievalSequence &operator=(const DRTWADORSRetrievalSequence &copy);
 
   // --- general methods ---
 
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtws.h b/dcmrt/include/dcmtk/dcmrt/seq/drtws.h
index b24815e..215e57c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -97,6 +97,20 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
          */
         OFCondition getAccessoryCode(OFString &value, const signed long pos = 0) const;
 
+        /** get EffectiveWedgeAngle (300a,00de)
+         *  @param  value  reference 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 getEffectiveWedgeAngle(OFString &value, const signed long pos = 0) const;
+
+        /** get EffectiveWedgeAngle (300a,00de)
+         *  @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 getEffectiveWedgeAngle(Float64 &value, const unsigned long pos = 0) const;
+
         /** get SourceToWedgeTrayDistance (300a,00da)
          *  @param  value  reference to variable in which the value should be stored
          *  @param  pos    index of the value to get (0..vm-1), -1 for all components
@@ -190,6 +204,13 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
          */
         OFCondition setAccessoryCode(const OFString &value, const OFBool check = OFTrue);
 
+        /** set EffectiveWedgeAngle (300a,00de)
+         *  @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 setEffectiveWedgeAngle(const OFString &value, const OFBool check = OFTrue);
+
         /** set SourceToWedgeTrayDistance (300a,00da)
          *  @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
@@ -246,6 +267,8 @@ class DCMTK_DCMRT_EXPORT DRTWedgeSequence
 
         /// AccessoryCode (300a,00f9) vr=LO, vm=1, type=3
         DcmLongString AccessoryCode;
+        /// EffectiveWedgeAngle (300a,00de) vr=DS, vm=1, type=3
+        DcmDecimalString EffectiveWedgeAngle;
         /// SourceToWedgeTrayDistance (300a,00da) vr=DS, vm=1, type=3
         DcmDecimalString SourceToWedgeTrayDistance;
         /// WedgeAngle (300a,00d5) vr=IS, vm=1, type=2
diff --git a/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h b/dcmrt/include/dcmtk/dcmrt/seq/drtxrs.h
index 5d0a40c..162768d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class DRTXDSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/CMakeLists.txt b/dcmrt/libsrc/CMakeLists.txt
index 485be12..c0447c3 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 drtbvcps drtcbars drtccs drtcctus drtcdrs drtces drtchs drtcims drtcis drtcncs drtcos drtcpas drtcps drtcsas drtcs drtcshs drtcsis drtcss drtdcs drtdimc [...]
+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_TARGET_LINK_MODULES(dcmrt ofstd oflog dcmdata dcmimgle)
diff --git a/dcmrt/libsrc/Makefile.dep b/dcmrt/libsrc/Makefile.dep
index ff002a8..e85cb72 100644
--- a/dcmrt/libsrc/Makefile.dep
+++ b/dcmrt/libsrc/Makefile.dep
@@ -39,6 +39,8 @@ drmdose.o: drmdose.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/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 \
@@ -109,13 +111,16 @@ drmdose.o: drmdose.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -145,11 +150,14 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.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/drtpcs.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 \
@@ -157,8 +165,10 @@ drmdose.o: drmdose.cc ../../config/include/dcmtk/config/osconfig.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -219,6 +229,8 @@ drmimage.o: drmimage.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/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 \
@@ -289,15 +301,18 @@ drmimage.o: drmimage.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -332,14 +347,18 @@ drmimage.o: drmimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -410,6 +429,8 @@ drmplan.o: drmplan.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/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 \
@@ -480,10 +501,11 @@ drmplan.o: drmplan.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.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/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 \
@@ -502,8 +524,9 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -537,12 +560,15 @@ drmplan.o: drmplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -599,6 +625,8 @@ drmstrct.o: drmstrct.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/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 \
@@ -669,13 +697,16 @@ drmstrct.o: drmstrct.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -702,7 +733,9 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.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/drtpcs.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 \
@@ -717,8 +750,10 @@ drmstrct.o: drmstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrss.h \
@@ -771,6 +806,8 @@ drtaadcs.o: drtaadcs.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/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 \
@@ -841,7 +878,9 @@ drtaadcs.o: drtaadcs.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/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtadcs.o: drtadcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtadcs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -883,6 +922,8 @@ drtadcs.o: drtadcs.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/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 \
@@ -953,7 +994,9 @@ drtadcs.o: drtadcs.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/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtads.o: drtads.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtads.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -995,6 +1038,8 @@ drtads.o: drtads.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/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 \
@@ -1065,7 +1110,9 @@ drtads.o: drtads.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/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtafs.o: drtafs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtafs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -1107,6 +1154,8 @@ drtafs.o: drtafs.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/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 \
@@ -1177,6 +1226,7 @@ drtafs.o: drtafs.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
 drtags.o: drtags.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtags.h \
@@ -1219,6 +1269,8 @@ drtags.o: drtags.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/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 \
@@ -1289,6 +1341,7 @@ drtags.o: drtags.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
 drtajcs.o: drtajcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtajcs.h \
@@ -1331,6 +1384,8 @@ drtajcs.o: drtajcs.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/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 \
@@ -1401,7 +1456,9 @@ drtajcs.o: drtajcs.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/cmdlnarg.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 \
@@ -1443,6 +1500,8 @@ drtarics.o: drtarics.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/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 \
@@ -1513,7 +1572,9 @@ drtarics.o: drtarics.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 \
+ ../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 \
@@ -1556,6 +1617,8 @@ drtas1.o: drtas1.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/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 \
@@ -1626,6 +1689,7 @@ drtas1.o: drtas1.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 \
  ../include/dcmtk/dcmrt/seq/drtags.h
 drtas5.o: drtas5.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1669,6 +1733,8 @@ drtas5.o: drtas5.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/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 \
@@ -1739,6 +1805,7 @@ drtas5.o: drtas5.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 \
  ../include/dcmtk/dcmrt/seq/drtags.h
 drtas6.o: drtas6.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1782,6 +1849,8 @@ drtas6.o: drtas6.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/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 \
@@ -1852,6 +1921,7 @@ drtas6.o: drtas6.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
 drtas7.o: drtas7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtas7.h \
@@ -1894,6 +1964,8 @@ drtas7.o: drtas7.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/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 \
@@ -1964,6 +2036,7 @@ drtas7.o: drtas7.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
 drtass.o: drtass.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtass.h \
@@ -2006,6 +2079,8 @@ drtass.o: drtass.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/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 \
@@ -2076,6 +2151,7 @@ drtass.o: drtass.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 \
  ../include/dcmtk/dcmrt/seq/drtbads.h ../include/dcmtk/dcmrt/seq/drtchs.h \
  ../include/dcmtk/dcmrt/seq/drtbcps.h \
@@ -2123,6 +2199,8 @@ drtbads.o: drtbads.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/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 \
@@ -2193,6 +2271,7 @@ drtbads.o: drtbads.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
 drtbas.o: drtbas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbas.h \
@@ -2235,6 +2314,8 @@ drtbas.o: drtbas.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/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 \
@@ -2305,7 +2386,9 @@ drtbas.o: drtbas.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/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtbcps.o: drtbcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -2347,6 +2430,8 @@ drtbcps.o: drtbcps.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/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 \
@@ -2417,6 +2502,7 @@ drtbcps.o: drtbcps.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 \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h
 drtbl2.o: drtbl2.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2460,6 +2546,8 @@ drtbl2.o: drtbl2.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/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 \
@@ -2530,6 +2618,7 @@ drtbl2.o: drtbl2.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
 drtbl5.o: drtbl5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbl5.h \
@@ -2572,6 +2661,8 @@ drtbl5.o: drtbl5.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/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 \
@@ -2642,6 +2733,7 @@ drtbl5.o: drtbl5.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
 drtbldls.o: drtbldls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbldls.h \
@@ -2684,6 +2776,8 @@ drtbldls.o: drtbldls.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/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 \
@@ -2754,6 +2848,7 @@ drtbldls.o: drtbldls.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
 drtbldps.o: drtbldps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
@@ -2796,6 +2891,8 @@ drtbldps.o: drtbldps.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/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 \
@@ -2866,6 +2963,7 @@ drtbldps.o: drtbldps.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
 drtblds1.o: drtblds1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtblds1.h \
@@ -2908,6 +3006,8 @@ drtblds1.o: drtblds1.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/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 \
@@ -2978,6 +3078,7 @@ drtblds1.o: drtblds1.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
 drtblds5.o: drtblds5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtblds5.h \
@@ -3020,6 +3121,8 @@ drtblds5.o: drtblds5.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/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 \
@@ -3090,6 +3193,7 @@ drtblds5.o: drtblds5.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
 drtblds6.o: drtblds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtblds6.h \
@@ -3132,6 +3236,8 @@ drtblds6.o: drtblds6.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/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 \
@@ -3202,6 +3308,7 @@ drtblds6.o: drtblds6.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
 drtbldts.o: drtbldts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbldts.h \
@@ -3244,6 +3351,8 @@ drtbldts.o: drtbldts.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/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 \
@@ -3314,6 +3423,7 @@ drtbldts.o: drtbldts.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
 drtbrcss.o: drtbrcss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
@@ -3356,6 +3466,8 @@ drtbrcss.o: drtbrcss.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/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 \
@@ -3426,7 +3538,9 @@ drtbrcss.o: drtbrcss.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/cmdlnarg.h
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtbrdrs.o: drtbrdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -3468,6 +3582,8 @@ drtbrdrs.o: drtbrdrs.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/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 \
@@ -3538,6 +3654,7 @@ drtbrdrs.o: drtbrdrs.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
 drtbrs.o: drtbrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrs.h \
@@ -3580,6 +3697,8 @@ drtbrs.o: drtbrs.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/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 \
@@ -3650,8 +3769,10 @@ drtbrs.o: drtbrs.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 \
- ../include/dcmtk/dcmrt/seq/drtbrcss.h
+ ../include/dcmtk/dcmrt/seq/drtbrcss.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
 drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -3693,6 +3814,8 @@ drtbs.o: drtbs.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/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 \
@@ -3763,6 +3886,7 @@ drtbs.o: drtbs.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 \
  ../include/dcmtk/dcmrt/seq/drtas1.h ../include/dcmtk/dcmrt/seq/drtags.h \
  ../include/dcmtk/dcmrt/seq/drtblds1.h \
@@ -3775,8 +3899,8 @@ drtbs.o: drtbs.cc ../../config/include/dcmtk/config/osconfig.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
-drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtbvcps.h \
+drtbss.o: drtbss.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbss.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3816,6 +3940,8 @@ drtbvcps.o: drtbvcps.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/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 \
@@ -3886,9 +4012,10 @@ drtbvcps.o: drtbvcps.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
-drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcbars.h \
+drtbvcps.o: drtbvcps.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtbvcps.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -3928,6 +4055,8 @@ drtcbars.o: drtcbars.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/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 \
@@ -3998,10 +4127,10 @@ drtcbars.o: drtcbars.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/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtads.h
-drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtccs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtcbars.o: drtcbars.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcbars.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4041,6 +4170,8 @@ drtccs.o: drtccs.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/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 \
@@ -4111,9 +4242,11 @@ drtccs.o: drtccs.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/cmdlnarg.h
-drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcctus.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtads.h ../include/dcmtk/dcmrt/seq/drtecs.h
+drtccs.o: drtccs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtccs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4153,6 +4286,8 @@ drtcctus.o: drtcctus.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/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 \
@@ -4223,9 +4358,11 @@ drtcctus.o: drtcctus.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/cmdlnarg.h
-drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcdrs.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h \
+ ../include/dcmtk/dcmrt/seq/drtecs.h
+drtcctus.o: drtcctus.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcctus.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4265,6 +4402,8 @@ drtcdrs.o: drtcdrs.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/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 \
@@ -4335,9 +4474,10 @@ drtcdrs.o: drtcdrs.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
-drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtces.h \
+drtcdrs.o: drtcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtcdrs.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4377,6 +4517,8 @@ drtces.o: drtces.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/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 \
@@ -4447,12 +4589,10 @@ drtces.o: drtces.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/cmdlnarg.h \
- ../include/dcmtk/dcmrt/seq/drtois.h ../include/dcmtk/dcmrt/seq/drtics.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 \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h \
+ ../../dcmdata/include/dcmtk/dcmdata/cmdlnarg.h
+drtces.o: drtces.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtces.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4492,6 +4632,8 @@ drtchs.o: drtchs.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/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 \
@@ -4562,12 +4704,13 @@ drtchs.o: drtchs.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 \
- ../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 \
+ ../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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4607,6 +4750,8 @@ drtcims.o: drtcims.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/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 \
@@ -4677,12 +4822,13 @@ drtcims.o: drtcims.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 \
- ../include/dcmtk/dcmrt/seq/drtccs.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 \
@@ -4722,6 +4868,8 @@ drtcis.o: drtcis.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/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 \
@@ -4792,9 +4940,14 @@ drtcis.o: drtcis.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/cmdlnarg.h
-drtcncs.o: drtcncs.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -4834,6 +4987,8 @@ drtcncs.o: drtcncs.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/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 \
@@ -4904,9 +5059,10 @@ drtcncs.o: drtcncs.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
-drtcos.o: drtcos.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcos.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 \
@@ -4946,6 +5102,8 @@ drtcos.o: drtcos.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/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 \
@@ -5016,9 +5174,11 @@ drtcos.o: drtcos.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/cmdlnarg.h
-drtcpas.o: drtcpas.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcpas.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5058,6 +5218,8 @@ drtcpas.o: drtcpas.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/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 \
@@ -5128,9 +5290,10 @@ drtcpas.o: drtcpas.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
-drtcps.o: drtcps.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcps.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 \
@@ -5170,6 +5333,8 @@ drtcps.o: drtcps.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/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 \
@@ -5240,12 +5405,10 @@ drtcps.o: drtcps.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/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 \
+ ../../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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5285,6 +5448,8 @@ drtcs.o: drtcs.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/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 \
@@ -5355,10 +5520,12 @@ drtcs.o: drtcs.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 \
- ../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/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 \
@@ -5398,6 +5565,8 @@ drtcsas.o: drtcsas.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/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 \
@@ -5468,9 +5637,13 @@ drtcsas.o: drtcsas.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/cmdlnarg.h
-drtcshs.o: drtcshs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcshs.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5510,6 +5683,8 @@ drtcshs.o: drtcshs.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/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 \
@@ -5580,9 +5755,11 @@ drtcshs.o: drtcshs.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/cmdlnarg.h
-drtcsis.o: drtcsis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcsis.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -5622,6 +5799,8 @@ drtcsis.o: drtcsis.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/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 \
@@ -5692,9 +5871,10 @@ drtcsis.o: drtcsis.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
-drtcss.o: drtcss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtcss.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 \
@@ -5734,6 +5914,8 @@ drtcss.o: drtcss.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/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 \
@@ -5804,9 +5986,10 @@ drtcss.o: drtcss.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
-drtdcs.o: drtdcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdcs.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 \
@@ -5846,6 +6029,8 @@ drtdcs.o: drtdcs.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/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 \
@@ -5916,9 +6101,10 @@ drtdcs.o: drtdcs.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
-drtdimcs.o: drtdimcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdimcs.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 \
@@ -5958,6 +6144,8 @@ drtdimcs.o: drtdimcs.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/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 \
@@ -6028,9 +6216,11 @@ drtdimcs.o: drtdimcs.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/cmdlnarg.h
-drtdimrs.o: drtdimrs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdimrs.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6070,6 +6260,8 @@ drtdimrs.o: drtdimrs.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/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 \
@@ -6140,9 +6332,11 @@ drtdimrs.o: drtdimrs.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/cmdlnarg.h
-drtdirs.o: drtdirs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -6182,6 +6376,8 @@ drtdirs.o: drtdirs.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/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 \
@@ -6252,15 +6448,18 @@ drtdirs.o: drtdirs.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
-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 \
@@ -6287,12 +6486,13 @@ 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 \
  ../../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 \
@@ -6363,76 +6563,11 @@ drtdose.o: drtdose.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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/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/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/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 \
@@ -6472,6 +6607,8 @@ drtdrs.o: drtdrs.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/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 \
@@ -6542,9 +6679,10 @@ drtdrs.o: drtdrs.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
-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 \
@@ -6584,6 +6722,8 @@ drtds.o: drtds.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/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 \
@@ -6654,17 +6794,16 @@ drtds.o: drtds.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
-drtdspcs.o: drtdspcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtdspcs.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.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 \
@@ -6691,11 +6830,14 @@ 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 \
  ../../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 \
@@ -6766,16 +6908,438 @@ drtdspcs.o: drtdspcs.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/cmdlnarg.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 \
- ../../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/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/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 \
+ ../../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
+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 \
+ ../../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
+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 \
+ ../../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
+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 \
+ ../../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 \
@@ -6808,6 +7372,8 @@ drtdss.o: drtdss.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/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 \
@@ -6878,8 +7444,10 @@ drtdss.o: drtdss.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 \
- ../include/dcmtk/dcmrt/seq/drtdspcs.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 \
@@ -6921,6 +7489,8 @@ drtdvhs.o: drtdvhs.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/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 \
@@ -6991,6 +7561,7 @@ drtdvhs.o: drtdvhs.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 \
  ../include/dcmtk/dcmrt/seq/drtdvrrs.h
 drtdvrrs.o: drtdvrrs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -7034,6 +7605,8 @@ drtdvrrs.o: drtdvrrs.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/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 \
@@ -7104,6 +7677,7 @@ drtdvrrs.o: drtdvrrs.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
 drteas.o: drteas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drteas.h \
@@ -7146,6 +7720,123 @@ drteas.o: drteas.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/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
+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 \
+ ../../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 \
@@ -7216,6 +7907,7 @@ drteas.o: drteas.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
 drtes.o: drtes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtes.h \
@@ -7258,6 +7950,8 @@ drtes.o: drtes.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/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 \
@@ -7328,6 +8022,7 @@ drtes.o: drtes.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 \
  ../include/dcmtk/dcmrt/seq/drtas5.h ../include/dcmtk/dcmrt/seq/drtags.h \
  ../include/dcmtk/dcmrt/seq/drtblds5.h \
@@ -7374,6 +8069,8 @@ drtfds.o: drtfds.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/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 \
@@ -7444,6 +8141,7 @@ drtfds.o: drtfds.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
 drtfes.o: drtfes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtfes.h \
@@ -7486,6 +8184,8 @@ drtfes.o: drtfes.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/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 \
@@ -7556,6 +8256,7 @@ drtfes.o: drtfes.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
 drtfgs.o: drtfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtfgs.h \
@@ -7598,6 +8299,8 @@ drtfgs.o: drtfgs.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/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 \
@@ -7668,6 +8371,7 @@ drtfgs.o: drtfgs.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 \
  ../include/dcmtk/dcmrt/seq/drtrbs8.h \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h \
@@ -7715,6 +8419,8 @@ drtfgss.o: drtfgss.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/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 \
@@ -7785,6 +8491,7 @@ drtfgss.o: drtfgss.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 \
  ../include/dcmtk/dcmrt/seq/drtfsss.h
 drtfms.o: drtfms.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -7828,6 +8535,8 @@ drtfms.o: drtfms.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/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 \
@@ -7898,6 +8607,7 @@ drtfms.o: drtfms.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
 drtfsss.o: drtfsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtfsss.h \
@@ -7940,6 +8650,8 @@ drtfsss.o: drtfsss.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/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 \
@@ -8010,6 +8722,7 @@ drtfsss.o: drtfsss.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
 drtgas.o: drtgas.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtgas.h \
@@ -8052,6 +8765,8 @@ drtgas.o: drtgas.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/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 \
@@ -8122,6 +8837,7 @@ drtgas.o: drtgas.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
 drthsdrs.o: drthsdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drthsdrs.h \
@@ -8164,6 +8880,8 @@ drthsdrs.o: drthsdrs.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/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 \
@@ -8234,6 +8952,7 @@ drthsdrs.o: drthsdrs.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
 drtiais.o: drtiais.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiais.h \
@@ -8276,6 +8995,8 @@ drtiais.o: drtiais.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/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 \
@@ -8346,6 +9067,7 @@ drtiais.o: drtiais.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
 drtians.o: drtians.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtians.h \
@@ -8388,6 +9110,8 @@ drtians.o: drtians.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/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 \
@@ -8458,6 +9182,7 @@ drtians.o: drtians.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
 drtiblds.o: drtiblds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiblds.h \
@@ -8500,6 +9225,8 @@ drtiblds.o: drtiblds.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/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 \
@@ -8570,6 +9297,7 @@ drtiblds.o: drtiblds.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
 drtibls.o: drtibls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtibls.h \
@@ -8612,6 +9340,8 @@ drtibls.o: drtibls.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/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 \
@@ -8682,7 +9412,9 @@ drtibls.o: drtibls.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -8724,6 +9456,8 @@ drtibs.o: drtibs.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/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 \
@@ -8794,10 +9528,11 @@ drtibs.o: drtibs.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 \
  ../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/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 \
@@ -8853,6 +9588,8 @@ drticpds.o: drticpds.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/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 \
@@ -8923,6 +9660,7 @@ drticpds.o: drticpds.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 \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtcpas.h \
@@ -8971,6 +9709,8 @@ drticps.o: drticps.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/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 \
@@ -9041,6 +9781,7 @@ drticps.o: drticps.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 \
  ../include/dcmtk/dcmrt/seq/drtbldps.h \
  ../include/dcmtk/dcmrt/seq/drtiwps.h \
@@ -9089,6 +9830,8 @@ drtics.o: drtics.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/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 \
@@ -9159,7 +9902,9 @@ drtics.o: drtics.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/cmdlnarg.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 \
@@ -9201,6 +9946,8 @@ drtiis.o: drtiis.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/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 \
@@ -9271,6 +10018,7 @@ drtiis.o: drtiis.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
 drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drtimage.h ../include/dcmtk/dcmrt/drttypes.h \
@@ -9312,6 +10060,8 @@ drtimage.o: drtimage.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/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 \
@@ -9382,15 +10132,18 @@ drtimage.o: drtimage.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h \
  ../include/dcmtk/dcmrt/seq/drtporcs.h \
  ../include/dcmtk/dcmrt/seq/drtcsas.h \
  ../include/dcmtk/dcmrt/seq/drtdimcs.h \
@@ -9425,14 +10178,18 @@ drtimage.o: drtimage.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -9485,6 +10242,8 @@ drtionpl.o: drtionpl.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/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 \
@@ -9555,13 +10314,16 @@ drtionpl.o: drtionpl.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -9577,7 +10339,7 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.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/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 \
@@ -9614,12 +10376,15 @@ drtionpl.o: drtionpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -9672,6 +10437,8 @@ drtiontr.o: drtiontr.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/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 \
@@ -9742,14 +10509,17 @@ drtiontr.o: drtiontr.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -9781,12 +10551,15 @@ drtiontr.o: drtiontr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -9864,6 +10637,8 @@ drtipiqs.o: drtipiqs.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/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 \
@@ -9934,9 +10709,11 @@ drtipiqs.o: drtipiqs.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 \
  ../include/dcmtk/dcmrt/seq/drtaadcs.h \
- ../include/dcmtk/dcmrt/seq/drtafs.h ../include/dcmtk/dcmrt/seq/drtajcs.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 \
@@ -9978,6 +10755,8 @@ drtircs.o: drtircs.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/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 \
@@ -10048,6 +10827,7 @@ drtircs.o: drtircs.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
 drtiseis.o: drtiseis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiseis.h \
@@ -10090,6 +10870,8 @@ drtiseis.o: drtiseis.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/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 \
@@ -10160,6 +10942,7 @@ drtiseis.o: drtiseis.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
 drtitts.o: drtitts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtitts.h \
@@ -10202,6 +10985,8 @@ drtitts.o: drtitts.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/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 \
@@ -10272,6 +11057,7 @@ drtitts.o: drtitts.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 \
  ../include/dcmtk/dcmrt/seq/drtbldts.h
 drtiwps.o: drtiwps.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -10315,6 +11101,8 @@ drtiwps.o: drtiwps.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/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 \
@@ -10385,6 +11173,7 @@ drtiwps.o: drtiwps.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
 drtiws.o: drtiws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtiws.h \
@@ -10427,6 +11216,8 @@ drtiws.o: drtiws.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/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 \
@@ -10497,6 +11288,7 @@ drtiws.o: drtiws.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
 drtlsds.o: drtlsds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtlsds.h \
@@ -10539,6 +11331,8 @@ drtlsds.o: drtlsds.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/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 \
@@ -10609,6 +11403,7 @@ drtlsds.o: drtlsds.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
 drtlsds6.o: drtlsds6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtlsds6.h \
@@ -10651,6 +11446,8 @@ drtlsds6.o: drtlsds6.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/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 \
@@ -10721,6 +11518,7 @@ drtlsds6.o: drtlsds6.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
 drtlsds7.o: drtlsds7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtlsds7.h \
@@ -10763,6 +11561,8 @@ drtlsds7.o: drtlsds7.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/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 \
@@ -10833,6 +11633,7 @@ drtlsds7.o: drtlsds7.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
 drtmacds.o: drtmacds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmacds.h \
@@ -10875,6 +11676,8 @@ drtmacds.o: drtmacds.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/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 \
@@ -10945,8 +11748,9 @@ drtmacds.o: drtmacds.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 \
- ../include/dcmtk/dcmrt/seq/drtcss.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 \
@@ -10988,6 +11792,8 @@ drtmas.o: drtmas.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/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 \
@@ -11058,6 +11864,7 @@ drtmas.o: drtmas.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
 drtmdrs.o: drtmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmdrs.h \
@@ -11100,6 +11907,8 @@ drtmdrs.o: drtmdrs.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/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 \
@@ -11170,6 +11979,7 @@ drtmdrs.o: drtmdrs.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
 drtmls.o: drtmls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmls.h \
@@ -11212,6 +12022,8 @@ drtmls.o: drtmls.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/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 \
@@ -11282,6 +12094,7 @@ drtmls.o: drtmls.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
 drtmps.o: drtmps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmps.h \
@@ -11324,6 +12137,8 @@ drtmps.o: drtmps.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/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 \
@@ -11394,6 +12209,7 @@ 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 \
@@ -11436,6 +12252,8 @@ drtmss.o: drtmss.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/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 \
@@ -11506,6 +12324,7 @@ drtmss.o: drtmss.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
 drtmucs.o: drtmucs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtmucs.h \
@@ -11548,6 +12367,8 @@ drtmucs.o: drtmucs.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/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 \
@@ -11618,7 +12439,9 @@ drtmucs.o: drtmucs.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -11660,6 +12483,8 @@ drtoas.o: drtoas.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/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 \
@@ -11730,6 +12555,7 @@ drtoas.o: drtoas.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 \
  ../include/dcmtk/dcmrt/seq/drtmas.h
 drtois.o: drtois.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -11773,6 +12599,8 @@ drtois.o: drtois.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/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 \
@@ -11843,8 +12671,10 @@ drtois.o: drtois.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 \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -11886,6 +12716,8 @@ drtopis.o: drtopis.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/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 \
@@ -11956,10 +12788,12 @@ drtopis.o: drtopis.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 \
  ../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/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 \
@@ -12001,6 +12835,8 @@ drtos.o: drtos.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/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 \
@@ -12071,6 +12907,7 @@ drtos.o: drtos.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
 drtpbcs.o: drtpbcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpbcs.h \
@@ -12113,6 +12950,8 @@ drtpbcs.o: drtpbcs.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/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 \
@@ -12183,7 +13022,9 @@ drtpbcs.o: drtpbcs.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/cmdlnarg.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 \
@@ -12225,6 +13066,8 @@ drtpcs.o: drtpcs.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/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 \
@@ -12295,7 +13138,9 @@ drtpcs.o: drtpcs.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -12337,6 +13182,8 @@ drtpcxs.o: drtpcxs.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/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 \
@@ -12407,11 +13254,129 @@ drtpcxs.o: drtpcxs.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 \
- ../include/dcmtk/dcmrt/seq/drtccs.h ../include/dcmtk/dcmrt/seq/drtcncs.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 \
+ ../../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/drtdias.h
 drtpfms.o: drtpfms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpfms.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -12453,6 +13418,8 @@ drtpfms.o: drtpfms.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/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 \
@@ -12523,6 +13490,7 @@ drtpfms.o: drtpfms.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
 drtpics.o: drtpics.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtpics.h \
@@ -12565,6 +13533,8 @@ drtpics.o: drtpics.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/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 \
@@ -12635,7 +13605,9 @@ drtpics.o: drtpics.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
@@ -12676,6 +13648,8 @@ drtplan.o: drtplan.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/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 \
@@ -12746,10 +13720,11 @@ drtplan.o: drtplan.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.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/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 \
@@ -12768,8 +13743,9 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -12802,30 +13778,149 @@ drtplan.o: drtplan.cc ../../config/include/dcmtk/config/osconfig.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/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/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/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 \
+ ../../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
+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 \
@@ -12865,6 +13960,8 @@ drtporcs.o: drtporcs.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/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 \
@@ -12935,9 +14032,12 @@ drtporcs.o: drtporcs.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/cmdlnarg.h
-drtporis.o: drtporis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtporis.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -12977,6 +14077,8 @@ drtporis.o: drtporis.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/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 \
@@ -13047,10 +14149,15 @@ drtporis.o: drtporis.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 \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.h
-drtppcs.o: drtppcs.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtppcs.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 \
@@ -13090,6 +14197,8 @@ drtppcs.o: drtppcs.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/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 \
@@ -13160,14 +14269,12 @@ drtppcs.o: drtppcs.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 \
- ../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 \
+ ../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 \
@@ -13207,6 +14314,8 @@ drtprsis.o: drtprsis.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/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 \
@@ -13277,10 +14386,11 @@ drtprsis.o: drtprsis.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 \
- ../include/dcmtk/dcmrt/seq/drtics.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/drtecs.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 \
@@ -13320,6 +14430,8 @@ drtpscs.o: drtpscs.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/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 \
@@ -13390,9 +14502,11 @@ drtpscs.o: drtpscs.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/cmdlnarg.h
-drtpsics.o: drtpsics.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpsics.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13432,6 +14546,8 @@ drtpsics.o: drtpsics.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/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 \
@@ -13502,9 +14618,13 @@ drtpsics.o: drtpsics.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/cmdlnarg.h
-drtpss.o: drtpss.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpss.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftypes.h \
  ../../ofstd/include/dcmtk/ofstd/ofdefine.h \
@@ -13544,6 +14664,8 @@ drtpss.o: drtpss.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/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 \
@@ -13614,12 +14736,10 @@ drtpss.o: drtpss.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/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/dcvrol.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 \
@@ -13659,6 +14779,8 @@ drtpsss.o: drtpsss.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/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 \
@@ -13729,9 +14851,10 @@ drtpsss.o: drtpsss.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
-drtpvis.o: drtpvis.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmrt/seq/drtpvis.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 \
@@ -13771,6 +14894,8 @@ drtpvis.o: drtpvis.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/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 \
@@ -13841,7 +14966,12 @@ drtpvis.o: drtpvis.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -13883,6 +15013,8 @@ drtras.o: drtras.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/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 \
@@ -13953,10 +15085,12 @@ drtras.o: drtras.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 \
  ../include/dcmtk/dcmrt/seq/drtians.h \
  ../include/dcmtk/dcmrt/seq/drtrrpcs.h \
- ../include/dcmtk/dcmrt/seq/drtrss.h ../include/dcmtk/dcmrt/seq/drtrpcs.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 \
@@ -14004,6 +15138,8 @@ drtrbas2.o: drtrbas2.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/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 \
@@ -14074,6 +15210,7 @@ drtrbas2.o: drtrbas2.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
 drtrbas8.o: drtrbas8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbas8.h \
@@ -14116,6 +15253,8 @@ drtrbas8.o: drtrbas8.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/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 \
@@ -14186,6 +15325,7 @@ drtrbas8.o: drtrbas8.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
 drtrbls.o: drtrbls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbls.h \
@@ -14228,6 +15368,8 @@ drtrbls.o: drtrbls.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/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 \
@@ -14298,6 +15440,7 @@ drtrbls.o: drtrbls.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
 drtrbos1.o: drtrbos1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbos1.h \
@@ -14340,6 +15483,8 @@ drtrbos1.o: drtrbos1.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/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 \
@@ -14410,6 +15555,7 @@ drtrbos1.o: drtrbos1.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
 drtrbos6.o: drtrbos6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbos6.h \
@@ -14452,6 +15598,8 @@ drtrbos6.o: drtrbos6.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/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 \
@@ -14522,6 +15670,7 @@ drtrbos6.o: drtrbos6.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
 drtrbos7.o: drtrbos7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbos7.h \
@@ -14564,6 +15713,8 @@ drtrbos7.o: drtrbos7.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/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 \
@@ -14634,6 +15785,7 @@ drtrbos7.o: drtrbos7.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
 drtrbs2.o: drtrbs2.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrbs2.h \
@@ -14676,6 +15828,8 @@ drtrbs2.o: drtrbs2.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/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 \
@@ -14746,6 +15900,7 @@ drtrbs2.o: drtrbs2.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 \
  ../include/dcmtk/dcmrt/seq/drtrcps.h
 drtrbs4.o: drtrbs4.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -14789,6 +15944,8 @@ drtrbs4.o: drtrbs4.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/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 \
@@ -14859,6 +16016,7 @@ drtrbs4.o: drtrbs4.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 \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h
 drtrbs8.o: drtrbs8.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -14902,6 +16060,8 @@ drtrbs8.o: drtrbs8.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/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 \
@@ -14972,6 +16132,7 @@ drtrbs8.o: drtrbs8.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 \
  ../include/dcmtk/dcmrt/seq/drtbvcps.h
 drtrcdrs.o: drtrcdrs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -15015,6 +16176,8 @@ drtrcdrs.o: drtrcdrs.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/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 \
@@ -15085,6 +16248,7 @@ drtrcdrs.o: drtrcdrs.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
 drtrcos.o: drtrcos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrcos.h \
@@ -15127,6 +16291,8 @@ drtrcos.o: drtrcos.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/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 \
@@ -15197,6 +16363,7 @@ drtrcos.o: drtrcos.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
 drtrcps.o: drtrcps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h \
@@ -15239,6 +16406,8 @@ drtrcps.o: drtrcps.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/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 \
@@ -15309,6 +16478,7 @@ drtrcps.o: drtrcps.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
 drtrcs.o: drtrcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrcs.h \
@@ -15351,6 +16521,8 @@ drtrcs.o: drtrcs.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/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 \
@@ -15421,6 +16593,7 @@ drtrcs.o: drtrcs.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 \
  ../include/dcmtk/dcmrt/seq/drtcs.h ../include/dcmtk/dcmrt/seq/drtcis.h
 drtrdros.o: drtrdros.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -15464,6 +16637,8 @@ drtrdros.o: drtrdros.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/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 \
@@ -15534,6 +16709,7 @@ drtrdros.o: drtrdros.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
 drtrdrs1.o: drtrdrs1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs1.h \
@@ -15576,6 +16752,8 @@ drtrdrs1.o: drtrdrs1.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/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 \
@@ -15646,6 +16824,7 @@ drtrdrs1.o: drtrdrs1.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
 drtrdrs6.o: drtrdrs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs6.h \
@@ -15688,6 +16867,8 @@ drtrdrs6.o: drtrdrs6.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/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 \
@@ -15758,6 +16939,7 @@ drtrdrs6.o: drtrdrs6.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
 drtrdrs8.o: drtrdrs8.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrdrs8.h \
@@ -15800,6 +16982,8 @@ drtrdrs8.o: drtrdrs8.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/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 \
@@ -15870,6 +17054,7 @@ drtrdrs8.o: drtrdrs8.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
 drtrds.o: drtrds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrds.h \
@@ -15912,6 +17097,8 @@ drtrds.o: drtrds.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/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 \
@@ -15982,6 +17169,7 @@ drtrds.o: drtrds.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
 drtrecs.o: drtrecs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrecs.h \
@@ -16024,6 +17212,8 @@ drtrecs.o: drtrecs.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/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 \
@@ -16094,6 +17284,7 @@ drtrecs.o: drtrecs.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
 drtrfgs.o: drtrfgs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
@@ -16136,6 +17327,8 @@ drtrfgs.o: drtrfgs.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/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 \
@@ -16206,6 +17399,7 @@ drtrfgs.o: drtrfgs.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 \
  ../include/dcmtk/dcmrt/seq/drtrbs2.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h \
@@ -16251,6 +17445,8 @@ drtrfors.o: drtrfors.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/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 \
@@ -16321,6 +17517,7 @@ drtrfors.o: drtrfors.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 \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
@@ -16365,6 +17562,8 @@ drtrics.o: drtrics.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/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 \
@@ -16435,7 +17634,9 @@ drtrics.o: drtrics.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -16477,6 +17678,8 @@ drtrims.o: drtrims.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/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 \
@@ -16547,8 +17750,10 @@ drtrims.o: drtrims.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 \
- ../include/dcmtk/dcmrt/seq/drtporcs.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 \
@@ -16590,6 +17795,8 @@ drtris.o: drtris.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/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 \
@@ -16660,8 +17867,10 @@ drtris.o: drtris.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 \
- ../include/dcmtk/dcmrt/seq/drtporcs.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 \
@@ -16703,6 +17912,8 @@ drtrlsds.o: drtrlsds.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/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 \
@@ -16773,6 +17984,7 @@ drtrlsds.o: drtrlsds.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
 drtrmdrs.o: drtrmdrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrmdrs.h \
@@ -16815,6 +18027,8 @@ drtrmdrs.o: drtrmdrs.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/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 \
@@ -16885,6 +18099,7 @@ drtrmdrs.o: drtrmdrs.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
 drtrms.o: drtrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrms.h \
@@ -16927,6 +18142,8 @@ drtrms.o: drtrms.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/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 \
@@ -16997,6 +18214,7 @@ drtrms.o: drtrms.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
 drtrmss6.o: drtrmss6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrmss6.h \
@@ -17039,6 +18257,8 @@ drtrmss6.o: drtrmss6.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/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 \
@@ -17109,6 +18329,7 @@ drtrmss6.o: drtrmss6.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
 drtrmss7.o: drtrmss7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrmss7.h \
@@ -17151,6 +18372,8 @@ drtrmss7.o: drtrmss7.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/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 \
@@ -17221,6 +18444,7 @@ drtrmss7.o: drtrmss7.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
 drtrpcs.o: drtrpcs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrpcs.h \
@@ -17263,6 +18487,8 @@ drtrpcs.o: drtrpcs.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/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 \
@@ -17333,7 +18559,9 @@ drtrpcs.o: drtrpcs.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -17375,6 +18603,8 @@ drtrpis.o: drtrpis.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/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 \
@@ -17445,8 +18675,10 @@ drtrpis.o: drtrpis.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 \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -17488,6 +18720,8 @@ drtrppcs.o: drtrppcs.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/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 \
@@ -17558,7 +18792,9 @@ drtrppcs.o: drtrppcs.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -17600,6 +18836,8 @@ drtrpphs.o: drtrpphs.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/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 \
@@ -17670,11 +18908,13 @@ drtrpphs.o: drtrpphs.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 \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
  ../include/dcmtk/dcmrt/seq/drtdirs.h \
- ../include/dcmtk/dcmrt/seq/drtrsos.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.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 \
@@ -17716,6 +18956,8 @@ drtrpps.o: drtrpps.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/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 \
@@ -17786,6 +19028,7 @@ drtrpps.o: drtrpps.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 \
  ../include/dcmtk/dcmrt/seq/drtrecs.h
 drtrppss.o: drtrppss.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -17829,6 +19072,8 @@ drtrppss.o: drtrppss.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/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 \
@@ -17899,6 +19144,7 @@ drtrppss.o: drtrppss.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
 drtrps.o: drtrps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrps.h \
@@ -17941,6 +19187,8 @@ drtrps.o: drtrps.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/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 \
@@ -18011,6 +19259,7 @@ drtrps.o: drtrps.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
 drtrris1.o: drtrris1.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrris1.h \
@@ -18053,6 +19302,8 @@ drtrris1.o: drtrris1.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/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 \
@@ -18123,6 +19374,7 @@ drtrris1.o: drtrris1.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
 drtrris6.o: drtrris6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrris6.h \
@@ -18165,6 +19417,8 @@ drtrris6.o: drtrris6.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/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 \
@@ -18235,6 +19489,7 @@ drtrris6.o: drtrris6.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
 drtrris9.o: drtrris9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrris9.h \
@@ -18277,6 +19532,8 @@ drtrris9.o: drtrris9.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/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 \
@@ -18347,6 +19604,7 @@ drtrris9.o: drtrris9.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
 drtrrms.o: drtrrms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrms.h \
@@ -18389,6 +19647,8 @@ drtrrms.o: drtrrms.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/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 \
@@ -18459,6 +19719,7 @@ drtrrms.o: drtrrms.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
 drtrros.o: drtrros.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrros.h \
@@ -18501,6 +19762,8 @@ drtrros.o: drtrros.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/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 \
@@ -18571,8 +19834,10 @@ drtrros.o: drtrros.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 \
  ../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 \
@@ -18620,6 +19885,8 @@ drtrrpcs.o: drtrrpcs.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/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 \
@@ -18690,7 +19957,9 @@ drtrrpcs.o: drtrrpcs.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -18732,6 +20001,8 @@ drtrrros.o: drtrrros.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/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 \
@@ -18802,6 +20073,7 @@ drtrrros.o: drtrrros.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
 drtrrs.o: drtrrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrs.h \
@@ -18844,6 +20116,8 @@ drtrrs.o: drtrrs.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/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 \
@@ -18914,6 +20188,7 @@ drtrrs.o: drtrrs.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
 drtrrshs.o: drtrrshs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrshs.h \
@@ -18956,6 +20231,8 @@ drtrrshs.o: drtrrshs.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/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 \
@@ -19026,6 +20303,7 @@ drtrrshs.o: drtrrshs.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
 drtrrtps.o: drtrrtps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps.h \
@@ -19068,6 +20346,8 @@ drtrrtps.o: drtrrtps.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/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 \
@@ -19138,6 +20418,7 @@ drtrrtps.o: drtrrtps.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 \
  ../include/dcmtk/dcmrt/seq/drtrfgs.h \
  ../include/dcmtk/dcmrt/seq/drtrbs2.h \
@@ -19184,6 +20465,8 @@ drtrrtps3.o: drtrrtps3.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/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 \
@@ -19254,6 +20537,7 @@ drtrrtps3.o: drtrrtps3.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
 drtrrtps4.o: drtrrtps4.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps4.h \
@@ -19296,6 +20580,8 @@ drtrrtps4.o: drtrrtps4.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/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 \
@@ -19366,6 +20652,7 @@ drtrrtps4.o: drtrrtps4.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
 drtrrtps5.o: drtrrtps5.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrrtps5.h \
@@ -19408,6 +20695,8 @@ drtrrtps5.o: drtrrtps5.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/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 \
@@ -19478,6 +20767,7 @@ drtrrtps5.o: drtrrtps5.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
 drtrscs.o: drtrscs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrscs.h \
@@ -19520,6 +20810,8 @@ drtrscs.o: drtrscs.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/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 \
@@ -19590,7 +20882,9 @@ drtrscs.o: drtrscs.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -19632,6 +20926,8 @@ drtrsers.o: drtrsers.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/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 \
@@ -19702,9 +20998,11 @@ drtrsers.o: drtrsers.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 \
  ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.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 \
@@ -19746,6 +21044,8 @@ drtrses.o: drtrses.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/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 \
@@ -19816,6 +21116,7 @@ drtrses.o: drtrses.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 \
  ../include/dcmtk/dcmrt/seq/drtcis.h
 drtrshs.o: drtrshs.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -19859,6 +21160,8 @@ drtrshs.o: drtrshs.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/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 \
@@ -19929,6 +21232,7 @@ drtrshs.o: drtrshs.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
 drtrshs6.o: drtrshs6.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrshs6.h \
@@ -19971,6 +21275,8 @@ drtrshs6.o: drtrshs6.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/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 \
@@ -20041,6 +21347,7 @@ drtrshs6.o: drtrshs6.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
 drtrshs7.o: drtrshs7.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrshs7.h \
@@ -20083,6 +21390,8 @@ drtrshs7.o: drtrshs7.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/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 \
@@ -20153,6 +21462,7 @@ drtrshs7.o: drtrshs7.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
 drtrsis.o: drtrsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsis.h \
@@ -20195,6 +21505,8 @@ drtrsis.o: drtrsis.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/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 \
@@ -20265,6 +21577,7 @@ drtrsis.o: drtrsis.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
 drtrsns.o: drtrsns.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsns.h \
@@ -20307,6 +21620,8 @@ drtrsns.o: drtrsns.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/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 \
@@ -20377,6 +21692,7 @@ drtrsns.o: drtrsns.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
 drtrsos.o: drtrsos.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
@@ -20419,6 +21735,8 @@ drtrsos.o: drtrsos.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/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 \
@@ -20489,6 +21807,7 @@ drtrsos.o: drtrsos.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
 drtrsrs.o: drtrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsrs.h \
@@ -20531,6 +21850,8 @@ drtrsrs.o: drtrsrs.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/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 \
@@ -20601,6 +21922,7 @@ drtrsrs.o: drtrsrs.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
 drtrss.o: drtrss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrss.h \
@@ -20643,6 +21965,8 @@ drtrss.o: drtrss.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/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 \
@@ -20713,6 +22037,7 @@ drtrss.o: drtrss.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
 drtrsss.o: drtrsss.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsss.h \
@@ -20755,6 +22080,8 @@ drtrsss.o: drtrsss.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/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 \
@@ -20825,6 +22152,7 @@ drtrsss.o: drtrsss.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
 drtrsts.o: drtrsts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsts.h \
@@ -20867,6 +22195,8 @@ drtrsts.o: drtrsts.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/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 \
@@ -20937,6 +22267,7 @@ drtrsts.o: drtrsts.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 \
  ../include/dcmtk/dcmrt/seq/drtrses.h ../include/dcmtk/dcmrt/seq/drtcis.h
 drtrtrs2.o: drtrtrs2.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -20980,6 +22311,8 @@ drtrtrs2.o: drtrtrs2.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/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 \
@@ -21050,6 +22383,7 @@ drtrtrs2.o: drtrtrs2.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 \
  ../include/dcmtk/dcmrt/seq/drtrbs2.h \
  ../include/dcmtk/dcmrt/seq/drtrcps.h
@@ -21094,6 +22428,8 @@ drtrtrs4.o: drtrtrs4.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/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 \
@@ -21164,6 +22500,7 @@ drtrtrs4.o: drtrtrs4.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
 drtrvis.o: drtrvis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrvis.h \
@@ -21206,6 +22543,8 @@ drtrvis.o: drtrvis.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/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 \
@@ -21276,6 +22615,7 @@ drtrvis.o: drtrvis.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
 drtrws.o: drtrws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrws.h \
@@ -21318,6 +22658,8 @@ drtrws.o: drtrws.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/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 \
@@ -21388,6 +22730,7 @@ drtrws.o: drtrws.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
 drtrwvms.o: drtrwvms.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrwvms.h \
@@ -21430,6 +22773,8 @@ drtrwvms.o: drtrwvms.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/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 \
@@ -21500,8 +22845,12 @@ drtrwvms.o: drtrwvms.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 \
- ../include/dcmtk/dcmrt/seq/drtmucs.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 \
@@ -21543,6 +22892,8 @@ drtscris.o: drtscris.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/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 \
@@ -21613,10 +22964,12 @@ drtscris.o: drtscris.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 \
  ../include/dcmtk/dcmrt/seq/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtris.h \
- ../include/dcmtk/dcmrt/seq/drtporcs.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -21658,6 +23011,8 @@ drtsdcs.o: drtsdcs.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/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 \
@@ -21728,7 +23083,9 @@ drtsdcs.o: drtsdcs.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -21770,6 +23127,8 @@ drtsds.o: drtsds.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/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 \
@@ -21840,6 +23199,7 @@ drtsds.o: drtsds.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
 drtshds.o: drtshds.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtshds.h \
@@ -21882,6 +23242,8 @@ drtshds.o: drtshds.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/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 \
@@ -21952,6 +23314,7 @@ drtshds.o: drtshds.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
 drtsis.o: drtsis.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtsis.h \
@@ -21994,6 +23357,8 @@ drtsis.o: drtsis.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/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 \
@@ -22064,8 +23429,10 @@ drtsis.o: drtsis.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 \
- ../include/dcmtk/dcmrt/seq/drtporcs.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -22107,6 +23474,8 @@ drtsns.o: drtsns.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/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 \
@@ -22177,6 +23546,7 @@ drtsns.o: drtsns.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
 drtspccs.o: drtspccs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtspccs.h \
@@ -22219,6 +23589,8 @@ drtspccs.o: drtspccs.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/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 \
@@ -22289,7 +23661,9 @@ drtspccs.o: drtspccs.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/cmdlnarg.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 \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
@@ -22331,6 +23705,8 @@ drtspcs.o: drtspcs.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/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 \
@@ -22401,9 +23777,10 @@ drtspcs.o: drtspcs.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 \
- ../include/dcmtk/dcmrt/seq/drtpcxs.h ../include/dcmtk/dcmrt/seq/drtccs.h \
- ../include/dcmtk/dcmrt/seq/drtcncs.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
@@ -22448,6 +23825,8 @@ drtss.o: drtss.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/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 \
@@ -22518,6 +23897,7 @@ drtss.o: drtss.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
 drtssrs.o: drtssrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtssrs.h \
@@ -22560,6 +23940,8 @@ drtssrs.o: drtssrs.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/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 \
@@ -22630,8 +24012,9 @@ drtssrs.o: drtssrs.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 \
- ../include/dcmtk/dcmrt/seq/drtdcs.h
+ ../include/dcmtk/dcmrt/seq/drtdcs.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 \
@@ -22672,6 +24055,8 @@ drtstrct.o: drtstrct.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/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 \
@@ -22742,13 +24127,16 @@ drtstrct.o: drtstrct.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -22775,7 +24163,9 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.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/drtpcs.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 \
@@ -22790,8 +24180,10 @@ drtstrct.o: drtstrct.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrses.h \
  ../include/dcmtk/dcmrt/seq/drtrpphs.h \
  ../include/dcmtk/dcmrt/seq/drtdimrs.h \
- ../include/dcmtk/dcmrt/seq/drtdirs.h ../include/dcmtk/dcmrt/seq/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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/drtrsers.h \
  ../include/dcmtk/dcmrt/seq/drtris.h ../include/dcmtk/dcmrt/seq/drtrss.h \
@@ -22844,6 +24236,8 @@ drttms0.o: drttms0.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/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 \
@@ -22914,6 +24308,7 @@ drttms0.o: drttms0.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
 drttms9.o: drttms9.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttms9.h \
@@ -22956,6 +24351,8 @@ drttms9.o: drttms9.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/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 \
@@ -23026,6 +24423,7 @@ drttms9.o: drttms9.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
 drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/drttreat.h ../include/dcmtk/dcmrt/drttypes.h \
@@ -23067,6 +24465,8 @@ drttreat.o: drttreat.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/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 \
@@ -23137,13 +24537,16 @@ drttreat.o: drttreat.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -23171,12 +24574,15 @@ drttreat.o: drttreat.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -23232,6 +24638,8 @@ drttscds.o: drttscds.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/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 \
@@ -23302,6 +24710,7 @@ drttscds.o: drttscds.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
 drttsibs.o: drttsibs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttsibs.h \
@@ -23344,6 +24753,8 @@ drttsibs.o: drttsibs.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/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 \
@@ -23414,6 +24825,7 @@ drttsibs.o: drttsibs.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 \
  ../include/dcmtk/dcmrt/seq/drtas7.h \
  ../include/dcmtk/dcmrt/seq/drtbldls.h \
@@ -23476,6 +24888,8 @@ drttsmds.o: drttsmds.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/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 \
@@ -23546,6 +24960,7 @@ drttsmds.o: drttsmds.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
 drttts.o: drttts.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drttts.h \
@@ -23588,6 +25003,8 @@ drttts.o: drttts.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/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 \
@@ -23658,6 +25075,7 @@ drttts.o: drttts.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 \
  ../include/dcmtk/dcmrt/seq/drtbldts.h
 drttypes.o: drttypes.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -23700,6 +25118,8 @@ drttypes.o: drttypes.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/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 \
@@ -23770,6 +25190,7 @@ drttypes.o: drttypes.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
 drtvls.o: drtvls.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtvls.h \
@@ -23812,6 +25233,8 @@ drtvls.o: drtvls.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/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 \
@@ -23882,6 +25305,7 @@ drtvls.o: drtvls.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
 drtwps.o: drtwps.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwps.h \
@@ -23924,6 +25348,8 @@ drtwps.o: drtwps.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/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 \
@@ -23994,6 +25420,7 @@ drtwps.o: drtwps.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
 drtwrs.o: drtwrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtwrs.h \
@@ -24036,6 +25463,123 @@ drtwrs.o: drtwrs.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/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
+drtwrsrs.o: drtwrsrs.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmrt/seq/drtwrsrs.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 \
@@ -24106,6 +25650,7 @@ drtwrs.o: drtwrs.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
 drtws.o: drtws.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtws.h \
@@ -24148,6 +25693,8 @@ drtws.o: drtws.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/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 \
@@ -24218,6 +25765,7 @@ drtws.o: drtws.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
 drtxrs.o: drtxrs.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtxrs.h \
@@ -24260,6 +25808,8 @@ drtxrs.o: drtxrs.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/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 \
@@ -24330,4 +25880,5 @@ drtxrs.o: drtxrs.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
diff --git a/dcmrt/libsrc/Makefile.in b/dcmrt/libsrc/Makefile.in
index 86eee98..30c5409 100644
--- a/dcmrt/libsrc/Makefile.in
+++ b/dcmrt/libsrc/Makefile.in
@@ -26,32 +26,32 @@ objs = drtdose.o drtimage.o drtplan.o drtstrct.o drttreat.o drtionpl.o drtiontr.
 	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 drtbvcps.o \
-	drtcbars.o drtccs.o drtcctus.o drtcdrs.o drtces.o drtchs.o drtcims.o \
-	drtcis.o drtcncs.o drtcos.o drtcpas.o drtcps.o drtcsas.o drtcs.o \
-	drtcshs.o drtcsis.o drtcss.o drtdcs.o drtdimcs.o drtdimrs.o drtdirs.o \
-	drtdrs.o drtds.o drtdspcs.o drtdss.o drtdvhs.o drtdvrrs.o drteas.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 drtpfms.o \
-	drtpics.o drtporcs.o drtporis.o drtppcs.o drtprsis.o drtpscs.o \
-	drtpsics.o drtpss.o drtpsss.o drtpvis.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 drtws.o drtxrs.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 \
+	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
 
 library = libdcmrt.$(LIBEXT)
 
diff --git a/dcmrt/libsrc/drmdose.cc b/dcmrt/libsrc/drmdose.cc
index 085a720..b922374 100644
--- a/dcmrt/libsrc/drmdose.cc
+++ b/dcmrt/libsrc/drmdose.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012, OFFIS e.V.
+ *  Copyright (C) 2012-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -59,7 +59,7 @@ protected:
     signedT getPixelSigned(Uint32 pixelNumber)
     {
         signedT result;
-        if (pixelData_.getPartialValue(&result, pixelNumber * sizeof(signedT), sizeof(signedT)).bad())
+        if (pixelData_.getPartialValue(&result, OFstatic_cast(Uint32, pixelNumber * sizeof(signedT)), OFstatic_cast(Uint32, sizeof(signedT))).bad())
             return -1;
         return result;
     }
@@ -67,7 +67,7 @@ protected:
     unsignedT getPixelUnsigned(Uint32 pixelNumber)
     {
         unsignedT result;
-        if (pixelData_.getPartialValue(&result, pixelNumber * sizeof(unsignedT), sizeof(unsignedT)).bad())
+        if (pixelData_.getPartialValue(&result, OFstatic_cast(Uint32, pixelNumber * sizeof(unsignedT)), OFstatic_cast(Uint32, sizeof(unsignedT))).bad())
             return -1;
         return result;
     }
@@ -82,7 +82,7 @@ protected:
             cond = EC_MemoryExhausted;
         } else {
             // First, get the "raw" pixel data
-            cond = pixelData_.getPartialValue(tmp, offset * sizeof(signedT), length * sizeof(signedT));
+            cond = pixelData_.getPartialValue(tmp, OFstatic_cast(Uint32, offset * sizeof(signedT)), OFstatic_cast(Uint32, length * sizeof(signedT)));
             if (cond.good()) {
                 result.clear();
                 result.reserve(length);
@@ -105,7 +105,7 @@ protected:
             cond = EC_MemoryExhausted;
         } else {
             // First, get the "raw" pixel data
-            cond = pixelData_.getPartialValue(tmp, offset * sizeof(unsignedT), length * sizeof(unsignedT));
+            cond = pixelData_.getPartialValue(tmp, OFstatic_cast(Uint32, offset * sizeof(unsignedT)), OFstatic_cast(Uint32, length * sizeof(unsignedT)));
             if (cond.good()) {
                 result.clear();
                 result.reserve(length);
diff --git a/dcmrt/libsrc/drtaadcs.cc b/dcmrt/libsrc/drtaadcs.cc
index e223f2f..c25a13a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningAgencyOrDepartmentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item::Item(const OFBool emptyDefault
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTAssigningAgencyOrDepartmentCodeSequence::Item &DRTAssigningAgencyOrDepartment
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTAssigningAgencyOrDepartmentCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTAssigningAgencyOrDepartmentCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::read(DcmItem &item
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::write(DcmItem &ite
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AssigningAgencyOrDepartmentCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AssigningAgencyOrDepartmentCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getContextUID(OFSt
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setContextUID(cons
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTAssigningAgencyOrDepartmentCodeSequence::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 DRTAssigningAgencyOrDepartmentCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAssigningAgencyOrDepartmentCodeSequence::DRTAssigningAgencyOrDepartmentCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtadcs.cc b/dcmrt/libsrc/drtadcs.cc
index 9b28cf1..a350a8e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdmittingDiagnosesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTAdmittingDiagnosesCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTAdmittingDiagnosesCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTAdmittingDiagnosesCodeSequence::Item &DRTAdmittingDiagnosesCodeSequence::Item
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTAdmittingDiagnosesCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTAdmittingDiagnosesCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AdmittingDiagnosesCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AdmittingDiagnosesCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AdmittingDiagnosesCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AdmittingDiagnosesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AdmittingDiagnosesCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AdmittingDiagnosesCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AdmittingDiagnosesCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AdmittingDiagnosesCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AdmittingDiagnosesCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AdmittingDiagnosesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AdmittingDiagnosesCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getContextUID(OFString &val
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setContextUID(const OFStrin
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTAdmittingDiagnosesCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTAdmittingDiagnosesCodeSequence::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 DRTAdmittingDiagnosesCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAdmittingDiagnosesCodeSequence::DRTAdmittingDiagnosesCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtads.cc b/dcmrt/libsrc/drtads.cc
index 81f33cd..b5f23b8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdditionalDrugSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTAdditionalDrugSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTAdditionalDrugSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTAdditionalDrugSequence::Item &DRTAdditionalDrugSequence::Item::operator=(cons
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTAdditionalDrugSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTAdditionalDrugSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTAdditionalDrugSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AdditionalDrugSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AdditionalDrugSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AdditionalDrugSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AdditionalDrugSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AdditionalDrugSequence");
@@ -151,13 +175,17 @@ OFCondition DRTAdditionalDrugSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AdditionalDrugSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AdditionalDrugSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AdditionalDrugSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AdditionalDrugSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AdditionalDrugSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AdditionalDrugSequence");
@@ -257,6 +285,15 @@ OFCondition DRTAdditionalDrugSequence::Item::getContextUID(OFString &value, cons
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdditionalDrugSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTAdditionalDrugSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAdditionalDrugSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdditionalDrugSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTAdditionalDrugSequence::Item::setContextUID(const OFString &value
 }
 
 
+OFCondition DRTAdditionalDrugSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAdditionalDrugSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTAdditionalDrugSequence::Item::setMappingResource(const OFString &
 }
 
 
+OFCondition DRTAdditionalDrugSequence::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 DRTAdditionalDrugSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAdditionalDrugSequence::DRTAdditionalDrugSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtafs.cc b/dcmrt/libsrc/drtafs.cc
index ca1be4a..86fa43f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningFacilitySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtags.cc b/dcmrt/libsrc/drtags.cc
index 0c7da5e..d84ca15 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorGeometrySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtajcs.cc b/dcmrt/libsrc/drtajcs.cc
index 3ed0ce5..17a0ff6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAssigningJurisdictionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTAssigningJurisdictionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTAssigningJurisdictionCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTAssigningJurisdictionCodeSequence::Item &DRTAssigningJurisdictionCodeSequence
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTAssigningJurisdictionCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTAssigningJurisdictionCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AssigningJurisdictionCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "AssigningJurisdictionCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "AssigningJurisdictionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "AssigningJurisdictionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "AssigningJurisdictionCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AssigningJurisdictionCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "AssigningJurisdictionCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "AssigningJurisdictionCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "AssigningJurisdictionCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "AssigningJurisdictionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "AssigningJurisdictionCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::getContextUID(OFString &
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResource(OFStr
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAssigningJurisdictionCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::setContextUID(const OFSt
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAssigningJurisdictionCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTAssigningJurisdictionCodeSequence::Item::setMappingResource(const
 }
 
 
+OFCondition DRTAssigningJurisdictionCodeSequence::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 DRTAssigningJurisdictionCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAssigningJurisdictionCodeSequence::DRTAssigningJurisdictionCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtarics.cc b/dcmrt/libsrc/drtarics.cc
index 6145361..7e6d530 100644
--- a/dcmrt/libsrc/drtarics.cc
+++ b/dcmrt/libsrc/drtarics.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTAdditionalRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,8 +31,12 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item::Item(const OFBool emptyDefau
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
-    PurposeOfReferenceCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+    MappingResourceUID(DCM_MappingResourceUID),
+    PurposeOfReferenceCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -49,8 +53,12 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
-    PurposeOfReferenceCodeSequence(copy.PurposeOfReferenceCodeSequence)
+    MappingResourceUID(copy.MappingResourceUID),
+    PurposeOfReferenceCodeSequence(copy.PurposeOfReferenceCodeSequence),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -75,8 +83,12 @@ DRTAdditionalRTROIIdentificationCodeSequence::Item &DRTAdditionalRTROIIdentifica
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
         PurposeOfReferenceCodeSequence = copy.PurposeOfReferenceCodeSequence;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -91,9 +103,13 @@ void DRTAdditionalRTROIIdentificationCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -109,9 +125,13 @@ OFBool DRTAdditionalRTROIIdentificationCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -133,13 +153,17 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::read(DcmItem &it
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "AdditionalRTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "AdditionalRTROIIdentificationCodeSequence");
+        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");
@@ -157,13 +181,17 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::write(DcmItem &i
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "AdditionalRTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "AdditionalRTROIIdentificationCodeSequence");
+        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");
@@ -264,6 +292,15 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getContextUID(OF
 }
 
 
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -273,6 +310,24 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResour
 }
 
 
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -403,6 +458,19 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setContextUID(co
 }
 
 
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -416,6 +484,32 @@ OFCondition DRTAdditionalRTROIIdentificationCodeSequence::Item::setMappingResour
 }
 
 
+OFCondition DRTAdditionalRTROIIdentificationCodeSequence::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 DRTAdditionalRTROIIdentificationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTAdditionalRTROIIdentificationCodeSequence::DRTAdditionalRTROIIdentificationCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtas1.cc b/dcmrt/libsrc/drtas1.cc
index fee1843..4c06a73 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtas5.cc b/dcmrt/libsrc/drtas5.cc
index 16ee6da..9f4901a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtas6.cc b/dcmrt/libsrc/drtas6.cc
index fa1499d..304bd0a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtas7.cc b/dcmrt/libsrc/drtas7.cc
index 0894f0b..1abdea1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicatorSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtass.cc b/dcmrt/libsrc/drtass.cc
index ac8d89e..5578b57 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTApplicationSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbads.cc b/dcmrt/libsrc/drtbads.cc
index 33a33b2..55e4dee 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyAccessoryDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbas.cc b/dcmrt/libsrc/drtbas.cc
index 749fd65..55a7497 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContrastBolusAgentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTContrastBolusAgentSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTContrastBolusAgentSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTContrastBolusAgentSequence::Item &DRTContrastBolusAgentSequence::Item::operat
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTContrastBolusAgentSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTContrastBolusAgentSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTContrastBolusAgentSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ContrastBolusAgentSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ContrastBolusAgentSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ContrastBolusAgentSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ContrastBolusAgentSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ContrastBolusAgentSequence");
@@ -151,13 +175,17 @@ OFCondition DRTContrastBolusAgentSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ContrastBolusAgentSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ContrastBolusAgentSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ContrastBolusAgentSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ContrastBolusAgentSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ContrastBolusAgentSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ContrastBolusAgentSequence");
@@ -257,6 +285,15 @@ OFCondition DRTContrastBolusAgentSequence::Item::getContextUID(OFString &value,
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAgentSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTContrastBolusAgentSequence::Item::getMappingResource(OFString &va
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTContrastBolusAgentSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAgentSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTContrastBolusAgentSequence::Item::setContextUID(const OFString &v
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTContrastBolusAgentSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTContrastBolusAgentSequence::Item::setMappingResource(const OFStri
 }
 
 
+OFCondition DRTContrastBolusAgentSequence::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 DRTContrastBolusAgentSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTContrastBolusAgentSequence::DRTContrastBolusAgentSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbcps.cc b/dcmrt/libsrc/drtbcps.cc
index 65f7500..1eac2ef 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbl2.cc b/dcmrt/libsrc/drtbl2.cc
index 41b4a1b..f86a670 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBlockSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbl5.cc b/dcmrt/libsrc/drtbl5.cc
index b9e381b..806f290 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBlockSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbldls.cc b/dcmrt/libsrc/drtbldls.cc
index 0122ee2..560165c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceLeafPairsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbldps.cc b/dcmrt/libsrc/drtbldps.cc
index 012b8e1..07a8ef8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDevicePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtblds1.cc b/dcmrt/libsrc/drtblds1.cc
index 1a6cf0a..1cef0f2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtblds5.cc b/dcmrt/libsrc/drtblds5.cc
index dd20fb0..714aa7b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtblds6.cc b/dcmrt/libsrc/drtblds6.cc
index 5e3614b..b5719c4 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbldts.cc b/dcmrt/libsrc/drtbldts.cc
index 763d1fb..0a5a501 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamLimitingDeviceToleranceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbrcss.cc b/dcmrt/libsrc/drtbrcss.cc
index 88b053b..2f23b0d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBreedRegistryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTBreedRegistryCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTBreedRegistryCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTBreedRegistryCodeSequence::Item &DRTBreedRegistryCodeSequence::Item::operator
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTBreedRegistryCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTBreedRegistryCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTBreedRegistryCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "BreedRegistryCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "BreedRegistryCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "BreedRegistryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "BreedRegistryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "BreedRegistryCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTBreedRegistryCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "BreedRegistryCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "BreedRegistryCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "BreedRegistryCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "BreedRegistryCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "BreedRegistryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "BreedRegistryCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTBreedRegistryCodeSequence::Item::getContextUID(OFString &value, c
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResource(OFString &val
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTBreedRegistryCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTBreedRegistryCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTBreedRegistryCodeSequence::Item::setContextUID(const OFString &va
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTBreedRegistryCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTBreedRegistryCodeSequence::Item::setMappingResource(const OFStrin
 }
 
 
+OFCondition DRTBreedRegistryCodeSequence::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 DRTBreedRegistryCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTBreedRegistryCodeSequence::DRTBreedRegistryCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtbrdrs.cc b/dcmrt/libsrc/drtbrdrs.cc
index 2e9f9fc..98b584b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBrachyReferencedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbrs.cc b/dcmrt/libsrc/drtbrs.cc
index 8a7fb37..67f5416 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBreedRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtbs.cc b/dcmrt/libsrc/drtbs.cc
index 6760ddd..f9e42e8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrdros.cc b/dcmrt/libsrc/drtbss.cc
similarity index 70%
copy from dcmrt/libsrc/drtrdros.cc
copy to dcmrt/libsrc/drtbss.cc
index 9c3e30a..d72e2d2 100644
--- a/dcmrt/libsrc/drtrdros.cc
+++ b/dcmrt/libsrc/drtbss.cc
@@ -1,195 +1,182 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTRTDoseROISequence
+ *  Source file for class DRTBlockSlabSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtrdros.h"
+#include "dcmtk/dcmrt/seq/drtbss.h"
 
 
 // --- item class ---
 
-DRTRTDoseROISequence::Item::Item(const OFBool emptyDefaultItem)
+DRTBlockSlabSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    DoseUnits(DCM_DoseUnits),
-    DoseValue(DCM_DoseValue),
-    ReferencedROINumber(DCM_ReferencedROINumber)
+    AccessoryCode(DCM_AccessoryCode),
+    BlockSlabNumber(DCM_BlockSlabNumber),
+    BlockSlabThickness(DCM_BlockSlabThickness)
 {
 }
 
 
-DRTRTDoseROISequence::Item::Item(const Item &copy)
+DRTBlockSlabSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    DoseUnits(copy.DoseUnits),
-    DoseValue(copy.DoseValue),
-    ReferencedROINumber(copy.ReferencedROINumber)
+    AccessoryCode(copy.AccessoryCode),
+    BlockSlabNumber(copy.BlockSlabNumber),
+    BlockSlabThickness(copy.BlockSlabThickness)
 {
 }
 
 
-DRTRTDoseROISequence::Item::~Item()
+DRTBlockSlabSequence::Item::~Item()
 {
 }
 
 
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::Item::operator=(const Item &copy)
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        DoseUnits = copy.DoseUnits;
-        DoseValue = copy.DoseValue;
-        ReferencedROINumber = copy.ReferencedROINumber;
+        AccessoryCode = copy.AccessoryCode;
+        BlockSlabNumber = copy.BlockSlabNumber;
+        BlockSlabThickness = copy.BlockSlabThickness;
     }
     return *this;
 }
 
 
-void DRTRTDoseROISequence::Item::clear()
+void DRTBlockSlabSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        ReferencedROINumber.clear();
-        DoseUnits.clear();
-        DoseValue.clear();
+        BlockSlabNumber.clear();
+        BlockSlabThickness.clear();
+        AccessoryCode.clear();
     }
 }
 
 
-OFBool DRTRTDoseROISequence::Item::isEmpty()
+OFBool DRTBlockSlabSequence::Item::isEmpty()
 {
-    return ReferencedROINumber.isEmpty() &&
-           DoseUnits.isEmpty() &&
-           DoseValue.isEmpty();
+    return BlockSlabNumber.isEmpty() &&
+           BlockSlabThickness.isEmpty() &&
+           AccessoryCode.isEmpty();
 }
 
 
-OFBool DRTRTDoseROISequence::Item::isValid() const
+OFBool DRTBlockSlabSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::read(DcmItem &item)
+OFCondition DRTBlockSlabSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "RTDoseROISequence");
-        getAndCheckElementFromDataset(item, DoseUnits, "1", "1", "RTDoseROISequence");
-        getAndCheckElementFromDataset(item, DoseValue, "1", "1", "RTDoseROISequence");
+        getAndCheckElementFromDataset(item, BlockSlabNumber, "1", "1", "BlockSlabSequence");
+        getAndCheckElementFromDataset(item, BlockSlabThickness, "1", "3", "BlockSlabSequence");
+        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "BlockSlabSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::write(DcmItem &item)
+OFCondition DRTBlockSlabSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "RTDoseROISequence");
-        addElementToDataset(result, item, new DcmCodeString(DoseUnits), "1", "1", "RTDoseROISequence");
-        addElementToDataset(result, item, new DcmDecimalString(DoseValue), "1", "1", "RTDoseROISequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(BlockSlabNumber), "1", "1", "BlockSlabSequence");
+        addElementToDataset(result, item, new DcmDecimalString(BlockSlabThickness), "1", "3", "BlockSlabSequence");
+        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "BlockSlabSequence");
     }
     return result;
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::getDoseUnits(OFString &value, const signed long pos) const
+OFCondition DRTBlockSlabSequence::Item::getAccessoryCode(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(DoseUnits, value, pos);
+        return getStringValueFromElement(AccessoryCode, value, pos);
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::getDoseValue(OFString &value, const signed long pos) const
+OFCondition DRTBlockSlabSequence::Item::getBlockSlabNumber(Uint16 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(DoseValue, value, pos);
+        return OFconst_cast(DcmUnsignedShort &, BlockSlabNumber).getUint16(value, pos);
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::getDoseValue(Float64 &value, const unsigned long pos) const
+OFCondition DRTBlockSlabSequence::Item::getBlockSlabThickness(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmDecimalString &, DoseValue).getFloat64(value, pos);
+        return getStringValueFromElement(BlockSlabThickness, value, pos);
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::getReferencedROINumber(OFString &value, const signed long pos) const
+OFCondition DRTBlockSlabSequence::Item::getBlockSlabThickness(Float64 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ReferencedROINumber, value, pos);
+        return OFconst_cast(DcmDecimalString &, BlockSlabThickness).getFloat64(value, pos);
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::getReferencedROINumber(Sint32 &value, const unsigned long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return OFconst_cast(DcmIntegerString &, ReferencedROINumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTRTDoseROISequence::Item::setDoseUnits(const OFString &value, const OFBool check)
+OFCondition DRTBlockSlabSequence::Item::setAccessoryCode(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 = DoseUnits.putOFStringArray(value);
+            result = AccessoryCode.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::setDoseValue(const OFString &value, const OFBool check)
+OFCondition DRTBlockSlabSequence::Item::setBlockSlabNumber(const Uint16 value, const unsigned long pos)
 {
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = DoseValue.putOFStringArray(value);
-    }
-    return result;
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return BlockSlabNumber.putUint16(value, pos);
 }
 
 
-OFCondition DRTRTDoseROISequence::Item::setReferencedROINumber(const OFString &value, const OFBool check)
+OFCondition DRTBlockSlabSequence::Item::setBlockSlabThickness(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = ReferencedROINumber.putOFStringArray(value);
+            result = BlockSlabThickness.putOFStringArray(value);
     }
     return result;
 }
@@ -197,7 +184,7 @@ OFCondition DRTRTDoseROISequence::Item::setReferencedROINumber(const OFString &v
 
 // --- sequence class ---
 
-DRTRTDoseROISequence::DRTRTDoseROISequence(const OFBool emptyDefaultSequence)
+DRTBlockSlabSequence::DRTBlockSlabSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -207,7 +194,7 @@ DRTRTDoseROISequence::DRTRTDoseROISequence(const OFBool emptyDefaultSequence)
 }
 
 
-DRTRTDoseROISequence::DRTRTDoseROISequence(const DRTRTDoseROISequence &copy)
+DRTBlockSlabSequence::DRTBlockSlabSequence(const DRTBlockSlabSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -233,7 +220,7 @@ DRTRTDoseROISequence::DRTRTDoseROISequence(const DRTRTDoseROISequence &copy)
 }
 
 
-DRTRTDoseROISequence &DRTRTDoseROISequence::operator=(const DRTRTDoseROISequence &copy)
+DRTBlockSlabSequence &DRTBlockSlabSequence::operator=(const DRTBlockSlabSequence &copy)
 {
     if (this != &copy)
     {
@@ -261,13 +248,13 @@ DRTRTDoseROISequence &DRTRTDoseROISequence::operator=(const DRTRTDoseROISequence
 }
 
 
-DRTRTDoseROISequence::~DRTRTDoseROISequence()
+DRTBlockSlabSequence::~DRTBlockSlabSequence()
 {
     clear();
 }
 
 
-void DRTRTDoseROISequence::clear()
+void DRTBlockSlabSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -286,25 +273,25 @@ void DRTRTDoseROISequence::clear()
 }
 
 
-OFBool DRTRTDoseROISequence::isEmpty()
+OFBool DRTBlockSlabSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTRTDoseROISequence::isValid() const
+OFBool DRTBlockSlabSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTRTDoseROISequence::getNumberOfItems() const
+unsigned long DRTBlockSlabSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTRTDoseROISequence::gotoFirstItem()
+OFCondition DRTBlockSlabSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -316,7 +303,7 @@ OFCondition DRTRTDoseROISequence::gotoFirstItem()
 }
 
 
-OFCondition DRTRTDoseROISequence::gotoNextItem()
+OFCondition DRTBlockSlabSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -328,7 +315,7 @@ OFCondition DRTRTDoseROISequence::gotoNextItem()
 }
 
 
-OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -348,7 +335,7 @@ OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num, OFListIterat
 }
 
 
-OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -368,13 +355,13 @@ OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num, OFListConstI
 }
 
 
-OFCondition DRTRTDoseROISequence::gotoItem(const unsigned long num)
+OFCondition DRTBlockSlabSequence::gotoItem(const unsigned long num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTRTDoseROISequence::getCurrentItem(Item *&item) const
+OFCondition DRTBlockSlabSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -386,7 +373,7 @@ OFCondition DRTRTDoseROISequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem()
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -395,7 +382,7 @@ DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem()
 }
 
 
-const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem() const
+const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -404,7 +391,7 @@ const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getCurrentItem() const
 }
 
 
-OFCondition DRTRTDoseROISequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTBlockSlabSequence::getItem(const unsigned long num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -414,7 +401,7 @@ OFCondition DRTRTDoseROISequence::getItem(const unsigned long num, Item *&item)
 }
 
 
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const unsigned long num)
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const unsigned long num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -424,7 +411,7 @@ DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const unsigned long nu
 }
 
 
-const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const unsigned long num) const
+const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::getItem(const unsigned long num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -434,19 +421,19 @@ const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::getItem(const unsigned l
 }
 
 
-DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const unsigned long num)
+DRTBlockSlabSequence::Item &DRTBlockSlabSequence::operator[](const unsigned long num)
 {
     return getItem(num);
 }
 
 
-const DRTRTDoseROISequence::Item &DRTRTDoseROISequence::operator[](const unsigned long num) const
+const DRTBlockSlabSequence::Item &DRTBlockSlabSequence::operator[](const unsigned long num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTRTDoseROISequence::addItem(Item *&item)
+OFCondition DRTBlockSlabSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -463,7 +450,7 @@ OFCondition DRTRTDoseROISequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRTDoseROISequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTBlockSlabSequence::insertItem(const unsigned long pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -486,7 +473,7 @@ OFCondition DRTRTDoseROISequence::insertItem(const unsigned long pos, Item *&ite
 }
 
 
-OFCondition DRTRTDoseROISequence::removeItem(const unsigned long pos)
+OFCondition DRTBlockSlabSequence::removeItem(const unsigned long pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -504,7 +491,7 @@ OFCondition DRTRTDoseROISequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTRTDoseROISequence::read(DcmItem &dataset,
+OFCondition DRTBlockSlabSequence::read(DcmItem &dataset,
                                        const OFString &card,
                                        const OFString &type,
                                        const char *moduleName)
@@ -516,7 +503,7 @@ OFCondition DRTRTDoseROISequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_RTDoseROISequence, sequence);
+        result = dataset.findAndGetSequence(DCM_BlockSlabSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -546,7 +533,7 @@ OFCondition DRTRTDoseROISequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_RTDoseROISequence);
+            DcmSequenceOfItems element(DCM_BlockSlabSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -554,7 +541,7 @@ OFCondition DRTRTDoseROISequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTRTDoseROISequence::write(DcmItem &dataset,
+OFCondition DRTBlockSlabSequence::write(DcmItem &dataset,
                                         const OFString &card,
                                         const OFString &type,
                                         const char *moduleName)
@@ -563,7 +550,7 @@ OFCondition DRTRTDoseROISequence::write(DcmItem &dataset,
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RTDoseROISequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_BlockSlabSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtbvcps.cc b/dcmrt/libsrc/drtbvcps.cc
index ab39d1b..271e85d 100644
--- a/dcmrt/libsrc/drtbvcps.cc
+++ b/dcmrt/libsrc/drtbvcps.cc
@@ -1,13 +1,13 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTBeamDoseVerificationControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -24,6 +24,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const OFBool emptyDefaul
     AverageBeamDosePointDepth(DCM_AverageBeamDosePointDepth),
     AverageBeamDosePointEquivalentDepth(DCM_AverageBeamDosePointEquivalentDepth),
     AverageBeamDosePointSSD(DCM_AverageBeamDosePointSSD),
+    AverageBeamDosePointSourceToExternalContourSurfaceDistance(DCM_AverageBeamDosePointSourceToExternalContourSurfaceDistance),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
     ReferencedControlPointIndex(DCM_ReferencedControlPointIndex)
 {
@@ -35,6 +36,7 @@ DRTBeamDoseVerificationControlPointSequence::Item::Item(const Item &copy)
     AverageBeamDosePointDepth(copy.AverageBeamDosePointDepth),
     AverageBeamDosePointEquivalentDepth(copy.AverageBeamDosePointEquivalentDepth),
     AverageBeamDosePointSSD(copy.AverageBeamDosePointSSD),
+    AverageBeamDosePointSourceToExternalContourSurfaceDistance(copy.AverageBeamDosePointSourceToExternalContourSurfaceDistance),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
     ReferencedControlPointIndex(copy.ReferencedControlPointIndex)
 {
@@ -54,6 +56,7 @@ DRTBeamDoseVerificationControlPointSequence::Item &DRTBeamDoseVerificationContro
         AverageBeamDosePointDepth = copy.AverageBeamDosePointDepth;
         AverageBeamDosePointEquivalentDepth = copy.AverageBeamDosePointEquivalentDepth;
         AverageBeamDosePointSSD = copy.AverageBeamDosePointSSD;
+        AverageBeamDosePointSourceToExternalContourSurfaceDistance = copy.AverageBeamDosePointSourceToExternalContourSurfaceDistance;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
         ReferencedControlPointIndex = copy.ReferencedControlPointIndex;
     }
@@ -71,6 +74,7 @@ void DRTBeamDoseVerificationControlPointSequence::Item::clear()
         AverageBeamDosePointDepth.clear();
         AverageBeamDosePointEquivalentDepth.clear();
         AverageBeamDosePointSSD.clear();
+        AverageBeamDosePointSourceToExternalContourSurfaceDistance.clear();
     }
 }
 
@@ -81,7 +85,8 @@ OFBool DRTBeamDoseVerificationControlPointSequence::Item::isEmpty()
            ReferencedControlPointIndex.isEmpty() &&
            AverageBeamDosePointDepth.isEmpty() &&
            AverageBeamDosePointEquivalentDepth.isEmpty() &&
-           AverageBeamDosePointSSD.isEmpty();
+           AverageBeamDosePointSSD.isEmpty() &&
+           AverageBeamDosePointSourceToExternalContourSurfaceDistance.isEmpty();
 }
 
 
@@ -103,6 +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");
         result = EC_Normal;
     }
     return result;
@@ -120,6 +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");
     }
     return result;
 }
@@ -152,6 +159,15 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getAverageBeamDos
 }
 
 
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getAverageBeamDosePointSourceToExternalContourSurfaceDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, AverageBeamDosePointSourceToExternalContourSurfaceDistance).getFloat32(value, pos);
+}
+
+
 OFCondition DRTBeamDoseVerificationControlPointSequence::Item::getCumulativeMetersetWeight(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -215,6 +231,15 @@ OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setAverageBeamDos
 }
 
 
+OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setAverageBeamDosePointSourceToExternalContourSurfaceDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return AverageBeamDosePointSourceToExternalContourSurfaceDistance.putFloat32(value, pos);
+}
+
+
 OFCondition DRTBeamDoseVerificationControlPointSequence::Item::setCumulativeMetersetWeight(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtcbars.cc b/dcmrt/libsrc/drtcbars.cc
index 65c6b1c..bc815f0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContrastBolusAdministrationRouteSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -32,7 +32,11 @@ DRTContrastBolusAdministrationRouteSequence::Item::Item(const OFBool emptyDefaul
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -50,7 +54,11 @@ DRTContrastBolusAdministrationRouteSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -76,7 +84,11 @@ DRTContrastBolusAdministrationRouteSequence::Item &DRTContrastBolusAdministratio
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -91,9 +103,13 @@ void DRTContrastBolusAdministrationRouteSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -109,9 +125,13 @@ OFBool DRTContrastBolusAdministrationRouteSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -133,13 +153,17 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::read(DcmItem &ite
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ContrastBolusAdministrationRouteSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ContrastBolusAdministrationRouteSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ContrastBolusAdministrationRouteSequence");
@@ -157,13 +181,17 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::write(DcmItem &it
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ContrastBolusAdministrationRouteSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ContrastBolusAdministrationRouteSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ContrastBolusAdministrationRouteSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ContrastBolusAdministrationRouteSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ContrastBolusAdministrationRouteSequence");
@@ -264,6 +292,15 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getContextUID(OFS
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -273,6 +310,24 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResourc
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -403,6 +458,19 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setContextUID(con
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -416,6 +484,32 @@ OFCondition DRTContrastBolusAdministrationRouteSequence::Item::setMappingResourc
 }
 
 
+OFCondition DRTContrastBolusAdministrationRouteSequence::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 DRTContrastBolusAdministrationRouteSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTContrastBolusAdministrationRouteSequence::DRTContrastBolusAdministrationRouteSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtccs.cc b/dcmrt/libsrc/drtccs.cc
index e6512cd..979f490 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConceptCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTConceptCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTConceptCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTConceptCodeSequence::Item &DRTConceptCodeSequence::Item::operator=(const Item
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTConceptCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTConceptCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTConceptCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ConceptCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ConceptCodeSequence");
+        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");
@@ -151,13 +175,17 @@ OFCondition DRTConceptCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ConceptCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ConceptCodeSequence");
+        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");
@@ -257,6 +285,15 @@ OFCondition DRTConceptCodeSequence::Item::getContextUID(OFString &value, const s
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTConceptCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTConceptCodeSequence::Item::getMappingResource(OFString &value, co
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTConceptCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTConceptCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTConceptCodeSequence::Item::setContextUID(const OFString &value, c
 }
 
 
+OFCondition DRTConceptCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTConceptCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTConceptCodeSequence::Item::setMappingResource(const OFString &val
 }
 
 
+OFCondition DRTConceptCodeSequence::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 DRTConceptCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTConceptCodeSequence::DRTConceptCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcctus.cc b/dcmrt/libsrc/drtcctus.cc
index 878f37b..731881a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConsentForClinicalTrialUseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcdrs.cc b/dcmrt/libsrc/drtcdrs.cc
index 05f2d11..5ffe6cf 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtces.cc b/dcmrt/libsrc/drtces.cc
index 13d7fd8..a0cee02 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContributingEquipmentSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtchs.cc b/dcmrt/libsrc/drtchs.cc
index 1879833..a216b01 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcims.cc b/dcmrt/libsrc/drtcims.cc
index afc07ab..d02068d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContentItemModifierSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcis.cc b/dcmrt/libsrc/drtcis.cc
index 057d127..db289e6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContourImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcncs.cc b/dcmrt/libsrc/drtcncs.cc
index add98f8..3986664 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConceptNameCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTConceptNameCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTConceptNameCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTConceptNameCodeSequence::Item &DRTConceptNameCodeSequence::Item::operator=(co
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTConceptNameCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTConceptNameCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTConceptNameCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ConceptNameCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ConceptNameCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ConceptNameCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ConceptNameCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ConceptNameCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTConceptNameCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ConceptNameCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ConceptNameCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ConceptNameCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ConceptNameCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ConceptNameCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ConceptNameCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTConceptNameCodeSequence::Item::getContextUID(OFString &value, con
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTConceptNameCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTConceptNameCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTConceptNameCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTConceptNameCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTConceptNameCodeSequence::Item::setContextUID(const OFString &valu
 }
 
 
+OFCondition DRTConceptNameCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTConceptNameCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTConceptNameCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTConceptNameCodeSequence::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 DRTConceptNameCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTConceptNameCodeSequence::DRTConceptNameCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtcos.cc b/dcmrt/libsrc/drtcos.cc
index 4dae5fb..d2b31cf 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcpas.cc b/dcmrt/libsrc/drtcpas.cc
index fc837c9..09b601c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCorrectedParameterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrpis.cc b/dcmrt/libsrc/drtcpis.cc
similarity index 67%
copy from dcmrt/libsrc/drtrpis.cc
copy to dcmrt/libsrc/drtcpis.cc
index 299d60f..8ca6f86 100644
--- a/dcmrt/libsrc/drtrpis.cc
+++ b/dcmrt/libsrc/drtcpis.cc
@@ -1,54 +1,56 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTReferringPhysicianIdentificationSequence
+ *  Source file for class DRTConsultingPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtrpis.h"
+#include "dcmtk/dcmrt/seq/drtcpis.h"
 
 
 // --- item class ---
 
-DRTReferringPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTConsultingPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     InstitutionAddress(DCM_InstitutionAddress),
     InstitutionCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
 
 
-DRTReferringPhysicianIdentificationSequence::Item::Item(const Item &copy)
+DRTConsultingPhysicianIdentificationSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     InstitutionAddress(copy.InstitutionAddress),
     InstitutionCodeSequence(copy.InstitutionCodeSequence),
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
 
 
-DRTReferringPhysicianIdentificationSequence::Item::~Item()
+DRTConsultingPhysicianIdentificationSequence::Item::~Item()
 {
 }
 
 
-DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::Item::operator=(const Item &copy)
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
@@ -58,13 +60,14 @@ DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentifi
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
 }
 
 
-void DRTReferringPhysicianIdentificationSequence::Item::clear()
+void DRTConsultingPhysicianIdentificationSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
@@ -72,6 +75,7 @@ void DRTReferringPhysicianIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -79,60 +83,63 @@ void DRTReferringPhysicianIdentificationSequence::Item::clear()
 }
 
 
-OFBool DRTReferringPhysicianIdentificationSequence::Item::isEmpty()
+OFBool DRTConsultingPhysicianIdentificationSequence::Item::isEmpty()
 {
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
 }
 
 
-OFBool DRTReferringPhysicianIdentificationSequence::Item::isValid() const
+OFBool DRTConsultingPhysicianIdentificationSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::read(DcmItem &item)
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        PersonIdentificationCodeSequence.read(item, "1-n", "1", "ReferringPhysicianIdentificationSequence");
-        getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "ReferringPhysicianIdentificationSequence");
-        getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "ReferringPhysicianIdentificationSequence");
-        getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ReferringPhysicianIdentificationSequence");
-        getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ReferringPhysicianIdentificationSequence");
-        InstitutionCodeSequence.read(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence");
+        PersonIdentificationCodeSequence.read(item, "1-n", "1", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ConsultingPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ConsultingPhysicianIdentificationSequence");
+        InstitutionCodeSequence.read(item, "1-n", "1C", "ConsultingPhysicianIdentificationSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::write(DcmItem &item)
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "ReferringPhysicianIdentificationSequence");
-        addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "ReferringPhysicianIdentificationSequence");
-        addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "ReferringPhysicianIdentificationSequence");
-        addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ReferringPhysicianIdentificationSequence");
-        addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ReferringPhysicianIdentificationSequence");
-        if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence");
+        if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ConsultingPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ConsultingPhysicianIdentificationSequence");
+        if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ConsultingPhysicianIdentificationSequence");
     }
     return result;
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::getInstitutionAddress(OFString &value, const signed long pos) const
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getInstitutionAddress(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -141,7 +148,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::getInstitutionAdd
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::getInstitutionName(OFString &value, const signed long pos) const
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getInstitutionName(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -150,7 +157,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::getInstitutionNam
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getPersonAddress(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -159,7 +166,16 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonAddress(
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -168,7 +184,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonTelephon
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::setInstitutionAddress(const OFString &value, const OFBool check)
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setInstitutionAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -181,7 +197,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::setInstitutionAdd
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::setInstitutionName(const OFString &value, const OFBool check)
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setInstitutionName(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -194,7 +210,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::setInstitutionNam
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check)
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setPersonAddress(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -207,7 +223,20 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonAddress(
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
+OFCondition DRTConsultingPhysicianIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -222,7 +251,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonTelephon
 
 // --- sequence class ---
 
-DRTReferringPhysicianIdentificationSequence::DRTReferringPhysicianIdentificationSequence(const OFBool emptyDefaultSequence)
+DRTConsultingPhysicianIdentificationSequence::DRTConsultingPhysicianIdentificationSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -232,7 +261,7 @@ DRTReferringPhysicianIdentificationSequence::DRTReferringPhysicianIdentification
 }
 
 
-DRTReferringPhysicianIdentificationSequence::DRTReferringPhysicianIdentificationSequence(const DRTReferringPhysicianIdentificationSequence &copy)
+DRTConsultingPhysicianIdentificationSequence::DRTConsultingPhysicianIdentificationSequence(const DRTConsultingPhysicianIdentificationSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -258,7 +287,7 @@ DRTReferringPhysicianIdentificationSequence::DRTReferringPhysicianIdentification
 }
 
 
-DRTReferringPhysicianIdentificationSequence &DRTReferringPhysicianIdentificationSequence::operator=(const DRTReferringPhysicianIdentificationSequence &copy)
+DRTConsultingPhysicianIdentificationSequence &DRTConsultingPhysicianIdentificationSequence::operator=(const DRTConsultingPhysicianIdentificationSequence &copy)
 {
     if (this != &copy)
     {
@@ -286,13 +315,13 @@ DRTReferringPhysicianIdentificationSequence &DRTReferringPhysicianIdentification
 }
 
 
-DRTReferringPhysicianIdentificationSequence::~DRTReferringPhysicianIdentificationSequence()
+DRTConsultingPhysicianIdentificationSequence::~DRTConsultingPhysicianIdentificationSequence()
 {
     clear();
 }
 
 
-void DRTReferringPhysicianIdentificationSequence::clear()
+void DRTConsultingPhysicianIdentificationSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -311,25 +340,25 @@ void DRTReferringPhysicianIdentificationSequence::clear()
 }
 
 
-OFBool DRTReferringPhysicianIdentificationSequence::isEmpty()
+OFBool DRTConsultingPhysicianIdentificationSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTReferringPhysicianIdentificationSequence::isValid() const
+OFBool DRTConsultingPhysicianIdentificationSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTReferringPhysicianIdentificationSequence::getNumberOfItems() const
+unsigned long DRTConsultingPhysicianIdentificationSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::gotoFirstItem()
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -341,7 +370,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::gotoNextItem()
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -353,7 +382,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -373,7 +402,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -393,13 +422,13 @@ OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::gotoItem(const unsigned long num)
+OFCondition DRTConsultingPhysicianIdentificationSequence::gotoItem(const unsigned long num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::getCurrentItem(Item *&item) const
+OFCondition DRTConsultingPhysicianIdentificationSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -411,7 +440,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::getCurrentItem(Item *&i
 }
 
 
-DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::getCurrentItem()
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -420,7 +449,7 @@ DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentifi
 }
 
 
-const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::getCurrentItem() const
+const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -429,7 +458,7 @@ const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianId
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -439,7 +468,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::getItem(const unsigned
 }
 
 
-DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::getItem(const unsigned long num)
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -449,7 +478,7 @@ DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentifi
 }
 
 
-const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::getItem(const unsigned long num) const
+const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::getItem(const unsigned long num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -459,19 +488,19 @@ const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianId
 }
 
 
-DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::operator[](const unsigned long num)
+DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::operator[](const unsigned long num)
 {
     return getItem(num);
 }
 
 
-const DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentificationSequence::operator[](const unsigned long num) const
+const DRTConsultingPhysicianIdentificationSequence::Item &DRTConsultingPhysicianIdentificationSequence::operator[](const unsigned long num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::addItem(Item *&item)
+OFCondition DRTConsultingPhysicianIdentificationSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -488,7 +517,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTConsultingPhysicianIdentificationSequence::insertItem(const unsigned long pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -511,7 +540,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::insertItem(const unsign
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::removeItem(const unsigned long pos)
+OFCondition DRTConsultingPhysicianIdentificationSequence::removeItem(const unsigned long pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -529,10 +558,10 @@ OFCondition DRTReferringPhysicianIdentificationSequence::removeItem(const unsign
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::read(DcmItem &dataset,
-                                                              const OFString &card,
-                                                              const OFString &type,
-                                                              const char *moduleName)
+OFCondition DRTConsultingPhysicianIdentificationSequence::read(DcmItem &dataset,
+                                                               const OFString &card,
+                                                               const OFString &type,
+                                                               const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -541,7 +570,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferringPhysicianIdentificationSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_ConsultingPhysicianIdentificationSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -571,7 +600,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ReferringPhysicianIdentificationSequence);
+            DcmSequenceOfItems element(DCM_ConsultingPhysicianIdentificationSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -579,16 +608,16 @@ OFCondition DRTReferringPhysicianIdentificationSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTReferringPhysicianIdentificationSequence::write(DcmItem &dataset,
-                                                               const OFString &card,
-                                                               const OFString &type,
-                                                               const char *moduleName)
+OFCondition DRTConsultingPhysicianIdentificationSequence::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_ReferringPhysicianIdentificationSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ConsultingPhysicianIdentificationSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtcps.cc b/dcmrt/libsrc/drtcps.cc
index 259c96c..c3d295a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -27,6 +27,7 @@ DRTControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     ControlPointIndex(DCM_ControlPointIndex),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
     DoseRateSet(DCM_DoseRateSet),
+    ExternalContourEntryPoint(DCM_ExternalContourEntryPoint),
     GantryAngle(DCM_GantryAngle),
     GantryPitchAngle(DCM_GantryPitchAngle),
     GantryPitchRotationDirection(DCM_GantryPitchRotationDirection),
@@ -37,6 +38,7 @@ DRTControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     PatientSupportRotationDirection(DCM_PatientSupportRotationDirection),
     ReferencedDoseReferenceSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ReferencedDoseSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    SourceToExternalContourDistance(DCM_SourceToExternalContourDistance),
     SourceToSurfaceDistance(DCM_SourceToSurfaceDistance),
     SurfaceEntryPoint(DCM_SurfaceEntryPoint),
     TableTopEccentricAngle(DCM_TableTopEccentricAngle),
@@ -62,6 +64,7 @@ DRTControlPointSequence::Item::Item(const Item &copy)
     ControlPointIndex(copy.ControlPointIndex),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
     DoseRateSet(copy.DoseRateSet),
+    ExternalContourEntryPoint(copy.ExternalContourEntryPoint),
     GantryAngle(copy.GantryAngle),
     GantryPitchAngle(copy.GantryPitchAngle),
     GantryPitchRotationDirection(copy.GantryPitchRotationDirection),
@@ -72,6 +75,7 @@ DRTControlPointSequence::Item::Item(const Item &copy)
     PatientSupportRotationDirection(copy.PatientSupportRotationDirection),
     ReferencedDoseReferenceSequence(copy.ReferencedDoseReferenceSequence),
     ReferencedDoseSequence(copy.ReferencedDoseSequence),
+    SourceToExternalContourDistance(copy.SourceToExternalContourDistance),
     SourceToSurfaceDistance(copy.SourceToSurfaceDistance),
     SurfaceEntryPoint(copy.SurfaceEntryPoint),
     TableTopEccentricAngle(copy.TableTopEccentricAngle),
@@ -105,6 +109,7 @@ DRTControlPointSequence::Item &DRTControlPointSequence::Item::operator=(const It
         ControlPointIndex = copy.ControlPointIndex;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
         DoseRateSet = copy.DoseRateSet;
+        ExternalContourEntryPoint = copy.ExternalContourEntryPoint;
         GantryAngle = copy.GantryAngle;
         GantryPitchAngle = copy.GantryPitchAngle;
         GantryPitchRotationDirection = copy.GantryPitchRotationDirection;
@@ -115,6 +120,7 @@ DRTControlPointSequence::Item &DRTControlPointSequence::Item::operator=(const It
         PatientSupportRotationDirection = copy.PatientSupportRotationDirection;
         ReferencedDoseReferenceSequence = copy.ReferencedDoseReferenceSequence;
         ReferencedDoseSequence = copy.ReferencedDoseSequence;
+        SourceToExternalContourDistance = copy.SourceToExternalContourDistance;
         SourceToSurfaceDistance = copy.SourceToSurfaceDistance;
         SurfaceEntryPoint = copy.SurfaceEntryPoint;
         TableTopEccentricAngle = copy.TableTopEccentricAngle;
@@ -166,7 +172,9 @@ void DRTControlPointSequence::Item::clear()
         TableTopLateralPosition.clear();
         IsocenterPosition.clear();
         SurfaceEntryPoint.clear();
+        ExternalContourEntryPoint.clear();
         SourceToSurfaceDistance.clear();
+        SourceToExternalContourDistance.clear();
     }
 }
 
@@ -201,7 +209,9 @@ OFBool DRTControlPointSequence::Item::isEmpty()
            TableTopLateralPosition.isEmpty() &&
            IsocenterPosition.isEmpty() &&
            SurfaceEntryPoint.isEmpty() &&
-           SourceToSurfaceDistance.isEmpty();
+           ExternalContourEntryPoint.isEmpty() &&
+           SourceToSurfaceDistance.isEmpty() &&
+           SourceToExternalContourDistance.isEmpty();
 }
 
 
@@ -246,7 +256,9 @@ OFCondition DRTControlPointSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, TableTopLateralPosition, "1", "2C", "ControlPointSequence");
         getAndCheckElementFromDataset(item, IsocenterPosition, "3", "2C", "ControlPointSequence");
         getAndCheckElementFromDataset(item, SurfaceEntryPoint, "3", "3", "ControlPointSequence");
+        getAndCheckElementFromDataset(item, ExternalContourEntryPoint, "3", "3", "ControlPointSequence");
         getAndCheckElementFromDataset(item, SourceToSurfaceDistance, "1", "3", "ControlPointSequence");
+        getAndCheckElementFromDataset(item, SourceToExternalContourDistance, "1", "3", "ControlPointSequence");
         result = EC_Normal;
     }
     return result;
@@ -287,7 +299,9 @@ OFCondition DRTControlPointSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(TableTopLateralPosition), "1", "2C", "ControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(IsocenterPosition), "3", "2C", "ControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(SurfaceEntryPoint), "3", "3", "ControlPointSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(ExternalContourEntryPoint), "3", "3", "ControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceToSurfaceDistance), "1", "3", "ControlPointSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(SourceToExternalContourDistance), "1", "3", "ControlPointSequence");
     }
     return result;
 }
@@ -374,6 +388,15 @@ OFCondition DRTControlPointSequence::Item::getDoseRateSet(Float64 &value, const
 }
 
 
+OFCondition DRTControlPointSequence::Item::getExternalContourEntryPoint(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, ExternalContourEntryPoint).getFloat32(value, pos);
+}
+
+
 OFCondition DRTControlPointSequence::Item::getGantryAngle(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -491,6 +514,15 @@ OFCondition DRTControlPointSequence::Item::getPatientSupportRotationDirection(OF
 }
 
 
+OFCondition DRTControlPointSequence::Item::getSourceToExternalContourDistance(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, SourceToExternalContourDistance).getFloat32(value, pos);
+}
+
+
 OFCondition DRTControlPointSequence::Item::getSourceToSurfaceDistance(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -736,6 +768,15 @@ OFCondition DRTControlPointSequence::Item::setDoseRateSet(const OFString &value,
 }
 
 
+OFCondition DRTControlPointSequence::Item::setExternalContourEntryPoint(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ExternalContourEntryPoint.putFloat32(value, pos);
+}
+
+
 OFCondition DRTControlPointSequence::Item::setGantryAngle(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -836,6 +877,15 @@ OFCondition DRTControlPointSequence::Item::setPatientSupportRotationDirection(co
 }
 
 
+OFCondition DRTControlPointSequence::Item::setSourceToExternalContourDistance(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return SourceToExternalContourDistance.putFloat32(value, pos);
+}
+
+
 OFCondition DRTControlPointSequence::Item::setSourceToSurfaceDistance(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtcs.cc b/dcmrt/libsrc/drtcs.cc
index 6380039..c39b275 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcsas.cc b/dcmrt/libsrc/drtcsas.cc
index 3c92fb9..c9bb6d2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTConversionSourceAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcshs.cc b/dcmrt/libsrc/drtcshs.cc
index ac20c08..4fc8d7b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelShieldSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcsis.cc b/dcmrt/libsrc/drtcsis.cc
index e8714da..7504daf 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTCodingSchemeIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcss.cc b/dcmrt/libsrc/drtcss.cc
index c57209e..6e2b1e4 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTChannelSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTChannelSourceSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTChannelSourceSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTChannelSourceSequence::Item &DRTChannelSourceSequence::Item::operator=(const
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTChannelSourceSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTChannelSourceSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTChannelSourceSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ChannelSourceSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ChannelSourceSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ChannelSourceSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ChannelSourceSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ChannelSourceSequence");
@@ -151,13 +175,17 @@ OFCondition DRTChannelSourceSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ChannelSourceSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ChannelSourceSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ChannelSourceSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ChannelSourceSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ChannelSourceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ChannelSourceSequence");
@@ -257,6 +285,15 @@ OFCondition DRTChannelSourceSequence::Item::getContextUID(OFString &value, const
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTChannelSourceSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTChannelSourceSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTChannelSourceSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTChannelSourceSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTChannelSourceSequence::Item::setContextUID(const OFString &value,
 }
 
 
+OFCondition DRTChannelSourceSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTChannelSourceSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTChannelSourceSequence::Item::setMappingResource(const OFString &v
 }
 
 
+OFCondition DRTChannelSourceSequence::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 DRTChannelSourceSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTChannelSourceSequence::DRTChannelSourceSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdcs.cc b/dcmrt/libsrc/drtdcs.cc
index fe2503b..736bd6d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDerivationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTDerivationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTDerivationCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTDerivationCodeSequence::Item &DRTDerivationCodeSequence::Item::operator=(cons
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTDerivationCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTDerivationCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTDerivationCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "DerivationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DerivationCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DerivationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DerivationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DerivationCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTDerivationCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "DerivationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DerivationCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DerivationCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DerivationCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DerivationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DerivationCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTDerivationCodeSequence::Item::getContextUID(OFString &value, cons
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTDerivationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTDerivationCodeSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDerivationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTDerivationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTDerivationCodeSequence::Item::setContextUID(const OFString &value
 }
 
 
+OFCondition DRTDerivationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDerivationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTDerivationCodeSequence::Item::setMappingResource(const OFString &
 }
 
 
+OFCondition DRTDerivationCodeSequence::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 DRTDerivationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTDerivationCodeSequence::DRTDerivationCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsss.cc b/dcmrt/libsrc/drtdias.cc
similarity index 69%
copy from dcmrt/libsrc/drtrsss.cc
copy to dcmrt/libsrc/drtdias.cc
index 2c6d837..70d3afb 100644
--- a/dcmrt/libsrc/drtrsss.cc
+++ b/dcmrt/libsrc/drtdias.cc
@@ -1,156 +1,152 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTReferencedStructureSetSequence
+ *  Source file for class DRTDeidentificationActionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtrsss.h"
+#include "dcmtk/dcmrt/seq/drtdias.h"
 
 
 // --- item class ---
 
-DRTReferencedStructureSetSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTDeidentificationActionSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    ReferencedSOPClassUID(DCM_ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(DCM_ReferencedSOPInstanceUID)
+    DeidentificationAction(DCM_DeidentificationAction),
+    IdentifyingPrivateElements(DCM_IdentifyingPrivateElements)
 {
 }
 
 
-DRTReferencedStructureSetSequence::Item::Item(const Item &copy)
+DRTDeidentificationActionSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    ReferencedSOPClassUID(copy.ReferencedSOPClassUID),
-    ReferencedSOPInstanceUID(copy.ReferencedSOPInstanceUID)
+    DeidentificationAction(copy.DeidentificationAction),
+    IdentifyingPrivateElements(copy.IdentifyingPrivateElements)
 {
 }
 
 
-DRTReferencedStructureSetSequence::Item::~Item()
+DRTDeidentificationActionSequence::Item::~Item()
 {
 }
 
 
-DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::Item::operator=(const Item &copy)
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        ReferencedSOPClassUID = copy.ReferencedSOPClassUID;
-        ReferencedSOPInstanceUID = copy.ReferencedSOPInstanceUID;
+        DeidentificationAction = copy.DeidentificationAction;
+        IdentifyingPrivateElements = copy.IdentifyingPrivateElements;
     }
     return *this;
 }
 
 
-void DRTReferencedStructureSetSequence::Item::clear()
+void DRTDeidentificationActionSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        ReferencedSOPClassUID.clear();
-        ReferencedSOPInstanceUID.clear();
+        IdentifyingPrivateElements.clear();
+        DeidentificationAction.clear();
     }
 }
 
 
-OFBool DRTReferencedStructureSetSequence::Item::isEmpty()
+OFBool DRTDeidentificationActionSequence::Item::isEmpty()
 {
-    return ReferencedSOPClassUID.isEmpty() &&
-           ReferencedSOPInstanceUID.isEmpty();
+    return IdentifyingPrivateElements.isEmpty() &&
+           DeidentificationAction.isEmpty();
 }
 
 
-OFBool DRTReferencedStructureSetSequence::Item::isValid() const
+OFBool DRTDeidentificationActionSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::Item::read(DcmItem &item)
+OFCondition DRTDeidentificationActionSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ReferencedSOPClassUID, "1", "1", "ReferencedStructureSetSequence");
-        getAndCheckElementFromDataset(item, ReferencedSOPInstanceUID, "1", "1", "ReferencedStructureSetSequence");
+        getAndCheckElementFromDataset(item, IdentifyingPrivateElements, "1-n", "1", "DeidentificationActionSequence");
+        getAndCheckElementFromDataset(item, DeidentificationAction, "1", "1", "DeidentificationActionSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::Item::write(DcmItem &item)
+OFCondition DRTDeidentificationActionSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPClassUID), "1", "1", "ReferencedStructureSetSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(ReferencedSOPInstanceUID), "1", "1", "ReferencedStructureSetSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(IdentifyingPrivateElements), "1-n", "1", "DeidentificationActionSequence");
+        addElementToDataset(result, item, new DcmCodeString(DeidentificationAction), "1", "1", "DeidentificationActionSequence");
     }
     return result;
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::Item::getReferencedSOPClassUID(OFString &value, const signed long pos) const
+OFCondition DRTDeidentificationActionSequence::Item::getDeidentificationAction(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ReferencedSOPClassUID, value, pos);
+        return getStringValueFromElement(DeidentificationAction, value, pos);
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::Item::getReferencedSOPInstanceUID(OFString &value, const signed long pos) const
+OFCondition DRTDeidentificationActionSequence::Item::getIdentifyingPrivateElements(Uint16 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ReferencedSOPInstanceUID, value, pos);
+        return OFconst_cast(DcmUnsignedShort &, IdentifyingPrivateElements).getUint16(value, pos);
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::Item::setReferencedSOPClassUID(const OFString &value, const OFBool check)
+OFCondition DRTDeidentificationActionSequence::Item::setDeidentificationAction(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 = ReferencedSOPClassUID.putOFStringArray(value);
+            result = DeidentificationAction.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::Item::setReferencedSOPInstanceUID(const OFString &value, const OFBool check)
+OFCondition DRTDeidentificationActionSequence::Item::setIdentifyingPrivateElements(const Uint16 value, const unsigned long pos)
 {
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedSOPInstanceUID.putOFStringArray(value);
-    }
-    return result;
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return IdentifyingPrivateElements.putUint16(value, pos);
 }
 
 
 // --- sequence class ---
 
-DRTReferencedStructureSetSequence::DRTReferencedStructureSetSequence(const OFBool emptyDefaultSequence)
+DRTDeidentificationActionSequence::DRTDeidentificationActionSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -160,7 +156,7 @@ DRTReferencedStructureSetSequence::DRTReferencedStructureSetSequence(const OFBoo
 }
 
 
-DRTReferencedStructureSetSequence::DRTReferencedStructureSetSequence(const DRTReferencedStructureSetSequence &copy)
+DRTDeidentificationActionSequence::DRTDeidentificationActionSequence(const DRTDeidentificationActionSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -186,7 +182,7 @@ DRTReferencedStructureSetSequence::DRTReferencedStructureSetSequence(const DRTRe
 }
 
 
-DRTReferencedStructureSetSequence &DRTReferencedStructureSetSequence::operator=(const DRTReferencedStructureSetSequence &copy)
+DRTDeidentificationActionSequence &DRTDeidentificationActionSequence::operator=(const DRTDeidentificationActionSequence &copy)
 {
     if (this != &copy)
     {
@@ -214,13 +210,13 @@ DRTReferencedStructureSetSequence &DRTReferencedStructureSetSequence::operator=(
 }
 
 
-DRTReferencedStructureSetSequence::~DRTReferencedStructureSetSequence()
+DRTDeidentificationActionSequence::~DRTDeidentificationActionSequence()
 {
     clear();
 }
 
 
-void DRTReferencedStructureSetSequence::clear()
+void DRTDeidentificationActionSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -239,25 +235,25 @@ void DRTReferencedStructureSetSequence::clear()
 }
 
 
-OFBool DRTReferencedStructureSetSequence::isEmpty()
+OFBool DRTDeidentificationActionSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTReferencedStructureSetSequence::isValid() const
+OFBool DRTDeidentificationActionSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTReferencedStructureSetSequence::getNumberOfItems() const
+unsigned long DRTDeidentificationActionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::gotoFirstItem()
+OFCondition DRTDeidentificationActionSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -269,7 +265,7 @@ OFCondition DRTReferencedStructureSetSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::gotoNextItem()
+OFCondition DRTDeidentificationActionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -281,7 +277,7 @@ OFCondition DRTReferencedStructureSetSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -301,7 +297,7 @@ OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -321,13 +317,13 @@ OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num,
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::gotoItem(const unsigned long num)
+OFCondition DRTDeidentificationActionSequence::gotoItem(const unsigned long num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::getCurrentItem(Item *&item) const
+OFCondition DRTDeidentificationActionSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -339,7 +335,7 @@ OFCondition DRTReferencedStructureSetSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getCurrentItem()
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -348,7 +344,7 @@ DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getC
 }
 
 
-const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getCurrentItem() const
+const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -357,7 +353,7 @@ const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTDeidentificationActionSequence::getItem(const unsigned long num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -367,7 +363,7 @@ OFCondition DRTReferencedStructureSetSequence::getItem(const unsigned long num,
 }
 
 
-DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getItem(const unsigned long num)
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getItem(const unsigned long num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -377,7 +373,7 @@ DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getI
 }
 
 
-const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::getItem(const unsigned long num) const
+const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::getItem(const unsigned long num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -387,19 +383,19 @@ const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence
 }
 
 
-DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::operator[](const unsigned long num)
+DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::operator[](const unsigned long num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedStructureSetSequence::Item &DRTReferencedStructureSetSequence::operator[](const unsigned long num) const
+const DRTDeidentificationActionSequence::Item &DRTDeidentificationActionSequence::operator[](const unsigned long num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::addItem(Item *&item)
+OFCondition DRTDeidentificationActionSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -416,7 +412,7 @@ OFCondition DRTReferencedStructureSetSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTDeidentificationActionSequence::insertItem(const unsigned long pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -439,7 +435,7 @@ OFCondition DRTReferencedStructureSetSequence::insertItem(const unsigned long po
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::removeItem(const unsigned long pos)
+OFCondition DRTDeidentificationActionSequence::removeItem(const unsigned long pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -457,7 +453,7 @@ OFCondition DRTReferencedStructureSetSequence::removeItem(const unsigned long po
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::read(DcmItem &dataset,
+OFCondition DRTDeidentificationActionSequence::read(DcmItem &dataset,
                                                     const OFString &card,
                                                     const OFString &type,
                                                     const char *moduleName)
@@ -469,7 +465,7 @@ OFCondition DRTReferencedStructureSetSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedStructureSetSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_DeidentificationActionSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -499,7 +495,7 @@ OFCondition DRTReferencedStructureSetSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ReferencedStructureSetSequence);
+            DcmSequenceOfItems element(DCM_DeidentificationActionSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -507,7 +503,7 @@ OFCondition DRTReferencedStructureSetSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTReferencedStructureSetSequence::write(DcmItem &dataset,
+OFCondition DRTDeidentificationActionSequence::write(DcmItem &dataset,
                                                      const OFString &card,
                                                      const OFString &type,
                                                      const char *moduleName)
@@ -516,7 +512,7 @@ OFCondition DRTReferencedStructureSetSequence::write(DcmItem &dataset,
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedStructureSetSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_DeidentificationActionSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtdimcs.cc b/dcmrt/libsrc/drtdimcs.cc
index c801b45..05fcc5b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeidentificationMethodCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTDeidentificationMethodCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTDeidentificationMethodCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTDeidentificationMethodCodeSequence::Item &DRTDeidentificationMethodCodeSequen
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTDeidentificationMethodCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTDeidentificationMethodCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "DeidentificationMethodCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DeidentificationMethodCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DeidentificationMethodCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DeidentificationMethodCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DeidentificationMethodCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "DeidentificationMethodCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DeidentificationMethodCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DeidentificationMethodCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DeidentificationMethodCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DeidentificationMethodCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DeidentificationMethodCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::getContextUID(OFString
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResource(OFSt
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDeidentificationMethodCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTDeidentificationMethodCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::setContextUID(const OFS
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDeidentificationMethodCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTDeidentificationMethodCodeSequence::Item::setMappingResource(cons
 }
 
 
+OFCondition DRTDeidentificationMethodCodeSequence::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 DRTDeidentificationMethodCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTDeidentificationMethodCodeSequence::DRTDeidentificationMethodCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdimrs.cc b/dcmrt/libsrc/drtdimrs.cc
index f92c82e..89620c1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDICOMMediaRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtdirs.cc b/dcmrt/libsrc/drtdirs.cc
index ea3f650..1d28f30 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDICOMRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtdose.cc b/dcmrt/libsrc/drtdose.cc
index 5f64814..aee5980 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDoseIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTDoseIOD::DRTDoseIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -169,6 +171,7 @@ DRTDoseIOD::DRTDoseIOD()
     PixelPaddingRangeLimit(DCM_PixelPaddingRangeLimit),
     NumberOfFrames(DCM_NumberOfFrames),
     FrameIncrementPointer(DCM_FrameIncrementPointer),
+    StereoPairsPresent(DCM_StereoPairsPresent),
     OverlayRows(DCM_OverlayRows),
     OverlayColumns(DCM_OverlayColumns),
     OverlayType(DCM_OverlayType),
@@ -248,6 +251,7 @@ DRTDoseIOD::DRTDoseIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence(),
     FrameExtractionSequence()
@@ -298,6 +302,8 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -409,6 +415,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     PixelPaddingRangeLimit(copy.PixelPaddingRangeLimit),
     NumberOfFrames(copy.NumberOfFrames),
     FrameIncrementPointer(copy.FrameIncrementPointer),
+    StereoPairsPresent(copy.StereoPairsPresent),
     OverlayRows(copy.OverlayRows),
     OverlayColumns(copy.OverlayColumns),
     OverlayType(copy.OverlayType),
@@ -488,6 +495,7 @@ DRTDoseIOD::DRTDoseIOD(const DRTDoseIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence),
     FrameExtractionSequence(copy.FrameExtractionSequence)
@@ -544,6 +552,8 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -655,6 +665,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         PixelPaddingRangeLimit = copy.PixelPaddingRangeLimit;
         NumberOfFrames = copy.NumberOfFrames;
         FrameIncrementPointer = copy.FrameIncrementPointer;
+        StereoPairsPresent = copy.StereoPairsPresent;
         OverlayRows = copy.OverlayRows;
         OverlayColumns = copy.OverlayColumns;
         OverlayType = copy.OverlayType;
@@ -734,6 +745,7 @@ DRTDoseIOD &DRTDoseIOD::operator=(const DRTDoseIOD &copy)
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
         FrameExtractionSequence = copy.FrameExtractionSequence;
@@ -785,6 +797,8 @@ void DRTDoseIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -905,6 +919,7 @@ void DRTDoseIOD::clear()
     PixelPaddingRangeLimit.clear();
     NumberOfFrames.clear();
     FrameIncrementPointer.clear();
+    StereoPairsPresent.clear();
     OverlayRows.clear();
     OverlayColumns.clear();
     OverlayType.clear();
@@ -975,6 +990,7 @@ void DRTDoseIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
     FrameExtractionSequence.clear();
@@ -1119,6 +1135,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, NumberOfFrames, "1", "1", "MultiFrameModule");
             getAndCheckElementFromDataset(dataset, FrameIncrementPointer, "1-n", "1", "MultiFrameModule");
+            getAndCheckElementFromDataset(dataset, StereoPairsPresent, "1", "3", "MultiFrameModule");
         }
 
         // --- OverlayPlaneModule (U) ---
@@ -1247,6 +1264,7 @@ OFCondition DRTDoseIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -1327,6 +1345,8 @@ OFCondition DRTDoseIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1463,6 +1483,8 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1623,6 +1645,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFrames), "1", "1", "MultiFrameModule");
             addElementToDataset(result, dataset, new DcmAttributeTag(FrameIncrementPointer), "1-n", "1", "MultiFrameModule");
+            addElementToDataset(result, dataset, new DcmCodeString(StereoPairsPresent), "1", "3", "MultiFrameModule");
         }
 
         // --- OverlayPlaneModule (U) ---
@@ -1744,6 +1767,7 @@ OFCondition DRTDoseIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1910,7 +1934,8 @@ OFBool DRTDoseIOD::isMultiFrameModulePresent(const OFBool complete)
     } else {
         /* check whether at least one attribute is present */
         return !NumberOfFrames.isEmpty() ||
-               !FrameIncrementPointer.isEmpty();
+               !FrameIncrementPointer.isEmpty() ||
+               !StereoPairsPresent.isEmpty();
     }
 }
 
@@ -2232,6 +2257,12 @@ OFCondition DRTDoseIOD::getCommentsOnThePerformedProcedureStep(OFString &value,
 }
 
 
+OFCondition DRTDoseIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getContentDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentDate, value, pos);
@@ -3261,6 +3292,12 @@ OFCondition DRTDoseIOD::getStationName(OFString &value, const signed long pos) c
 }
 
 
+OFCondition DRTDoseIOD::getStereoPairsPresent(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StereoPairsPresent, value, pos);
+}
+
+
 OFCondition DRTDoseIOD::getStructureSetDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StructureSetDate, value, pos);
@@ -3594,6 +3631,15 @@ OFCondition DRTDoseIOD::setCommentsOnThePerformedProcedureStep(const OFString &v
 }
 
 
+OFCondition DRTDoseIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTDoseIOD::setContentDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -4749,6 +4795,15 @@ OFCondition DRTDoseIOD::setStationName(const OFString &value, const OFBool check
 }
 
 
+OFCondition DRTDoseIOD::setStereoPairsPresent(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StereoPairsPresent.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 6c7c0f2..4cc00b7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtds.cc b/dcmrt/libsrc/drtds.cc
index 5d0f59d..69b00cf 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -38,10 +38,14 @@ DRTDeviceSequence::Item::Item(const OFBool emptyDefaultItem)
     DeviceLength(DCM_DeviceLength),
     DeviceSerialNumber(DCM_DeviceSerialNumber),
     DeviceVolume(DCM_DeviceVolume),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     InterMarkerDistance(DCM_InterMarkerDistance),
+    LongCodeValue(DCM_LongCodeValue),
     Manufacturer(DCM_Manufacturer),
     ManufacturerModelName(DCM_ManufacturerModelName),
-    MappingResource(DCM_MappingResource)
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -65,10 +69,14 @@ DRTDeviceSequence::Item::Item(const Item &copy)
     DeviceLength(copy.DeviceLength),
     DeviceSerialNumber(copy.DeviceSerialNumber),
     DeviceVolume(copy.DeviceVolume),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
     InterMarkerDistance(copy.InterMarkerDistance),
+    LongCodeValue(copy.LongCodeValue),
     Manufacturer(copy.Manufacturer),
     ManufacturerModelName(copy.ManufacturerModelName),
-    MappingResource(copy.MappingResource)
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -100,10 +108,14 @@ DRTDeviceSequence::Item &DRTDeviceSequence::Item::operator=(const Item &copy)
         DeviceLength = copy.DeviceLength;
         DeviceSerialNumber = copy.DeviceSerialNumber;
         DeviceVolume = copy.DeviceVolume;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
         InterMarkerDistance = copy.InterMarkerDistance;
+        LongCodeValue = copy.LongCodeValue;
         Manufacturer = copy.Manufacturer;
         ManufacturerModelName = copy.ManufacturerModelName;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -118,9 +130,13 @@ void DRTDeviceSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -145,9 +161,13 @@ OFBool DRTDeviceSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -178,13 +198,17 @@ OFCondition DRTDeviceSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "DeviceSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "DeviceSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DeviceSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DeviceSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DeviceSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DeviceSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DeviceSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DeviceSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DeviceSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DeviceSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DeviceSequence");
@@ -211,13 +235,17 @@ OFCondition DRTDeviceSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "DeviceSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "DeviceSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DeviceSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DeviceSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DeviceSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DeviceSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DeviceSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DeviceSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DeviceSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "DeviceSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DeviceSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DeviceSequence");
@@ -435,6 +463,15 @@ OFCondition DRTDeviceSequence::Item::getInterMarkerDistance(Float64 &value, cons
 }
 
 
+OFCondition DRTDeviceSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTDeviceSequence::Item::getManufacturer(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -462,6 +499,24 @@ OFCondition DRTDeviceSequence::Item::getMappingResource(OFString &value, const s
 }
 
 
+OFCondition DRTDeviceSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDeviceSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTDeviceSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -696,6 +751,19 @@ OFCondition DRTDeviceSequence::Item::setInterMarkerDistance(const OFString &valu
 }
 
 
+OFCondition DRTDeviceSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDeviceSequence::Item::setManufacturer(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -735,6 +803,32 @@ OFCondition DRTDeviceSequence::Item::setMappingResource(const OFString &value, c
 }
 
 
+OFCondition DRTDeviceSequence::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 DRTDeviceSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTDeviceSequence::DRTDeviceSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdspcs.cc b/dcmrt/libsrc/drtdspcs.cc
index f1c8295..a03182d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDigitalSignaturePurposeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTDigitalSignaturePurposeCodeSequence::Item::Item(const OFBool emptyDefaultItem
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTDigitalSignaturePurposeCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTDigitalSignaturePurposeCodeSequence::Item &DRTDigitalSignaturePurposeCodeSequ
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTDigitalSignaturePurposeCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTDigitalSignaturePurposeCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "DigitalSignaturePurposeCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "DigitalSignaturePurposeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "DigitalSignaturePurposeCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "DigitalSignaturePurposeCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "DigitalSignaturePurposeCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "DigitalSignaturePurposeCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "DigitalSignaturePurposeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "DigitalSignaturePurposeCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getContextUID(OFString
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResource(OFS
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setContextUID(const OF
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTDigitalSignaturePurposeCodeSequence::Item::setMappingResource(con
 }
 
 
+OFCondition DRTDigitalSignaturePurposeCodeSequence::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 DRTDigitalSignaturePurposeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTDigitalSignaturePurposeCodeSequence::DRTDigitalSignaturePurposeCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtdss.cc b/dcmrt/libsrc/drtdss.cc
index fc52d1e..e9e173a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDigitalSignaturesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtdvhs.cc b/dcmrt/libsrc/drtdvhs.cc
index 7df442e..328a765 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDVHSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtdvrrs.cc b/dcmrt/libsrc/drtdvrrs.cc
index 6b2b296..eec70c2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTDVHReferencedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drteas.cc b/dcmrt/libsrc/drteas.cc
index 1e42964..53d8069 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTEncryptedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrms.cc b/dcmrt/libsrc/drtecs.cc
similarity index 62%
copy from dcmrt/libsrc/drtrms.cc
copy to dcmrt/libsrc/drtecs.cc
index d28c498..4f07d4c 100644
--- a/dcmrt/libsrc/drtrms.cc
+++ b/dcmrt/libsrc/drtecs.cc
@@ -1,273 +1,264 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTRangeModulatorSequence
+ *  Source file for class DRTEquivalentCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtrms.h"
+#include "dcmtk/dcmrt/seq/drtecs.h"
 
 
 // --- item class ---
 
-DRTRangeModulatorSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTEquivalentCodeSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    AccessoryCode(DCM_AccessoryCode),
-    BeamCurrentModulationID(DCM_BeamCurrentModulationID),
-    RangeModulatorDescription(DCM_RangeModulatorDescription),
-    RangeModulatorID(DCM_RangeModulatorID),
-    RangeModulatorNumber(DCM_RangeModulatorNumber),
-    RangeModulatorType(DCM_RangeModulatorType)
+    CodeMeaning(DCM_CodeMeaning),
+    CodeValue(DCM_CodeValue),
+    CodingSchemeDesignator(DCM_CodingSchemeDesignator),
+    CodingSchemeVersion(DCM_CodingSchemeVersion),
+    LongCodeValue(DCM_LongCodeValue),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
 
-DRTRangeModulatorSequence::Item::Item(const Item &copy)
+DRTEquivalentCodeSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    AccessoryCode(copy.AccessoryCode),
-    BeamCurrentModulationID(copy.BeamCurrentModulationID),
-    RangeModulatorDescription(copy.RangeModulatorDescription),
-    RangeModulatorID(copy.RangeModulatorID),
-    RangeModulatorNumber(copy.RangeModulatorNumber),
-    RangeModulatorType(copy.RangeModulatorType)
+    CodeMeaning(copy.CodeMeaning),
+    CodeValue(copy.CodeValue),
+    CodingSchemeDesignator(copy.CodingSchemeDesignator),
+    CodingSchemeVersion(copy.CodingSchemeVersion),
+    LongCodeValue(copy.LongCodeValue),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
 
-DRTRangeModulatorSequence::Item::~Item()
+DRTEquivalentCodeSequence::Item::~Item()
 {
 }
 
 
-DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::Item::operator=(const Item &copy)
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        AccessoryCode = copy.AccessoryCode;
-        BeamCurrentModulationID = copy.BeamCurrentModulationID;
-        RangeModulatorDescription = copy.RangeModulatorDescription;
-        RangeModulatorID = copy.RangeModulatorID;
-        RangeModulatorNumber = copy.RangeModulatorNumber;
-        RangeModulatorType = copy.RangeModulatorType;
+        CodeMeaning = copy.CodeMeaning;
+        CodeValue = copy.CodeValue;
+        CodingSchemeDesignator = copy.CodingSchemeDesignator;
+        CodingSchemeVersion = copy.CodingSchemeVersion;
+        LongCodeValue = copy.LongCodeValue;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
 
 
-void DRTRangeModulatorSequence::Item::clear()
+void DRTEquivalentCodeSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        RangeModulatorNumber.clear();
-        RangeModulatorID.clear();
-        AccessoryCode.clear();
-        RangeModulatorType.clear();
-        RangeModulatorDescription.clear();
-        BeamCurrentModulationID.clear();
+        CodeValue.clear();
+        CodingSchemeDesignator.clear();
+        CodingSchemeVersion.clear();
+        CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
     }
 }
 
 
-OFBool DRTRangeModulatorSequence::Item::isEmpty()
+OFBool DRTEquivalentCodeSequence::Item::isEmpty()
 {
-    return RangeModulatorNumber.isEmpty() &&
-           RangeModulatorID.isEmpty() &&
-           AccessoryCode.isEmpty() &&
-           RangeModulatorType.isEmpty() &&
-           RangeModulatorDescription.isEmpty() &&
-           BeamCurrentModulationID.isEmpty();
+    return CodeValue.isEmpty() &&
+           CodingSchemeDesignator.isEmpty() &&
+           CodingSchemeVersion.isEmpty() &&
+           CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty();
 }
 
 
-OFBool DRTRangeModulatorSequence::Item::isValid() const
+OFBool DRTEquivalentCodeSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::read(DcmItem &item)
+OFCondition DRTEquivalentCodeSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, RangeModulatorNumber, "1", "1", "RangeModulatorSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorID, "1", "1", "RangeModulatorSequence");
-        getAndCheckElementFromDataset(item, AccessoryCode, "1", "3", "RangeModulatorSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorType, "1", "1", "RangeModulatorSequence");
-        getAndCheckElementFromDataset(item, RangeModulatorDescription, "1", "3", "RangeModulatorSequence");
-        getAndCheckElementFromDataset(item, BeamCurrentModulationID, "1", "1C", "RangeModulatorSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "EquivalentCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "EquivalentCodeSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::write(DcmItem &item)
+OFCondition DRTEquivalentCodeSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(RangeModulatorNumber), "1", "1", "RangeModulatorSequence");
-        addElementToDataset(result, item, new DcmShortString(RangeModulatorID), "1", "1", "RangeModulatorSequence");
-        addElementToDataset(result, item, new DcmLongString(AccessoryCode), "1", "3", "RangeModulatorSequence");
-        addElementToDataset(result, item, new DcmCodeString(RangeModulatorType), "1", "1", "RangeModulatorSequence");
-        addElementToDataset(result, item, new DcmLongString(RangeModulatorDescription), "1", "3", "RangeModulatorSequence");
-        addElementToDataset(result, item, new DcmShortString(BeamCurrentModulationID), "1", "1C", "RangeModulatorSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "EquivalentCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "EquivalentCodeSequence");
+        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");
     }
     return result;
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::getAccessoryCode(OFString &value, const signed long pos) const
+OFCondition DRTEquivalentCodeSequence::Item::getCodeMeaning(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(AccessoryCode, value, pos);
+        return getStringValueFromElement(CodeMeaning, value, pos);
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::getBeamCurrentModulationID(OFString &value, const signed long pos) const
+OFCondition DRTEquivalentCodeSequence::Item::getCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(BeamCurrentModulationID, value, pos);
+        return getStringValueFromElement(CodeValue, value, pos);
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::getRangeModulatorDescription(OFString &value, const signed long pos) const
+OFCondition DRTEquivalentCodeSequence::Item::getCodingSchemeDesignator(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(RangeModulatorDescription, value, pos);
+        return getStringValueFromElement(CodingSchemeDesignator, value, pos);
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::getRangeModulatorID(OFString &value, const signed long pos) const
+OFCondition DRTEquivalentCodeSequence::Item::getCodingSchemeVersion(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(RangeModulatorID, value, pos);
+        return getStringValueFromElement(CodingSchemeVersion, value, pos);
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::getRangeModulatorNumber(OFString &value, const signed long pos) const
+OFCondition DRTEquivalentCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(RangeModulatorNumber, value, pos);
+        return getStringValueFromElement(LongCodeValue, value, pos);
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::getRangeModulatorNumber(Sint32 &value, const unsigned long pos) const
+OFCondition DRTEquivalentCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmIntegerString &, RangeModulatorNumber).getSint32(value, pos);
+        return getStringValueFromElement(URNCodeValue, value, pos);
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::getRangeModulatorType(OFString &value, const signed long pos) const
-{
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(RangeModulatorType, value, pos);
-}
-
-
-OFCondition DRTRangeModulatorSequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
+OFCondition DRTEquivalentCodeSequence::Item::setCodeMeaning(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 = CodeMeaning.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::setBeamCurrentModulationID(const OFString &value, const OFBool check)
+OFCondition DRTEquivalentCodeSequence::Item::setCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = BeamCurrentModulationID.putOFStringArray(value);
+            result = CodeValue.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::setRangeModulatorDescription(const OFString &value, const OFBool check)
+OFCondition DRTEquivalentCodeSequence::Item::setCodingSchemeDesignator(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = RangeModulatorDescription.putOFStringArray(value);
+            result = CodingSchemeDesignator.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::setRangeModulatorID(const OFString &value, const OFBool check)
+OFCondition DRTEquivalentCodeSequence::Item::setCodingSchemeVersion(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = (check) ? DcmShortString::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = RangeModulatorID.putOFStringArray(value);
+            result = CodingSchemeVersion.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::setRangeModulatorNumber(const OFString &value, const OFBool check)
+OFCondition DRTEquivalentCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
         if (result.good())
-            result = RangeModulatorNumber.putOFStringArray(value);
+            result = LongCodeValue.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTRangeModulatorSequence::Item::setRangeModulatorType(const OFString &value, const OFBool check)
+OFCondition DRTEquivalentCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
         if (result.good())
-            result = RangeModulatorType.putOFStringArray(value);
+            result = URNCodeValue.putOFStringArray(value);
     }
     return result;
 }
@@ -275,7 +266,7 @@ OFCondition DRTRangeModulatorSequence::Item::setRangeModulatorType(const OFStrin
 
 // --- sequence class ---
 
-DRTRangeModulatorSequence::DRTRangeModulatorSequence(const OFBool emptyDefaultSequence)
+DRTEquivalentCodeSequence::DRTEquivalentCodeSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -285,7 +276,7 @@ DRTRangeModulatorSequence::DRTRangeModulatorSequence(const OFBool emptyDefaultSe
 }
 
 
-DRTRangeModulatorSequence::DRTRangeModulatorSequence(const DRTRangeModulatorSequence &copy)
+DRTEquivalentCodeSequence::DRTEquivalentCodeSequence(const DRTEquivalentCodeSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -311,7 +302,7 @@ DRTRangeModulatorSequence::DRTRangeModulatorSequence(const DRTRangeModulatorSequ
 }
 
 
-DRTRangeModulatorSequence &DRTRangeModulatorSequence::operator=(const DRTRangeModulatorSequence &copy)
+DRTEquivalentCodeSequence &DRTEquivalentCodeSequence::operator=(const DRTEquivalentCodeSequence &copy)
 {
     if (this != &copy)
     {
@@ -339,13 +330,13 @@ DRTRangeModulatorSequence &DRTRangeModulatorSequence::operator=(const DRTRangeMo
 }
 
 
-DRTRangeModulatorSequence::~DRTRangeModulatorSequence()
+DRTEquivalentCodeSequence::~DRTEquivalentCodeSequence()
 {
     clear();
 }
 
 
-void DRTRangeModulatorSequence::clear()
+void DRTEquivalentCodeSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -364,25 +355,25 @@ void DRTRangeModulatorSequence::clear()
 }
 
 
-OFBool DRTRangeModulatorSequence::isEmpty()
+OFBool DRTEquivalentCodeSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTRangeModulatorSequence::isValid() const
+OFBool DRTEquivalentCodeSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTRangeModulatorSequence::getNumberOfItems() const
+unsigned long DRTEquivalentCodeSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTRangeModulatorSequence::gotoFirstItem()
+OFCondition DRTEquivalentCodeSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -394,7 +385,7 @@ OFCondition DRTRangeModulatorSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTRangeModulatorSequence::gotoNextItem()
+OFCondition DRTEquivalentCodeSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -406,7 +397,7 @@ OFCondition DRTRangeModulatorSequence::gotoNextItem()
 }
 
 
-OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -426,7 +417,7 @@ OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -446,13 +437,13 @@ OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTRangeModulatorSequence::gotoItem(const unsigned long num)
+OFCondition DRTEquivalentCodeSequence::gotoItem(const unsigned long num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTRangeModulatorSequence::getCurrentItem(Item *&item) const
+OFCondition DRTEquivalentCodeSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -464,7 +455,7 @@ OFCondition DRTRangeModulatorSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getCurrentItem()
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -473,7 +464,7 @@ DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getCurrentItem()
 }
 
 
-const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getCurrentItem() const
+const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -482,7 +473,7 @@ const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getCurrentItem
 }
 
 
-OFCondition DRTRangeModulatorSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTEquivalentCodeSequence::getItem(const unsigned long num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -492,7 +483,7 @@ OFCondition DRTRangeModulatorSequence::getItem(const unsigned long num, Item *&i
 }
 
 
-DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const unsigned long num)
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const unsigned long num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -502,7 +493,7 @@ DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const unsign
 }
 
 
-const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const unsigned long num) const
+const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::getItem(const unsigned long num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -512,19 +503,19 @@ const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::getItem(const
 }
 
 
-DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::operator[](const unsigned long num)
+DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::operator[](const unsigned long num)
 {
     return getItem(num);
 }
 
 
-const DRTRangeModulatorSequence::Item &DRTRangeModulatorSequence::operator[](const unsigned long num) const
+const DRTEquivalentCodeSequence::Item &DRTEquivalentCodeSequence::operator[](const unsigned long num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTRangeModulatorSequence::addItem(Item *&item)
+OFCondition DRTEquivalentCodeSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -541,7 +532,7 @@ OFCondition DRTRangeModulatorSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTRangeModulatorSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTEquivalentCodeSequence::insertItem(const unsigned long pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -564,7 +555,7 @@ OFCondition DRTRangeModulatorSequence::insertItem(const unsigned long pos, Item
 }
 
 
-OFCondition DRTRangeModulatorSequence::removeItem(const unsigned long pos)
+OFCondition DRTEquivalentCodeSequence::removeItem(const unsigned long pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -582,7 +573,7 @@ OFCondition DRTRangeModulatorSequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTRangeModulatorSequence::read(DcmItem &dataset,
+OFCondition DRTEquivalentCodeSequence::read(DcmItem &dataset,
                                             const OFString &card,
                                             const OFString &type,
                                             const char *moduleName)
@@ -594,7 +585,7 @@ OFCondition DRTRangeModulatorSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_RangeModulatorSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_EquivalentCodeSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -624,7 +615,7 @@ OFCondition DRTRangeModulatorSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_RangeModulatorSequence);
+            DcmSequenceOfItems element(DCM_EquivalentCodeSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -632,7 +623,7 @@ OFCondition DRTRangeModulatorSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTRangeModulatorSequence::write(DcmItem &dataset,
+OFCondition DRTEquivalentCodeSequence::write(DcmItem &dataset,
                                              const OFString &card,
                                              const OFString &type,
                                              const char *moduleName)
@@ -641,7 +632,7 @@ OFCondition DRTRangeModulatorSequence::write(DcmItem &dataset,
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_RangeModulatorSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_EquivalentCodeSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtes.cc b/dcmrt/libsrc/drtes.cc
index 6f9abb3..58d0027 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTExposureSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtfds.cc b/dcmrt/libsrc/drtfds.cc
index 2ede6de..3a69a63 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFixationDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtfes.cc b/dcmrt/libsrc/drtfes.cc
index 45ebb4d..add7207 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFrameExtractionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtfgs.cc b/dcmrt/libsrc/drtfgs.cc
index 62aa674..c82bde5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtfgss.cc b/dcmrt/libsrc/drtfgss.cc
index d34ae1c..6bfe62a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionGroupSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtfms.cc b/dcmrt/libsrc/drtfms.cc
index bf81087..a0e73bb 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFluenceMapSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtfsss.cc b/dcmrt/libsrc/drtfsss.cc
index 676f2e1..75400c7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTFractionStatusSummarySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtgas.cc b/dcmrt/libsrc/drtgas.cc
index a59e6ca..613c9f2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTGeneralAccessorySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drthsdrs.cc b/dcmrt/libsrc/drthsdrs.cc
index fd21041..129979a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTHL7StructuredDocumentReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtiais.cc b/dcmrt/libsrc/drtiais.cc
index ddd93bf..c206dae 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfAdmissionIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtians.cc b/dcmrt/libsrc/drtians.cc
index fc7571f..6e0bb83 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfAccessionNumberSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtiblds.cc b/dcmrt/libsrc/drtiblds.cc
index 14b032d..0cc4309 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamLimitingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtibls.cc b/dcmrt/libsrc/drtibls.cc
index bb1ccf1..a58a038 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -28,11 +28,13 @@ DRTIonBlockSequence::Item::Item(const OFBool emptyDefaultItem)
     BlockName(DCM_BlockName),
     BlockNumber(DCM_BlockNumber),
     BlockNumberOfPoints(DCM_BlockNumberOfPoints),
+    BlockSlabSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     BlockThickness(DCM_BlockThickness),
     BlockTrayID(DCM_BlockTrayID),
     BlockType(DCM_BlockType),
     IsocenterToBlockTrayDistance(DCM_IsocenterToBlockTrayDistance),
-    MaterialID(DCM_MaterialID)
+    MaterialID(DCM_MaterialID),
+    NumberOfBlockSlabItems(DCM_NumberOfBlockSlabItems)
 {
 }
 
@@ -46,11 +48,13 @@ DRTIonBlockSequence::Item::Item(const Item &copy)
     BlockName(copy.BlockName),
     BlockNumber(copy.BlockNumber),
     BlockNumberOfPoints(copy.BlockNumberOfPoints),
+    BlockSlabSequence(copy.BlockSlabSequence),
     BlockThickness(copy.BlockThickness),
     BlockTrayID(copy.BlockTrayID),
     BlockType(copy.BlockType),
     IsocenterToBlockTrayDistance(copy.IsocenterToBlockTrayDistance),
-    MaterialID(copy.MaterialID)
+    MaterialID(copy.MaterialID),
+    NumberOfBlockSlabItems(copy.NumberOfBlockSlabItems)
 {
 }
 
@@ -72,11 +76,13 @@ DRTIonBlockSequence::Item &DRTIonBlockSequence::Item::operator=(const Item &copy
         BlockName = copy.BlockName;
         BlockNumber = copy.BlockNumber;
         BlockNumberOfPoints = copy.BlockNumberOfPoints;
+        BlockSlabSequence = copy.BlockSlabSequence;
         BlockThickness = copy.BlockThickness;
         BlockTrayID = copy.BlockTrayID;
         BlockType = copy.BlockType;
         IsocenterToBlockTrayDistance = copy.IsocenterToBlockTrayDistance;
         MaterialID = copy.MaterialID;
+        NumberOfBlockSlabItems = copy.NumberOfBlockSlabItems;
     }
     return *this;
 }
@@ -99,6 +105,8 @@ void DRTIonBlockSequence::Item::clear()
         BlockThickness.clear();
         BlockNumberOfPoints.clear();
         BlockData.clear();
+        NumberOfBlockSlabItems.clear();
+        BlockSlabSequence.clear();
     }
 }
 
@@ -116,7 +124,9 @@ OFBool DRTIonBlockSequence::Item::isEmpty()
            MaterialID.isEmpty() &&
            BlockThickness.isEmpty() &&
            BlockNumberOfPoints.isEmpty() &&
-           BlockData.isEmpty();
+           BlockData.isEmpty() &&
+           NumberOfBlockSlabItems.isEmpty() &&
+           BlockSlabSequence.isEmpty();
 }
 
 
@@ -145,6 +155,8 @@ OFCondition DRTIonBlockSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, BlockThickness, "1", "1", "IonBlockSequence");
         getAndCheckElementFromDataset(item, BlockNumberOfPoints, "1", "1", "IonBlockSequence");
         getAndCheckElementFromDataset(item, BlockData, "2-2n", "1", "IonBlockSequence");
+        getAndCheckElementFromDataset(item, NumberOfBlockSlabItems, "1", "3", "IonBlockSequence");
+        BlockSlabSequence.read(item, "1-n", "1C", "IonBlockSequence");
         result = EC_Normal;
     }
     return result;
@@ -169,6 +181,8 @@ OFCondition DRTIonBlockSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(BlockThickness), "1", "1", "IonBlockSequence");
         addElementToDataset(result, item, new DcmIntegerString(BlockNumberOfPoints), "1", "1", "IonBlockSequence");
         addElementToDataset(result, item, new DcmDecimalString(BlockData), "2-2n", "1", "IonBlockSequence");
+        addElementToDataset(result, item, new DcmIntegerString(NumberOfBlockSlabItems), "1", "3", "IonBlockSequence");
+        if (result.good()) result = BlockSlabSequence.write(item, "1-n", "1C", "IonBlockSequence");
     }
     return result;
 }
@@ -327,6 +341,24 @@ OFCondition DRTIonBlockSequence::Item::getMaterialID(OFString &value, const sign
 }
 
 
+OFCondition DRTIonBlockSequence::Item::getNumberOfBlockSlabItems(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(NumberOfBlockSlabItems, value, pos);
+}
+
+
+OFCondition DRTIonBlockSequence::Item::getNumberOfBlockSlabItems(Sint32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmIntegerString &, NumberOfBlockSlabItems).getSint32(value, pos);
+}
+
+
 OFCondition DRTIonBlockSequence::Item::setAccessoryCode(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -479,6 +511,19 @@ OFCondition DRTIonBlockSequence::Item::setMaterialID(const OFString &value, cons
 }
 
 
+OFCondition DRTIonBlockSequence::Item::setNumberOfBlockSlabItems(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = NumberOfBlockSlabItems.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTIonBlockSequence::DRTIonBlockSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtibs.cc b/dcmrt/libsrc/drtibs.cc
index 0d8854d..88cffe1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drticpds.cc b/dcmrt/libsrc/drticpds.cc
index 893ebf9..5645f81 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonControlPointDeliverySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drticps.cc b/dcmrt/libsrc/drticps.cc
index b29ef02..28430e1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTIonControlPointSequence::Item::Item(const OFBool emptyDefaultItem)
     BeamLimitingDeviceRotationDirection(DCM_BeamLimitingDeviceRotationDirection),
     ControlPointIndex(DCM_ControlPointIndex),
     CumulativeMetersetWeight(DCM_CumulativeMetersetWeight),
+    ExternalContourEntryPoint(DCM_ExternalContourEntryPoint),
     GantryAngle(DCM_GantryAngle),
     GantryPitchAngle(DCM_GantryPitchAngle),
     GantryPitchRotationDirection(DCM_GantryPitchRotationDirection),
@@ -68,6 +69,7 @@ DRTIonControlPointSequence::Item::Item(const Item &copy)
     BeamLimitingDeviceRotationDirection(copy.BeamLimitingDeviceRotationDirection),
     ControlPointIndex(copy.ControlPointIndex),
     CumulativeMetersetWeight(copy.CumulativeMetersetWeight),
+    ExternalContourEntryPoint(copy.ExternalContourEntryPoint),
     GantryAngle(copy.GantryAngle),
     GantryPitchAngle(copy.GantryPitchAngle),
     GantryPitchRotationDirection(copy.GantryPitchRotationDirection),
@@ -118,6 +120,7 @@ DRTIonControlPointSequence::Item &DRTIonControlPointSequence::Item::operator=(co
         BeamLimitingDeviceRotationDirection = copy.BeamLimitingDeviceRotationDirection;
         ControlPointIndex = copy.ControlPointIndex;
         CumulativeMetersetWeight = copy.CumulativeMetersetWeight;
+        ExternalContourEntryPoint = copy.ExternalContourEntryPoint;
         GantryAngle = copy.GantryAngle;
         GantryPitchAngle = copy.GantryPitchAngle;
         GantryPitchRotationDirection = copy.GantryPitchRotationDirection;
@@ -195,6 +198,7 @@ void DRTIonControlPointSequence::Item::clear()
         SnoutPosition.clear();
         IsocenterPosition.clear();
         SurfaceEntryPoint.clear();
+        ExternalContourEntryPoint.clear();
     }
 }
 
@@ -236,7 +240,8 @@ OFBool DRTIonControlPointSequence::Item::isEmpty()
            TableTopLateralPosition.isEmpty() &&
            SnoutPosition.isEmpty() &&
            IsocenterPosition.isEmpty() &&
-           SurfaceEntryPoint.isEmpty();
+           SurfaceEntryPoint.isEmpty() &&
+           ExternalContourEntryPoint.isEmpty();
 }
 
 
@@ -289,6 +294,7 @@ OFCondition DRTIonControlPointSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, SnoutPosition, "1", "2C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, IsocenterPosition, "3", "2C", "IonControlPointSequence");
         getAndCheckElementFromDataset(item, SurfaceEntryPoint, "3", "3", "IonControlPointSequence");
+        getAndCheckElementFromDataset(item, ExternalContourEntryPoint, "3", "3", "IonControlPointSequence");
         result = EC_Normal;
     }
     return result;
@@ -337,6 +343,7 @@ OFCondition DRTIonControlPointSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmFloatingPointSingle(SnoutPosition), "1", "2C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(IsocenterPosition), "3", "2C", "IonControlPointSequence");
         addElementToDataset(result, item, new DcmDecimalString(SurfaceEntryPoint), "3", "3", "IonControlPointSequence");
+        addElementToDataset(result, item, new DcmFloatingPointSingle(ExternalContourEntryPoint), "3", "3", "IonControlPointSequence");
     }
     return result;
 }
@@ -405,6 +412,15 @@ OFCondition DRTIonControlPointSequence::Item::getCumulativeMetersetWeight(Float6
 }
 
 
+OFCondition DRTIonControlPointSequence::Item::getExternalContourEntryPoint(Float32 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmFloatingPointSingle &, ExternalContourEntryPoint).getFloat32(value, pos);
+}
+
+
 OFCondition DRTIonControlPointSequence::Item::getGantryAngle(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -808,6 +824,15 @@ OFCondition DRTIonControlPointSequence::Item::setCumulativeMetersetWeight(const
 }
 
 
+OFCondition DRTIonControlPointSequence::Item::setExternalContourEntryPoint(const Float32 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return ExternalContourEntryPoint.putFloat32(value, pos);
+}
+
+
 OFCondition DRTIonControlPointSequence::Item::setGantryAngle(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtics.cc b/dcmrt/libsrc/drtics.cc
index 68398be..cc4ab0a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTInstitutionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTInstitutionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTInstitutionCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTInstitutionCodeSequence::Item &DRTInstitutionCodeSequence::Item::operator=(co
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTInstitutionCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTInstitutionCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTInstitutionCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "InstitutionCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "InstitutionCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "InstitutionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "InstitutionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "InstitutionCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTInstitutionCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "InstitutionCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "InstitutionCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "InstitutionCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "InstitutionCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "InstitutionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "InstitutionCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTInstitutionCodeSequence::Item::getContextUID(OFString &value, con
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTInstitutionCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTInstitutionCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTInstitutionCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTInstitutionCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTInstitutionCodeSequence::Item::setContextUID(const OFString &valu
 }
 
 
+OFCondition DRTInstitutionCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTInstitutionCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTInstitutionCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTInstitutionCodeSequence::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 DRTInstitutionCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTInstitutionCodeSequence::DRTInstitutionCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtiis.cc b/dcmrt/libsrc/drtiis.cc
index 2f824d6..145601c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIconImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtimage.cc b/dcmrt/libsrc/drtimage.cc
index 8165741..f55e999 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTImageIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTImageIOD::DRTImageIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -190,6 +192,7 @@ DRTImageIOD::DRTImageIOD()
     MultiplexedAudioChannelsDescriptionCodeSequence(),
     NumberOfFrames(DCM_NumberOfFrames),
     FrameIncrementPointer(DCM_FrameIncrementPointer),
+    StereoPairsPresent(DCM_StereoPairsPresent),
     DeviceSequence(),
     SamplesPerPixel(DCM_SamplesPerPixel),
     PhotometricInterpretation(DCM_PhotometricInterpretation),
@@ -276,6 +279,7 @@ DRTImageIOD::DRTImageIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence(),
     FrameExtractionSequence()
@@ -326,6 +330,8 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -458,6 +464,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     MultiplexedAudioChannelsDescriptionCodeSequence(copy.MultiplexedAudioChannelsDescriptionCodeSequence),
     NumberOfFrames(copy.NumberOfFrames),
     FrameIncrementPointer(copy.FrameIncrementPointer),
+    StereoPairsPresent(copy.StereoPairsPresent),
     DeviceSequence(copy.DeviceSequence),
     SamplesPerPixel(copy.SamplesPerPixel),
     PhotometricInterpretation(copy.PhotometricInterpretation),
@@ -544,6 +551,7 @@ DRTImageIOD::DRTImageIOD(const DRTImageIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence),
     FrameExtractionSequence(copy.FrameExtractionSequence)
@@ -600,6 +608,8 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -732,6 +742,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         MultiplexedAudioChannelsDescriptionCodeSequence = copy.MultiplexedAudioChannelsDescriptionCodeSequence;
         NumberOfFrames = copy.NumberOfFrames;
         FrameIncrementPointer = copy.FrameIncrementPointer;
+        StereoPairsPresent = copy.StereoPairsPresent;
         DeviceSequence = copy.DeviceSequence;
         SamplesPerPixel = copy.SamplesPerPixel;
         PhotometricInterpretation = copy.PhotometricInterpretation;
@@ -818,6 +829,7 @@ DRTImageIOD &DRTImageIOD::operator=(const DRTImageIOD &copy)
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
         FrameExtractionSequence = copy.FrameExtractionSequence;
@@ -869,6 +881,8 @@ void DRTImageIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -1008,6 +1022,7 @@ void DRTImageIOD::clear()
     MultiplexedAudioChannelsDescriptionCodeSequence.clear();
     NumberOfFrames.clear();
     FrameIncrementPointer.clear();
+    StereoPairsPresent.clear();
     DeviceSequence.clear();
     PixelIntensityRelationship.clear();
     PixelIntensityRelationshipSign.clear();
@@ -1087,6 +1102,7 @@ void DRTImageIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
     FrameExtractionSequence.clear();
@@ -1249,6 +1265,7 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         {
             getAndCheckElementFromDataset(dataset, NumberOfFrames, "1", "1", "MultiFrameModule");
             getAndCheckElementFromDataset(dataset, FrameIncrementPointer, "1-n", "1", "MultiFrameModule");
+            getAndCheckElementFromDataset(dataset, StereoPairsPresent, "1", "3", "MultiFrameModule");
         }
 
         // --- DeviceModule (U) ---
@@ -1355,6 +1372,7 @@ OFCondition DRTImageIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -1435,6 +1453,8 @@ OFCondition DRTImageIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1571,6 +1591,8 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1752,6 +1774,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         {
             addElementToDataset(result, dataset, new DcmIntegerString(NumberOfFrames), "1", "1", "MultiFrameModule");
             addElementToDataset(result, dataset, new DcmAttributeTag(FrameIncrementPointer), "1-n", "1", "MultiFrameModule");
+            addElementToDataset(result, dataset, new DcmCodeString(StereoPairsPresent), "1", "3", "MultiFrameModule");
         }
 
         // --- DeviceModule (U) ---
@@ -1864,6 +1887,7 @@ OFCondition DRTImageIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -2003,7 +2027,8 @@ OFBool DRTImageIOD::isMultiFrameModulePresent(const OFBool complete)
     } else {
         /* check whether at least one attribute is present */
         return !NumberOfFrames.isEmpty() ||
-               !FrameIncrementPointer.isEmpty();
+               !FrameIncrementPointer.isEmpty() ||
+               !StereoPairsPresent.isEmpty();
     }
 }
 
@@ -2304,6 +2329,12 @@ OFCondition DRTImageIOD::getCommentsOnThePerformedProcedureStep(OFString &value,
 }
 
 
+OFCondition DRTImageIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getContentDate(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentDate, value, pos);
@@ -3531,6 +3562,12 @@ OFCondition DRTImageIOD::getStationName(OFString &value, const signed long pos)
 }
 
 
+OFCondition DRTImageIOD::getStereoPairsPresent(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(StereoPairsPresent, value, pos);
+}
+
+
 OFCondition DRTImageIOD::getStopTrim(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(StopTrim, value, pos);
@@ -4026,6 +4063,15 @@ OFCondition DRTImageIOD::setCommentsOnThePerformedProcedureStep(const OFString &
 }
 
 
+OFCondition DRTImageIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setContentDate(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmDate::checkStringValue(value, "1") : EC_Normal;
@@ -5361,6 +5407,15 @@ OFCondition DRTImageIOD::setStationName(const OFString &value, const OFBool chec
 }
 
 
+OFCondition DRTImageIOD::setStereoPairsPresent(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = StereoPairsPresent.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTImageIOD::setStopTrim(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtionpl.cc b/dcmrt/libsrc/drtionpl.cc
index 35e4b50..52b22af 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -171,6 +173,7 @@ DRTIonPlanIOD::DRTIonPlanIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -220,6 +223,8 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -333,6 +338,7 @@ DRTIonPlanIOD::DRTIonPlanIOD(const DRTIonPlanIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -388,6 +394,8 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -501,6 +509,7 @@ DRTIonPlanIOD &DRTIonPlanIOD::operator=(const DRTIonPlanIOD &copy)
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -551,6 +560,8 @@ void DRTIonPlanIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -664,6 +675,7 @@ void DRTIonPlanIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -811,6 +823,7 @@ OFCondition DRTIonPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -885,6 +898,8 @@ OFCondition DRTIonPlanIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1021,6 +1036,8 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1190,6 +1207,7 @@ OFCondition DRTIonPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1449,6 +1467,12 @@ OFCondition DRTIonPlanIOD::getCommentsOnThePerformedProcedureStep(OFString &valu
 }
 
 
+OFCondition DRTIonPlanIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTIonPlanIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -2214,6 +2238,15 @@ OFCondition DRTIonPlanIOD::setCommentsOnThePerformedProcedureStep(const OFString
 }
 
 
+OFCondition DRTIonPlanIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonPlanIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtiontr.cc b/dcmrt/libsrc/drtiontr.cc
index 6582499..ec5bf4d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonBeamsTreatmentRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -166,6 +168,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -215,6 +218,8 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -323,6 +328,7 @@ DRTIonBeamsTreatmentRecordIOD::DRTIonBeamsTreatmentRecordIOD(const DRTIonBeamsTr
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -378,6 +384,8 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -486,6 +494,7 @@ DRTIonBeamsTreatmentRecordIOD &DRTIonBeamsTreatmentRecordIOD::operator=(const DR
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -536,6 +545,8 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -644,6 +655,7 @@ void DRTIonBeamsTreatmentRecordIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -783,6 +795,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -857,6 +870,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -993,6 +1008,8 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1149,6 +1166,7 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1390,6 +1408,12 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::getCommentsOnThePerformedProcedureSte
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -2122,6 +2146,15 @@ OFCondition DRTIonBeamsTreatmentRecordIOD::setCommentsOnThePerformedProcedureSte
 }
 
 
+OFCondition DRTIonBeamsTreatmentRecordIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTIonBeamsTreatmentRecordIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtipiqs.cc b/dcmrt/libsrc/drtipiqs.cc
index 5a633ee..25a3869 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfPatientIDQualifiersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtircs.cc b/dcmrt/libsrc/drtircs.cc
index d5635e8..e79d28c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonRangeCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtiseis.cc b/dcmrt/libsrc/drtiseis.cc
index 20c9018..eb40d2e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIssuerOfServiceEpisodeIDSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtitts.cc b/dcmrt/libsrc/drtitts.cc
index 99ae730..32d02c1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtiwps.cc b/dcmrt/libsrc/drtiwps.cc
index 1099097..0501b4b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtiws.cc b/dcmrt/libsrc/drtiws.cc
index d243970..66ec2a8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTIonWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtlsds.cc b/dcmrt/libsrc/drtlsds.cc
index 5fb6743..c6ee742 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtlsds6.cc b/dcmrt/libsrc/drtlsds6.cc
index b93c373..77f8ba1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtlsds7.cc b/dcmrt/libsrc/drtlsds7.cc
index 9674978..6d236c5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTLateralSpreadingDeviceSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtmacds.cc b/dcmrt/libsrc/drtmacds.cc
index 2e8a283..ddbda95 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMultiplexedAudioChannelsDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtmas.cc b/dcmrt/libsrc/drtmas.cc
index 0002733..369b0c6 100644
--- a/dcmrt/libsrc/drtmas.cc
+++ b/dcmrt/libsrc/drtmas.cc
@@ -1,13 +1,14 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTModifiedAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  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
  *
  */
 
@@ -67,24 +68,26 @@ 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;
     }
     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;
     }
     return result;
diff --git a/dcmrt/libsrc/drtmdrs.cc b/dcmrt/libsrc/drtmdrs.cc
index 88cf29e..bac8e3d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtmls.cc b/dcmrt/libsrc/drtmls.cc
index 8a964e1..af627b0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTModalityLUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtmps.cc b/dcmrt/libsrc/drtmps.cc
index 4b8dafc..b48bfaa 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMACParametersSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtmss.cc b/dcmrt/libsrc/drtmss.cc
index 6d665c8..8879fa6 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMotionSynchronizationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtmucs.cc b/dcmrt/libsrc/drtmucs.cc
index 3348a96..b995faa 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTMeasurementUnitsCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTMeasurementUnitsCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTMeasurementUnitsCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTMeasurementUnitsCodeSequence::Item &DRTMeasurementUnitsCodeSequence::Item::op
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTMeasurementUnitsCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTMeasurementUnitsCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "MeasurementUnitsCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "MeasurementUnitsCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "MeasurementUnitsCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "MeasurementUnitsCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "MeasurementUnitsCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "MeasurementUnitsCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "MeasurementUnitsCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "MeasurementUnitsCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "MeasurementUnitsCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "MeasurementUnitsCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "MeasurementUnitsCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::getContextUID(OFString &value
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResource(OFString &
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTMeasurementUnitsCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTMeasurementUnitsCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTMeasurementUnitsCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTMeasurementUnitsCodeSequence::Item::setMappingResource(const OFSt
 }
 
 
+OFCondition DRTMeasurementUnitsCodeSequence::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 DRTMeasurementUnitsCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTMeasurementUnitsCodeSequence::DRTMeasurementUnitsCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtoas.cc b/dcmrt/libsrc/drtoas.cc
index e7ba74a..0685b2f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOriginalAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtois.cc b/dcmrt/libsrc/drtois.cc
index 80fa9c3..43e4ce2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOperatorIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTOperatorIdentificationSequence::Item::Item(const OFBool emptyDefaultItem)
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
@@ -38,6 +39,7 @@ DRTOperatorIdentificationSequence::Item::Item(const Item &copy)
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
@@ -58,6 +60,7 @@ DRTOperatorIdentificationSequence::Item &DRTOperatorIdentificationSequence::Item
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
@@ -72,6 +75,7 @@ void DRTOperatorIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -84,6 +88,7 @@ OFBool DRTOperatorIdentificationSequence::Item::isEmpty()
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
@@ -106,6 +111,7 @@ OFCondition DRTOperatorIdentificationSequence::Item::read(DcmItem &item)
         PersonIdentificationCodeSequence.read(item, "1-n", "1", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "OperatorIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "OperatorIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "OperatorIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "OperatorIdentificationSequence");
@@ -124,6 +130,7 @@ OFCondition DRTOperatorIdentificationSequence::Item::write(DcmItem &item)
         if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "OperatorIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "OperatorIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "OperatorIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "OperatorIdentificationSequence");
@@ -159,6 +166,15 @@ OFCondition DRTOperatorIdentificationSequence::Item::getPersonAddress(OFString &
 }
 
 
+OFCondition DRTOperatorIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
 OFCondition DRTOperatorIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -207,6 +223,19 @@ OFCondition DRTOperatorIdentificationSequence::Item::setPersonAddress(const OFSt
 }
 
 
+OFCondition DRTOperatorIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTOperatorIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtopis.cc b/dcmrt/libsrc/drtopis.cc
index e7a963f..a47bd1e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOtherPatientIDsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtos.cc b/dcmrt/libsrc/drtos.cc
index fcbb06c..81ccc2e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTOverrideSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtpbcs.cc b/dcmrt/libsrc/drtpbcs.cc
index 76de728..2f41032 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientBreedCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPatientBreedCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPatientBreedCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPatientBreedCodeSequence::Item &DRTPatientBreedCodeSequence::Item::operator=(
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPatientBreedCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPatientBreedCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPatientBreedCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PatientBreedCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PatientBreedCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientBreedCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientBreedCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientBreedCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPatientBreedCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PatientBreedCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PatientBreedCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PatientBreedCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PatientBreedCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientBreedCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientBreedCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPatientBreedCodeSequence::Item::getContextUID(OFString &value, co
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientBreedCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPatientBreedCodeSequence::Item::getMappingResource(OFString &valu
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPatientBreedCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientBreedCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPatientBreedCodeSequence::Item::setContextUID(const OFString &val
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientBreedCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPatientBreedCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTPatientBreedCodeSequence::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 DRTPatientBreedCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPatientBreedCodeSequence::DRTPatientBreedCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpcs.cc b/dcmrt/libsrc/drtpcs.cc
index 291ea9a..d210544 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTProcedureCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTProcedureCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTProcedureCodeSequence::Item &DRTProcedureCodeSequence::Item::operator=(const
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTProcedureCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTProcedureCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTProcedureCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ProcedureCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ProcedureCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ProcedureCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTProcedureCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ProcedureCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ProcedureCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ProcedureCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ProcedureCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTProcedureCodeSequence::Item::getContextUID(OFString &value, const
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTProcedureCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTProcedureCodeSequence::Item::getMappingResource(OFString &value,
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTProcedureCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTProcedureCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTProcedureCodeSequence::Item::setContextUID(const OFString &value,
 }
 
 
+OFCondition DRTProcedureCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTProcedureCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTProcedureCodeSequence::Item::setMappingResource(const OFString &v
 }
 
 
+OFCondition DRTProcedureCodeSequence::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 DRTProcedureCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTProcedureCodeSequence::DRTProcedureCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpcxs.cc b/dcmrt/libsrc/drtpcxs.cc
index 21c8b9a..b95cebd 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTProtocolContextSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrcdrs.cc b/dcmrt/libsrc/drtpdecs.cc
similarity index 60%
copy from dcmrt/libsrc/drtrcdrs.cc
copy to dcmrt/libsrc/drtpdecs.cc
index 569d55a..0238804 100644
--- a/dcmrt/libsrc/drtrcdrs.cc
+++ b/dcmrt/libsrc/drtpdecs.cc
@@ -1,212 +1,213 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTReferencedCalculatedDoseReferenceSequence
+ *  Source file for class DRTPrivateDataElementCharacteristicsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtrcdrs.h"
+#include "dcmtk/dcmrt/seq/drtpdecs.h"
 
 
 // --- item class ---
 
-DRTReferencedCalculatedDoseReferenceSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTPrivateDataElementCharacteristicsSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    CalculatedDoseReferenceDoseValue(DCM_CalculatedDoseReferenceDoseValue),
-    ReferencedCalculatedDoseReferenceNumber(DCM_ReferencedCalculatedDoseReferenceNumber),
-    ReferencedDoseReferenceNumber(DCM_ReferencedDoseReferenceNumber)
+    BlockIdentifyingInformationStatus(DCM_BlockIdentifyingInformationStatus),
+    DeidentificationActionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    NonidentifyingPrivateElements(DCM_NonidentifyingPrivateElements),
+    PrivateCreatorReference(DCM_PrivateCreatorReference),
+    PrivateGroupReference(DCM_PrivateGroupReference)
 {
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::Item::Item(const Item &copy)
+DRTPrivateDataElementCharacteristicsSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    CalculatedDoseReferenceDoseValue(copy.CalculatedDoseReferenceDoseValue),
-    ReferencedCalculatedDoseReferenceNumber(copy.ReferencedCalculatedDoseReferenceNumber),
-    ReferencedDoseReferenceNumber(copy.ReferencedDoseReferenceNumber)
+    BlockIdentifyingInformationStatus(copy.BlockIdentifyingInformationStatus),
+    DeidentificationActionSequence(copy.DeidentificationActionSequence),
+    NonidentifyingPrivateElements(copy.NonidentifyingPrivateElements),
+    PrivateCreatorReference(copy.PrivateCreatorReference),
+    PrivateGroupReference(copy.PrivateGroupReference)
 {
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::Item::~Item()
+DRTPrivateDataElementCharacteristicsSequence::Item::~Item()
 {
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::Item::operator=(const Item &copy)
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        CalculatedDoseReferenceDoseValue = copy.CalculatedDoseReferenceDoseValue;
-        ReferencedCalculatedDoseReferenceNumber = copy.ReferencedCalculatedDoseReferenceNumber;
-        ReferencedDoseReferenceNumber = copy.ReferencedDoseReferenceNumber;
+        BlockIdentifyingInformationStatus = copy.BlockIdentifyingInformationStatus;
+        DeidentificationActionSequence = copy.DeidentificationActionSequence;
+        NonidentifyingPrivateElements = copy.NonidentifyingPrivateElements;
+        PrivateCreatorReference = copy.PrivateCreatorReference;
+        PrivateGroupReference = copy.PrivateGroupReference;
     }
     return *this;
 }
 
 
-void DRTReferencedCalculatedDoseReferenceSequence::Item::clear()
+void DRTPrivateDataElementCharacteristicsSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        ReferencedDoseReferenceNumber.clear();
-        ReferencedCalculatedDoseReferenceNumber.clear();
-        CalculatedDoseReferenceDoseValue.clear();
+        PrivateGroupReference.clear();
+        PrivateCreatorReference.clear();
+        BlockIdentifyingInformationStatus.clear();
+        NonidentifyingPrivateElements.clear();
+        DeidentificationActionSequence.clear();
     }
 }
 
 
-OFBool DRTReferencedCalculatedDoseReferenceSequence::Item::isEmpty()
+OFBool DRTPrivateDataElementCharacteristicsSequence::Item::isEmpty()
 {
-    return ReferencedDoseReferenceNumber.isEmpty() &&
-           ReferencedCalculatedDoseReferenceNumber.isEmpty() &&
-           CalculatedDoseReferenceDoseValue.isEmpty();
+    return PrivateGroupReference.isEmpty() &&
+           PrivateCreatorReference.isEmpty() &&
+           BlockIdentifyingInformationStatus.isEmpty() &&
+           NonidentifyingPrivateElements.isEmpty() &&
+           DeidentificationActionSequence.isEmpty();
 }
 
 
-OFBool DRTReferencedCalculatedDoseReferenceSequence::Item::isValid() const
+OFBool DRTPrivateDataElementCharacteristicsSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::read(DcmItem &item)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ReferencedDoseReferenceNumber, "1", "1C", "ReferencedCalculatedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, ReferencedCalculatedDoseReferenceNumber, "1", "1C", "ReferencedCalculatedDoseReferenceSequence");
-        getAndCheckElementFromDataset(item, CalculatedDoseReferenceDoseValue, "1", "1", "ReferencedCalculatedDoseReferenceSequence");
+        getAndCheckElementFromDataset(item, PrivateGroupReference, "1", "1", "PrivateDataElementCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, PrivateCreatorReference, "1", "1", "PrivateDataElementCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, BlockIdentifyingInformationStatus, "1", "1", "PrivateDataElementCharacteristicsSequence");
+        getAndCheckElementFromDataset(item, NonidentifyingPrivateElements, "1-n", "1C", "PrivateDataElementCharacteristicsSequence");
+        DeidentificationActionSequence.read(item, "1-n", "3", "PrivateDataElementCharacteristicsSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::write(DcmItem &item)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedDoseReferenceNumber), "1", "1C", "ReferencedCalculatedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmIntegerString(ReferencedCalculatedDoseReferenceNumber), "1", "1C", "ReferencedCalculatedDoseReferenceSequence");
-        addElementToDataset(result, item, new DcmDecimalString(CalculatedDoseReferenceDoseValue), "1", "1", "ReferencedCalculatedDoseReferenceSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(PrivateGroupReference), "1", "1", "PrivateDataElementCharacteristicsSequence");
+        addElementToDataset(result, item, new DcmLongString(PrivateCreatorReference), "1", "1", "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");
     }
     return result;
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::getCalculatedDoseReferenceDoseValue(OFString &value, const signed long pos) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::getBlockIdentifyingInformationStatus(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(CalculatedDoseReferenceDoseValue, value, pos);
+        return getStringValueFromElement(BlockIdentifyingInformationStatus, value, pos);
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::getCalculatedDoseReferenceDoseValue(Float64 &value, const unsigned long pos) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::getNonidentifyingPrivateElements(Uint16 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmDecimalString &, CalculatedDoseReferenceDoseValue).getFloat64(value, pos);
+        return OFconst_cast(DcmUnsignedShort &, NonidentifyingPrivateElements).getUint16(value, pos);
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::getReferencedCalculatedDoseReferenceNumber(OFString &value, const signed long pos) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::getPrivateCreatorReference(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(ReferencedCalculatedDoseReferenceNumber, value, pos);
+        return getStringValueFromElement(PrivateCreatorReference, value, pos);
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::getReferencedCalculatedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::getPrivateGroupReference(Uint16 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmIntegerString &, ReferencedCalculatedDoseReferenceNumber).getSint32(value, pos);
+        return OFconst_cast(DcmUnsignedShort &, PrivateGroupReference).getUint16(value, pos);
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::getReferencedDoseReferenceNumber(OFString &value, const signed long pos) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::setBlockIdentifyingInformationStatus(const OFString &value, const OFBool check)
 {
-    if (EmptyDefaultItem)
-        return EC_IllegalCall;
-    else
-        return getStringValueFromElement(ReferencedDoseReferenceNumber, value, pos);
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = BlockIdentifyingInformationStatus.putOFStringArray(value);
+    }
+    return result;
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::getReferencedDoseReferenceNumber(Sint32 &value, const unsigned long pos) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::setNonidentifyingPrivateElements(const Uint16 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return OFconst_cast(DcmIntegerString &, ReferencedDoseReferenceNumber).getSint32(value, pos);
-}
-
-
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::setCalculatedDoseReferenceDoseValue(const OFString &value, const OFBool check)
-{
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = CalculatedDoseReferenceDoseValue.putOFStringArray(value);
-    }
-    return result;
+        return NonidentifyingPrivateElements.putUint16(value, pos);
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::setReferencedCalculatedDoseReferenceNumber(const OFString &value, const OFBool check)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::setPrivateCreatorReference(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 = ReferencedCalculatedDoseReferenceNumber.putOFStringArray(value);
+            result = PrivateCreatorReference.putOFStringArray(value);
     }
     return result;
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::Item::setReferencedDoseReferenceNumber(const OFString &value, const OFBool check)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::Item::setPrivateGroupReference(const Uint16 value, const unsigned long pos)
 {
-    OFCondition result = EC_IllegalCall;
-    if (!EmptyDefaultItem)
-    {
-        result = (check) ? DcmIntegerString::checkStringValue(value, "1") : EC_Normal;
-        if (result.good())
-            result = ReferencedDoseReferenceNumber.putOFStringArray(value);
-    }
-    return result;
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return PrivateGroupReference.putUint16(value, pos);
 }
 
 
 // --- sequence class ---
 
-DRTReferencedCalculatedDoseReferenceSequence::DRTReferencedCalculatedDoseReferenceSequence(const OFBool emptyDefaultSequence)
+DRTPrivateDataElementCharacteristicsSequence::DRTPrivateDataElementCharacteristicsSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -216,7 +217,7 @@ DRTReferencedCalculatedDoseReferenceSequence::DRTReferencedCalculatedDoseReferen
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::DRTReferencedCalculatedDoseReferenceSequence(const DRTReferencedCalculatedDoseReferenceSequence &copy)
+DRTPrivateDataElementCharacteristicsSequence::DRTPrivateDataElementCharacteristicsSequence(const DRTPrivateDataElementCharacteristicsSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -242,7 +243,7 @@ DRTReferencedCalculatedDoseReferenceSequence::DRTReferencedCalculatedDoseReferen
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence &DRTReferencedCalculatedDoseReferenceSequence::operator=(const DRTReferencedCalculatedDoseReferenceSequence &copy)
+DRTPrivateDataElementCharacteristicsSequence &DRTPrivateDataElementCharacteristicsSequence::operator=(const DRTPrivateDataElementCharacteristicsSequence &copy)
 {
     if (this != &copy)
     {
@@ -270,13 +271,13 @@ DRTReferencedCalculatedDoseReferenceSequence &DRTReferencedCalculatedDoseReferen
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::~DRTReferencedCalculatedDoseReferenceSequence()
+DRTPrivateDataElementCharacteristicsSequence::~DRTPrivateDataElementCharacteristicsSequence()
 {
     clear();
 }
 
 
-void DRTReferencedCalculatedDoseReferenceSequence::clear()
+void DRTPrivateDataElementCharacteristicsSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -295,25 +296,25 @@ void DRTReferencedCalculatedDoseReferenceSequence::clear()
 }
 
 
-OFBool DRTReferencedCalculatedDoseReferenceSequence::isEmpty()
+OFBool DRTPrivateDataElementCharacteristicsSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTReferencedCalculatedDoseReferenceSequence::isValid() const
+OFBool DRTPrivateDataElementCharacteristicsSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTReferencedCalculatedDoseReferenceSequence::getNumberOfItems() const
+unsigned long DRTPrivateDataElementCharacteristicsSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoFirstItem()
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -325,7 +326,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoNextItem()
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -337,7 +338,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoNextItem()
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -357,7 +358,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -377,13 +378,13 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigne
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::gotoItem(const unsigned long num)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::gotoItem(const unsigned long num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::getCurrentItem(Item *&item) const
+OFCondition DRTPrivateDataElementCharacteristicsSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -395,7 +396,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::getCurrentItem(Item *&
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::getCurrentItem()
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -404,7 +405,7 @@ DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseR
 }
 
 
-const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::getCurrentItem() const
+const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -413,7 +414,7 @@ const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculate
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num, Item *&item)
 {
     OFListIterator(Item *) iterator;
     OFCondition result = gotoItem(num, iterator);
@@ -423,7 +424,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::getItem(const unsigned
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::getItem(const unsigned long num)
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num)
 {
     OFListIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -433,7 +434,7 @@ DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseR
 }
 
 
-const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::getItem(const unsigned long num) const
+const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::getItem(const unsigned long num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -443,19 +444,19 @@ const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculate
 }
 
 
-DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::operator[](const unsigned long num)
+DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::operator[](const unsigned long num)
 {
     return getItem(num);
 }
 
 
-const DRTReferencedCalculatedDoseReferenceSequence::Item &DRTReferencedCalculatedDoseReferenceSequence::operator[](const unsigned long num) const
+const DRTPrivateDataElementCharacteristicsSequence::Item &DRTPrivateDataElementCharacteristicsSequence::operator[](const unsigned long num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::addItem(Item *&item)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -472,7 +473,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::insertItem(const unsigned long pos, Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -495,7 +496,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::insertItem(const unsig
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::removeItem(const unsigned long pos)
+OFCondition DRTPrivateDataElementCharacteristicsSequence::removeItem(const unsigned long pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -513,7 +514,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::removeItem(const unsig
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::read(DcmItem &dataset,
+OFCondition DRTPrivateDataElementCharacteristicsSequence::read(DcmItem &dataset,
                                                                const OFString &card,
                                                                const OFString &type,
                                                                const char *moduleName)
@@ -525,7 +526,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ReferencedCalculatedDoseReferenceSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_PrivateDataElementCharacteristicsSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -555,7 +556,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ReferencedCalculatedDoseReferenceSequence);
+            DcmSequenceOfItems element(DCM_PrivateDataElementCharacteristicsSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -563,7 +564,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTReferencedCalculatedDoseReferenceSequence::write(DcmItem &dataset,
+OFCondition DRTPrivateDataElementCharacteristicsSequence::write(DcmItem &dataset,
                                                                 const OFString &card,
                                                                 const OFString &type,
                                                                 const char *moduleName)
@@ -572,7 +573,7 @@ OFCondition DRTReferencedCalculatedDoseReferenceSequence::write(DcmItem &dataset
     if (!EmptyDefaultSequence)
     {
         result = EC_MemoryExhausted;
-        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_ReferencedCalculatedDoseReferenceSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_PrivateDataElementCharacteristicsSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtpfms.cc b/dcmrt/libsrc/drtpfms.cc
index 1220280..0db5bd3 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPrimaryFluenceModeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtpics.cc b/dcmrt/libsrc/drtpics.cc
index c864009..77b1ad8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPersonIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPersonIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPersonIdentificationCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPersonIdentificationCodeSequence::Item &DRTPersonIdentificationCodeSequence::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPersonIdentificationCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPersonIdentificationCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PersonIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PersonIdentificationCodeSequence");
+        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");
@@ -151,13 +175,17 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PersonIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PersonIdentificationCodeSequence");
+        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");
@@ -257,6 +285,15 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getContextUID(OFString &v
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResource(OFStri
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPersonIdentificationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPersonIdentificationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setContextUID(const OFStr
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPersonIdentificationCodeSequence::Item::setMappingResource(const
 }
 
 
+OFCondition DRTPersonIdentificationCodeSequence::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 DRTPersonIdentificationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPersonIdentificationCodeSequence::DRTPersonIdentificationCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtplan.cc b/dcmrt/libsrc/drtplan.cc
index dd21288..63968f1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPlanIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTPlanIOD::DRTPlanIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -176,6 +178,7 @@ DRTPlanIOD::DRTPlanIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -225,6 +228,8 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -343,6 +348,7 @@ DRTPlanIOD::DRTPlanIOD(const DRTPlanIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -398,6 +404,8 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -516,6 +524,7 @@ DRTPlanIOD &DRTPlanIOD::operator=(const DRTPlanIOD &copy)
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -566,6 +575,8 @@ void DRTPlanIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -684,6 +695,7 @@ void DRTPlanIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -846,6 +858,7 @@ OFCondition DRTPlanIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -920,6 +933,8 @@ OFCondition DRTPlanIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -1056,6 +1071,8 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1238,6 +1255,7 @@ OFCondition DRTPlanIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1544,6 +1562,12 @@ OFCondition DRTPlanIOD::getCommentsOnThePerformedProcedureStep(OFString &value,
 }
 
 
+OFCondition DRTPlanIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTPlanIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -2327,6 +2351,15 @@ OFCondition DRTPlanIOD::setCommentsOnThePerformedProcedureStep(const OFString &v
 }
 
 
+OFCondition DRTPlanIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTPlanIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drtporcs.cc b/dcmrt/libsrc/drtporcs.cc
index 0a5bff2..7543d60 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPurposeOfReferenceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPurposeOfReferenceCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPurposeOfReferenceCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPurposeOfReferenceCodeSequence::Item &DRTPurposeOfReferenceCodeSequence::Item
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPurposeOfReferenceCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPurposeOfReferenceCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PurposeOfReferenceCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PurposeOfReferenceCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PurposeOfReferenceCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PurposeOfReferenceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PurposeOfReferenceCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PurposeOfReferenceCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PurposeOfReferenceCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PurposeOfReferenceCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PurposeOfReferenceCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PurposeOfReferenceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PurposeOfReferenceCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::getContextUID(OFString &val
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPurposeOfReferenceCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::setContextUID(const OFStrin
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPurposeOfReferenceCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPurposeOfReferenceCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTPurposeOfReferenceCodeSequence::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 DRTPurposeOfReferenceCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPurposeOfReferenceCodeSequence::DRTPurposeOfReferenceCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtporis.cc b/dcmrt/libsrc/drtporis.cc
index b0bfc31..baa1c80 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPhysiciansOfRecordIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTPhysiciansOfRecordIdentificationSequence::Item::Item(const OFBool emptyDefaul
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
@@ -38,6 +39,7 @@ DRTPhysiciansOfRecordIdentificationSequence::Item::Item(const Item &copy)
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
@@ -58,6 +60,7 @@ DRTPhysiciansOfRecordIdentificationSequence::Item &DRTPhysiciansOfRecordIdentifi
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
@@ -72,6 +75,7 @@ void DRTPhysiciansOfRecordIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -84,6 +88,7 @@ OFBool DRTPhysiciansOfRecordIdentificationSequence::Item::isEmpty()
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
@@ -106,6 +111,7 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::read(DcmItem &ite
         PersonIdentificationCodeSequence.read(item, "1-n", "1", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "PhysiciansOfRecordIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "PhysiciansOfRecordIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "PhysiciansOfRecordIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "PhysiciansOfRecordIdentificationSequence");
@@ -124,6 +130,7 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::write(DcmItem &it
         if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "PhysiciansOfRecordIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "PhysiciansOfRecordIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "PhysiciansOfRecordIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "PhysiciansOfRecordIdentificationSequence");
@@ -159,6 +166,15 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getPersonAddress(
 }
 
 
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
 OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -207,6 +223,19 @@ OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setPersonAddress(
 }
 
 
+OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPhysiciansOfRecordIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtppcs.cc b/dcmrt/libsrc/drtppcs.cc
index 98b049b..9180bdd 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPerformedProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,8 +31,12 @@ DRTPerformedProtocolCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
-    ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+    MappingResourceUID(DCM_MappingResourceUID),
+    ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -49,8 +53,12 @@ DRTPerformedProtocolCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
-    ProtocolContextSequence(copy.ProtocolContextSequence)
+    MappingResourceUID(copy.MappingResourceUID),
+    ProtocolContextSequence(copy.ProtocolContextSequence),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -75,8 +83,12 @@ DRTPerformedProtocolCodeSequence::Item &DRTPerformedProtocolCodeSequence::Item::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
         ProtocolContextSequence = copy.ProtocolContextSequence;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -91,9 +103,13 @@ void DRTPerformedProtocolCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -109,9 +125,13 @@ OFBool DRTPerformedProtocolCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -133,13 +153,17 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PerformedProtocolCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PerformedProtocolCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PerformedProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PerformedProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PerformedProtocolCodeSequence");
@@ -157,13 +181,17 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PerformedProtocolCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PerformedProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PerformedProtocolCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PerformedProtocolCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PerformedProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PerformedProtocolCodeSequence");
@@ -264,6 +292,15 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::getContextUID(OFString &valu
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -273,6 +310,24 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPerformedProtocolCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPerformedProtocolCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -403,6 +458,19 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPerformedProtocolCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -416,6 +484,32 @@ OFCondition DRTPerformedProtocolCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTPerformedProtocolCodeSequence::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 DRTPerformedProtocolCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPerformedProtocolCodeSequence::DRTPerformedProtocolCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtprsis.cc b/dcmrt/libsrc/drtprsis.cc
index aa4ab44..bb30d25 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPhysiciansReadingStudyIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item::Item(const OFBool emptyDe
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
@@ -38,6 +39,7 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item::Item(const Item &copy)
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
@@ -58,6 +60,7 @@ DRTPhysiciansReadingStudyIdentificationSequence::Item &DRTPhysiciansReadingStudy
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
@@ -72,6 +75,7 @@ void DRTPhysiciansReadingStudyIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -84,6 +88,7 @@ OFBool DRTPhysiciansReadingStudyIdentificationSequence::Item::isEmpty()
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
@@ -106,6 +111,7 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::read(DcmItem
         PersonIdentificationCodeSequence.read(item, "1-n", "1", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "PhysiciansReadingStudyIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "PhysiciansReadingStudyIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "PhysiciansReadingStudyIdentificationSequence");
@@ -124,6 +130,7 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::write(DcmItem
         if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "PhysiciansReadingStudyIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "PhysiciansReadingStudyIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "PhysiciansReadingStudyIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "PhysiciansReadingStudyIdentificationSequence");
@@ -159,6 +166,15 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getPersonAddr
 }
 
 
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
 OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -207,6 +223,19 @@ OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setPersonAddr
 }
 
 
+OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPhysiciansReadingStudyIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtpscs.cc b/dcmrt/libsrc/drtpscs.cc
index a65b7eb..8ea5480 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSpeciesCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPatientSpeciesCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPatientSpeciesCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPatientSpeciesCodeSequence::Item &DRTPatientSpeciesCodeSequence::Item::operat
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPatientSpeciesCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPatientSpeciesCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PatientSpeciesCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PatientSpeciesCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientSpeciesCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientSpeciesCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientSpeciesCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PatientSpeciesCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PatientSpeciesCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PatientSpeciesCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PatientSpeciesCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientSpeciesCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientSpeciesCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::getContextUID(OFString &value,
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResource(OFString &va
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPatientSpeciesCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientSpeciesCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::setContextUID(const OFString &v
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientSpeciesCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPatientSpeciesCodeSequence::Item::setMappingResource(const OFStri
 }
 
 
+OFCondition DRTPatientSpeciesCodeSequence::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 DRTPatientSpeciesCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPatientSpeciesCodeSequence::DRTPatientSpeciesCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpsics.cc b/dcmrt/libsrc/drtpsics.cc
index f34e8e3..d35b732 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSizeCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTPatientSizeCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTPatientSizeCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTPatientSizeCodeSequence::Item &DRTPatientSizeCodeSequence::Item::operator=(co
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTPatientSizeCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTPatientSizeCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTPatientSizeCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "PatientSizeCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "PatientSizeCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "PatientSizeCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "PatientSizeCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "PatientSizeCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTPatientSizeCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "PatientSizeCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "PatientSizeCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "PatientSizeCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "PatientSizeCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "PatientSizeCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "PatientSizeCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTPatientSizeCodeSequence::Item::getContextUID(OFString &value, con
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientSizeCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTPatientSizeCodeSequence::Item::getMappingResource(OFString &value
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTPatientSizeCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTPatientSizeCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTPatientSizeCodeSequence::Item::setContextUID(const OFString &valu
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTPatientSizeCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTPatientSizeCodeSequence::Item::setMappingResource(const OFString
 }
 
 
+OFCondition DRTPatientSizeCodeSequence::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 DRTPatientSizeCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTPatientSizeCodeSequence::DRTPatientSizeCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtpss.cc b/dcmrt/libsrc/drtpss.cc
index 8dd4a3d..d33128f 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPatientSetupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtpsss.cc b/dcmrt/libsrc/drtpsss.cc
index d2d6eaf..e036f82 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPredecessorStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtpvis.cc b/dcmrt/libsrc/drtpvis.cc
index 07a157c..11689b3 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTPlannedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtcims.cc b/dcmrt/libsrc/drtqds.cc
similarity index 72%
copy from dcmrt/libsrc/drtcims.cc
copy to dcmrt/libsrc/drtqds.cc
index afc07ab..2f35e33 100644
--- a/dcmrt/libsrc/drtcims.cc
+++ b/dcmrt/libsrc/drtqds.cc
@@ -1,25 +1,25 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTContentItemModifierSequence
+ *  Source file for class DRTQuantityDefinitionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtcims.h"
+#include "dcmtk/dcmrt/seq/drtqds.h"
 
 
 // --- item class ---
 
-DRTContentItemModifierSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTQuantityDefinitionSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     ConceptCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ConceptNameCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
@@ -40,7 +40,7 @@ DRTContentItemModifierSequence::Item::Item(const OFBool emptyDefaultItem)
 }
 
 
-DRTContentItemModifierSequence::Item::Item(const Item &copy)
+DRTQuantityDefinitionSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     ConceptCodeSequence(copy.ConceptCodeSequence),
     ConceptNameCodeSequence(copy.ConceptNameCodeSequence),
@@ -61,12 +61,12 @@ DRTContentItemModifierSequence::Item::Item(const Item &copy)
 }
 
 
-DRTContentItemModifierSequence::Item::~Item()
+DRTQuantityDefinitionSequence::Item::~Item()
 {
 }
 
 
-DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::Item::operator=(const Item &copy)
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
@@ -91,7 +91,7 @@ DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::Item::oper
 }
 
 
-void DRTContentItemModifierSequence::Item::clear()
+void DRTQuantityDefinitionSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
@@ -115,7 +115,7 @@ void DRTContentItemModifierSequence::Item::clear()
 }
 
 
-OFBool DRTContentItemModifierSequence::Item::isEmpty()
+OFBool DRTQuantityDefinitionSequence::Item::isEmpty()
 {
     return ValueType.isEmpty() &&
            ConceptNameCodeSequence.isEmpty() &&
@@ -135,67 +135,67 @@ OFBool DRTContentItemModifierSequence::Item::isEmpty()
 }
 
 
-OFBool DRTContentItemModifierSequence::Item::isValid() const
+OFBool DRTQuantityDefinitionSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::read(DcmItem &item)
+OFCondition DRTQuantityDefinitionSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, ValueType, "1", "1", "ContentItemModifierSequence");
-        ConceptNameCodeSequence.read(item, "1-n", "1", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, DateTime, "1", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, Date, "1", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, Time, "1", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, PersonName, "1", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, UID, "1", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, TextValue, "1", "1C", "ContentItemModifierSequence");
-        ConceptCodeSequence.read(item, "1-n", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, NumericValue, "1-n", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, FloatingPointValue, "1-n", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, RationalNumeratorValue, "1-n", "1C", "ContentItemModifierSequence");
-        getAndCheckElementFromDataset(item, RationalDenominatorValue, "1-n", "1C", "ContentItemModifierSequence");
-        MeasurementUnitsCodeSequence.read(item, "1-n", "1C", "ContentItemModifierSequence");
-        ReferencedSOPSequence.read(item, "1-n", "1C", "ContentItemModifierSequence");
+        getAndCheckElementFromDataset(item, ValueType, "1", "1", "QuantityDefinitionSequence");
+        ConceptNameCodeSequence.read(item, "1-n", "1", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, DateTime, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, Date, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, Time, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, PersonName, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, UID, "1", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, TextValue, "1", "1C", "QuantityDefinitionSequence");
+        ConceptCodeSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, NumericValue, "1-n", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, FloatingPointValue, "1-n", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, RationalNumeratorValue, "1-n", "1C", "QuantityDefinitionSequence");
+        getAndCheckElementFromDataset(item, RationalDenominatorValue, "1-n", "1C", "QuantityDefinitionSequence");
+        MeasurementUnitsCodeSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence");
+        ReferencedSOPSequence.read(item, "1-n", "1C", "QuantityDefinitionSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::write(DcmItem &item)
+OFCondition DRTQuantityDefinitionSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "ContentItemModifierSequence");
-        if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmTime(Time), "1", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmPersonName(PersonName), "1", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmUniqueIdentifier(UID), "1", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmUnlimitedText(TextValue), "1", "1C", "ContentItemModifierSequence");
-        if (result.good()) result = ConceptCodeSequence.write(item, "1-n", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmDecimalString(NumericValue), "1-n", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmFloatingPointDouble(FloatingPointValue), "1-n", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmSignedLong(RationalNumeratorValue), "1-n", "1C", "ContentItemModifierSequence");
-        addElementToDataset(result, item, new DcmUnsignedLong(RationalDenominatorValue), "1-n", "1C", "ContentItemModifierSequence");
-        if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1C", "ContentItemModifierSequence");
-        if (result.good()) result = ReferencedSOPSequence.write(item, "1-n", "1C", "ContentItemModifierSequence");
+        addElementToDataset(result, item, new DcmCodeString(ValueType), "1", "1", "QuantityDefinitionSequence");
+        if (result.good()) result = ConceptNameCodeSequence.write(item, "1-n", "1", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmDateTime(DateTime), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmDate(Date), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmTime(Time), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmPersonName(PersonName), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmUniqueIdentifier(UID), "1", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnlimitedText(TextValue), "1", "1C", "QuantityDefinitionSequence");
+        if (result.good()) result = ConceptCodeSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmDecimalString(NumericValue), "1-n", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmFloatingPointDouble(FloatingPointValue), "1-n", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmSignedLong(RationalNumeratorValue), "1-n", "1C", "QuantityDefinitionSequence");
+        addElementToDataset(result, item, new DcmUnsignedLong(RationalDenominatorValue), "1-n", "1C", "QuantityDefinitionSequence");
+        if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence");
+        if (result.good()) result = ReferencedSOPSequence.write(item, "1-n", "1C", "QuantityDefinitionSequence");
     }
     return result;
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getDate(OFString &value, const signed long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getDate(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -204,7 +204,7 @@ OFCondition DRTContentItemModifierSequence::Item::getDate(OFString &value, const
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getDateTime(OFString &value, const signed long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getDateTime(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -213,7 +213,7 @@ OFCondition DRTContentItemModifierSequence::Item::getDateTime(OFString &value, c
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getFloatingPointValue(Float64 &value, const unsigned long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getFloatingPointValue(Float64 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -222,7 +222,7 @@ OFCondition DRTContentItemModifierSequence::Item::getFloatingPointValue(Float64
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getNumericValue(OFString &value, const signed long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getNumericValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -231,7 +231,7 @@ OFCondition DRTContentItemModifierSequence::Item::getNumericValue(OFString &valu
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getNumericValue(Float64 &value, const unsigned long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getNumericValue(Float64 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -240,7 +240,7 @@ OFCondition DRTContentItemModifierSequence::Item::getNumericValue(Float64 &value
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getNumericValue(OFVector<Float64> &value) const
+OFCondition DRTQuantityDefinitionSequence::Item::getNumericValue(OFVector<Float64> &value) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -249,7 +249,7 @@ OFCondition DRTContentItemModifierSequence::Item::getNumericValue(OFVector<Float
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getPersonName(OFString &value, const signed long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getPersonName(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -258,7 +258,7 @@ OFCondition DRTContentItemModifierSequence::Item::getPersonName(OFString &value,
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getRationalDenominatorValue(Uint32 &value, const unsigned long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getRationalDenominatorValue(Uint32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -267,7 +267,7 @@ OFCondition DRTContentItemModifierSequence::Item::getRationalDenominatorValue(Ui
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getRationalNumeratorValue(Sint32 &value, const unsigned long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getRationalNumeratorValue(Sint32 &value, const unsigned long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -276,7 +276,7 @@ OFCondition DRTContentItemModifierSequence::Item::getRationalNumeratorValue(Sint
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getTextValue(OFString &value, const signed long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getTextValue(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -285,7 +285,7 @@ OFCondition DRTContentItemModifierSequence::Item::getTextValue(OFString &value,
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getTime(OFString &value, const signed long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getTime(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -294,7 +294,7 @@ OFCondition DRTContentItemModifierSequence::Item::getTime(OFString &value, const
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getUID(OFString &value, const signed long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getUID(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -303,7 +303,7 @@ OFCondition DRTContentItemModifierSequence::Item::getUID(OFString &value, const
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::getValueType(OFString &value, const signed long pos) const
+OFCondition DRTQuantityDefinitionSequence::Item::getValueType(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -312,7 +312,7 @@ OFCondition DRTContentItemModifierSequence::Item::getValueType(OFString &value,
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setDate(const OFString &value, const OFBool check)
+OFCondition DRTQuantityDefinitionSequence::Item::setDate(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -325,7 +325,7 @@ OFCondition DRTContentItemModifierSequence::Item::setDate(const OFString &value,
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setDateTime(const OFString &value, const OFBool check)
+OFCondition DRTQuantityDefinitionSequence::Item::setDateTime(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -338,7 +338,7 @@ OFCondition DRTContentItemModifierSequence::Item::setDateTime(const OFString &va
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setFloatingPointValue(const Float64 value, const unsigned long pos)
+OFCondition DRTQuantityDefinitionSequence::Item::setFloatingPointValue(const Float64 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -347,7 +347,7 @@ OFCondition DRTContentItemModifierSequence::Item::setFloatingPointValue(const Fl
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setNumericValue(const OFString &value, const OFBool check)
+OFCondition DRTQuantityDefinitionSequence::Item::setNumericValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -360,7 +360,7 @@ OFCondition DRTContentItemModifierSequence::Item::setNumericValue(const OFString
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setPersonName(const OFString &value, const OFBool check)
+OFCondition DRTQuantityDefinitionSequence::Item::setPersonName(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -373,7 +373,7 @@ OFCondition DRTContentItemModifierSequence::Item::setPersonName(const OFString &
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setRationalDenominatorValue(const Uint32 value, const unsigned long pos)
+OFCondition DRTQuantityDefinitionSequence::Item::setRationalDenominatorValue(const Uint32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -382,7 +382,7 @@ OFCondition DRTContentItemModifierSequence::Item::setRationalDenominatorValue(co
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setRationalNumeratorValue(const Sint32 value, const unsigned long pos)
+OFCondition DRTQuantityDefinitionSequence::Item::setRationalNumeratorValue(const Sint32 value, const unsigned long pos)
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
@@ -391,7 +391,7 @@ OFCondition DRTContentItemModifierSequence::Item::setRationalNumeratorValue(cons
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setTextValue(const OFString &value, const OFBool check)
+OFCondition DRTQuantityDefinitionSequence::Item::setTextValue(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -404,7 +404,7 @@ OFCondition DRTContentItemModifierSequence::Item::setTextValue(const OFString &v
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setTime(const OFString &value, const OFBool check)
+OFCondition DRTQuantityDefinitionSequence::Item::setTime(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -417,7 +417,7 @@ OFCondition DRTContentItemModifierSequence::Item::setTime(const OFString &value,
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setUID(const OFString &value, const OFBool check)
+OFCondition DRTQuantityDefinitionSequence::Item::setUID(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -430,7 +430,7 @@ OFCondition DRTContentItemModifierSequence::Item::setUID(const OFString &value,
 }
 
 
-OFCondition DRTContentItemModifierSequence::Item::setValueType(const OFString &value, const OFBool check)
+OFCondition DRTQuantityDefinitionSequence::Item::setValueType(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
@@ -445,7 +445,7 @@ OFCondition DRTContentItemModifierSequence::Item::setValueType(const OFString &v
 
 // --- sequence class ---
 
-DRTContentItemModifierSequence::DRTContentItemModifierSequence(const OFBool emptyDefaultSequence)
+DRTQuantityDefinitionSequence::DRTQuantityDefinitionSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -455,7 +455,7 @@ DRTContentItemModifierSequence::DRTContentItemModifierSequence(const OFBool empt
 }
 
 
-DRTContentItemModifierSequence::DRTContentItemModifierSequence(const DRTContentItemModifierSequence &copy)
+DRTQuantityDefinitionSequence::DRTQuantityDefinitionSequence(const DRTQuantityDefinitionSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -481,7 +481,7 @@ DRTContentItemModifierSequence::DRTContentItemModifierSequence(const DRTContentI
 }
 
 
-DRTContentItemModifierSequence &DRTContentItemModifierSequence::operator=(const DRTContentItemModifierSequence &copy)
+DRTQuantityDefinitionSequence &DRTQuantityDefinitionSequence::operator=(const DRTQuantityDefinitionSequence &copy)
 {
     if (this != &copy)
     {
@@ -509,13 +509,13 @@ DRTContentItemModifierSequence &DRTContentItemModifierSequence::operator=(const
 }
 
 
-DRTContentItemModifierSequence::~DRTContentItemModifierSequence()
+DRTQuantityDefinitionSequence::~DRTQuantityDefinitionSequence()
 {
     clear();
 }
 
 
-void DRTContentItemModifierSequence::clear()
+void DRTQuantityDefinitionSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -534,25 +534,25 @@ void DRTContentItemModifierSequence::clear()
 }
 
 
-OFBool DRTContentItemModifierSequence::isEmpty()
+OFBool DRTQuantityDefinitionSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTContentItemModifierSequence::isValid() const
+OFBool DRTQuantityDefinitionSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTContentItemModifierSequence::getNumberOfItems() const
+unsigned long DRTQuantityDefinitionSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTContentItemModifierSequence::gotoFirstItem()
+OFCondition DRTQuantityDefinitionSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -564,7 +564,7 @@ OFCondition DRTContentItemModifierSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTContentItemModifierSequence::gotoNextItem()
+OFCondition DRTQuantityDefinitionSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -576,7 +576,7 @@ OFCondition DRTContentItemModifierSequence::gotoNextItem()
 }
 
 
-OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -596,7 +596,7 @@ OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -616,13 +616,13 @@ OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num, OF
 }
 
 
-OFCondition DRTContentItemModifierSequence::gotoItem(const unsigned long num)
+OFCondition DRTQuantityDefinitionSequence::gotoItem(const unsigned long num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTContentItemModifierSequence::getCurrentItem(Item *&item) const
+OFCondition DRTQuantityDefinitionSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -634,7 +634,7 @@ OFCondition DRTContentItemModifierSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getCurrentItem()
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -643,7 +643,7 @@ DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getCurrent
 }
 
 
-const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getCurrentItem() const
+const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -652,7 +652,7 @@ const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getC
 }
 
 
-OFCondition DRTContentItemModifierSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTQuantityDefinitionSequence::getItem(const unsigned long 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)
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(const unsigned long 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 DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::getItem(const unsigned long num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -682,19 +682,19 @@ const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::getI
 }
 
 
-DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::operator[](const unsigned long num)
+DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::operator[](const unsigned long num)
 {
     return getItem(num);
 }
 
 
-const DRTContentItemModifierSequence::Item &DRTContentItemModifierSequence::operator[](const unsigned long num) const
+const DRTQuantityDefinitionSequence::Item &DRTQuantityDefinitionSequence::operator[](const unsigned long num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTContentItemModifierSequence::addItem(Item *&item)
+OFCondition DRTQuantityDefinitionSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -711,7 +711,7 @@ OFCondition DRTContentItemModifierSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTContentItemModifierSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTQuantityDefinitionSequence::insertItem(const unsigned long 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 DRTQuantityDefinitionSequence::removeItem(const unsigned long pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -752,10 +752,10 @@ OFCondition DRTContentItemModifierSequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTContentItemModifierSequence::read(DcmItem &dataset,
-                                                 const OFString &card,
-                                                 const OFString &type,
-                                                 const char *moduleName)
+OFCondition DRTQuantityDefinitionSequence::read(DcmItem &dataset,
+                                                const OFString &card,
+                                                const OFString &type,
+                                                const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -764,7 +764,7 @@ OFCondition DRTContentItemModifierSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_ContentItemModifierSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_QuantityDefinitionSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -794,7 +794,7 @@ OFCondition DRTContentItemModifierSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_ContentItemModifierSequence);
+            DcmSequenceOfItems element(DCM_QuantityDefinitionSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -802,16 +802,16 @@ OFCondition DRTContentItemModifierSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTContentItemModifierSequence::write(DcmItem &dataset,
-                                                  const OFString &card,
-                                                  const OFString &type,
-                                                  const char *moduleName)
+OFCondition DRTQuantityDefinitionSequence::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_ContentItemModifierSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_QuantityDefinitionSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtras.cc b/dcmrt/libsrc/drtras.cc
index 22fbf61..5f9a1e7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestAttributesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbas2.cc b/dcmrt/libsrc/drtrbas2.cc
index 368a009..361f0c5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbas8.cc b/dcmrt/libsrc/drtrbas8.cc
index 74fd8cc..58051ea 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBrachyApplicationSetupSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbls.cc b/dcmrt/libsrc/drtrbls.cc
index c6a8371..5325428 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedBlockSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbos1.cc b/dcmrt/libsrc/drtrbos1.cc
index 24d8834..aae8b6a 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbos6.cc b/dcmrt/libsrc/drtrbos6.cc
index 462e6bb..306e642 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbos7.cc b/dcmrt/libsrc/drtrbos7.cc
index eaa746c..3b04a4c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBolusSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbs2.cc b/dcmrt/libsrc/drtrbs2.cc
index 0574c66..67a0c56 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbs4.cc b/dcmrt/libsrc/drtrbs4.cc
index 92f91b0..54bc29e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrbs8.cc b/dcmrt/libsrc/drtrbs8.cc
index dfd4a6f..e2b2661 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedBeamSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrcdrs.cc b/dcmrt/libsrc/drtrcdrs.cc
index 569d55a..acad21e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrcos.cc b/dcmrt/libsrc/drtrcos.cc
index 6e95d0a..0b3b03b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedCompensatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrcps.cc b/dcmrt/libsrc/drtrcps.cc
index bbd0468..c115bab 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedControlPointSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrcs.cc b/dcmrt/libsrc/drtrcs.cc
index 294c357..b64abf7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIContourSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -23,6 +23,8 @@ DRTROIContourSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     ContourSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     ROIDisplayColor(DCM_ROIDisplayColor),
+    RecommendedDisplayCIELabValue(DCM_RecommendedDisplayCIELabValue),
+    RecommendedDisplayGrayscaleValue(DCM_RecommendedDisplayGrayscaleValue),
     ReferencedROINumber(DCM_ReferencedROINumber)
 {
 }
@@ -32,6 +34,8 @@ DRTROIContourSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     ContourSequence(copy.ContourSequence),
     ROIDisplayColor(copy.ROIDisplayColor),
+    RecommendedDisplayCIELabValue(copy.RecommendedDisplayCIELabValue),
+    RecommendedDisplayGrayscaleValue(copy.RecommendedDisplayGrayscaleValue),
     ReferencedROINumber(copy.ReferencedROINumber)
 {
 }
@@ -49,6 +53,8 @@ DRTROIContourSequence::Item &DRTROIContourSequence::Item::operator=(const Item &
         EmptyDefaultItem = copy.EmptyDefaultItem;
         ContourSequence = copy.ContourSequence;
         ROIDisplayColor = copy.ROIDisplayColor;
+        RecommendedDisplayCIELabValue = copy.RecommendedDisplayCIELabValue;
+        RecommendedDisplayGrayscaleValue = copy.RecommendedDisplayGrayscaleValue;
         ReferencedROINumber = copy.ReferencedROINumber;
     }
     return *this;
@@ -62,6 +68,8 @@ void DRTROIContourSequence::Item::clear()
         /* clear all DICOM attributes */
         ReferencedROINumber.clear();
         ROIDisplayColor.clear();
+        RecommendedDisplayGrayscaleValue.clear();
+        RecommendedDisplayCIELabValue.clear();
         ContourSequence.clear();
     }
 }
@@ -71,6 +79,8 @@ OFBool DRTROIContourSequence::Item::isEmpty()
 {
     return ReferencedROINumber.isEmpty() &&
            ROIDisplayColor.isEmpty() &&
+           RecommendedDisplayGrayscaleValue.isEmpty() &&
+           RecommendedDisplayCIELabValue.isEmpty() &&
            ContourSequence.isEmpty();
 }
 
@@ -90,6 +100,8 @@ OFCondition DRTROIContourSequence::Item::read(DcmItem &item)
         clear();
         getAndCheckElementFromDataset(item, ReferencedROINumber, "1", "1", "ROIContourSequence");
         getAndCheckElementFromDataset(item, ROIDisplayColor, "3", "3", "ROIContourSequence");
+        getAndCheckElementFromDataset(item, RecommendedDisplayGrayscaleValue, "1", "3", "ROIContourSequence");
+        getAndCheckElementFromDataset(item, RecommendedDisplayCIELabValue, "3", "3", "ROIContourSequence");
         ContourSequence.read(item, "1-n", "3", "ROIContourSequence");
         result = EC_Normal;
     }
@@ -105,6 +117,8 @@ OFCondition DRTROIContourSequence::Item::write(DcmItem &item)
         result = EC_Normal;
         addElementToDataset(result, item, new DcmIntegerString(ReferencedROINumber), "1", "1", "ROIContourSequence");
         addElementToDataset(result, item, new DcmIntegerString(ROIDisplayColor), "3", "3", "ROIContourSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(RecommendedDisplayGrayscaleValue), "1", "3", "ROIContourSequence");
+        addElementToDataset(result, item, new DcmUnsignedShort(RecommendedDisplayCIELabValue), "3", "3", "ROIContourSequence");
         if (result.good()) result = ContourSequence.write(item, "1-n", "3", "ROIContourSequence");
     }
     return result;
@@ -129,6 +143,24 @@ OFCondition DRTROIContourSequence::Item::getROIDisplayColor(Sint32 &value, const
 }
 
 
+OFCondition DRTROIContourSequence::Item::getRecommendedDisplayCIELabValue(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, RecommendedDisplayCIELabValue).getUint16(value, pos);
+}
+
+
+OFCondition DRTROIContourSequence::Item::getRecommendedDisplayGrayscaleValue(Uint16 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmUnsignedShort &, RecommendedDisplayGrayscaleValue).getUint16(value, pos);
+}
+
+
 OFCondition DRTROIContourSequence::Item::getReferencedROINumber(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -160,6 +192,24 @@ OFCondition DRTROIContourSequence::Item::setROIDisplayColor(const OFString &valu
 }
 
 
+OFCondition DRTROIContourSequence::Item::setRecommendedDisplayCIELabValue(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RecommendedDisplayCIELabValue.putUint16(value, pos);
+}
+
+
+OFCondition DRTROIContourSequence::Item::setRecommendedDisplayGrayscaleValue(const Uint16 value, const unsigned long pos)
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return RecommendedDisplayGrayscaleValue.putUint16(value, pos);
+}
+
+
 OFCondition DRTROIContourSequence::Item::setReferencedROINumber(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtrdros.cc b/dcmrt/libsrc/drtrdros.cc
index 9c3e30a..d2f0e91 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTDoseROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrdrs1.cc b/dcmrt/libsrc/drtrdrs1.cc
index a5c35fe..4cd20b7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrdrs6.cc b/dcmrt/libsrc/drtrdrs6.cc
index bc583f2..0061003 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrdrs8.cc b/dcmrt/libsrc/drtrdrs8.cc
index b6e9d39..0dadddd 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseReferenceSequenceInRTFractionSchemeModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrds.cc b/dcmrt/libsrc/drtrds.cc
index bc8e592..9db4526 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedDoseSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrecs.cc b/dcmrt/libsrc/drtrecs.cc
index c06bc61..ec67009 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIElementalCompositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrfgs.cc b/dcmrt/libsrc/drtrfgs.cc
index 93d9733..e82a286 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedFractionGroupSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrfors.cc b/dcmrt/libsrc/drtrfors.cc
index f9a63ff..a8b33d0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedFrameOfReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrics.cc b/dcmrt/libsrc/drtrics.cc
index af73b44..8b21d11 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTROIIdentificationCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTRTROIIdentificationCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTRTROIIdentificationCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTRTROIIdentificationCodeSequence::Item &DRTRTROIIdentificationCodeSequence::It
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTRTROIIdentificationCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTRTROIIdentificationCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "RTROIIdentificationCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "RTROIIdentificationCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RTROIIdentificationCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RTROIIdentificationCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RTROIIdentificationCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "RTROIIdentificationCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "RTROIIdentificationCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "RTROIIdentificationCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "RTROIIdentificationCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RTROIIdentificationCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RTROIIdentificationCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::getContextUID(OFString &va
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResource(OFStrin
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTRTROIIdentificationCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTRTROIIdentificationCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::setContextUID(const OFStri
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRTROIIdentificationCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTRTROIIdentificationCodeSequence::Item::setMappingResource(const O
 }
 
 
+OFCondition DRTRTROIIdentificationCodeSequence::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 DRTRTROIIdentificationCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTRTROIIdentificationCodeSequence::DRTRTROIIdentificationCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrims.cc b/dcmrt/libsrc/drtrims.cc
index 034cfa8..27c6926 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtris.cc b/dcmrt/libsrc/drtris.cc
index 2df5732..4628e26 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedInstanceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrlsds.cc b/dcmrt/libsrc/drtrlsds.cc
index 91cdd43..41c2ead 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedLateralSpreadingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrmdrs.cc b/dcmrt/libsrc/drtrmdrs.cc
index 2e450c5..f1548d2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrms.cc b/dcmrt/libsrc/drtrms.cc
index d28c498..e13e9d3 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrmss6.cc b/dcmrt/libsrc/drtrmss6.cc
index 7c73f6d..d1710ae 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrmss7.cc b/dcmrt/libsrc/drtrmss7.cc
index 54c3816..125b195 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeModulatorSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrpcs.cc b/dcmrt/libsrc/drtrpcs.cc
index 4b648d6..093a758 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTRequestedProcedureCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTRequestedProcedureCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTRequestedProcedureCodeSequence::Item &DRTRequestedProcedureCodeSequence::Item
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTRequestedProcedureCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTRequestedProcedureCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "RequestedProcedureCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "RequestedProcedureCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RequestedProcedureCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "RequestedProcedureCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "RequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "RequestedProcedureCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "RequestedProcedureCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RequestedProcedureCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::getContextUID(OFString &val
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTRequestedProcedureCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTRequestedProcedureCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::setContextUID(const OFStrin
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRequestedProcedureCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTRequestedProcedureCodeSequence::Item::setMappingResource(const OF
 }
 
 
+OFCondition DRTRequestedProcedureCodeSequence::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 DRTRequestedProcedureCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTRequestedProcedureCodeSequence::DRTRequestedProcedureCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrpis.cc b/dcmrt/libsrc/drtrpis.cc
index 299d60f..0fd7a5d 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferringPhysicianIdentificationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -26,6 +26,7 @@ DRTReferringPhysicianIdentificationSequence::Item::Item(const OFBool emptyDefaul
     InstitutionName(DCM_InstitutionName),
     PersonAddress(DCM_PersonAddress),
     PersonIdentificationCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    PersonTelecomInformation(DCM_PersonTelecomInformation),
     PersonTelephoneNumbers(DCM_PersonTelephoneNumbers)
 {
 }
@@ -38,6 +39,7 @@ DRTReferringPhysicianIdentificationSequence::Item::Item(const Item &copy)
     InstitutionName(copy.InstitutionName),
     PersonAddress(copy.PersonAddress),
     PersonIdentificationCodeSequence(copy.PersonIdentificationCodeSequence),
+    PersonTelecomInformation(copy.PersonTelecomInformation),
     PersonTelephoneNumbers(copy.PersonTelephoneNumbers)
 {
 }
@@ -58,6 +60,7 @@ DRTReferringPhysicianIdentificationSequence::Item &DRTReferringPhysicianIdentifi
         InstitutionName = copy.InstitutionName;
         PersonAddress = copy.PersonAddress;
         PersonIdentificationCodeSequence = copy.PersonIdentificationCodeSequence;
+        PersonTelecomInformation = copy.PersonTelecomInformation;
         PersonTelephoneNumbers = copy.PersonTelephoneNumbers;
     }
     return *this;
@@ -72,6 +75,7 @@ void DRTReferringPhysicianIdentificationSequence::Item::clear()
         PersonIdentificationCodeSequence.clear();
         PersonAddress.clear();
         PersonTelephoneNumbers.clear();
+        PersonTelecomInformation.clear();
         InstitutionName.clear();
         InstitutionAddress.clear();
         InstitutionCodeSequence.clear();
@@ -84,6 +88,7 @@ OFBool DRTReferringPhysicianIdentificationSequence::Item::isEmpty()
     return PersonIdentificationCodeSequence.isEmpty() &&
            PersonAddress.isEmpty() &&
            PersonTelephoneNumbers.isEmpty() &&
+           PersonTelecomInformation.isEmpty() &&
            InstitutionName.isEmpty() &&
            InstitutionAddress.isEmpty() &&
            InstitutionCodeSequence.isEmpty();
@@ -106,6 +111,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::read(DcmItem &ite
         PersonIdentificationCodeSequence.read(item, "1-n", "1", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonAddress, "1", "3", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, PersonTelephoneNumbers, "1-n", "3", "ReferringPhysicianIdentificationSequence");
+        getAndCheckElementFromDataset(item, PersonTelecomInformation, "1", "3", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionName, "1", "1C", "ReferringPhysicianIdentificationSequence");
         getAndCheckElementFromDataset(item, InstitutionAddress, "1", "3", "ReferringPhysicianIdentificationSequence");
         InstitutionCodeSequence.read(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence");
@@ -124,6 +130,7 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::write(DcmItem &it
         if (result.good()) result = PersonIdentificationCodeSequence.write(item, "1-n", "1", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(PersonAddress), "1", "3", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(PersonTelephoneNumbers), "1-n", "3", "ReferringPhysicianIdentificationSequence");
+        addElementToDataset(result, item, new DcmLongText(PersonTelecomInformation), "1", "3", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmLongString(InstitutionName), "1", "1C", "ReferringPhysicianIdentificationSequence");
         addElementToDataset(result, item, new DcmShortText(InstitutionAddress), "1", "3", "ReferringPhysicianIdentificationSequence");
         if (result.good()) result = InstitutionCodeSequence.write(item, "1-n", "1C", "ReferringPhysicianIdentificationSequence");
@@ -159,6 +166,15 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonAddress(
 }
 
 
+OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonTelecomInformation(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(PersonTelecomInformation, value, pos);
+}
+
+
 OFCondition DRTReferringPhysicianIdentificationSequence::Item::getPersonTelephoneNumbers(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -207,6 +223,19 @@ OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonAddress(
 }
 
 
+OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonTelecomInformation(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmLongText::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = PersonTelecomInformation.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReferringPhysicianIdentificationSequence::Item::setPersonTelephoneNumbers(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtrppcs.cc b/dcmrt/libsrc/drtrppcs.cc
index ef055d7..53cd0a2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReasonForPerformedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTReasonForPerformedProcedureCodeSequence::Item::Item(const OFBool emptyDefault
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTReasonForPerformedProcedureCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTReasonForPerformedProcedureCodeSequence::Item &DRTReasonForPerformedProcedure
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTReasonForPerformedProcedureCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTReasonForPerformedProcedureCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::read(DcmItem &item
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ReasonForPerformedProcedureCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ReasonForPerformedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ReasonForPerformedProcedureCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::write(DcmItem &ite
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ReasonForPerformedProcedureCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ReasonForPerformedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ReasonForPerformedProcedureCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getContextUID(OFSt
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setContextUID(cons
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTReasonForPerformedProcedureCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTReasonForPerformedProcedureCodeSequence::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 DRTReasonForPerformedProcedureCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTReasonForPerformedProcedureCodeSequence::DRTReasonForPerformedProcedureCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrpphs.cc b/dcmrt/libsrc/drtrpphs.cc
index ecfcf8b..0a8910b 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPatientPhotoSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -27,6 +27,7 @@ DRTReferencedPatientPhotoSequence::Item::Item(const OFBool emptyDefaultItem)
     SeriesInstanceUID(DCM_SeriesInstanceUID),
     StudyInstanceUID(DCM_StudyInstanceUID),
     TypeOfInstances(DCM_TypeOfInstances),
+    WADORSRetrievalSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     WADORetrievalSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     XDSRetrievalSequence(emptyDefaultItem /*emptyDefaultSequence*/)
 {
@@ -41,6 +42,7 @@ DRTReferencedPatientPhotoSequence::Item::Item(const Item &copy)
     SeriesInstanceUID(copy.SeriesInstanceUID),
     StudyInstanceUID(copy.StudyInstanceUID),
     TypeOfInstances(copy.TypeOfInstances),
+    WADORSRetrievalSequence(copy.WADORSRetrievalSequence),
     WADORetrievalSequence(copy.WADORetrievalSequence),
     XDSRetrievalSequence(copy.XDSRetrievalSequence)
 {
@@ -63,6 +65,7 @@ DRTReferencedPatientPhotoSequence::Item &DRTReferencedPatientPhotoSequence::Item
         SeriesInstanceUID = copy.SeriesInstanceUID;
         StudyInstanceUID = copy.StudyInstanceUID;
         TypeOfInstances = copy.TypeOfInstances;
+        WADORSRetrievalSequence = copy.WADORSRetrievalSequence;
         WADORetrievalSequence = copy.WADORetrievalSequence;
         XDSRetrievalSequence = copy.XDSRetrievalSequence;
     }
@@ -83,6 +86,7 @@ void DRTReferencedPatientPhotoSequence::Item::clear()
         DICOMMediaRetrievalSequence.clear();
         WADORetrievalSequence.clear();
         XDSRetrievalSequence.clear();
+        WADORSRetrievalSequence.clear();
     }
 }
 
@@ -96,7 +100,8 @@ OFBool DRTReferencedPatientPhotoSequence::Item::isEmpty()
            DICOMRetrievalSequence.isEmpty() &&
            DICOMMediaRetrievalSequence.isEmpty() &&
            WADORetrievalSequence.isEmpty() &&
-           XDSRetrievalSequence.isEmpty();
+           XDSRetrievalSequence.isEmpty() &&
+           WADORSRetrievalSequence.isEmpty();
 }
 
 
@@ -121,6 +126,7 @@ OFCondition DRTReferencedPatientPhotoSequence::Item::read(DcmItem &item)
         DICOMMediaRetrievalSequence.read(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         WADORetrievalSequence.read(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         XDSRetrievalSequence.read(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
+        WADORSRetrievalSequence.read(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         result = EC_Normal;
     }
     return result;
@@ -141,6 +147,7 @@ OFCondition DRTReferencedPatientPhotoSequence::Item::write(DcmItem &item)
         if (result.good()) result = DICOMMediaRetrievalSequence.write(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         if (result.good()) result = WADORetrievalSequence.write(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
         if (result.good()) result = XDSRetrievalSequence.write(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
+        if (result.good()) result = WADORSRetrievalSequence.write(item, "1-n", "1C", "ReferencedPatientPhotoSequence");
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtrpps.cc b/dcmrt/libsrc/drtrpps.cc
index 8f22b47..6eb0ef4 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTROIPhysicalPropertiesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrppss.cc b/dcmrt/libsrc/drtrppss.cc
index 96a123d..14f0744 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPerformedProcedureStepSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrps.cc b/dcmrt/libsrc/drtrps.cc
index aa32c59..03e800e 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedPatientSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrris1.cc b/dcmrt/libsrc/drtrris1.cc
index 91707a4..0feb958 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrris6.cc b/dcmrt/libsrc/drtrris6.cc
index 042b206..d583bd4 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrris9.cc b/dcmrt/libsrc/drtrris9.cc
index dd84953..3f51ce5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedReferenceImageSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrrms.cc b/dcmrt/libsrc/drtrrms.cc
index 661b6cd..1938aae 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedRangeModulatorSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrros.cc b/dcmrt/libsrc/drtrros.cc
index c0e56ac..5d8ad67 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrrpcs.cc b/dcmrt/libsrc/drtrrpcs.cc
index 56fbe7b..8847f97 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReasonForRequestedProcedureCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTReasonForRequestedProcedureCodeSequence::Item::Item(const OFBool emptyDefault
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTReasonForRequestedProcedureCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTReasonForRequestedProcedureCodeSequence::Item &DRTReasonForRequestedProcedure
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTReasonForRequestedProcedureCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTReasonForRequestedProcedureCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::read(DcmItem &item
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ReasonForRequestedProcedureCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ReasonForRequestedProcedureCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ReasonForRequestedProcedureCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::write(DcmItem &ite
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ReasonForRequestedProcedureCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ReasonForRequestedProcedureCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ReasonForRequestedProcedureCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getContextUID(OFSt
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResource
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setContextUID(cons
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTReasonForRequestedProcedureCodeSequence::Item::setMappingResource
 }
 
 
+OFCondition DRTReasonForRequestedProcedureCodeSequence::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 DRTReasonForRequestedProcedureCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTReasonForRequestedProcedureCodeSequence::DRTReasonForRequestedProcedureCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrrros.cc b/dcmrt/libsrc/drtrrros.cc
index ddb1fb5..e11fe87 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRelatedRTROIObservationsSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrrs.cc b/dcmrt/libsrc/drtrrs.cc
index 3ab8b9a..d149cb8 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTRelatedROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrrshs.cc b/dcmrt/libsrc/drtrrshs.cc
index 4076cae..b2988b0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrrtps.cc b/dcmrt/libsrc/drtrrtps.cc
index a32e03e..2e16c55 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrrtps3.cc b/dcmrt/libsrc/drtrrtps3.cc
index 7ece4a5..3f084b0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralPlanModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrrtps4.cc b/dcmrt/libsrc/drtrrtps4.cc
index f5883bd..008b6c4 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrrtps5.cc b/dcmrt/libsrc/drtrrtps5.cc
index bb07fee..830ede1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedRTPlanSequenceInRTImageModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrscs.cc b/dcmrt/libsrc/drtrscs.cc
index f06ff72..c31e213 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRequestingServiceCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTRequestingServiceCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTRequestingServiceCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTRequestingServiceCodeSequence::Item &DRTRequestingServiceCodeSequence::Item::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTRequestingServiceCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTRequestingServiceCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTRequestingServiceCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "RequestingServiceCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "RequestingServiceCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "RequestingServiceCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "RequestingServiceCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "RequestingServiceCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTRequestingServiceCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "RequestingServiceCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "RequestingServiceCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "RequestingServiceCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "RequestingServiceCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "RequestingServiceCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "RequestingServiceCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTRequestingServiceCodeSequence::Item::getContextUID(OFString &valu
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTRequestingServiceCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTRequestingServiceCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTRequestingServiceCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTRequestingServiceCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTRequestingServiceCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTRequestingServiceCodeSequence::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 DRTRequestingServiceCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTRequestingServiceCodeSequence::DRTRequestingServiceCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtrsers.cc b/dcmrt/libsrc/drtrsers.cc
index 04e7974..fa949ae 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrses.cc b/dcmrt/libsrc/drtrses.cc
index b6d93ca..c373227 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTReferencedSeriesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrshs.cc b/dcmrt/libsrc/drtrshs.cc
index 87bfade..42d12ba 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrshs6.cc b/dcmrt/libsrc/drtrshs6.cc
index e1a99f6..cfc26d5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrshs7.cc b/dcmrt/libsrc/drtrshs7.cc
index dde02dd..8f63f78 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRangeShifterSettingsSequenceInRTIonBeamsSessionRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrsis.cc b/dcmrt/libsrc/drtrsis.cc
index 2b1aad0..302f371 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSetupImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrsns.cc b/dcmrt/libsrc/drtrsns.cc
index 2deaf00..bbe4571 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrsos.cc b/dcmrt/libsrc/drtrsos.cc
index 376f84b..857ed82 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSOPSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrsrs.cc b/dcmrt/libsrc/drtrsrs.cc
index 02c3798..a36e5c1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedSpatialRegistrationSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrss.cc b/dcmrt/libsrc/drtrss.cc
index 26d981e..0f4da67 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrsss.cc b/dcmrt/libsrc/drtrsss.cc
index 2c6d837..3165635 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedStructureSetSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrsts.cc b/dcmrt/libsrc/drtrsts.cc
index bd3ddd9..90ab23c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRTReferencedStudySequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrtrs2.cc b/dcmrt/libsrc/drtrtrs2.cc
index 92196dc..f8824e2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedTreatmentRecordSequenceInRTDoseModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrtrs4.cc b/dcmrt/libsrc/drtrtrs4.cc
index 4b38bc7..b14e829 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedTreatmentRecordSequenceInRTGeneralTreatmentRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrvis.cc b/dcmrt/libsrc/drtrvis.cc
index 3de875b..7934196 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTReferencedVerificationImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrws.cc b/dcmrt/libsrc/drtrws.cc
index 135c4a8..c794534 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRecordedWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtrwvms.cc b/dcmrt/libsrc/drtrwvms.cc
index 121e7ad..9f70955 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTRealWorldValueMappingSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -24,6 +24,7 @@ DRTRealWorldValueMappingSequence::Item::Item(const OFBool emptyDefaultItem)
     LUTExplanation(DCM_LUTExplanation),
     LUTLabel(DCM_LUTLabel),
     MeasurementUnitsCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    QuantityDefinitionSequence(emptyDefaultItem /*emptyDefaultSequence*/),
     RealWorldValueFirstValueMapped(DCM_RealWorldValueFirstValueMapped),
     RealWorldValueIntercept(DCM_RealWorldValueIntercept),
     RealWorldValueLUTData(DCM_RealWorldValueLUTData),
@@ -38,6 +39,7 @@ DRTRealWorldValueMappingSequence::Item::Item(const Item &copy)
     LUTExplanation(copy.LUTExplanation),
     LUTLabel(copy.LUTLabel),
     MeasurementUnitsCodeSequence(copy.MeasurementUnitsCodeSequence),
+    QuantityDefinitionSequence(copy.QuantityDefinitionSequence),
     RealWorldValueFirstValueMapped(copy.RealWorldValueFirstValueMapped),
     RealWorldValueIntercept(copy.RealWorldValueIntercept),
     RealWorldValueLUTData(copy.RealWorldValueLUTData),
@@ -60,6 +62,7 @@ DRTRealWorldValueMappingSequence::Item &DRTRealWorldValueMappingSequence::Item::
         LUTExplanation = copy.LUTExplanation;
         LUTLabel = copy.LUTLabel;
         MeasurementUnitsCodeSequence = copy.MeasurementUnitsCodeSequence;
+        QuantityDefinitionSequence = copy.QuantityDefinitionSequence;
         RealWorldValueFirstValueMapped = copy.RealWorldValueFirstValueMapped;
         RealWorldValueIntercept = copy.RealWorldValueIntercept;
         RealWorldValueLUTData = copy.RealWorldValueLUTData;
@@ -83,6 +86,7 @@ void DRTRealWorldValueMappingSequence::Item::clear()
         LUTExplanation.clear();
         LUTLabel.clear();
         MeasurementUnitsCodeSequence.clear();
+        QuantityDefinitionSequence.clear();
     }
 }
 
@@ -96,7 +100,8 @@ OFBool DRTRealWorldValueMappingSequence::Item::isEmpty()
            RealWorldValueLUTData.isEmpty() &&
            LUTExplanation.isEmpty() &&
            LUTLabel.isEmpty() &&
-           MeasurementUnitsCodeSequence.isEmpty();
+           MeasurementUnitsCodeSequence.isEmpty() &&
+           QuantityDefinitionSequence.isEmpty();
 }
 
 
@@ -121,6 +126,7 @@ OFCondition DRTRealWorldValueMappingSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, LUTExplanation, "1", "1", "RealWorldValueMappingSequence");
         getAndCheckElementFromDataset(item, LUTLabel, "1", "1", "RealWorldValueMappingSequence");
         MeasurementUnitsCodeSequence.read(item, "1-n", "1", "RealWorldValueMappingSequence");
+        QuantityDefinitionSequence.read(item, "1-n", "3", "RealWorldValueMappingSequence");
         result = EC_Normal;
     }
     return result;
@@ -141,6 +147,7 @@ OFCondition DRTRealWorldValueMappingSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmLongString(LUTExplanation), "1", "1", "RealWorldValueMappingSequence");
         addElementToDataset(result, item, new DcmShortString(LUTLabel), "1", "1", "RealWorldValueMappingSequence");
         if (result.good()) result = MeasurementUnitsCodeSequence.write(item, "1-n", "1", "RealWorldValueMappingSequence");
+        if (result.good()) result = QuantityDefinitionSequence.write(item, "1-n", "3", "RealWorldValueMappingSequence");
     }
     return result;
 }
diff --git a/dcmrt/libsrc/drtscris.cc b/dcmrt/libsrc/drtscris.cc
index 619b2be..78a10f0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStudiesContainingOtherReferencedInstancesSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtsdcs.cc b/dcmrt/libsrc/drtsdcs.cc
index dea6cee..5dd75d9 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSeriesDescriptionCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTSeriesDescriptionCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTSeriesDescriptionCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTSeriesDescriptionCodeSequence::Item &DRTSeriesDescriptionCodeSequence::Item::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTSeriesDescriptionCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTSeriesDescriptionCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "SeriesDescriptionCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "SeriesDescriptionCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "SeriesDescriptionCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "SeriesDescriptionCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "SeriesDescriptionCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "SeriesDescriptionCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "SeriesDescriptionCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "SeriesDescriptionCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "SeriesDescriptionCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "SeriesDescriptionCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "SeriesDescriptionCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::getContextUID(OFString &valu
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTSeriesDescriptionCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTSeriesDescriptionCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTSeriesDescriptionCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTSeriesDescriptionCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTSeriesDescriptionCodeSequence::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 DRTSeriesDescriptionCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTSeriesDescriptionCodeSequence::DRTSeriesDescriptionCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtsds.cc b/dcmrt/libsrc/drtsds.cc
index 0a9f12e..946e593 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSetupDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtshds.cc b/dcmrt/libsrc/drtshds.cc
index a26369a..844fc95 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTShieldingDeviceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtsis.cc b/dcmrt/libsrc/drtsis.cc
index df008de..85b953c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceImageSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtsns.cc b/dcmrt/libsrc/drtsns.cc
index fa5c0a0..b0febd2 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSnoutSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtspccs.cc b/dcmrt/libsrc/drtspccs.cc
index 59bc852..be55f83 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSegmentedPropertyCategoryCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,7 +31,11 @@ DRTSegmentedPropertyCategoryCodeSequence::Item::Item(const OFBool emptyDefaultIt
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
-    MappingResource(DCM_MappingResource)
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
+    MappingResource(DCM_MappingResource),
+    MappingResourceUID(DCM_MappingResourceUID),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -48,7 +52,11 @@ DRTSegmentedPropertyCategoryCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
-    MappingResource(copy.MappingResource)
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
+    MappingResource(copy.MappingResource),
+    MappingResourceUID(copy.MappingResourceUID),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -73,7 +81,11 @@ DRTSegmentedPropertyCategoryCodeSequence::Item &DRTSegmentedPropertyCategoryCode
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -88,9 +100,13 @@ void DRTSegmentedPropertyCategoryCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -105,9 +121,13 @@ OFBool DRTSegmentedPropertyCategoryCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -128,13 +148,17 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "SegmentedPropertyCategoryCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "SegmentedPropertyCategoryCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "SegmentedPropertyCategoryCodeSequence");
@@ -151,13 +175,17 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "SegmentedPropertyCategoryCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "SegmentedPropertyCategoryCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "SegmentedPropertyCategoryCodeSequence");
@@ -257,6 +285,15 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getContextUID(OFStri
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -266,6 +303,24 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResource(O
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -396,6 +451,19 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setContextUID(const
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -409,6 +477,32 @@ OFCondition DRTSegmentedPropertyCategoryCodeSequence::Item::setMappingResource(c
 }
 
 
+OFCondition DRTSegmentedPropertyCategoryCodeSequence::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 DRTSegmentedPropertyCategoryCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTSegmentedPropertyCategoryCodeSequence::DRTSegmentedPropertyCategoryCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtspcs.cc b/dcmrt/libsrc/drtspcs.cc
index 6df3b1a..7f47f65 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTScheduledProtocolCodeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -31,8 +31,12 @@ DRTScheduledProtocolCodeSequence::Item::Item(const OFBool emptyDefaultItem)
     ContextGroupVersion(DCM_ContextGroupVersion),
     ContextIdentifier(DCM_ContextIdentifier),
     ContextUID(DCM_ContextUID),
+    EquivalentCodeSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    LongCodeValue(DCM_LongCodeValue),
     MappingResource(DCM_MappingResource),
-    ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/)
+    MappingResourceUID(DCM_MappingResourceUID),
+    ProtocolContextSequence(emptyDefaultItem /*emptyDefaultSequence*/),
+    URNCodeValue(DCM_URNCodeValue)
 {
 }
 
@@ -49,8 +53,12 @@ DRTScheduledProtocolCodeSequence::Item::Item(const Item &copy)
     ContextGroupVersion(copy.ContextGroupVersion),
     ContextIdentifier(copy.ContextIdentifier),
     ContextUID(copy.ContextUID),
+    EquivalentCodeSequence(copy.EquivalentCodeSequence),
+    LongCodeValue(copy.LongCodeValue),
     MappingResource(copy.MappingResource),
-    ProtocolContextSequence(copy.ProtocolContextSequence)
+    MappingResourceUID(copy.MappingResourceUID),
+    ProtocolContextSequence(copy.ProtocolContextSequence),
+    URNCodeValue(copy.URNCodeValue)
 {
 }
 
@@ -75,8 +83,12 @@ DRTScheduledProtocolCodeSequence::Item &DRTScheduledProtocolCodeSequence::Item::
         ContextGroupVersion = copy.ContextGroupVersion;
         ContextIdentifier = copy.ContextIdentifier;
         ContextUID = copy.ContextUID;
+        EquivalentCodeSequence = copy.EquivalentCodeSequence;
+        LongCodeValue = copy.LongCodeValue;
         MappingResource = copy.MappingResource;
+        MappingResourceUID = copy.MappingResourceUID;
         ProtocolContextSequence = copy.ProtocolContextSequence;
+        URNCodeValue = copy.URNCodeValue;
     }
     return *this;
 }
@@ -91,9 +103,13 @@ void DRTScheduledProtocolCodeSequence::Item::clear()
         CodingSchemeDesignator.clear();
         CodingSchemeVersion.clear();
         CodeMeaning.clear();
+        LongCodeValue.clear();
+        URNCodeValue.clear();
+        EquivalentCodeSequence.clear();
         ContextIdentifier.clear();
         ContextUID.clear();
         MappingResource.clear();
+        MappingResourceUID.clear();
         ContextGroupVersion.clear();
         ContextGroupExtensionFlag.clear();
         ContextGroupLocalVersion.clear();
@@ -109,9 +125,13 @@ OFBool DRTScheduledProtocolCodeSequence::Item::isEmpty()
            CodingSchemeDesignator.isEmpty() &&
            CodingSchemeVersion.isEmpty() &&
            CodeMeaning.isEmpty() &&
+           LongCodeValue.isEmpty() &&
+           URNCodeValue.isEmpty() &&
+           EquivalentCodeSequence.isEmpty() &&
            ContextIdentifier.isEmpty() &&
            ContextUID.isEmpty() &&
            MappingResource.isEmpty() &&
+           MappingResourceUID.isEmpty() &&
            ContextGroupVersion.isEmpty() &&
            ContextGroupExtensionFlag.isEmpty() &&
            ContextGroupLocalVersion.isEmpty() &&
@@ -133,13 +153,17 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::read(DcmItem &item)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, CodeValue, "1", "1", "ScheduledProtocolCodeSequence");
-        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, CodeValue, "1", "1C", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, CodingSchemeDesignator, "1", "1C", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, CodingSchemeVersion, "1", "1C", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, CodeMeaning, "1", "1", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, LongCodeValue, "1", "1C", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, URNCodeValue, "1", "1C", "ScheduledProtocolCodeSequence");
+        EquivalentCodeSequence.read(item, "1-n", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextIdentifier, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextUID, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, MappingResource, "1", "1C", "ScheduledProtocolCodeSequence");
+        getAndCheckElementFromDataset(item, MappingResourceUID, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupVersion, "1", "1C", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupExtensionFlag, "1", "3", "ScheduledProtocolCodeSequence");
         getAndCheckElementFromDataset(item, ContextGroupLocalVersion, "1", "1C", "ScheduledProtocolCodeSequence");
@@ -157,13 +181,17 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::write(DcmItem &item)
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1", "ScheduledProtocolCodeSequence");
-        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodeValue), "1", "1C", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmShortString(CodingSchemeDesignator), "1", "1C", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmShortString(CodingSchemeVersion), "1", "1C", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmLongString(CodeMeaning), "1", "1", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUnlimitedCharacters(LongCodeValue), "1", "1C", "ScheduledProtocolCodeSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(URNCodeValue), "1", "1C", "ScheduledProtocolCodeSequence");
+        if (result.good()) result = EquivalentCodeSequence.write(item, "1-n", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextIdentifier), "1", "3", "ScheduledProtocolCodeSequence");
         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 DcmDateTime(ContextGroupVersion), "1", "1C", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmCodeString(ContextGroupExtensionFlag), "1", "3", "ScheduledProtocolCodeSequence");
         addElementToDataset(result, item, new DcmDateTime(ContextGroupLocalVersion), "1", "1C", "ScheduledProtocolCodeSequence");
@@ -264,6 +292,15 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::getContextUID(OFString &valu
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::getLongCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(LongCodeValue, value, pos);
+}
+
+
 OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResource(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -273,6 +310,24 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResource(OFString
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::getMappingResourceUID(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(MappingResourceUID, value, pos);
+}
+
+
+OFCondition DRTScheduledProtocolCodeSequence::Item::getURNCodeValue(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(URNCodeValue, value, pos);
+}
+
+
 OFCondition DRTScheduledProtocolCodeSequence::Item::setCodeMeaning(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -403,6 +458,19 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::setContextUID(const OFString
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::Item::setLongCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUnlimitedCharacters::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = LongCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTScheduledProtocolCodeSequence::Item::setMappingResource(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
@@ -416,6 +484,32 @@ OFCondition DRTScheduledProtocolCodeSequence::Item::setMappingResource(const OFS
 }
 
 
+OFCondition DRTScheduledProtocolCodeSequence::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 DRTScheduledProtocolCodeSequence::Item::setURNCodeValue(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
+        if (result.good())
+            result = URNCodeValue.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 // --- sequence class ---
 
 DRTScheduledProtocolCodeSequence::DRTScheduledProtocolCodeSequence(const OFBool emptyDefaultSequence)
diff --git a/dcmrt/libsrc/drtss.cc b/dcmrt/libsrc/drtss.cc
index 88d80c6..0bfbd0c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTSourceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtssrs.cc b/dcmrt/libsrc/drtssrs.cc
index 96af4c6..bf467a7 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStructureSetROISequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtstrct.cc b/dcmrt/libsrc/drtstrct.cc
index c4c4cd6..29308f0 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTStructureSetIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -121,6 +123,8 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     DateOfLastCalibration(DCM_DateOfLastCalibration),
     TimeOfLastCalibration(DCM_TimeOfLastCalibration),
     PixelPaddingValue(DCM_PixelPaddingValue),
+    FrameOfReferenceUID(DCM_FrameOfReferenceUID),
+    PositionReferenceIndicator(DCM_PositionReferenceIndicator),
     StructureSetLabel(DCM_StructureSetLabel),
     StructureSetName(DCM_StructureSetName),
     StructureSetDescription(DCM_StructureSetDescription),
@@ -161,6 +165,7 @@ DRTStructureSetIOD::DRTStructureSetIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -210,6 +215,8 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -273,6 +280,8 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     DateOfLastCalibration(copy.DateOfLastCalibration),
     TimeOfLastCalibration(copy.TimeOfLastCalibration),
     PixelPaddingValue(copy.PixelPaddingValue),
+    FrameOfReferenceUID(copy.FrameOfReferenceUID),
+    PositionReferenceIndicator(copy.PositionReferenceIndicator),
     StructureSetLabel(copy.StructureSetLabel),
     StructureSetName(copy.StructureSetName),
     StructureSetDescription(copy.StructureSetDescription),
@@ -313,6 +322,7 @@ DRTStructureSetIOD::DRTStructureSetIOD(const DRTStructureSetIOD &copy)
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -368,6 +378,8 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -431,6 +443,8 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         DateOfLastCalibration = copy.DateOfLastCalibration;
         TimeOfLastCalibration = copy.TimeOfLastCalibration;
         PixelPaddingValue = copy.PixelPaddingValue;
+        FrameOfReferenceUID = copy.FrameOfReferenceUID;
+        PositionReferenceIndicator = copy.PositionReferenceIndicator;
         StructureSetLabel = copy.StructureSetLabel;
         StructureSetName = copy.StructureSetName;
         StructureSetDescription = copy.StructureSetDescription;
@@ -471,6 +485,7 @@ DRTStructureSetIOD &DRTStructureSetIOD::operator=(const DRTStructureSetIOD &copy
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -521,6 +536,8 @@ void DRTStructureSetIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -584,6 +601,8 @@ void DRTStructureSetIOD::clear()
     DateOfLastCalibration.clear();
     TimeOfLastCalibration.clear();
     PixelPaddingValue.clear();
+    FrameOfReferenceUID.clear();
+    PositionReferenceIndicator.clear();
     StructureSetLabel.clear();
     StructureSetName.clear();
     StructureSetDescription.clear();
@@ -624,6 +643,7 @@ void DRTStructureSetIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -688,6 +708,14 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, TimeOfLastCalibration, "1-n", "3", "GeneralEquipmentModule");
         getAndCheckElementFromDataset(dataset, PixelPaddingValue, "1", "1C", "GeneralEquipmentModule");
 
+        // --- FrameOfReferenceModule (U) ---
+        if (dataset.tagExists(DCM_FrameOfReferenceUID) ||
+            dataset.tagExists(DCM_PositionReferenceIndicator))
+        {
+            getAndCheckElementFromDataset(dataset, FrameOfReferenceUID, "1", "1", "FrameOfReferenceModule");
+            getAndCheckElementFromDataset(dataset, PositionReferenceIndicator, "1", "2", "FrameOfReferenceModule");
+        }
+
         // --- StructureSetModule (M) ---
         getAndCheckElementFromDataset(dataset, StructureSetLabel, "1", "1", "StructureSetModule");
         getAndCheckElementFromDataset(dataset, StructureSetName, "1", "3", "StructureSetModule");
@@ -741,6 +769,7 @@ OFCondition DRTStructureSetIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -815,6 +844,8 @@ OFCondition DRTStructureSetIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -951,6 +982,8 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1034,6 +1067,13 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(TimeOfLastCalibration), "1-n", "3", "GeneralEquipmentModule");
         addElementToDataset(result, dataset, new DcmUnsignedShort(PixelPaddingValue), "1", "1C", "GeneralEquipmentModule");
 
+        // --- FrameOfReferenceModule (U) ---
+        if (isFrameOfReferenceModulePresent(OFFalse /*complete*/))
+        {
+            addElementToDataset(result, dataset, new DcmUniqueIdentifier(FrameOfReferenceUID), "1", "1", "FrameOfReferenceModule");
+            addElementToDataset(result, dataset, new DcmLongString(PositionReferenceIndicator), "1", "2", "FrameOfReferenceModule");
+        }
+
         // --- StructureSetModule (M) ---
         addElementToDataset(result, dataset, new DcmShortString(StructureSetLabel), "1", "1", "StructureSetModule");
         addElementToDataset(result, dataset, new DcmLongString(StructureSetName), "1", "3", "StructureSetModule");
@@ -1087,6 +1127,7 @@ OFCondition DRTStructureSetIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1160,6 +1201,20 @@ OFBool DRTStructureSetIOD::isClinicalTrialSeriesModulePresent(const OFBool /*com
 }
 
 
+OFBool DRTStructureSetIOD::isFrameOfReferenceModulePresent(const OFBool complete)
+{
+    if (complete)
+    {
+        /* check whether all mandatory attributes are present */
+        return !FrameOfReferenceUID.isEmpty();
+    } else {
+        /* check whether at least one attribute is present */
+        return !FrameOfReferenceUID.isEmpty() ||
+               !PositionReferenceIndicator.isEmpty();
+    }
+}
+
+
 OFBool DRTStructureSetIOD::isApprovalModulePresent(const OFBool complete)
 {
     if (complete)
@@ -1310,6 +1365,12 @@ OFCondition DRTStructureSetIOD::getCommentsOnThePerformedProcedureStep(OFString
 }
 
 
+OFCondition DRTStructureSetIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -1340,6 +1401,12 @@ OFCondition DRTStructureSetIOD::getEthnicGroup(OFString &value, const signed lon
 }
 
 
+OFCondition DRTStructureSetIOD::getFrameOfReferenceUID(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(FrameOfReferenceUID, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getGantryID(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(GantryID, value, pos);
@@ -1604,6 +1671,12 @@ OFCondition DRTStructureSetIOD::getPixelPaddingValue(Uint16 &value, const unsign
 }
 
 
+OFCondition DRTStructureSetIOD::getPositionReferenceIndicator(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(PositionReferenceIndicator, value, pos);
+}
+
+
 OFCondition DRTStructureSetIOD::getQualityControlSubject(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(QualityControlSubject, value, pos);
@@ -2033,6 +2106,15 @@ OFCondition DRTStructureSetIOD::setCommentsOnThePerformedProcedureStep(const OFS
 }
 
 
+OFCondition DRTStructureSetIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
@@ -2078,6 +2160,15 @@ OFCondition DRTStructureSetIOD::setEthnicGroup(const OFString &value, const OFBo
 }
 
 
+OFCondition DRTStructureSetIOD::setFrameOfReferenceUID(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmUniqueIdentifier::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = FrameOfReferenceUID.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setGantryID(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
@@ -2444,6 +2535,15 @@ OFCondition DRTStructureSetIOD::setPixelPaddingValue(const Uint16 value, const u
 }
 
 
+OFCondition DRTStructureSetIOD::setPositionReferenceIndicator(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmLongString::checkStringValue(value, "1") : EC_Normal;
+    if (result.good())
+        result = PositionReferenceIndicator.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTStructureSetIOD::setQualityControlSubject(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drttms0.cc b/dcmrt/libsrc/drttms0.cc
index 328f27b..60acc41 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentMachineSequenceInRTTreatmentMachineRecordModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drttms9.cc b/dcmrt/libsrc/drttms9.cc
index dd8a95e..8d9d2f5 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentMachineSequenceInRTBrachyApplicationSetupsModule
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drttreat.cc b/dcmrt/libsrc/drttreat.cc
index 6178057..9748d14 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryRecordIOD
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -58,6 +58,8 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     StudyTime(DCM_StudyTime),
     ReferringPhysicianName(DCM_ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(),
+    ConsultingPhysicianName(DCM_ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(),
     StudyID(DCM_StudyID),
     AccessionNumber(DCM_AccessionNumber),
     IssuerOfAccessionNumberSequence(),
@@ -158,6 +160,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD()
     QueryRetrieveView(DCM_QueryRetrieveView),
     ConversionSourceAttributesSequence(),
     ContentQualification(DCM_ContentQualification),
+    PrivateDataElementCharacteristicsSequence(),
     ReferencedSeriesSequence(),
     StudiesContainingOtherReferencedInstancesSequence()
 {
@@ -207,6 +210,8 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     StudyTime(copy.StudyTime),
     ReferringPhysicianName(copy.ReferringPhysicianName),
     ReferringPhysicianIdentificationSequence(copy.ReferringPhysicianIdentificationSequence),
+    ConsultingPhysicianName(copy.ConsultingPhysicianName),
+    ConsultingPhysicianIdentificationSequence(copy.ConsultingPhysicianIdentificationSequence),
     StudyID(copy.StudyID),
     AccessionNumber(copy.AccessionNumber),
     IssuerOfAccessionNumberSequence(copy.IssuerOfAccessionNumberSequence),
@@ -307,6 +312,7 @@ DRTTreatmentSummaryRecordIOD::DRTTreatmentSummaryRecordIOD(const DRTTreatmentSum
     QueryRetrieveView(copy.QueryRetrieveView),
     ConversionSourceAttributesSequence(copy.ConversionSourceAttributesSequence),
     ContentQualification(copy.ContentQualification),
+    PrivateDataElementCharacteristicsSequence(copy.PrivateDataElementCharacteristicsSequence),
     ReferencedSeriesSequence(copy.ReferencedSeriesSequence),
     StudiesContainingOtherReferencedInstancesSequence(copy.StudiesContainingOtherReferencedInstancesSequence)
 {
@@ -362,6 +368,8 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         StudyTime = copy.StudyTime;
         ReferringPhysicianName = copy.ReferringPhysicianName;
         ReferringPhysicianIdentificationSequence = copy.ReferringPhysicianIdentificationSequence;
+        ConsultingPhysicianName = copy.ConsultingPhysicianName;
+        ConsultingPhysicianIdentificationSequence = copy.ConsultingPhysicianIdentificationSequence;
         StudyID = copy.StudyID;
         AccessionNumber = copy.AccessionNumber;
         IssuerOfAccessionNumberSequence = copy.IssuerOfAccessionNumberSequence;
@@ -462,6 +470,7 @@ DRTTreatmentSummaryRecordIOD &DRTTreatmentSummaryRecordIOD::operator=(const DRTT
         QueryRetrieveView = copy.QueryRetrieveView;
         ConversionSourceAttributesSequence = copy.ConversionSourceAttributesSequence;
         ContentQualification = copy.ContentQualification;
+        PrivateDataElementCharacteristicsSequence = copy.PrivateDataElementCharacteristicsSequence;
         ReferencedSeriesSequence = copy.ReferencedSeriesSequence;
         StudiesContainingOtherReferencedInstancesSequence = copy.StudiesContainingOtherReferencedInstancesSequence;
     }
@@ -512,6 +521,8 @@ void DRTTreatmentSummaryRecordIOD::clear()
     StudyTime.clear();
     ReferringPhysicianName.clear();
     ReferringPhysicianIdentificationSequence.clear();
+    ConsultingPhysicianName.clear();
+    ConsultingPhysicianIdentificationSequence.clear();
     StudyID.clear();
     AccessionNumber.clear();
     IssuerOfAccessionNumberSequence.clear();
@@ -612,6 +623,7 @@ void DRTTreatmentSummaryRecordIOD::clear()
     QueryRetrieveView.clear();
     ConversionSourceAttributesSequence.clear();
     ContentQualification.clear();
+    PrivateDataElementCharacteristicsSequence.clear();
     ReferencedSeriesSequence.clear();
     StudiesContainingOtherReferencedInstancesSequence.clear();
 }
@@ -719,6 +731,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::read(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, QueryRetrieveView, "1", "1C", "SOPCommonModule");
         ConversionSourceAttributesSequence.read(dataset, "1-n", "1C", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, ContentQualification, "1", "3", "SOPCommonModule");
+        PrivateDataElementCharacteristicsSequence.read(dataset, "1-n", "3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         ReferencedSeriesSequence.read(dataset, "1-n", "1C", "CommonInstanceReferenceModule");
@@ -793,6 +806,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::readStudyData(DcmItem &dataset)
         getAndCheckElementFromDataset(dataset, StudyTime, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, ReferringPhysicianName, "1", "2", "GeneralStudyModule");
         ReferringPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
+        getAndCheckElementFromDataset(dataset, ConsultingPhysicianName, "1-n", "3", "GeneralStudyModule");
+        ConsultingPhysicianIdentificationSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, StudyID, "1", "2", "GeneralStudyModule");
         getAndCheckElementFromDataset(dataset, AccessionNumber, "1", "2", "GeneralStudyModule");
         IssuerOfAccessionNumberSequence.read(dataset, "1-n", "3", "GeneralStudyModule");
@@ -929,6 +944,8 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmTime(StudyTime), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmPersonName(ReferringPhysicianName), "1", "2", "GeneralStudyModule");
         if (result.good()) result = ReferringPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
+        addElementToDataset(result, dataset, new DcmPersonName(ConsultingPhysicianName), "1-n", "3", "GeneralStudyModule");
+        if (result.good()) result = ConsultingPhysicianIdentificationSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(StudyID), "1", "2", "GeneralStudyModule");
         addElementToDataset(result, dataset, new DcmShortString(AccessionNumber), "1", "2", "GeneralStudyModule");
         if (result.good()) result = IssuerOfAccessionNumberSequence.write(dataset, "1-n" ,"3", "GeneralStudyModule");
@@ -1055,6 +1072,7 @@ OFCondition DRTTreatmentSummaryRecordIOD::write(DcmItem &dataset)
         addElementToDataset(result, dataset, new DcmCodeString(QueryRetrieveView), "1", "1C", "SOPCommonModule");
         if (result.good()) result = ConversionSourceAttributesSequence.write(dataset, "1-n" ,"1C", "SOPCommonModule");
         addElementToDataset(result, dataset, new DcmCodeString(ContentQualification), "1", "3", "SOPCommonModule");
+        if (result.good()) result = PrivateDataElementCharacteristicsSequence.write(dataset, "1-n" ,"3", "SOPCommonModule");
 
         // --- CommonInstanceReferenceModule (U) ---
         if (isCommonInstanceReferenceModulePresent(OFFalse /*complete*/))
@@ -1256,6 +1274,12 @@ OFCondition DRTTreatmentSummaryRecordIOD::getCommentsOnThePerformedProcedureStep
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::getConsultingPhysicianName(OFString &value, const signed long pos) const
+{
+    return getStringValueFromElement(ConsultingPhysicianName, value, pos);
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::getContentQualification(OFString &value, const signed long pos) const
 {
     return getStringValueFromElement(ContentQualification, value, pos);
@@ -1958,6 +1982,15 @@ OFCondition DRTTreatmentSummaryRecordIOD::setCommentsOnThePerformedProcedureStep
 }
 
 
+OFCondition DRTTreatmentSummaryRecordIOD::setConsultingPhysicianName(const OFString &value, const OFBool check)
+{
+    OFCondition result = (check) ? DcmPersonName::checkStringValue(value, "1-n") : EC_Normal;
+    if (result.good())
+        result = ConsultingPhysicianName.putOFStringArray(value);
+    return result;
+}
+
+
 OFCondition DRTTreatmentSummaryRecordIOD::setContentQualification(const OFString &value, const OFBool check)
 {
     OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
diff --git a/dcmrt/libsrc/drttscds.cc b/dcmrt/libsrc/drttscds.cc
index 662333e..e9b64a1 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryCalculatedDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drttsibs.cc b/dcmrt/libsrc/drttsibs.cc
index 762ec60..a69c892 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSessionIonBeamSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drttsmds.cc b/dcmrt/libsrc/drttsmds.cc
index e4f0a76..c70d66c 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTTreatmentSummaryMeasuredDoseReferenceSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drttts.cc b/dcmrt/libsrc/drttts.cc
index ecacdc7..bb271cd 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTToleranceTableSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtvls.cc b/dcmrt/libsrc/drtvls.cc
index 2f69b8b..3694971 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTVOILUTSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtwps.cc b/dcmrt/libsrc/drtwps.cc
index b6e83bc..3ccbe58 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWedgePositionSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtwrs.cc b/dcmrt/libsrc/drtwrs.cc
index 8d8e0cb..bac1256 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWADORetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/libsrc/drtdirs.cc b/dcmrt/libsrc/drtwrsrs.cc
similarity index 73%
copy from dcmrt/libsrc/drtdirs.cc
copy to dcmrt/libsrc/drtwrsrs.cc
index ea3f650..c2a748b 100644
--- a/dcmrt/libsrc/drtdirs.cc
+++ b/dcmrt/libsrc/drtwrsrs.cc
@@ -1,119 +1,119 @@
 /*
  *
  *  Copyright (C) 2008-2012, OFFIS e.V. and ICSMED AG, Oldenburg, Germany
- *  Copyright (C) 2013-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Source file for class DRTDICOMRetrievalSequence
+ *  Source file for class DRTWADORSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"     // make sure OS specific configuration is included first
 
-#include "dcmtk/dcmrt/seq/drtdirs.h"
+#include "dcmtk/dcmrt/seq/drtwrsrs.h"
 
 
 // --- item class ---
 
-DRTDICOMRetrievalSequence::Item::Item(const OFBool emptyDefaultItem)
+DRTWADORSRetrievalSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
-    RetrieveAETitle(DCM_RetrieveAETitle)
+    RetrieveURL(DCM_RetrieveURL)
 {
 }
 
 
-DRTDICOMRetrievalSequence::Item::Item(const Item &copy)
+DRTWADORSRetrievalSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
-    RetrieveAETitle(copy.RetrieveAETitle)
+    RetrieveURL(copy.RetrieveURL)
 {
 }
 
 
-DRTDICOMRetrievalSequence::Item::~Item()
+DRTWADORSRetrievalSequence::Item::~Item()
 {
 }
 
 
-DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::Item::operator=(const Item &copy)
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::Item::operator=(const Item &copy)
 {
     if (this != &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
-        RetrieveAETitle = copy.RetrieveAETitle;
+        RetrieveURL = copy.RetrieveURL;
     }
     return *this;
 }
 
 
-void DRTDICOMRetrievalSequence::Item::clear()
+void DRTWADORSRetrievalSequence::Item::clear()
 {
     if (!EmptyDefaultItem)
     {
         /* clear all DICOM attributes */
-        RetrieveAETitle.clear();
+        RetrieveURL.clear();
     }
 }
 
 
-OFBool DRTDICOMRetrievalSequence::Item::isEmpty()
+OFBool DRTWADORSRetrievalSequence::Item::isEmpty()
 {
-    return RetrieveAETitle.isEmpty();
+    return RetrieveURL.isEmpty();
 }
 
 
-OFBool DRTDICOMRetrievalSequence::Item::isValid() const
+OFBool DRTWADORSRetrievalSequence::Item::isValid() const
 {
     return !EmptyDefaultItem;
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::Item::read(DcmItem &item)
+OFCondition DRTWADORSRetrievalSequence::Item::read(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         /* re-initialize object */
         clear();
-        getAndCheckElementFromDataset(item, RetrieveAETitle, "1-n", "1", "DICOMRetrievalSequence");
+        getAndCheckElementFromDataset(item, RetrieveURL, "1", "1", "WADORSRetrievalSequence");
         result = EC_Normal;
     }
     return result;
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::Item::write(DcmItem &item)
+OFCondition DRTWADORSRetrievalSequence::Item::write(DcmItem &item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
         result = EC_Normal;
-        addElementToDataset(result, item, new DcmApplicationEntity(RetrieveAETitle), "1-n", "1", "DICOMRetrievalSequence");
+        addElementToDataset(result, item, new DcmUniversalResourceIdentifierOrLocator(RetrieveURL), "1", "1", "WADORSRetrievalSequence");
     }
     return result;
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::Item::getRetrieveAETitle(OFString &value, const signed long pos) const
+OFCondition DRTWADORSRetrievalSequence::Item::getRetrieveURL(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
         return EC_IllegalCall;
     else
-        return getStringValueFromElement(RetrieveAETitle, value, pos);
+        return getStringValueFromElement(RetrieveURL, value, pos);
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::Item::setRetrieveAETitle(const OFString &value, const OFBool check)
+OFCondition DRTWADORSRetrievalSequence::Item::setRetrieveURL(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultItem)
     {
-        result = (check) ? DcmApplicationEntity::checkStringValue(value, "1-n") : EC_Normal;
+        result = (check) ? DcmUniversalResourceIdentifierOrLocator::checkStringValue(value) : EC_Normal;
         if (result.good())
-            result = RetrieveAETitle.putOFStringArray(value);
+            result = RetrieveURL.putOFStringArray(value);
     }
     return result;
 }
@@ -121,7 +121,7 @@ OFCondition DRTDICOMRetrievalSequence::Item::setRetrieveAETitle(const OFString &
 
 // --- sequence class ---
 
-DRTDICOMRetrievalSequence::DRTDICOMRetrievalSequence(const OFBool emptyDefaultSequence)
+DRTWADORSRetrievalSequence::DRTWADORSRetrievalSequence(const OFBool emptyDefaultSequence)
   : EmptyDefaultSequence(emptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -131,7 +131,7 @@ DRTDICOMRetrievalSequence::DRTDICOMRetrievalSequence(const OFBool emptyDefaultSe
 }
 
 
-DRTDICOMRetrievalSequence::DRTDICOMRetrievalSequence(const DRTDICOMRetrievalSequence &copy)
+DRTWADORSRetrievalSequence::DRTWADORSRetrievalSequence(const DRTWADORSRetrievalSequence &copy)
   : EmptyDefaultSequence(copy.EmptyDefaultSequence),
     SequenceOfItems(),
     CurrentItem(),
@@ -157,7 +157,7 @@ DRTDICOMRetrievalSequence::DRTDICOMRetrievalSequence(const DRTDICOMRetrievalSequ
 }
 
 
-DRTDICOMRetrievalSequence &DRTDICOMRetrievalSequence::operator=(const DRTDICOMRetrievalSequence &copy)
+DRTWADORSRetrievalSequence &DRTWADORSRetrievalSequence::operator=(const DRTWADORSRetrievalSequence &copy)
 {
     if (this != &copy)
     {
@@ -185,13 +185,13 @@ DRTDICOMRetrievalSequence &DRTDICOMRetrievalSequence::operator=(const DRTDICOMRe
 }
 
 
-DRTDICOMRetrievalSequence::~DRTDICOMRetrievalSequence()
+DRTWADORSRetrievalSequence::~DRTWADORSRetrievalSequence()
 {
     clear();
 }
 
 
-void DRTDICOMRetrievalSequence::clear()
+void DRTWADORSRetrievalSequence::clear()
 {
     if (!EmptyDefaultSequence)
     {
@@ -210,25 +210,25 @@ void DRTDICOMRetrievalSequence::clear()
 }
 
 
-OFBool DRTDICOMRetrievalSequence::isEmpty()
+OFBool DRTWADORSRetrievalSequence::isEmpty()
 {
     return SequenceOfItems.empty();
 }
 
 
-OFBool DRTDICOMRetrievalSequence::isValid() const
+OFBool DRTWADORSRetrievalSequence::isValid() const
 {
     return !EmptyDefaultSequence;
 }
 
 
-unsigned long DRTDICOMRetrievalSequence::getNumberOfItems() const
+unsigned long DRTWADORSRetrievalSequence::getNumberOfItems() const
 {
     return SequenceOfItems.size();
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::gotoFirstItem()
+OFCondition DRTWADORSRetrievalSequence::gotoFirstItem()
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -240,7 +240,7 @@ OFCondition DRTDICOMRetrievalSequence::gotoFirstItem()
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::gotoNextItem()
+OFCondition DRTWADORSRetrievalSequence::gotoNextItem()
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -252,7 +252,7 @@ OFCondition DRTDICOMRetrievalSequence::gotoNextItem()
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num, OFListIterator(Item *) &iterator)
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -272,7 +272,7 @@ OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num, OFListI
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num, OFListConstIterator(Item *) &iterator) const
 {
     OFCondition result = EC_IllegalCall;
     if (!SequenceOfItems.empty())
@@ -292,13 +292,13 @@ OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num, OFListC
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::gotoItem(const unsigned long num)
+OFCondition DRTWADORSRetrievalSequence::gotoItem(const unsigned long num)
 {
     return gotoItem(num, CurrentItem);
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::getCurrentItem(Item *&item) const
+OFCondition DRTWADORSRetrievalSequence::getCurrentItem(Item *&item) const
 {
     OFCondition result = EC_IllegalCall;
     if (CurrentItem != SequenceOfItems.end())
@@ -310,7 +310,7 @@ OFCondition DRTDICOMRetrievalSequence::getCurrentItem(Item *&item) const
 }
 
 
-DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getCurrentItem()
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getCurrentItem()
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -319,7 +319,7 @@ DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getCurrentItem()
 }
 
 
-const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getCurrentItem() const
+const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getCurrentItem() const
 {
     if (CurrentItem != SequenceOfItems.end())
         return **CurrentItem;
@@ -328,7 +328,7 @@ const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getCurrentItem
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::getItem(const unsigned long num, Item *&item)
+OFCondition DRTWADORSRetrievalSequence::getItem(const unsigned long 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)
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const unsigned long 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 DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::getItem(const unsigned long num) const
 {
     OFListConstIterator(Item *) iterator;
     if (gotoItem(num, iterator).good())
@@ -358,19 +358,19 @@ const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::getItem(const
 }
 
 
-DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::operator[](const unsigned long num)
+DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::operator[](const unsigned long num)
 {
     return getItem(num);
 }
 
 
-const DRTDICOMRetrievalSequence::Item &DRTDICOMRetrievalSequence::operator[](const unsigned long num) const
+const DRTWADORSRetrievalSequence::Item &DRTWADORSRetrievalSequence::operator[](const unsigned long num) const
 {
     return getItem(num);
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::addItem(Item *&item)
+OFCondition DRTWADORSRetrievalSequence::addItem(Item *&item)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -387,7 +387,7 @@ OFCondition DRTDICOMRetrievalSequence::addItem(Item *&item)
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::insertItem(const unsigned long pos, Item *&item)
+OFCondition DRTWADORSRetrievalSequence::insertItem(const unsigned long 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 DRTWADORSRetrievalSequence::removeItem(const unsigned long pos)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -428,10 +428,10 @@ OFCondition DRTDICOMRetrievalSequence::removeItem(const unsigned long pos)
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::read(DcmItem &dataset,
-                                            const OFString &card,
-                                            const OFString &type,
-                                            const char *moduleName)
+OFCondition DRTWADORSRetrievalSequence::read(DcmItem &dataset,
+                                             const OFString &card,
+                                             const OFString &type,
+                                             const char *moduleName)
 {
     OFCondition result = EC_IllegalCall;
     if (!EmptyDefaultSequence)
@@ -440,7 +440,7 @@ OFCondition DRTDICOMRetrievalSequence::read(DcmItem &dataset,
         clear();
         /* retrieve sequence element from dataset */
         DcmSequenceOfItems *sequence;
-        result = dataset.findAndGetSequence(DCM_DICOMRetrievalSequence, sequence);
+        result = dataset.findAndGetSequence(DCM_WADORSRetrievalSequence, sequence);
         if (sequence != NULL)
         {
             if (checkElementValue(*sequence, card, type, result, moduleName))
@@ -470,7 +470,7 @@ OFCondition DRTDICOMRetrievalSequence::read(DcmItem &dataset,
                 }
             }
         } else {
-            DcmSequenceOfItems element(DCM_DICOMRetrievalSequence);
+            DcmSequenceOfItems element(DCM_WADORSRetrievalSequence);
             checkElementValue(element, card, type, result, moduleName);
         }
     }
@@ -478,16 +478,16 @@ OFCondition DRTDICOMRetrievalSequence::read(DcmItem &dataset,
 }
 
 
-OFCondition DRTDICOMRetrievalSequence::write(DcmItem &dataset,
-                                             const OFString &card,
-                                             const OFString &type,
-                                             const char *moduleName)
+OFCondition DRTWADORSRetrievalSequence::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_DICOMRetrievalSequence);
+        DcmSequenceOfItems *sequence = new DcmSequenceOfItems(DCM_WADORSRetrievalSequence);
         if (sequence != NULL)
         {
             result = EC_Normal;
diff --git a/dcmrt/libsrc/drtws.cc b/dcmrt/libsrc/drtws.cc
index d6bfed4..99b9f52 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTWedgeSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
@@ -22,6 +22,7 @@
 DRTWedgeSequence::Item::Item(const OFBool emptyDefaultItem)
   : EmptyDefaultItem(emptyDefaultItem),
     AccessoryCode(DCM_AccessoryCode),
+    EffectiveWedgeAngle(DCM_EffectiveWedgeAngle),
     SourceToWedgeTrayDistance(DCM_SourceToWedgeTrayDistance),
     WedgeAngle(DCM_WedgeAngle),
     WedgeFactor(DCM_WedgeFactor),
@@ -36,6 +37,7 @@ DRTWedgeSequence::Item::Item(const OFBool emptyDefaultItem)
 DRTWedgeSequence::Item::Item(const Item &copy)
   : EmptyDefaultItem(copy.EmptyDefaultItem),
     AccessoryCode(copy.AccessoryCode),
+    EffectiveWedgeAngle(copy.EffectiveWedgeAngle),
     SourceToWedgeTrayDistance(copy.SourceToWedgeTrayDistance),
     WedgeAngle(copy.WedgeAngle),
     WedgeFactor(copy.WedgeFactor),
@@ -58,6 +60,7 @@ DRTWedgeSequence::Item &DRTWedgeSequence::Item::operator=(const Item &copy)
     {
         EmptyDefaultItem = copy.EmptyDefaultItem;
         AccessoryCode = copy.AccessoryCode;
+        EffectiveWedgeAngle = copy.EffectiveWedgeAngle;
         SourceToWedgeTrayDistance = copy.SourceToWedgeTrayDistance;
         WedgeAngle = copy.WedgeAngle;
         WedgeFactor = copy.WedgeFactor;
@@ -83,6 +86,7 @@ void DRTWedgeSequence::Item::clear()
         WedgeFactor.clear();
         WedgeOrientation.clear();
         SourceToWedgeTrayDistance.clear();
+        EffectiveWedgeAngle.clear();
     }
 }
 
@@ -96,7 +100,8 @@ OFBool DRTWedgeSequence::Item::isEmpty()
            WedgeAngle.isEmpty() &&
            WedgeFactor.isEmpty() &&
            WedgeOrientation.isEmpty() &&
-           SourceToWedgeTrayDistance.isEmpty();
+           SourceToWedgeTrayDistance.isEmpty() &&
+           EffectiveWedgeAngle.isEmpty();
 }
 
 
@@ -121,6 +126,7 @@ OFCondition DRTWedgeSequence::Item::read(DcmItem &item)
         getAndCheckElementFromDataset(item, WedgeFactor, "1", "2", "WedgeSequence");
         getAndCheckElementFromDataset(item, WedgeOrientation, "1", "2", "WedgeSequence");
         getAndCheckElementFromDataset(item, SourceToWedgeTrayDistance, "1", "3", "WedgeSequence");
+        getAndCheckElementFromDataset(item, EffectiveWedgeAngle, "1", "3", "WedgeSequence");
         result = EC_Normal;
     }
     return result;
@@ -141,6 +147,7 @@ OFCondition DRTWedgeSequence::Item::write(DcmItem &item)
         addElementToDataset(result, item, new DcmDecimalString(WedgeFactor), "1", "2", "WedgeSequence");
         addElementToDataset(result, item, new DcmDecimalString(WedgeOrientation), "1", "2", "WedgeSequence");
         addElementToDataset(result, item, new DcmDecimalString(SourceToWedgeTrayDistance), "1", "3", "WedgeSequence");
+        addElementToDataset(result, item, new DcmDecimalString(EffectiveWedgeAngle), "1", "3", "WedgeSequence");
     }
     return result;
 }
@@ -155,6 +162,24 @@ OFCondition DRTWedgeSequence::Item::getAccessoryCode(OFString &value, const sign
 }
 
 
+OFCondition DRTWedgeSequence::Item::getEffectiveWedgeAngle(OFString &value, const signed long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return getStringValueFromElement(EffectiveWedgeAngle, value, pos);
+}
+
+
+OFCondition DRTWedgeSequence::Item::getEffectiveWedgeAngle(Float64 &value, const unsigned long pos) const
+{
+    if (EmptyDefaultItem)
+        return EC_IllegalCall;
+    else
+        return OFconst_cast(DcmDecimalString &, EffectiveWedgeAngle).getFloat64(value, pos);
+}
+
+
 OFCondition DRTWedgeSequence::Item::getSourceToWedgeTrayDistance(OFString &value, const signed long pos) const
 {
     if (EmptyDefaultItem)
@@ -276,6 +301,19 @@ OFCondition DRTWedgeSequence::Item::setAccessoryCode(const OFString &value, cons
 }
 
 
+OFCondition DRTWedgeSequence::Item::setEffectiveWedgeAngle(const OFString &value, const OFBool check)
+{
+    OFCondition result = EC_IllegalCall;
+    if (!EmptyDefaultItem)
+    {
+        result = (check) ? DcmDecimalString::checkStringValue(value, "1") : EC_Normal;
+        if (result.good())
+            result = EffectiveWedgeAngle.putOFStringArray(value);
+    }
+    return result;
+}
+
+
 OFCondition DRTWedgeSequence::Item::setSourceToWedgeTrayDistance(const OFString &value, const OFBool check)
 {
     OFCondition result = EC_IllegalCall;
diff --git a/dcmrt/libsrc/drtxrs.cc b/dcmrt/libsrc/drtxrs.cc
index 0698c26..a9fffff 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-2014, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Source file for class DRTXDSRetrievalSequence
  *
- *  Generated automatically from DICOM PS 3.3-2014b
- *  File created on 2014-10-31 15:59:21
+ *  Generated automatically from DICOM PS 3.3-2015c
+ *  File created on 2015-12-07 16:29:33
  *
  */
 
diff --git a/dcmrt/tests/Makefile.dep b/dcmrt/tests/Makefile.dep
index b6a1b58..8535fc6 100644
--- a/dcmrt/tests/Makefile.dep
+++ b/dcmrt/tests/Makefile.dep
@@ -38,6 +38,8 @@ drttest.o: drttest.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/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 \
@@ -108,13 +110,16 @@ drttest.o: drttest.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.h ../include/dcmtk/dcmrt/seq/drtbrs.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/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -144,11 +149,14 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.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/drtpcs.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 \
@@ -156,8 +164,10 @@ drttest.o: drttest.cc ../../config/include/dcmtk/config/osconfig.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
@@ -245,6 +255,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -287,6 +299,8 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -381,10 +395,11 @@ tsearch.o: tsearch.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 \
- ../include/dcmtk/dcmrt/seq/drtadcs.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/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 \
@@ -403,8 +418,9 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtbrcss.h \
  ../include/dcmtk/dcmrt/seq/drtcsis.h \
  ../include/dcmtk/dcmrt/seq/drtcctus.h \
- ../include/dcmtk/dcmrt/seq/drtces.h ../include/dcmtk/dcmrt/seq/drtois.h \
- ../include/dcmtk/dcmrt/seq/drtics.h ../include/dcmtk/dcmrt/seq/drtpics.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 \
@@ -438,12 +454,15 @@ tsearch.o: tsearch.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmrt/seq/drtrsos.h \
  ../include/dcmtk/dcmrt/seq/drtporis.h \
  ../include/dcmtk/dcmrt/seq/drtprsis.h \
- ../include/dcmtk/dcmrt/seq/drtpcs.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/drtwrs.h \
- ../include/dcmtk/dcmrt/seq/drtxrs.h ../include/dcmtk/dcmrt/seq/drtrps.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 \
diff --git a/dcmseg/CMakeLists.txt b/dcmseg/CMakeLists.txt
index 5789f4f..d023052 100644
--- a/dcmseg/CMakeLists.txt
+++ b/dcmseg/CMakeLists.txt
@@ -2,9 +2,9 @@
 PROJECT(dcmseg)
 
 # declare include directories which hold for all subdirectories
-INCLUDE_DIRECTORIES(${dcmseg_SOURCE_DIR}/include  ${dcmfg_SOURCE_DIR}/include ${dcmiod_SOURCE_DIR}/include  ${dcmsr_SOURCE_DIR}/include ${dcmimage_SOURCE_DIR}/include ${dcmimgle_SOURCE_DIR}/include ${dcmdata_SOURCE_DIR}/include ${ofstd_SOURCE_DIR}/include ${oflog_SOURCE_DIR}/include ${ZLIB_INCDIR})
+INCLUDE_DIRECTORIES(${dcmseg_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)
+FOREACH(SUBDIR libsrc include tests)
   ADD_SUBDIRECTORY(${SUBDIR})
 ENDFOREACH(SUBDIR)
diff --git a/dcmseg/Makefile.in b/dcmseg/Makefile.in
index 230ed7b..f1c79ee 100644
--- a/dcmseg/Makefile.in
+++ b/dcmseg/Makefile.in
@@ -83,4 +83,4 @@ distclean:
 
 dependencies:
 	(cd libsrc && touch $(DEP) && $(MAKE) dependencies)
-#	(cd tests && touch $(DEP) && $(MAKE) dependencies)
+	(cd tests && touch $(DEP) && $(MAKE) dependencies)
diff --git a/dcmseg/apps/CMakeLists.txt b/dcmseg/apps/CMakeLists.txt
new file mode 100644
index 0000000..50c5e98
--- /dev/null
+++ b/dcmseg/apps/CMakeLists.txt
@@ -0,0 +1,9 @@
+# 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 ae34152..55a3e0c 100644
--- a/dcmseg/include/dcmtk/dcmseg/segdoc.h
+++ b/dcmseg/include/dcmtk/dcmseg/segdoc.h
@@ -215,7 +215,8 @@ public:
 
   /** Get modality (overwrite from DcmIODCommon. We always return "SEG" here)
    *  @param  value  Reference 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. Not evaluated (here for
+   *          consistency with other setter functions).
    *  @return status, EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition getModality(OFString &value,
@@ -225,7 +226,7 @@ public:
    *  @param  segmentNumber The logical segment number
    *  @return The segment if segment number is valid, NULL otherwise
    */
-  virtual DcmSegment* getSegment(const size_t& segmentNumber);
+  virtual DcmSegment* getSegment(const unsigned int segmentNumber);
 
   /** Get logical segment number by providing a pointer to a given segment
    *  @param  segment The segment to find the logical segment number for
@@ -233,36 +234,14 @@ public:
    *  @return OFTrue if segment could be found, OFFalse otherwise.
    */
   virtual OFBool getSegmentNumber(const DcmSegment* segment,
-                                  Uint16& segmentNumber);
+                                  unsigned int& segmentNumber);
 
-  /** Find segments by their segment label
-   *  @param segmentLabel
-   *  @return Vector of segment numbers that match the given label
+  /** Reference to the Performed Procedure Step that led to the creation of this
+   *  segmentation object. This is required if this object is created in an MPPS
+   *  or GPPS workflow.
+   *  @return Reference to the referenced PPS object
    */
-  virtual const OFVector<Uint16> findSegmentByLabel(const OFString& segmentLabel);
-
-  /** Find segments by their segment's category code
-   *  @param  categoryCode The category code to look for
-   *  @return Vector of segment numbers that match the given category
-   */
-  virtual const OFVector<Uint16> findSegmentByCategory(const CodeSequenceMacro& categoryCode);
-
-  /** Find segments by their segment's property type code
-   *  @param  propertyType The property type code to look for
-   *  @return Vector of segment numbers that match the given property type
-   */
-  virtual const OFVector<Uint16> findSegmentyByType(const CodeSequenceMacro& propertyType);
-
-  /** Reference the PPS that led to the creation of this segmentation object.
-   *  This is required if this object is created in an MPPS or GPPS workflow.
-   *  @param refSOPClassUID     The SOP Class UID of the Performed
-   *                            Procedure Step
-   *  @param refSOPInstanceUID  The SOP Instance UID of the Performed
-   *                            Procedure Step
-   *  @return EC_Normal if successful, error otherwise.
-   */
-  virtual void getReferencedPPS(OFString& refSOPClassUID,
-                                OFString& refSOPInstanceUID) const;
+  virtual SOPInstanceReferenceMacro& getReferencedPPS();
 
   /** Get (const) frame data of a specific frame
    *  @param  frameNo The number of the frame to get (starting with 0)
@@ -351,17 +330,6 @@ public:
   virtual OFCondition setContentIdentification(const ContentIdentificationMacro& contentIdentification,
                                                 const OFBool checkValue = OFTrue);
 
-  /** Reference the PPS that led to the creation of this segmentation object.
-   *  This is required if this object is created in an MPPS or GPPS workflow.
-   *  @param refSOPClassUID     The SOP Class UID of the Performed
-   *                            Procedure Step
-   *  @param refSOPInstanceUID  The SOP Instance UID of the Performed
-   *                            Procedure Step
-   *  @return EC_Normal if successful, error otherwise.
-   */
-  virtual OFCondition setReferencedPPS(const OFString& refSOPClassUID,
-                                       const OFString& refSOPInstanceUID);
-
 protected:
 
   /** Protected default constructor. Library users should the factory create..()
@@ -412,11 +380,18 @@ protected:
    */
   virtual OFCondition readSegments(DcmItem& item);
 
-  /** Write frames to given item
+  /** Write fractional frames to given item
    *  @param  dataset The item to write to, usually main dataset level
    *  @return EC_Normal if writing was successful, error otherwise
    */
-  virtual OFCondition writeFrames(DcmItem& dataset);
+  virtual OFCondition writeFractionalFrames(DcmItem& dataset);
+
+  /** Write binary frames to given item
+   *  @param  dataset The item to write to, usually main dataset level
+   *  @return EC_Normal if writing was successful, error otherwise
+   */
+  virtual OFCondition writeBinaryFrames(DcmItem& dataset);
+
 
   /** Write Segmentation Image Module
    *  @param dataset The item to write to, usually main dataset level
@@ -472,15 +447,45 @@ protected:
                                                       Uint16& numberOfFrames,
                                                       OFString& colorModel);
 
+  /** Extracts Frame structures from the given pixel data element. Only
+   *  applicable for binary segmentations. Within the pixel data element, all
+   *  frames are packed next to each other, with the end of one frame and the
+   *  beginning of the next frame packed bit by bit next to each other. The
+   *  resulting Frames are a bit-by-bit copy of their original counterpart.
+   *  However, their first bit is aligned to the first bit/byte in the Frame,
+   *  and the unused bits in the last byte (if any) are zeroed out.
+   *  @param  pixData The pixel data to read from
+   *  @param  numFrames The number of frames to read
+   *  @param  bitsPerFrame The number of bits per frame (usually rows * columns)
+   *  @param  results The resulting frames. Memory for the frames is allocated
+   *          by the method, so the Vector can/should be empty before calling.
+   */
+  virtual void extractFrames(Uint8* pixData,
+                             const size_t numFrames,
+                             const size_t bitsPerFrame,
+                             OFVector< DcmIODTypes::Frame* >& results);
+
+  /** This is the counterpart to the extractFrames() function. It takes a number
+   *  of frames that are in binary segmentation format (i.e. "bit-packed") and
+   *  concatenates them together so the resulting memory block fits the Pixel
+   *  Data format for binary segmentations. Thus method ensure that frames
+   *  are aligned bit for bit concatenated to each other with only (if
+   *  applicable) having unused bits after the last frame.
+   *  @param frames The source frames
+   *  @param pixData The pixel data element data to be filled. Size must be
+   *         at least bitsPerFrame * number of frames.
+   *  @param bitsPerFrame Bits required per frame, usually rows * columns
+   */
+  virtual void concatFrames(OFVector< DcmIODTypes::Frame* > frames,
+                           Uint8* pixData,
+                           const size_t bitsPerFrame);
+
   /** Add frame to segmentation object.
    *  @param  pixData Pixel data to be added. Length must be rows*columns bytes.
    *          Pixel data is copied so it must be freed by the caller.
-   *  @param  segmentNumber The logical segment number (>=1) this frame refers
-   *          to. The segment identified by the segmentNumber must already exist.
    *  @return EC_Normal if adding was successul, error otherwise
    */
-  virtual OFCondition addFrame(Uint8* pixData,
-                               const Uint16 segmentNumber);
+  virtual OFCondition addFrame(Uint8* pixData);
 
   /// Constant code (required by Segmentation IOD) used to fill Derivation
   /// Image Functional Group
diff --git a/dcmseg/include/dcmtk/dcmseg/segment.h b/dcmseg/include/dcmtk/dcmseg/segment.h
index c36d18d..58d6b8c 100644
--- a/dcmseg/include/dcmtk/dcmseg/segment.h
+++ b/dcmseg/include/dcmtk/dcmseg/segment.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -98,7 +98,7 @@ public:
   /** Get Segment Number
    *  @return The Segment number
    */
-  virtual Uint16 getSegmentNumber();
+  virtual unsigned int getSegmentNumber();
 
   /** Get Segment Label
    *  @param  value Reference to variable in which the value should be stored
@@ -165,6 +165,23 @@ public:
                                                        Uint16& a,
                                                        Uint16& b);
 
+  /** Get Tracking ID
+   *  @param  value Reference 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 getTrackingID(OFString& value,
+                                    const signed long pos = 0);
+
+  /** Get Tracking 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 getTrackingUID(OFString& value,
+                                     const signed long pos = 0);
+
+
   // -------------- setters --------------------
 
   /** Set Segment Label
@@ -222,6 +239,23 @@ public:
                                                        const Uint16 b,
                                                        const OFBool checkValue = OFTrue);
 
+  /** Set Tracking ID
+   *  @param  value Value to be set (single value only) or "" for no value
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
+   *  @return EC_Normal if successful, an error code otherwise
+   */
+  virtual OFCondition setTrackingID(const OFString& value,
+                                    const OFBool checkValue = OFTrue);
+
+  /** Set Tracking 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 setTrackingUID(const OFString& value,
+                                     const OFBool checkValue = OFTrue);
+
   // The utility class must access the protected default constructor
   friend class DcmIODUtil;
 
@@ -264,6 +298,12 @@ private:
   /// Recommended Display CIELab Value (US, 3, 3)
   DcmUnsignedShort m_RecommendedDisplayCIELabValue;
 
+  /// Tracking ID (UT, 1, 1C)
+  DcmUnlimitedText m_TrackingID;
+
+  /// Tracking UID (UI, 1, 1C)
+  DcmUniqueIdentifier m_TrackingUID;
+
   /// Rules for data elements within this IOD
   IODRules m_Rules;
 };
diff --git a/dcmseg/include/dcmtk/dcmseg/segtypes.h b/dcmseg/include/dcmtk/dcmseg/segtypes.h
index f97cca0..b332c9c 100644
--- a/dcmseg/include/dcmtk/dcmseg/segtypes.h
+++ b/dcmseg/include/dcmtk/dcmseg/segtypes.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -61,6 +61,12 @@ const Uint32 DCM_SEG_MAX_SEGMENTS = 65536;
 extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_MaxSegmentsReached;
 /// error: specified segment does not exist
 extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_NoSuchSegment;
+/// error: unknown segmentation type
+extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_UnknownSegmentationType;
+/// error: invalid value
+extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_InvalidValue;
+/// error: not enough data
+extern DCMTK_DCMSEG_EXPORT   const OFConditionConst     SG_EC_NotEnoughData;
 
 /** General purpose class hiding global functions, constants and types in the
  *  segmentation context from the global namespace.
@@ -288,8 +294,8 @@ public:
 
   /** Set Segment Description
    *  @param  value Value to be set (single value only) or "" for no value
-   *  @param  checkValue Check 'value' for conformance with VR (ST) and VM (1)
-   *          if enabled
+   *  @param  checkValue Check 'value'. Not evaluated (here for consistency
+   *          with other setter functions).
    *  @return EC_Normal if successful, an error code otherwise
    */
   virtual OFCondition setSegmentDescription(const OFString& value,
diff --git a/dcmseg/include/dcmtk/dcmseg/segutils.h b/dcmseg/include/dcmtk/dcmseg/segutils.h
index 744b7ea..05f30ee 100644
--- a/dcmseg/include/dcmtk/dcmseg/segutils.h
+++ b/dcmseg/include/dcmtk/dcmseg/segutils.h
@@ -52,16 +52,54 @@ public:
    */
   static size_t getBytesForBinaryFrame(const size_t& numPixels);
 
-  /** Unpacks a binary segmentation frame into a "sparse" pixel data frame
-   *  @param  frame The input frame in packed format
-   *  @param  rows  The number of rows in the pixel data
-   *  @param  cols  the number of cols in the pixel data
-   *  @return The segmentation frame in unpacked format
+  /** Unpacks a binary segmentation frame into a "sparse" pixel data frame where
+   *  every resulting byte represents a single bit of the frame being either
+   *  0 (not set) or 1 (set).
+   *  @param  frame The input buffer with the frame in packed format
+   *  @param  rows The rows of the frame
+   *  @param  cols The cols of the frame
+   *  @return The segmentation frame in unpacked format. NULL in case of error.
    */
   static DcmIODTypes::Frame* unpackBinaryFrame(const DcmIODTypes::Frame* frame,
-                                               const Uint16 rows,
-                                               const Uint16 cols);
+                                               Uint16 rows,
+                                               Uint16 cols);
 
+  /** Shifts the given memory block some defined number of bits to the right
+   *  Bits that fall off the last byte are lost (i.e. no "cycled" shift).
+   *  @param  buf The address of the memory buffer to shift
+   *  @param  bufLen The length of the buf memory block in bytes
+   *  @param  numBits The number of bits to shift. Must be 0 <= numBits <= 7.
+   */
+  static void shiftRight(Uint8* buf,
+                         size_t bufLen,
+                         Uint8 numBits);
+
+  /** Shifts the given memory block some defined number of bits to the left.
+   *  Bits that fall off the first byte are lost (i.e. no "cycled" shift).
+   *  @param  buf The address of the memory buffer to shift
+   *  @param  bufLen The length of the buf memory block in bytes
+   *  @param  numBits The number of bits to shift. Must be 0 <= numBits <= 7.
+   */
+  static void shiftLeft(Uint8* buf,
+                        size_t bufLen,
+                        Uint8 numBits);
+
+  /** Dumps a byte as binary number to a string. Only useful for
+   *  debugging purposes.
+   *  @param  b The byte to dump
+   *  @return A string containing b as a binary number
+   */
+  static OFString debugByte2Bin(Uint8 b);
+
+  /** Dumps a memory block byte for byte to the debug log stream. Only useful
+   * for debugging purposes.
+   *  @param  buffer The address of the memory block to dump
+   *  @param  length The length of memory to be dumped
+   *  @param  what String describing what is dumped.
+   */
+  static void debugDumpBin(Uint8* buffer,
+                           size_t length,
+                           const char* what);
 };
 
 #endif // SEGUTILS_H
diff --git a/dcmseg/libsrc/Makefile.dep b/dcmseg/libsrc/Makefile.dep
index d6b3dab..0ce0c2b 100644
--- a/dcmseg/libsrc/Makefile.dep
+++ b/dcmseg/libsrc/Makefile.dep
@@ -48,6 +48,8 @@ segdoc.o: segdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofthread.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 \
  ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatient.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
@@ -115,6 +117,7 @@ segdoc.o: segdoc.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 \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../dcmiod/include/dcmtk/dcmiod/modpatientstudy.h \
@@ -195,6 +198,8 @@ segment.o: segment.cc ../../config/include/dcmtk/config/osconfig.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/dctagkey.h \
@@ -264,6 +269,7 @@ segment.o: segment.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 \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
@@ -340,6 +346,8 @@ segtypes.o: segtypes.cc ../../config/include/dcmtk/config/osconfig.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/dctagkey.h \
@@ -408,6 +416,7 @@ segtypes.o: segtypes.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 \
  ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
  ../../ofstd/include/dcmtk/ofstd/ofmem.h \
@@ -453,6 +462,8 @@ segutils.o: segutils.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -524,6 +535,7 @@ segutils.o: segutils.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 \
  ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
  ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
diff --git a/dcmseg/libsrc/segdoc.cc b/dcmseg/libsrc/segdoc.cc
index 979d816..89d491d 100644
--- a/dcmseg/libsrc/segdoc.cc
+++ b/dcmseg/libsrc/segdoc.cc
@@ -31,8 +31,6 @@
 #include "dcmtk/dcmfg/fgfact.h"
 #include "dcmtk/dcmfg/fgderimg.h"
 
-
-
 // default constructor (protected, instance creation via create() function)
 DcmSegmentation::DcmSegmentation()
 : DcmIODImage(),
@@ -68,8 +66,11 @@ void DcmSegmentation::initIODRules()
   getRules()->addRule(new IODRule(DCM_LossyImageCompressionMethod, "1-n", "1C", "GeneralImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
   getRules()->addRule(new IODRule(DCM_LossyImageCompressionRatio, "1-n","1C", "GeneralImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
 
+  // Override rule from General Series Module
+  getRules()->addRule(new IODRule(DCM_ReferencedPerformedProcedureStepSequence, "1","1C", "SegmentationSeriesModule", DcmIODTypes::IE_SERIES), OFTrue);
+  getRules()->addRule(new IODRule(DCM_SeriesNumber, "1","1", "SegmentationSeriesModule", DcmIODTypes::IE_SERIES), OFTrue);
+
   // Instance Number is also used within Content Identification Macro, disable it there
-  // TODO: Change Content Identification Macro and others to shared_ptr approach
   m_ContentIdentificationMacro.getIODRules().deleteRule(DCM_InstanceNumber);
 }
 
@@ -143,6 +144,7 @@ OFCondition DcmSegmentation::createFractionalSegmentation(DcmSegmentation*& segm
     return result;
 
   segmentation->m_SegmentationType = DcmSegTypes::ST_FRACTIONAL;
+  segmentation->m_SegmentationFractionalType = fractType;
   segmentation->m_MaximumFractionalValue.putUint16(maxFractionalValue);
 
   return result;
@@ -381,8 +383,7 @@ OFCondition DcmSegmentation::addSegment(DcmSegment* seg,
 }
 
 
-OFCondition DcmSegmentation::addFrame(Uint8* pixData,
-                                      const Uint16 segmentNumber)
+OFCondition DcmSegmentation::addFrame(Uint8* pixData)
 {
   OFCondition result;
 
@@ -424,6 +425,12 @@ OFCondition DcmSegmentation::addFrame(Uint8* pixData,
 }
 
 
+SOPInstanceReferenceMacro& DcmSegmentation::getReferencedPPS()
+{
+  return getSeries().getReferencedPPS();
+}
+
+
 const DcmIODTypes::Frame* DcmSegmentation::getFrame(const size_t& frameNo)
 {
   if (frameNo > m_Frames.size() - 1)
@@ -522,7 +529,7 @@ OFCondition DcmSegmentation::addFrame(Uint8* pixData,
   // Insert pixel data
   if (result.good())
   {
-    result = addFrame(pixData, segmentNumber);
+    result = addFrame(pixData);
   }
 
   // Cleanup any per-frame groups that might have been inserted and return
@@ -595,14 +602,6 @@ OFCondition DcmSegmentation::saveFile(const OFString& filename,
 
 /* -- Setter for DICOM attributes -- */
 
-OFCondition DcmSegmentation::setReferencedPPS(const OFString& refSOPClassUID,
-                                              const OFString& refSOPInstanceUID)
-{
-  //TODO
-  return EC_Normal;
-}
-
-
 OFCondition DcmSegmentation::setEquipmentInfo(const IODGeneralEquipmentModule::EquipmentInfo& equipmentInfo,
                                               const OFBool checkValue)
 {
@@ -651,32 +650,30 @@ OFCondition DcmSegmentation::setContentIdentification(const ContentIdentificatio
 
 /* -- Getter for DICOM attributes -- */
 
-void DcmSegmentation::getReferencedPPS(OFString& refSOPClassUID,
-                                       OFString& refSOPInstanceUID) const
-{
-  //TODO
-}
-
-
-DcmSegment* DcmSegmentation::getSegment(const size_t& segmentNumber)
+DcmSegment* DcmSegmentation::getSegment(const unsigned int segmentNumber)
 {
-  if (segmentNumber > m_Segments.size())
+  // check for invalid index
+  if ( (segmentNumber == 0) || (segmentNumber > m_Segments.size()) )
   {
     return NULL;
   }
-  return m_Segments[segmentNumber];
+
+  // logical segment numbering starts with 1, so subtract 1 for vector index
+  return m_Segments[segmentNumber-1];
 }
 
 
 OFBool DcmSegmentation::getSegmentNumber(const DcmSegment* segment,
-                                         Uint16& segmentNumber)
+                                         unsigned int& segmentNumber)
 {
+  segmentNumber = 0;
   size_t max = m_Segments.size();
   for (size_t count = 0; count < max; count++)
   {
     if (m_Segments.at(count) == segment)
     {
-      segmentNumber = count;
+      // logical segment numbering starts with 1 but vector index with 0
+      segmentNumber = count + 1;
       return OFTrue;
     }
   }
@@ -685,31 +682,10 @@ OFBool DcmSegmentation::getSegmentNumber(const DcmSegment* segment,
 }
 
 
-const OFVector<Uint16> DcmSegmentation::findSegmentByLabel(const OFString& segmentLabel)
-{
-  // TODO
-  OFVector<Uint16> temp;
-  return temp;
-}
-
-const OFVector<Uint16> DcmSegmentation::findSegmentByCategory(const CodeSequenceMacro& categoryCode)
-{
-  // TODO
-  OFVector<Uint16> temp;
-  return temp;
-}
-
-
-const OFVector<Uint16> DcmSegmentation::findSegmentyByType(const CodeSequenceMacro& propertyType)
-{
-  // TODO
-  OFVector<Uint16> temp;
-  return temp;
-}
-
-
-OFCondition DcmSegmentation::getModality(OFString& value, const long signed int pos) const
+OFCondition DcmSegmentation::getModality(OFString& value,
+                                         const long signed int pos) const
 {
+  (void)pos;
   // Fixed for Segmentations to value "SEG"
   value = "SEG";
   return EC_Normal;
@@ -762,43 +738,23 @@ OFCondition DcmSegmentation::readFrames(DcmItem& dataset)
   }
 
   /* Read all frames into dedicated data structure */
-  size_t bitsPerFrame = getBitsPerFrame(rows, cols);
-  size_t bytesPerFrame = 0;
-  Uint8* src = pixels;
+  size_t pixelsPerFrame = rows * cols;
   if (m_SegmentationType == DcmSegTypes::ST_BINARY)
   {
-    /* FIXME: Padding of last byte must be implemented if byte is not completely filled */
-    if ( ((rows*cols) % 8) != 0)
-    {
-      DCMSEG_ERROR("TO BE DONE: Cannot write binary segmentations where pixel data bytes are not dividable by 8");
-      return EC_IllegalCall;
-    }
-    bytesPerFrame = DcmSegUtils::getBytesForBinaryFrame(bitsPerFrame);
-    for (size_t frameCount = 0; frameCount < numberOfFrames; frameCount++)
-    {
-      DcmIODTypes::Frame *frame = new DcmIODTypes::Frame();
-      frame->length = bytesPerFrame;
-      frame->pixData = new Uint8[bytesPerFrame];
-      memcpy(frame->pixData, src, bytesPerFrame);
-      src = src + bytesPerFrame;
-      m_Frames.push_back(frame);
-    }
+      extractFrames(pixels, numberOfFrames, pixelsPerFrame, m_Frames);
   }
   else if (m_SegmentationType == DcmSegTypes::ST_FRACTIONAL)
   {
-    bytesPerFrame = rows * cols;
     for (size_t count = 0; count < numberOfFrames; count++)
     {
       DcmIODTypes::Frame *frame = new DcmIODTypes::Frame();
-      frame->length = bytesPerFrame;
-      frame->pixData= new Uint8[bytesPerFrame];
-      memcpy(frame->pixData, pixels + count*bytesPerFrame, bytesPerFrame);
+      frame->length = pixelsPerFrame;
+      frame->pixData= new Uint8[pixelsPerFrame];
+      memcpy(frame->pixData, pixels + count* pixelsPerFrame, pixelsPerFrame);
       m_Frames.push_back(frame);
     }
   }
 
-  /* remove original pixel data copy from memory */
-  pixelData->compact();
   return result;
 }
 
@@ -935,10 +891,9 @@ OFCondition DcmSegmentation::writeMultiFrameDimensionModule(DcmItem& dataset)
 }
 
 
-OFCondition DcmSegmentation::writeFrames(DcmItem& dataset)
+OFCondition DcmSegmentation::writeFractionalFrames(DcmItem& dataset)
 {
   OFCondition result;
-  // TODO: Consistency checks with attributes
   Uint16 rows,cols;
   rows = cols = 0;
   getImagePixel().getRows(rows);
@@ -946,6 +901,7 @@ OFCondition DcmSegmentation::writeFrames(DcmItem& dataset)
   size_t numBytes = getTotalBytesRequired(rows, cols, m_Frames.size());
   Uint8* pixdata = new Uint8[numBytes];
   OFVector<DcmIODTypes::Frame*>::iterator it = m_Frames.begin();
+  // Just copy bytes for each frame as is
   for (size_t count = 0; it != m_Frames.end(); count++)
   {
     memcpy(pixdata + count*(*it)->length, (*it)->pixData, (*it)->length);
@@ -957,6 +913,28 @@ OFCondition DcmSegmentation::writeFrames(DcmItem& dataset)
 }
 
 
+OFCondition DcmSegmentation::writeBinaryFrames(DcmItem& dataset)
+{
+  OFCondition result;
+  Uint16 rows,cols;
+  rows = cols = 0;
+  getImagePixel().getRows(rows);
+  getImagePixel().getColumns(cols);
+  size_t numBytes = getTotalBytesRequired(rows, cols, m_Frames.size());
+  // 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.
+  Uint8* pixdata = new Uint8[numBytes];
+  memset(pixdata, 0, numBytes);
+
+  // Fill Pixel Data Element
+  concatFrames(m_Frames, pixdata, rows*cols);
+  result = dataset.putAndInsertUint8Array(DCM_PixelData, pixdata, numBytes, OFTrue);
+  delete [] pixdata;
+  return result;
+}
+
+
 OFCondition DcmSegmentation::writeSegmentationImageModule(DcmItem& dataset)
 {
   dataset.putAndInsertOFStringArray(DCM_ImageType, "DERIVED\\PRIMARY");
@@ -1038,7 +1016,12 @@ OFCondition DcmSegmentation::writeSegmentationImageModule(DcmItem& dataset)
   }
 
   /* Write frame pixel data */
-  if (result.good()) result = writeFrames(dataset);
+  if (result.good())
+  {
+    if (m_SegmentationType == DcmSegTypes::ST_BINARY) result = writeBinaryFrames(dataset);
+    else if (m_SegmentationType == DcmSegTypes::ST_BINARY) result = writeFractionalFrames(dataset);
+    else result = SG_EC_UnknownSegmentationType;
+  }
 
   return result;
 }
@@ -1068,7 +1051,8 @@ OFBool DcmSegmentation::checkPixDataLength(DcmElement* pixelData,
 
   // Find out how many bytes are needed
   size_t bytesRequired = getTotalBytesRequired(rows, cols, numberOfFrames);
-
+  // Length found in Pixel Data element is always even
+  if (bytesRequired % 2 == 1) bytesRequired++;
   /* Compare expected and actual length */
   if (length < bytesRequired)
   {
@@ -1108,14 +1092,19 @@ size_t DcmSegmentation::getTotalBytesRequired(const Uint16& rows,
 {
   size_t bytesRequired = rows * cols * numberOfFrames;
   /* for binary, we only need one bit per pixel */
+  size_t remainder = 0;
   if (m_SegmentationType == DcmSegTypes::ST_BINARY)
   {
     // check whether the 1-bit pixels exactly fit into bytes
-    size_t remainder = bytesRequired % 8;
+    remainder = (rows * cols) % 8;
     // number of bytes that work on an exact fit
     bytesRequired = bytesRequired / 8;
     // add one byte if we have a remainder
-    if (remainder > 0) bytesRequired++;
+    if (remainder > 0)
+    {
+      bytesRequired++;
+    }
+
   }
   return bytesRequired;
 }
@@ -1264,3 +1253,108 @@ OFCondition DcmSegmentation::decompress(DcmDataset& dset)
   }
   return result;
 }
+
+
+void DcmSegmentation::extractFrames(Uint8* pixData,
+                                   const size_t numFrames,
+                                   const size_t bitsPerFrame,
+                                   OFVector< DcmIODTypes::Frame* >& results)
+{
+  // Will hold the bit position (0-7) that the current frame starts from. The
+  // first frame will always start at bit 0.
+  Uint8  bitShift = 0;
+  // Compute length in bytes we need to consider for each frame.
+  size_t frameLengthBytes = bitsPerFrame / 8;
+  // If the number of bits is not dividable by 8, we need part of an extra
+  // byte in the end. Since we like to set the unused bits to 0 in such a last
+  // byte to 0, remember the number.
+  size_t overlapBits = (8 - (bitsPerFrame % 8)) % 8;
+  // Add an extra byte if we we fill a partial byte in the end
+  if (overlapBits != 0) frameLengthBytes++;
+  // Points to current reading position within pixeldata
+  Uint8* readPos = pixData;
+  // Loop over each frame and copy it to Frame structures
+  for (size_t f = 0; f < numFrames; f++)
+  {
+    // Create frame with correct length and copy 1:1 from pixel data
+    DcmIODTypes::Frame* frame = new DcmIODTypes::Frame();
+    frame->length = frameLengthBytes;
+    frame->pixData = new Uint8[frameLengthBytes];
+    memcpy(frame->pixData, readPos, frame->length);
+    // If we have been copying too much, i.e the first bits of the frame
+    // actually belong to the former frame, shift the whole frame this amount
+    // of bits to the left in order to shift the superfluous bits out
+    if (bitShift > 0)
+    {
+      DcmSegUtils::shiftLeft(frame->pixData, frame->length, 8-bitShift);
+    }
+    // Adapt last byte by masking out unused bits (i.e. those belonging to next frame).
+    // A reader should ignore those unused bits anyway.
+    frame->pixData[frame->length-1] = (frame->pixData[frame->length-1] >> (overlapBits)) << (overlapBits);
+    // Store frame
+    results.push_back(frame);
+    // Compute the bitshift created by this frame
+    bitShift = ( 8- ((f+1) * bitsPerFrame) % 8 ) % 8;
+    // If the last byte read has not been used completely, i.e. it contains
+    // also bytes of the next frame, rewind read position to the last byte
+    // that was partially read. Otherwise skip to the next full byte.
+    if (bitShift > 0)
+    {
+      readPos = readPos + frame->length - 1;
+    }
+    else
+    {
+      readPos = readPos + frame->length;
+    }
+  }
+}
+
+
+void DcmSegmentation::concatFrames(OFVector< DcmIODTypes::Frame* > frames,
+                                   Uint8* pixData,
+                                   const size_t bitsPerFrame)
+{
+  // Writing position within the pixData memory
+  Uint8 *writePos = pixData;
+  OFVector<DcmIODTypes::Frame*>::iterator frame = frames.begin();
+  Uint8 freeBits = 0;
+  Uint8 firstByte = 0;
+  // Iterate over frames and copy each to pixdata memory
+  for (size_t f = 0; frame != frames.end(); f++)
+  {
+    DCMSEG_DEBUG("Packing segmentation frame #" << f+1 << "/" << frames.size());
+    // Backup first byte of the destination since it may contain bits of the
+    // last frame; mask out those bits not belonging to last frame.
+    firstByte = (writePos[0] >> freeBits) << freeBits;
+    memcpy(writePos, (*frame)->pixData, (*frame)->length);
+    // If the last frame left over some unused bits, shift the current frame
+    // that number of bits to the right and restore the original bits of the
+    // last frame
+    if (freeBits > 0)
+    {
+      DcmSegUtils::shiftRight(writePos, (*frame)->length, 8-freeBits);
+      writePos[0] |= firstByte;
+    }
+    // Compute free bits left over from this frame in the last byte written
+    freeBits = (8 - (( (f+1) * bitsPerFrame ) % 8)) % 8;
+    // If we have free bits, the last byte written to will be the first byte
+    // we write to for the next frame. Otherwise start with a fresh destination
+    // byte.
+    if (freeBits > 0)
+    {
+      writePos = writePos + (*frame)->length - 1;
+    }
+    else
+    {
+      writePos = writePos + (*frame)->length;
+    }
+    // Next frame
+    frame++;
+  }
+  // Through shifting we can have non-zero bits within the unused bits of the
+  // last byte. Fill them with zeroes (though not required by the standard).
+  if (freeBits > 0)
+  {
+    *writePos = (*writePos >> freeBits) << freeBits;
+  }
+}
diff --git a/dcmseg/libsrc/segment.cc b/dcmseg/libsrc/segment.cc
index 88b14e5..df1ef2d 100644
--- a/dcmseg/libsrc/segment.cc
+++ b/dcmseg/libsrc/segment.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -86,6 +86,8 @@ OFCondition DcmSegment::read(DcmItem& item,
 
   DcmIODUtil::getAndCheckElementFromDataset(item, m_RecommendedDisplayGrayscaleValue, m_Rules.getByTag(DCM_RecommendedDisplayGrayscaleValue));
   DcmIODUtil::getAndCheckElementFromDataset(item, m_RecommendedDisplayCIELabValue, m_Rules.getByTag(DCM_RecommendedDisplayCIELabValue));
+  DcmIODUtil::getAndCheckElementFromDataset(item, m_TrackingID, m_Rules.getByTag(DCM_TrackingID));
+  DcmIODUtil::getAndCheckElementFromDataset(item, m_TrackingUID, m_Rules.getByTag(DCM_TrackingUID));
 
   return EC_Normal;
 }
@@ -110,6 +112,8 @@ OFCondition DcmSegment::write(DcmItem& item)
 
   DcmIODUtil::copyElementToDataset(result, item, m_RecommendedDisplayGrayscaleValue, m_Rules.getByTag(DCM_RecommendedDisplayGrayscaleValue));
   DcmIODUtil::copyElementToDataset(result, item, m_RecommendedDisplayCIELabValue, m_Rules.getByTag(DCM_RecommendedDisplayCIELabValue));
+  DcmIODUtil::copyElementToDataset(result, item, m_TrackingID, m_Rules.getByTag(DCM_TrackingID));
+  DcmIODUtil::copyElementToDataset(result, item, m_TrackingUID, m_Rules.getByTag(DCM_TrackingUID));
 
   return result;
 }
@@ -123,6 +127,8 @@ void DcmSegment::clearData()
   m_SegmentSurfaceGenerationAlgorithmIdentification.clearData();
   m_RecommendedDisplayGrayscaleValue.clear();
   m_RecommendedDisplayCIELabValue.clear();
+  m_TrackingID.clear();
+  m_TrackingUID.clear();
 }
 
 
@@ -133,7 +139,7 @@ DcmSegment::~DcmSegment()
 }
 
 
-// protected default contstrucotr
+// protected default constructor
 DcmSegment::DcmSegment() :
   m_SegmentationDoc(NULL),
   m_SegmentDescription(),
@@ -141,6 +147,8 @@ DcmSegment::DcmSegment() :
   m_SegmentSurfaceGenerationAlgorithmIdentification(),
   m_RecommendedDisplayGrayscaleValue(DCM_RecommendedDisplayGrayscaleValue),
   m_RecommendedDisplayCIELabValue(DCM_RecommendedDisplayCIELabValue),
+  m_TrackingID(DCM_TrackingID),
+  m_TrackingUID(DCM_TrackingUID),
   m_Rules()
 {
   initIODRules();
@@ -152,14 +160,16 @@ void DcmSegment::initIODRules()
   m_Rules.addRule(new IODRule(DCM_SegmentAlgorithmName, "1","1C","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules.addRule(new IODRule(DCM_RecommendedDisplayGrayscaleValue, "1","3","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
   m_Rules.addRule(new IODRule(DCM_RecommendedDisplayCIELabValue, "3","3","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules.addRule(new IODRule(DCM_TrackingID, "1","1C","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
+  m_Rules.addRule(new IODRule(DCM_TrackingUID, "1","1C","SegmentationImageModule", DcmIODTypes::IE_IMAGE), OFTrue);
 }
 
 
 // -------------- getters --------------------
 
-Uint16 DcmSegment::getSegmentNumber()
+unsigned int DcmSegment::getSegmentNumber()
 {
-  Uint16 value = 0;
+  unsigned int value = 0;
   if (m_SegmentationDoc != NULL)
   {
     m_SegmentationDoc->getSegmentNumber(this, value);
@@ -222,7 +232,7 @@ OFVector< CodeSequenceMacro* >& DcmSegment::getSegmentedPropertyTypeModifierCode
 OFCondition DcmSegment::getRecommendedDisplayGrayscaleValue(Uint16& value,
                                                             const unsigned long pos)
 {
-  return m_RecommendedDisplayGrayscaleValue.getUint16(value, 0);
+  return m_RecommendedDisplayGrayscaleValue.getUint16(value, pos);
 }
 
 
@@ -240,6 +250,21 @@ OFCondition DcmSegment::getRecommendedDisplayCIELabValue(Uint16& L,
   return result;
 }
 
+
+OFCondition DcmSegment::getTrackingID(OFString& value,
+                                      const signed long pos)
+{
+  return DcmIODUtil::getStringValueFromElement(m_TrackingID, value, pos);
+}
+
+
+OFCondition DcmSegment::getTrackingUID(OFString& value,
+                                       const signed long pos)
+{
+  return DcmIODUtil::getStringValueFromElement(m_TrackingUID, value, pos);
+}
+
+
 // -------------- setters --------------------
 
 
@@ -334,6 +359,30 @@ OFCondition DcmSegment::setRecommendedDisplayCIELabValue(const Uint16 r,
 }
 
 
+OFCondition DcmSegment::setTrackingID(const OFString& value,
+                                      const OFBool checkValue)
+{
+  // avoid compile warning on unused variable
+  (void)checkValue;
+  return m_TrackingID.putOFStringArray(value);
+}
+
+
+OFCondition DcmSegment::setTrackingUID(const OFString& value,
+                                       const OFBool checkValue)
+{
+  OFCondition result;
+  if (checkValue)
+  {
+    result = DcmUniqueIdentifier::checkStringValue(value, "1");
+  }
+  if (result.good())
+  {
+    result = m_TrackingUID.putOFStringArray(value);
+  }
+  return result;
+}
+
 
 void DcmSegment::referenceSegmentationDoc(DcmSegmentation* doc)
 {
diff --git a/dcmseg/libsrc/segtypes.cc b/dcmseg/libsrc/segtypes.cc
index 3b5b952..58b10ef 100644
--- a/dcmseg/libsrc/segtypes.cc
+++ b/dcmseg/libsrc/segtypes.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2015, Open Connections GmbH
+ *  Copyright (C) 2016, Open Connections GmbH
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -32,9 +32,12 @@ OFLogger DCM_dcmsegLogger = OFLog::getLogger("dcmtk.dcmseg");
  *---------------------------------*/
 
 // conditions
-makeOFConditionConst(SG_EC_MaxSegmentsReached,  OFM_dcmseg, 1, OF_error, "Maximum Number of Functional Groups reached");
-makeOFConditionConst(SG_EC_NoSuchSegment,       OFM_dcmseg, 2, OF_error,  "No such segment");
-makeOFConditionConst(SG_EC_InvalidValue,        OFM_dcmseg, 4, OF_error,  "Invalid value for Segmentation SOP Class");
+makeOFConditionConst(SG_EC_MaxSegmentsReached,      OFM_dcmseg, 1, OF_error, "Maximum Number of Functional Groups reached");
+makeOFConditionConst(SG_EC_NoSuchSegment,           OFM_dcmseg, 2, OF_error,  "No such segment");
+makeOFConditionConst(SG_EC_UnknownSegmentationType, OFM_dcmseg, 3, OF_error,  "Unknown Segmentation Type");
+makeOFConditionConst(SG_EC_InvalidValue,            OFM_dcmseg, 4, OF_error,  "Invalid value for Segmentation SOP Class");
+makeOFConditionConst(SG_EC_NotEnoughData,           OFM_dcmseg, 5, OF_error,  "Not enough data");
+
 
 DcmSegTypes::E_SegmentationType DcmSegTypes::OFString2Segtype(const OFString& value)
 {
@@ -204,10 +207,8 @@ OFCondition SegmentDescriptionMacro::setSegmentLabel(const OFString& value,
 OFCondition SegmentDescriptionMacro::setSegmentDescription(const OFString& value,
                                                            const OFBool checkValue)
 {
-  OFCondition result = (checkValue) ? DcmShortText::checkStringValue(value, "1") : EC_Normal;
-  if (result.good())
-    result = m_SegmentDescription.putOFStringArray(value);
-  return result;
+  (void)checkValue;
+  return  m_SegmentDescription.putOFStringArray(value);
 }
 
 
diff --git a/dcmseg/libsrc/segutils.cc b/dcmseg/libsrc/segutils.cc
index c74b910..918778e 100644
--- a/dcmseg/libsrc/segutils.cc
+++ b/dcmseg/libsrc/segutils.cc
@@ -53,7 +53,7 @@ DcmIODTypes::Frame* DcmSegUtils::packBinaryFrame(Uint8* pixelData,
     delete frame;
     return NULL;
   }
-  memset(frame->pixData, 0, sizeof(Uint8)*frame->length);
+  memset(frame->pixData, 0, frame->length);
 
   size_t bytePos = 0;
   for (size_t count = 0; count < numPixels; count++)
@@ -67,39 +67,34 @@ DcmIODTypes::Frame* DcmSegUtils::packBinaryFrame(Uint8* pixelData,
 
 
 DcmIODTypes::Frame* DcmSegUtils::unpackBinaryFrame(const DcmIODTypes::Frame* frame,
-                                                   const Uint16 rows,
-                                                   const Uint16 cols)
+                                                   Uint16 rows,
+                                                   Uint16 cols)
 {
   // Sanity checking
-  if ( (frame->length == 0) || (frame->pixData == NULL) || (rows == 0) || (cols == 0))
+  if ( (frame == NULL) || (rows == 0) || (cols == 0) )
   {
-    DCMSEG_ERROR("Cannot unpack binary frame, invalid input data: frame length and data, as well as rows and columnst cannot be 0");
-    return NULL;
-  }
-  const Uint32 numPixels = rows*cols;
-  if ( getBytesForBinaryFrame(numPixels) > frame->length)
-  {
-    DCMSEG_ERROR("Cannot unpack binary frame, not enough input data (require " << numPixels / 8 << " but only got " << frame->length << " bytes)");
+    DCMSEG_ERROR("Cannot unpack binary frame, invalid input data");
     return NULL;
   }
 
   // Create result frame in memory
+  size_t numBits = rows * cols;
   DcmIODTypes::Frame* result = new DcmIODTypes::Frame();
   if (result)
   {
-    result->pixData = new Uint8[numPixels];
-    result->length = numPixels;
+    result->pixData = new Uint8[numBits];
+    result->length = numBits;
   }
   if ( !result || !(result->pixData) )
   {
     DCMSEG_ERROR("Cannot unpack binary frame, memory exhausted");
     return NULL;
   }
-  memset(result->pixData, 0, sizeof(Uint8)*result->length);
+  memset(result->pixData, 0, result->length);
 
   // Transform and copy from packed frame to unpacked result frame
   size_t bytePos = 0;
-  for (size_t count = 0; count < numPixels; count++)
+  for (size_t count = 0; count < numBits; count++)
   {
     // Compute byte position
     bytePos = count / 8;
@@ -128,3 +123,74 @@ size_t DcmSegUtils::getBytesForBinaryFrame(const size_t& numPixels)
   if (remainder > 0) bytesRequired++;
   return bytesRequired;
 }
+
+
+void DcmSegUtils::shiftRight(Uint8* buf,
+                             size_t bufLen,
+                             Uint8 numBits)
+{
+  if (numBits > 7)
+  {
+    DCMSEG_ERROR("Invalid input data: shiftRight() can only shift 0-7 bits");
+    return;
+  }
+  Uint8 carryOver = 0;
+  for (size_t x = 0; x < bufLen; x++)
+  {
+    // Store current byte since we need its last bits
+    Uint8 current = buf[x];
+    buf[x] >>= numBits;
+    // If there is a carry over from the last handled byte, add it
+    buf[x] |= carryOver;
+    // Compute carry over bits for next byte handled
+    carryOver = current << (8-numBits); // bits we need to shift over to start (left hand side) of buf[x+1]
+  }
+}
+
+
+void DcmSegUtils::shiftLeft(Uint8* buf,
+                            size_t bufLen,
+                            Uint8 numBits)
+{
+  if (numBits > 7)
+  {
+    DCMSEG_ERROR("Invalid input data: shiftLeft() can only shift 0-7 bits");
+    return;
+  }
+  for (size_t x = 0; x < bufLen-1; x++)
+  {
+    // Shift current byte
+    buf[x] = buf[x] << numBits;
+    // isolate portion of next byte that must be shifted into current byte
+    Uint8 next = (buf[x+1] >> (8-numBits));
+    // Shift current byte
+    buf[x] |= next;
+  }
+  // Shift last byte manually
+  buf[bufLen-1] <<= numBits;
+}
+
+
+void DcmSegUtils::debugDumpBin(Uint8* buffer,
+                               size_t length,
+                               const char* what)
+{
+  for (size_t n=0; n<length; n++)
+  {
+    DCMSEG_DEBUG(what << " #" << n << ": " << (size_t)(buffer[n]) << ", bytepos " << (size_t)(&(buffer[n])) << " (" << debugByte2Bin((buffer[n])) << ")");
+  }
+  DCMSEG_DEBUG("");
+}
+
+
+OFString DcmSegUtils::debugByte2Bin(Uint8 b)
+{
+  OFString result("",8);
+  for (int i = 7; i >= 0; i--)
+  {
+    result[i]= (b & 1) + '0';
+
+    b >>= 1;
+  }
+  return result;
+}
diff --git a/dcmseg/tests/CMakeLists.txt b/dcmseg/tests/CMakeLists.txt
new file mode 100644
index 0000000..75e108d
--- /dev/null
+++ b/dcmseg/tests/CMakeLists.txt
@@ -0,0 +1,8 @@
+# declare executables
+DCMTK_ADD_EXECUTABLE(dcmseg_tests tests tutils)
+
+# make sure executables are linked to the corresponding libraries
+DCMTK_TARGET_LINK_MODULES(dcmseg_tests dcmseg dcmfg dcmiod dcmdata oflog ofstd)
+
+# This macro parses tests.cc and registers all tests
+DCMTK_ADD_TESTS(dcmseg)
diff --git a/dcmimgle/apps/Makefile.dep b/dcmseg/tests/Makefile.dep
similarity index 73%
copy from dcmimgle/apps/Makefile.dep
copy to dcmseg/tests/Makefile.dep
index 4f3993f..d3504b4 100644
--- a/dcmimgle/apps/Makefile.dep
+++ b/dcmseg/tests/Makefile.dep
@@ -1,21 +1,33 @@
-dcmdspfn.o: dcmdspfn.cc ../../config/include/dcmtk/config/osconfig.h \
- ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+tests.o: tests.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 \
- ../../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 \
@@ -29,17 +41,56 @@ dcmdspfn.o: dcmdspfn.cc ../../config/include/dcmtk/config/osconfig.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 \
+ ../../oflog/include/dcmtk/oflog/tracelog.h
+tutils.o: tutils.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/dcmseg/segutils.h ../include/dcmtk/dcmseg/segdef.h \
+ ../include/dcmtk/dcmseg/segtypes.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 \
@@ -47,7 +98,6 @@ dcmdspfn.o: dcmdspfn.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -107,39 +157,10 @@ dcmdspfn.o: dcmdspfn.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 \
- ../include/dcmtk/dcmimgle/digsdfn.h ../include/dcmtk/dcmimgle/didispfn.h \
- ../include/dcmtk/dcmimgle/didefine.h ../include/dcmtk/dcmimgle/diciefn.h \
- ../include/dcmtk/dcmimgle/dicielut.h \
- ../include/dcmtk/dcmimgle/didislut.h \
- ../include/dcmtk/dcmimgle/dibaslut.h ../include/dcmtk/dcmimgle/diutils.h
-dcod2lum.o: dcod2lum.cc ../../config/include/dcmtk/config/osconfig.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.h \
- ../../ofstd/include/dcmtk/ofstd/ofconsol.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/ofstring.h \
- ../include/dcmtk/dcmimgle/didispfn.h \
- ../include/dcmtk/dcmimgle/didefine.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
-dconvlum.o: dconvlum.cc ../../config/include/dcmtk/config/osconfig.h \
- ../../ofstd/include/dcmtk/ofstd/ofstdinc.h \
- ../../ofstd/include/dcmtk/ofstd/ofstream.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/ofstring.h \
- ../../ofstd/include/dcmtk/ofstd/oftraits.h \
- ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../ofstd/include/dcmtk/ofstd/ofconsol.h \
- ../../ofstd/include/dcmtk/ofstd/ofthread.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
- ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h
+ ../../dcmiod/include/dcmtk/dcmiod/iodrules.h \
+ ../../dcmiod/include/dcmtk/dcmiod/iodtypes.h \
+ ../../dcmiod/include/dcmtk/dcmiod/ioddef.h \
+ ../../dcmiod/include/dcmtk/dcmiod/modbase.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
diff --git a/dcmseg/tests/Makefile.in b/dcmseg/tests/Makefile.in
index 6647f17..515c4db 100644
--- a/dcmseg/tests/Makefile.in
+++ b/dcmseg/tests/Makefile.in
@@ -5,25 +5,56 @@
 @SET_MAKE@
 
 SHELL = /bin/sh
+VPATH = @srcdir@:@top_srcdir@/include:@top_srcdir@/@configdir@/include
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 configdir = @top_srcdir@/@configdir@
 
+ofstddir = $(top_srcdir)/../ofstd
+oflogdir = $(top_srcdir)/../oflog
+dcmdatadir = $(top_srcdir)/../dcmdata
+dcmioddir = $(top_srcdir)/../dcmiod
+dcmfgdir = $(top_srcdir)/../dcmfg
+
+
 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)
+LOCALINCLUDES = -I$(top_srcdir)/include -I$(ofstddir)/include -I$(oflogdir)/include \
+	-I$(dcmdatadir)/include -I$(dcmioddir)/include -I$(dcmfgdir)/include \
+
+
+test_objs = tests.o tutils.o
+objs = $(test_objs)
+progs = tests
+
+
+all: $(progs)
 
-all:
+tests: $(test_objs)
+	$(CXX) $(CXXFLAGS) $(LIBDIRS) $(LDFLAGS) -o $@ $(test_objs) $(LOCALLIBS) $(ICONVLIBS) $(LIBS)
 
-check:
 
-check-exhaustive:
+check: tests
+	./tests
+
+check-exhaustive: tests
+	./tests -x
+
+
+install: all
 
-install:
 
 clean:
-	rm -f $(TRASH)
+	rm -f $(objs) $(progs) $(LOCALTRASH) $(TRASH)
 
 distclean:
-	rm -f $(DISTTRASH)
+	rm -f $(objs) $(progs) $(LOCALTRASH) $(DISTTRASH)
+
 
 dependencies:
+	$(CXX) -MM $(defines) $(includes) $(CPPFLAGS) $(CXXFLAGS) *.cc  > $(DEP)
+
+include $(DEP)
diff --git a/dcmseg/tests/tests.cc b/dcmseg/tests/tests.cc
new file mode 100644
index 0000000..6e7b462
--- /dev/null
+++ b/dcmseg/tests/tests.cc
@@ -0,0 +1,26 @@
+/*
+ *
+ *  Copyright (C) 2015, 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:  dcmseg
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: main test program
+ *
+ */
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/oftest.h"
+
+OFTEST_REGISTER(dcmseg_utils);
+OFTEST_MAIN("dcmseg")
diff --git a/dcmseg/tests/tutils.cc b/dcmseg/tests/tutils.cc
new file mode 100644
index 0000000..59b8b49
--- /dev/null
+++ b/dcmseg/tests/tutils.cc
@@ -0,0 +1,65 @@
+/*
+ *
+ *  Copyright (C) 2015, 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:  dcmseg
+ *
+ *  Author:  Michael Onken
+ *
+ *  Purpose: tests for dcmseg's DcmSegUtils functionalities
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/oftest.h"
+#include "dcmtk/dcmseg/segutils.h"
+
+OFTEST(dcmseg_utils)
+{
+  // buf = 10101010 11001100 11110000 00001111
+  Uint8 buf[4];
+  buf[0] = 0xAA; // 10101010
+  buf[1] = 0xCC; // 11001100
+  buf[2] = 0xF0; // 11110000
+  buf[3] = 0x0F; // 00001111
+
+  // Shift and check, should be 00101010 10110011 00111000 00000011
+  DcmSegUtils::shiftRight(buf, 4, 2);
+  OFCHECK(buf[0] == 0x2A); // 00101010 = 42 = 0x2A
+  OFCHECK(buf[1] == 0xB3); // 10110011 = 179 = 0xB3
+  OFCHECK(buf[2] == 0x3C); // 00111100 = 60 = 0x3C
+  OFCHECK(buf[3] == 0x03); // 00000011 = 0 = 0x03
+
+  // Shift and check, should be 10101010 11001100 11110000 00001100
+  DcmSegUtils::shiftLeft(buf, 4, 2);
+  OFCHECK(buf[0] == 0xAA); // 10101010
+  OFCHECK(buf[1] == 0xCC); // 11001100
+  OFCHECK(buf[2] == 0xF0); // 11110000
+  OFCHECK(buf[3] == 0x0C); // 00001100
+
+  // Shift and check, should be 00000001 01010101 10011001 11100000
+  DcmSegUtils::shiftRight(buf, 4, 7);
+  OFCHECK(buf[0] == 0x01); // 00000001
+  OFCHECK(buf[1] == 0x55); // 01010101
+  OFCHECK(buf[2] == 0x99); // 10011001
+  OFCHECK(buf[3] == 0xE0); // 11100000
+
+  // Shift and check, should be 10101010 11001100 11110000 00000000
+  DcmSegUtils::shiftLeft(buf, 4, 7);
+  OFCHECK(buf[0] == 0xAA); // 10101010
+  OFCHECK(buf[1] == 0xCC); // 11001100
+  OFCHECK(buf[2] == 0xF0); // 11110000
+  OFCHECK(buf[3] == 0x00); // 00000000
+
+}
diff --git a/dcmsign/apps/Makefile.dep b/dcmsign/apps/Makefile.dep
index c82aa80..c14b759 100644
--- a/dcmsign/apps/Makefile.dep
+++ b/dcmsign/apps/Makefile.dep
@@ -39,6 +39,8 @@ dcmsign.o: dcmsign.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../include/dcmtk/dcmsign/dcsignat.h ../include/dcmtk/dcmsign/sitypes.h \
  ../include/dcmtk/dcmsign/sidefine.h \
@@ -115,4 +117,5 @@ dcmsign.o: dcmsign.cc ../../config/include/dcmtk/config/osconfig.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/dcvrod.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcvrol.h
diff --git a/dcmsign/libsrc/Makefile.dep b/dcmsign/libsrc/Makefile.dep
index 114d3c2..84d73a7 100644
--- a/dcmsign/libsrc/Makefile.dep
+++ b/dcmsign/libsrc/Makefile.dep
@@ -41,6 +41,8 @@ dcsignat.o: dcsignat.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -117,6 +119,8 @@ siautopr.o: siautopr.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -166,6 +170,8 @@ sibrsapr.o: sibrsapr.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -190,6 +196,8 @@ sicert.o: sicert.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oflist.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.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 \
@@ -286,6 +294,8 @@ sicreapr.o: sicreapr.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -349,6 +359,8 @@ simaccon.o: simaccon.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
@@ -425,6 +437,8 @@ sinullpr.o: sinullpr.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h
@@ -525,6 +539,8 @@ sisprof.o: sisprof.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcvr.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
diff --git a/dcmsr/apps/Makefile.dep b/dcmsr/apps/Makefile.dep
index 35c1a96..39a91ba 100644
--- a/dcmsr/apps/Makefile.dep
+++ b/dcmsr/apps/Makefile.dep
@@ -42,6 +42,8 @@ dsr2html.o: dsr2html.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -110,11 +112,12 @@ dsr2html.o: dsr2html.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -124,7 +127,8 @@ dsr2html.o: dsr2html.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
@@ -172,6 +176,8 @@ dsr2xml.o: dsr2xml.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -240,11 +246,12 @@ dsr2xml.o: dsr2xml.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -254,7 +261,8 @@ dsr2xml.o: dsr2xml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
@@ -302,6 +310,8 @@ dsrdump.o: dsrdump.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -370,11 +380,12 @@ dsrdump.o: dsrdump.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -384,7 +395,8 @@ dsrdump.o: dsrdump.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../../ofstd/include/dcmtk/ofstd/ofchrenc.h
@@ -432,6 +444,8 @@ xml2dsr.o: xml2dsr.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -500,11 +514,12 @@ xml2dsr.o: xml2dsr.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -514,7 +529,8 @@ xml2dsr.o: xml2dsr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcostrmz.h
diff --git a/dcmsr/apps/dsr2html.cc b/dcmsr/apps/dsr2html.cc
index c0e9061..89250a0 100644
--- a/dcmsr/apps/dsr2html.cc
+++ b/dcmsr/apps/dsr2html.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2000-2014, 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
@@ -102,6 +102,9 @@ static OFCondition renderFile(STD_NAMESPACE ostream &out,
             OFLOG_FATAL(dsr2htmlLogger, result.text() << ": converting file to UTF-8: " << ifname);
         }
     }
+#else
+    // avoid compiler warning on unused variable
+    (void)convertToUTF8;
 #endif
     if (result.good())
     {
@@ -127,33 +130,19 @@ static OFCondition renderFile(STD_NAMESPACE ostream &out,
                         OFLOG_DEBUG(dsr2htmlLogger, "use option --charset-assume to manually specify an appropriate character set");
                         result = EC_IllegalCall;
                     } else {
-                        OFString charsetStr(defaultCharset);
                         // use the default character set specified by the user
-                        if (charsetStr == "ISO_IR 192")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_UTF8);
-                        else if (charsetStr == "ISO_IR 100")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin1);
-                        else if (charsetStr == "ISO_IR 101")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin2);
-                        else if (charsetStr == "ISO_IR 109")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin3);
-                        else if (charsetStr == "ISO_IR 110")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin4);
-                        else if (charsetStr == "ISO_IR 148")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin5);
-                        else if (charsetStr == "ISO_IR 144")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Cyrillic);
-                        else if (charsetStr == "ISO_IR 127")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Arabic);
-                        else if (charsetStr == "ISO_IR 126")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Greek);
-                        else if (charsetStr == "ISO_IR 138")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Hebrew);
-                        else {
+                        result = dsrdoc->setSpecificCharacterSet(defaultCharset);
+                        if (dsrdoc->getSpecificCharacterSetType() == DSRTypes::CS_unknown)
+                        {
                             OFLOG_FATAL(dsr2htmlLogger, OFFIS_CONSOLE_APPLICATION << ": Character set '"
                                 << defaultCharset << "' specified with option --charset-assume not supported");
                             result = EC_IllegalCall;
                         }
+                        else if (result.bad())
+                        {
+                            OFLOG_FATAL(dsr2htmlLogger, OFFIS_CONSOLE_APPLICATION << ": Cannot use character set '"
+                                << defaultCharset << "' specified with option --charset-assume: " << result.text());
+                        }
                     }
                 }
                 if (result.good())
@@ -225,7 +214,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-require",      "+Cr",    "require declaration of ext. charset (default)");
         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 and UT)");
+        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
         cmd.addOption("--convert-to-utf8",      "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
diff --git a/dcmsr/apps/dsr2xml.cc b/dcmsr/apps/dsr2xml.cc
index a0006b8..71e8e22 100644
--- a/dcmsr/apps/dsr2xml.cc
+++ b/dcmsr/apps/dsr2xml.cc
@@ -78,33 +78,19 @@ static OFCondition writeFile(STD_NAMESPACE ostream &out,
                         OFLOG_DEBUG(dsr2xmlLogger, "use option --charset-assume to manually specify an appropriate character set");
                         result = EC_IllegalCall;
                     } else {
-                        OFString charsetStr(defaultCharset);
                         // use the default character set specified by the user
-                        if (charsetStr == "ISO_IR 192")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_UTF8);
-                        else if (charsetStr == "ISO_IR 100")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin1);
-                        else if (charsetStr == "ISO_IR 101")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin2);
-                        else if (charsetStr == "ISO_IR 109")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin3);
-                        else if (charsetStr == "ISO_IR 110")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin4);
-                        else if (charsetStr == "ISO_IR 148")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Latin5);
-                        else if (charsetStr == "ISO_IR 144")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Cyrillic);
-                        else if (charsetStr == "ISO_IR 127")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Arabic);
-                        else if (charsetStr == "ISO_IR 126")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Greek);
-                        else if (charsetStr == "ISO_IR 138")
-                            dsrdoc->setSpecificCharacterSetType(DSRTypes::CS_Hebrew);
-                        else {
+                        result = dsrdoc->setSpecificCharacterSet(defaultCharset);
+                        if (dsrdoc->getSpecificCharacterSetType() == DSRTypes::CS_unknown)
+                        {
                             OFLOG_FATAL(dsr2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": Character set '"
                                 << defaultCharset << "' specified with option --charset-assume not supported");
                             result = EC_IllegalCall;
                         }
+                        else if (result.bad())
+                        {
+                            OFLOG_FATAL(dsr2xmlLogger, OFFIS_CONSOLE_APPLICATION << ": Cannot use character set '"
+                                << defaultCharset << "' specified with option --charset-assume: " << result.text());
+                        }
                     }
                 }
                 if (result.good())
@@ -174,7 +160,7 @@ int main(int argc, char *argv[])
         cmd.addOption("--charset-require",      "+Cr",    "require declaration of ext. charset (default)");
         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 and UT)");
+        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
         cmd.addOption("--convert-to-utf8",      "+U8",    "convert all element values that are affected\nby Specific Character Set (0008,0005) to UTF-8");
 #endif
@@ -315,6 +301,8 @@ int main(int argc, char *argv[])
             app.checkConflict("--add-schema-reference", "--template-envelope", (opt_writeFlags & DSRTypes::XF_templateElementEnclosesItems) > 0);
             app.checkConflict("--add-schema-reference", "--write-empty-tags", (opt_writeFlags & DSRTypes::XF_writeEmptyTags) > 0);
         }
+        if (opt_writeFlags & DSRTypes::XF_templateIdentifierAsAttribute)
+            app.checkDependence("--attr-template-id", "--write-template-id", (opt_writeFlags & DSRTypes::XF_writeTemplateIdentification) > 0);
         if (opt_writeFlags & DSRTypes::XF_templateElementEnclosesItems)
             app.checkDependence("--template-envelope", "--write-template-id", (opt_writeFlags & DSRTypes::XF_writeTemplateIdentification) > 0);
     }
diff --git a/dcmsr/apps/dsrdump.cc b/dcmsr/apps/dsrdump.cc
index 357b83f..0188cc7 100644
--- a/dcmsr/apps/dsrdump.cc
+++ b/dcmsr/apps/dsrdump.cc
@@ -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
@@ -95,6 +95,9 @@ static OFCondition dumpFile(STD_NAMESPACE ostream &out,
             }
         }
     }
+#else
+    // avoid compiler warning on unused variable
+    (void)convertToUTF8;
 #endif
     if (result.good())
     {
diff --git a/dcmsr/docs/dcmsr.dox b/dcmsr/docs/dcmsr.dox
index 4629848..aee6079 100644
--- a/dcmsr/docs/dcmsr.dox
+++ b/dcmsr/docs/dcmsr.dox
@@ -1,10 +1,10 @@
 /*!
 
-\page mod_dcmsr dcmsr: a structured report library and utility apps
+\page mod_dcmsr dcmsr: a structured reporting library and utility apps
 
 This module contains classes to read, write, create, modify, access, print and
-render DICOM Structured Reporting documents (formerly Supplement 23). The list
-of supported SOP classes is provided in DSRTypes::E_DocumentType.
+render DICOM Structured Reporting (SR) documents. The list of supported SOP
+classes is provided in DSRTypes::E_DocumentType.
 
 The main interface classes are:
 \li \b DSRDocument
@@ -20,6 +20,13 @@ Here are some further classes that are useful when implementing SR templates:
 \li \b DSRRootTemplate
 \li \b DSRSubTemplate
 
+Currently, the following SR templates are implemented (see notes for details):
+\li \b TID1001_ObservationContext
+\li \b TID1204_LanguageOfContentItemAndDescendants
+\li \b TID1411_VolumetricROIMeasurements
+\li \b TID1500_MeasurementReport
+\li \b TID1600_ImageLibrary
+
 \section Tools
 
 This module contains the following command line tools:
@@ -52,7 +59,8 @@ if (status.good())
 \endcode
 
 The following example shows how to create a DICOM Structured Report and save
-it to a file (see \ref src_mkreport "mkreport" source file for details):
+it to a file (further details can be found in the \ref src_mkreport "mkreport"
+source file):
 
 \code
 DSRDocument document;
@@ -60,7 +68,7 @@ document.setPatientName("Doe^John");
 /* ... */
 document.getTree().addContentItem(DSRTypes::RT_isRoot, DSRTypes::VT_Container);
 document.getTree().getCurrentContentItem().setConceptName(DSRCodedEntryValue(/* some code */));
-document.getTree().addContentItem(DSRTypes::RT_hasObsContext, DSRTypes::VT_Code, DSRTypes::AM_belowCurrent);
+document.getTree().addChildContentItem(DSRTypes::RT_hasObsContext, DSRTypes::VT_Code, CODE_DCM_ObserverType);
 /* ... */
 DcmFileFormat fileformat;
 OFCondition status = document.write(*fileformat.getDataset())
@@ -77,7 +85,7 @@ Alternatively, many properties of the document tree can be accessed and
 modified directly as the following example shows:
 
 \code
-DSRDocument document(DSRTypes::DT_KeyObjectDoc);
+DSRDocument document(DSRTypes::DT_KeyObjectSelectionDocument);
 /* ... */
 document.getTree().addContentItem(DSRTypes::RT_isRoot, DSRTypes::VT_Container);
 DSRCodedEntryValue *codePtr = document.getTree().getCurrentContentItem().getConceptNamePtr();
@@ -96,6 +104,31 @@ if (imagePtr != NULL)
 /* ... */
 \endcode
 
+In addition, there are specific DSRDocumentTree::addContentItem() and
+DSRDocumentTree::addChildContentItem() methods that expect a pointer to a newly
+created DSRDocumentTreeNode instance.
+
+The final example shows how to deal with SR templates, e.g. when creating a
+DICOM Structured Report that is based on TID 1500 (Measurement Report):
+
+\code
+TID1500_MeasurementReport report(CMR_CID7021::ImagingMeasurementReport);
+report.setLanguage(CID5000_Languages::English);
+report.getObservationContext().addPersonObserver("Doe^Jane", "Some Organization");
+/* ... */
+TID1500_MeasurementReport::TID1411_Measurements &measurements = report.getVolumetricROIMeasurements();
+measurements.setActivitySession("1");
+measurements.setTrackingIdentifier("aorta reference region");
+/* ... */
+DSRDocument document;
+document.setPatientName("Last Name^First Name");
+/* ... */
+if (document.setTreeFromRootTemplate(report).good())
+  document.print(cout, DSRTypes::PF_printTemplateIdentification);
+else
+  cerr << "Error: cannot set template content as document tree" << endl;
+\endcode
+
 */
 
 /*!
diff --git a/dcmsr/docs/dsr2html.man b/dcmsr/docs/dsr2html.man
index 3140f4e..bb49cfc 100644
--- a/dcmsr/docs/dsr2html.man
+++ b/dcmsr/docs/dsr2html.man
@@ -135,7 +135,7 @@ specific character set:
 
        --charset-check-all
          check all data elements with string values
-         (default: only PN, LO, LT, SH, ST and UT)
+         (default: only PN, LO, LT, SH, ST, UC and UT)
 
          # this option is only used for the mapping to an appropriate
          # HTML/XHTML character encoding, but not for the conversion
@@ -253,27 +253,34 @@ The HTML/XHTML encoding is determined automatically from the DICOM attribute
 (0008,0005) "Specific Character Set" using the following mapping:
 
 \verbatim
-ASCII         (ISO_IR 6)    =>  (none)
-UTF-8         "ISO_IR 192"  =>  "UTF-8"
-ISO Latin 1   "ISO_IR 100"  =>  "ISO-8859-1"
-ISO Latin 2   "ISO_IR 101"  =>  "ISO-8859-2"
-ISO Latin 3   "ISO_IR 109"  =>  "ISO-8859-3"
-ISO Latin 4   "ISO_IR 110"  =>  "ISO-8859-4"
-ISO Latin 5   "ISO_IR 148"  =>  "ISO-8859-9"
-Cyrillic      "ISO_IR 144"  =>  "ISO-8859-5"
-Arabic        "ISO_IR 127"  =>  "ISO-8859-6"
-Greek         "ISO_IR 126"  =>  "ISO-8859-7"
-Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
+ASCII         (ISO_IR 6)                       =>  (none)
+UTF-8         "ISO_IR 192"                     =>  "UTF-8"
+ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
+ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
+ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
+ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
+ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
+Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
+Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
+Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
+Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
+Thai          "ISO_IR 166"                     =>  "TIS-620"
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
+Chinese       "GB18030"                        =>  "GB18030"
+Chinese       "GBK"                            =>  "GBK"
 \endverbatim
 
 If this DICOM attribute is missing in the input file, although needed, option
 \e --charset-assume can be used to specify an appropriate character set
-manually (using one of the DICOM defined terms).
+manually (using one of the DICOM defined terms).  For reasons of backward
+compatibility with previous versions of this tool, the following terms are also
+supported and mapped automatically to the associated DICOM defined terms:
+latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew.
 
-Multiple character sets are not supported (only the first attribute value is
-mapped in case of value multiplicity).  If needed, option \e --convert-to-utf8
-can be used to convert the DICOM file or data set to UTF-8 encoding prior to
-the rendering to HTML/XHTML format.
+Option \e --convert-to-utf8 can be used to convert the DICOM file or data set
+to UTF-8 encoding prior to the rendering to HTML/XHTML format.
 
 \section logging LOGGING
 
@@ -343,6 +350,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2000-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmsr/docs/dsr2xml.man b/dcmsr/docs/dsr2xml.man
index f7cd33f..c235c01 100644
--- a/dcmsr/docs/dsr2xml.man
+++ b/dcmsr/docs/dsr2xml.man
@@ -132,7 +132,7 @@ specific character set:
 
   +Cc  --charset-check-all
          check all data elements with string values
-         (default: only PN, LO, LT, SH, ST and UT)
+         (default: only PN, LO, LT, SH, ST, UC and UT)
 
          # this option is only used for the mapping to an appropriate
          # XML character encoding, but not for the conversion to UTF-8
@@ -222,27 +222,34 @@ The XML encoding is determined automatically from the DICOM attribute
 (0008,0005) "Specific Character Set" using the following mapping:
 
 \verbatim
-ASCII         (ISO_IR 6)    =>  "UTF-8"
-UTF-8         "ISO_IR 192"  =>  "UTF-8"
-ISO Latin 1   "ISO_IR 100"  =>  "ISO-8859-1"
-ISO Latin 2   "ISO_IR 101"  =>  "ISO-8859-2"
-ISO Latin 3   "ISO_IR 109"  =>  "ISO-8859-3"
-ISO Latin 4   "ISO_IR 110"  =>  "ISO-8859-4"
-ISO Latin 5   "ISO_IR 148"  =>  "ISO-8859-9"
-Cyrillic      "ISO_IR 144"  =>  "ISO-8859-5"
-Arabic        "ISO_IR 127"  =>  "ISO-8859-6"
-Greek         "ISO_IR 126"  =>  "ISO-8859-7"
-Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
+ASCII         (ISO_IR 6)                       =>  "UTF-8"
+UTF-8         "ISO_IR 192"                     =>  "UTF-8"
+ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
+ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
+ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
+ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
+ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
+Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
+Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
+Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
+Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
+Thai          "ISO_IR 166"                     =>  "TIS-620"
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
+Chinese       "GB18030"                        =>  "GB18030"
+Chinese       "GBK"                            =>  "GBK"
 \endverbatim
 
 If this DICOM attribute is missing in the input file, although needed, option
 \e --charset-assume can be used to specify an appropriate character set
-manually (using one of the DICOM defined terms).
+manually (using one of the DICOM defined terms).  For reasons of backward
+compatibility with previous versions of this tool, the following terms are also
+supported and mapped automatically to the associated DICOM defined terms:
+latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew.
 
-Multiple character sets are not supported (only the first attribute value is
-mapped in case of value multiplicity).  If needed, option \e --convert-to-utf8
-can be used to convert the DICOM file or data set to UTF-8 encoding prior to
-the conversion to XML format.
+Option \e --convert-to-utf8 can be used to convert the DICOM file or data set
+to UTF-8 encoding prior to the conversion to XML format.
 
 \subsection error_handling Error Handling
 
@@ -326,6 +333,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2000-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2000-2015 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
 
 */
diff --git a/dcmsr/docs/xml2dsr.man b/dcmsr/docs/xml2dsr.man
index 5eff631..e53bda3 100644
--- a/dcmsr/docs/xml2dsr.man
+++ b/dcmsr/docs/xml2dsr.man
@@ -212,12 +212,14 @@ Cyrillic      "ISO_IR 144"  (ISO-8859-5)
 Arabic        "ISO_IR 127"  (ISO-8859-6)
 Greek         "ISO_IR 126"  (ISO-8859-7)
 Hebrew        "ISO_IR 138"  (ISO-8859-8)
+Thai          "ISO_IR 166"  (TIS-620)
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  (ISO-2022-JP)
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  (ISO-2022-KR)
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   (ISO-2022-CN)
+Chinese       "GB18030"     (GB18030)
+Chinese       "GBK"         (GBK)
 \endverbatim
 
-Multiple character sets are not supported (only the first value of the
-"Specific Character Set" is used for the character encoding in case of value
-multiplicity).
-
 \subsection compression Compression
 
 If libxml is compiled with zlib support, the input file (\e xmlfile-in) can
@@ -303,6 +305,6 @@ It is an error if no data dictionary can be loaded.
 
 \section copyright COPYRIGHT
 
-Copyright (C) 2003-2014 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.
+Copyright (C) 2003-2015 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 992204c..29078f4 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID100_QuantitativeDiagnosticImagingProcedures
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:54:59 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:31 by J. Riesmeier
  *
  */
 
@@ -61,7 +61,7 @@ class DCMTK_CMR_EXPORT CID100_QuantitativeDiagnosticImagingProcedures
         /// (RPID5258,RADLEX,"NM HEAD PERFUSION BRAIN SPECT")
         NM_HEAD_PERFUSION_BRAIN_SPECT,
         /// (RPID5427,RADLEX,"NM HEAD PERFUSION BRAIN PET-CT AV-45")
-        NM_HEAD_PERFUSION_BRAIN_PET_CT_AV_45
+        NM_HEAD_PERFUSION_BRAIN_PET_CT_AV45
     };
 
     /** (default) constructor
@@ -166,4 +166,13 @@ class DCMTK_CMR_EXPORT CID100_QuantitativeDiagnosticImagingProcedures
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID100_QuantitativeDiagnosticImagingProcedures CMR_CID100;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
index ac39009..c0e4257 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID10013_CTAcquisitionType
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:27 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:55 by J. Riesmeier
  *
  */
 
@@ -152,4 +152,13 @@ class DCMTK_CMR_EXPORT CID10013_CTAcquisitionType
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID10013_CTAcquisitionType CMR_CID10013;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013e.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013e.h
index c158d19..5bde25a 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10013e.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10013e.h
@@ -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.
  *
  *  Header file for class CID10013e_CTAcquisitionType
@@ -91,4 +91,13 @@ class DCMTK_CMR_EXPORT CID10013e_CTAcquisitionType
     using CID10013_CTAcquisitionType::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID10013e_CTAcquisitionType CMR_CID10013e;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
index 82d66a0..41db6f9 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID10033_CTReconstructionAlgorithm
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:29 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:57 by J. Riesmeier
  *
  */
 
@@ -146,4 +146,13 @@ class DCMTK_CMR_EXPORT CID10033_CTReconstructionAlgorithm
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID10033_CTReconstructionAlgorithm CMR_CID10033;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033e.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033e.h
index d1e51c5..09e1ba1 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid10033e.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid10033e.h
@@ -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.
  *
  *  Header file for class CID10033e_CTReconstructionAlgorithm
@@ -95,4 +95,13 @@ class DCMTK_CMR_EXPORT CID10033e_CTReconstructionAlgorithm
     using CID10033_CTReconstructionAlgorithm::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID10033e_CTReconstructionAlgorithm CMR_CID10033e;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
index a04af2a..79bea97 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID11_RouteOfAdministration
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:11 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:26 by J. Riesmeier
  *
  */
 
@@ -184,4 +184,13 @@ class DCMTK_CMR_EXPORT CID11_RouteOfAdministration
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID11_RouteOfAdministration CMR_CID11;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
index 9c8e899..d09c4b9 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID244_Laterality
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:16 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:33 by J. Riesmeier
  *
  */
 
@@ -150,4 +150,13 @@ class DCMTK_CMR_EXPORT CID244_Laterality
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID244_Laterality CMR_CID244;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid244e.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid244e.h
index 98d502b..951ec3d 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid244e.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid244e.h
@@ -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.
  *
  *  Header file for class CID244e_Laterality
@@ -91,4 +91,13 @@ class DCMTK_CMR_EXPORT CID244e_Laterality
     using CID244_Laterality::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID244e_Laterality CMR_CID244e;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
index 2de9bd6..537e277 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID29_AcquisitionModality
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:13 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:28 by J. Riesmeier
  *
  */
 
@@ -216,4 +216,13 @@ class DCMTK_CMR_EXPORT CID29_AcquisitionModality
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID29_AcquisitionModality CMR_CID29;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid29e.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid29e.h
index 7206570..c7ee854 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid29e.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid29e.h
@@ -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.
  *
  *  Header file for class CID29e_AcquisitionModality
@@ -82,4 +82,13 @@ class DCMTK_CMR_EXPORT CID29e_AcquisitionModality
     using CID29_AcquisitionModality::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID29e_AcquisitionModality CMR_CID29e;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
index 45620c3..8dbe771 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4020.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4020_PETRadionuclide
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:18 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:35 by J. Riesmeier
  *
  */
 
@@ -212,4 +212,13 @@ class DCMTK_CMR_EXPORT CID4020_PETRadionuclide
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID4020_PETRadionuclide CMR_CID4020;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
index bc8c021..5fe8994 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4021.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4021_PETRadiopharmaceutical
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:19 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:36 by J. Riesmeier
  *
  */
 
@@ -294,4 +294,13 @@ class DCMTK_CMR_EXPORT CID4021_PETRadiopharmaceutical
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID4021_PETRadiopharmaceutical CMR_CID4021;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
index 422736b..3771100 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID4031_CommonAnatomicRegions
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:21 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:38 by J. Riesmeier
  *
  */
 
@@ -356,4 +356,13 @@ class DCMTK_CMR_EXPORT CID4031_CommonAnatomicRegions
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID4031_CommonAnatomicRegions CMR_CID4031;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031e.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031e.h
index 1dd0a9d..0ccd6ef 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid4031e.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid4031e.h
@@ -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.
  *
  *  Header file for class CID4031_CommonAnatomicRegions_Enhanced
@@ -95,4 +95,13 @@ class DCMTK_CMR_EXPORT CID4031e_CommonAnatomicRegions
     using CID4031_CommonAnatomicRegions::selectValue;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID4031e_CommonAnatomicRegions CMR_CID4031e;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
index b0921ce..f04d97c 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID42_NumericValueQualifier
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:14 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:30 by J. Riesmeier
  *
  */
 
@@ -166,4 +166,13 @@ class DCMTK_CMR_EXPORT CID42_NumericValueQualifier
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID42_NumericValueQualifier CMR_CID42;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
similarity index 84%
copy from dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
copy to dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
index 9c8e899..8408a3b 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
@@ -1,18 +1,18 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class CID244_Laterality
+ *  Header file for class CID6147_ResponseCriteria
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:16 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:40 by J. Riesmeier
  *
  */
 
 
-#ifndef CMR_CID244_H
-#define CMR_CID244_H
+#ifndef CMR_CID6147_H
+#define CMR_CID6147_H
 
 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
 
@@ -25,27 +25,27 @@
  *---------------------*/
 
 /** Implementation of DCMR Context Group:
- *  CID 244 - Laterality.
- *  (type: extensible, version: 20030108)
+ *  CID 6147 - Response Criteria.
+ *  (type: extensible, version: 20141110)
  */
-class DCMTK_CMR_EXPORT CID244_Laterality
+class DCMTK_CMR_EXPORT CID6147_ResponseCriteria
   : public DSRContextGroup
 {
 
   public:
 
-    /** types of laterality
+    /** types of response criteria
      */
     enum EnumType
     {
-        /// (G-A100,SRT,"Right")
-        Right,
-        /// (G-A101,SRT,"Left")
-        Left,
-        /// (G-A102,SRT,"Right and left")
-        RightAndLeft,
-        /// (G-A103,SRT,"Unilateral")
-        Unilateral
+        /// (112029,DCM,"WHO")
+        WHO,
+        /// (126080,DCM,"RECIST 1.0")
+        RECIST10,
+        /// (126081,DCM,"RECIST 1.1")
+        RECIST11,
+        /// (C114879,NCIt,"RANO")
+        RANO
     };
 
     /** (default) constructor
@@ -54,15 +54,15 @@ class DCMTK_CMR_EXPORT CID244_Laterality
      *                         for this context group, i.e. no checks are performed.
      *                         Call DSRContextGroup::checkSelectedValue() if needed.
      */
-    CID244_Laterality(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
+    CID6147_ResponseCriteria(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
 
     /** constructor
      ** @param  selectedValue         type mapped to a coded entry that is selected as the
      *                                current value
      ** @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
      */
-    CID244_Laterality(const EnumType selectedValue,
-                      const OFBool enhancedEncodingMode = OFFalse);
+    CID6147_ResponseCriteria(const EnumType selectedValue,
+                             const OFBool enhancedEncodingMode = OFFalse);
 
     /** select a coded entry given by its type as the current value
      ** @param  selectedValue         type mapped to a coded entry that is selected as the
@@ -150,4 +150,13 @@ class DCMTK_CMR_EXPORT CID244_Laterality
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID6147_ResponseCriteria CMR_CID6147;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
index 89ccabb..588b500 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7021_MeasurementReportDocumentTitles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:55:09 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:42 by J. Riesmeier
  *
  */
 
@@ -150,4 +150,13 @@ class DCMTK_CMR_EXPORT CID7021_MeasurementReportDocumentTitles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7021_MeasurementReportDocumentTitles CMR_CID7021;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
new file mode 100644
index 0000000..1301522
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
@@ -0,0 +1,266 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class CID7181_AbstractMultiDimensionalImageModelComponentUnits
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-16 12:26:44 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CMR_CID7181_H
+#define CMR_CID7181_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrctxgr.h"
+#include "dcmtk/dcmsr/cmr/define.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Context Group:
+ *  CID 7181 - Abstract Multi-dimensional Image Model Component Units.
+ *  (type: extensible, version: 20141110)
+ */
+class DCMTK_CMR_EXPORT CID7181_AbstractMultiDimensionalImageModelComponentUnits
+  : public DSRContextGroup
+{
+
+  public:
+
+    /** types of abstract multi-dimensional image model component units
+     */
+    enum EnumType
+    {
+        /// (mm[Hg],UCUM,"mmHg"), included from CID 3500
+        MmHg,
+        /// (kPa,UCUM,"kPa"), included from CID 3500
+        KPa,
+        /// ([PRU],UCUM,"P.R.U."), included from CID 3502
+        PRU,
+        /// ([wood'U],UCUM,"Wood U"), included from CID 3502
+        WoodU,
+        /// (dyn.s.cm-5,UCUM,"dyn.s.cm-5"), included from CID 3502
+        Dynscm5,
+        /// ([PRU]/m2,UCUM,"P.R.U./m2"), included from CID 3503
+        PRUPerM2,
+        /// ([wood'U]/m2,UCUM,"Wood U/m2"), included from CID 3503
+        WoodUPerM2,
+        /// (dyn.s.cm-5/m2,UCUM,"dyn.s.cm-5/m2"), included from CID 3503
+        Dynscm5PerM2,
+        /// (cm,UCUM,"centimeter"), included from CID 7460
+        Centimeter,
+        /// (mm,UCUM,"millimeter"), included from CID 7460
+        Millimeter,
+        /// (um,UCUM,"micrometer"), included from CID 7460
+        Micrometer,
+        /// (cm2,UCUM,"square centimeter"), included from CID 7461
+        SquareCentimeter,
+        /// (mm2,UCUM,"square millimeter"), included from CID 7461
+        SquareMillimeter,
+        /// (um2,UCUM,"square micrometer"), included from CID 7461
+        SquareMicrometer,
+        /// (dm3,UCUM,"cubic decimeter"), included from CID 7462
+        CubicDecimeter,
+        /// (cm3,UCUM,"cubic centimeter"), included from CID 7462
+        CubicCentimeter,
+        /// (mm3,UCUM,"cubic millimeter"), included from CID 7462
+        CubicMillimeter,
+        /// (um3,UCUM,"cubic micrometer"), included from CID 7462
+        CubicMicrometer,
+        /// ({SUVbw}g/ml,UCUM,"Standardized Uptake Value body weight"), included from CID 85
+        StandardizedUptakeValueBodyWeight,
+        /// ({SUVlbm}g/ml,UCUM,"Standardized Uptake Value lean body mass"), included from CID 85
+        StandardizedUptakeValueLeanBodyMass,
+        /// ({SUVbsa}cm2/ml,UCUM,"Standardized Uptake Value body surface area"), included from CID 85
+        StandardizedUptakeValueBodySurfaceArea,
+        /// ({SUVibw}g/ml,UCUM,"Standardized Uptake Value ideal body weight"), included from CID 85
+        StandardizedUptakeValueIdealBodyWeight,
+        /// ({counts},UCUM,"Counts"), included from CID 84
+        Counts,
+        /// ({counts}/s,UCUM,"Counts per second"), included from CID 84
+        CountsPerSecond,
+        /// ({propcounts},UCUM,"Proportional to counts"), included from CID 84
+        ProportionalToCounts,
+        /// ({propcounts}/s,UCUM,"Proportional to counts per second"), included from CID 84
+        ProportionalToCountsPerSecond,
+        /// (%,UCUM,"Percent"), included from CID 84
+        Percent,
+        /// (Bq/ml,UCUM,"Becquerels/milliliter"), included from CID 84
+        BecquerelsPerMilliliter,
+        /// (mg/min/ml,UCUM,"Milligrams/minute/milliliter"), included from CID 84
+        MilligramsPerMinutePerMilliliter,
+        /// (umol/min/ml,UCUM,"Micromole/minute/milliliter"), included from CID 84
+        MicromolePerMinutePerMilliliter,
+        /// (ml/min/g,UCUM,"Milliliter/minute/gram"), included from CID 84
+        MilliliterPerMinutePerGram,
+        /// (ml/g,UCUM,"Milliliter/gram"), included from CID 84
+        MilliliterPerGram,
+        /// (/cm,UCUM,"/Centimeter"), included from CID 84
+        PerCentimeter,
+        /// (umol/ml,UCUM,"Micromole/milliliter"), included from CID 84
+        MicromolePerMilliliter,
+        /// (1,UCUM,"no units")
+        NoUnits,
+        /// ({ratio},UCUM,"ratio")
+        Ratio,
+        /// ([hnsf'U],UCUM,"Hounsfield Unit")
+        HounsfieldUnit,
+        /// ([arb'U],UCUM,"arbitrary unit")
+        ArbitraryUnit,
+        /// (cm/s,UCUM,"centimeter/second")
+        CentimeterPerSecond,
+        /// (mm/s,UCUM,"millimeter/second")
+        MillimeterPerSecond,
+        /// (dB,UCUM,"decibel")
+        Decibel,
+        /// (Cel,UCUM,"degrees Celsius")
+        DegreesCelsius,
+        /// (ml/min,UCUM,"milliliter per minute")
+        MilliliterPerMinute,
+        /// (ml/s,UCUM,"milliliter per second")
+        MilliliterPerSecond,
+        /// (ms,UCUM,"millisecond")
+        Millisecond,
+        /// (s,UCUM,"second")
+        Second,
+        /// (Hz,UCUM,"Hertz")
+        Hertz,
+        /// (mT,UCUM,"milliTesla")
+        MilliTesla,
+        /// ({Particles}/[100]g{Tissue},UCUM,"number particles per 100 gram of tissue")
+        NumberParticlesPer100GramOfTissue,
+        /// (mm2/s,UCUM,"square millimeter per second")
+        SquareMillimeterPerSecond,
+        /// (s/mm2,UCUM,"second per square millimeter")
+        SecondPerSquareMillimeter,
+        /// (ml/[100]g/min,UCUM,"milliliter per 100 gram per minute")
+        MilliliterPer100GramPerMinute,
+        /// (ml/[100]ml,UCUM,"milliliter per 100 milliliter")
+        MilliliterPer100Milliliter,
+        /// (mmol/kg{WetWeight},UCUM,"millimoles per kg wet weight")
+        MillimolesPerKgWetWeight,
+        /// (/min,UCUM,"/min")
+        PerMin,
+        /// (/s,UCUM,"/s")
+        PerS
+    };
+
+    /** (default) constructor
+     ** @param  selectedValue  coded entry to be selected as the current value (optional).
+     *                         Should be a valid code according to the DICOM definitions
+     *                         for this context group, i.e. no checks are performed.
+     *                         Call DSRContextGroup::checkSelectedValue() if needed.
+     */
+    CID7181_AbstractMultiDimensionalImageModelComponentUnits(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
+
+    /** constructor
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     ** @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     */
+    CID7181_AbstractMultiDimensionalImageModelComponentUnits(const EnumType selectedValue,
+                                                             const OFBool enhancedEncodingMode = OFFalse);
+
+    /** select a coded entry given by its type as the current value
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition selectValue(const EnumType selectedValue,
+                                    const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- static helper functions ---
+
+    /** initialize this context group explicitly.  Internally, the list of standard coded
+     *  entries is created and initialized by calling getCodes().
+     ** @note This function can be called multiple times but in case of multi-threaded
+     *        applications should be called at least once before any instance of this class
+     *        is actually used.  For single-threaded applications, there is no need to call
+     *        it since the initialization is done implicitly.
+     */
+    static void initialize();
+
+    /** cleanup this context group, i.e.\ delete the internal list of standard coded entries.
+     *  Usually, there is no need to call this method, but it might be useful in order to
+     *  explicitly free the associated memory, e.g. when checking for memory leaks.  The list
+     *  will be recreated automatically when needed (or when initialize() is called).
+     */
+    static void cleanup();
+
+    /** map a given type to the associated coded entry
+     ** @param  value                 type that should be mapped to a coded entry
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return coded entry that is associated with the given type
+     */
+    static DSRCodedEntryValue getCodedEntry(const EnumType value,
+                                            const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- reintroduce methods from base class
+
+     using DSRContextGroup::selectValue;
+     using DSRContextGroup::findCodedEntry;
+
+
+  protected:
+
+    /// type used for storing and managing the coded entries
+    typedef OFMap<EnumType, DSRBasicCodedEntry> CodeList;
+
+    /** print details on coded entries that are contained in this context group.
+     *  See DSRCodedEntryValue::print() for details of the coded entry output.
+     ** @param  stream  stream to which the output should be printed
+     */
+    virtual void printCodes(STD_NAMESPACE ostream &stream) const;
+
+    /** search for a given coded entry in this context group
+     ** @param  searchForCodedEntry   coded entry to be searched for
+     *  @param  foundCodedEntry       pointer to variable that will store the coded entry
+     *                                (if found and pointer is not NULL)
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return result of the search process, also defines the type of the entry
+     */
+    virtual OFCondition findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                       DSRCodedEntryValue *foundCodedEntry,
+                                       const OFBool enhancedEncodingMode = OFFalse) const;
+
+  // --- static helper function ---
+
+    /** get list of standard coded entries that are managed by this context group.
+     *  Internally, the singleton pattern is used, so the list is initialized only once.
+     *  Please note that this function is not thread-safe.  Therefore, the initialize()
+     *  function can be called before any instance of this class is actually used.
+     ** @return reference to list of coded entries managed by this context group
+     */
+    static CodeList &getCodes();
+
+    /** set the "Enhanced Encoding Mode" for a given coded entry
+     ** @param  codedEntryValue  coded entry for which the enhanced encoding mode is set
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    static OFCondition setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue);
+
+
+  private:
+
+    /// pointer to internal code list (use a static variable for singleton pattern)
+    static CodeList *Codes;
+};
+
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7181_AbstractMultiDimensionalImageModelComponentUnits CMR_CID7181;
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
index 10cad1d..9af4e7f 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7445_DeviceParticipatingRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:23 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:46 by J. Riesmeier
  *
  */
 
@@ -148,4 +148,13 @@ class DCMTK_CMR_EXPORT CID7445_DeviceParticipatingRoles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7445_DeviceParticipatingRoles CMR_CID7445;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
index c01e575..3e598dc 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7452_OrganizationalRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:24 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:48 by J. Riesmeier
  *
  */
 
@@ -178,4 +178,13 @@ class DCMTK_CMR_EXPORT CID7452_OrganizationalRoles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7452_OrganizationalRoles CMR_CID7452;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
index 8c632d7..153fd57 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
@@ -1,12 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file for class CID7453_PerformingRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 14:59:26 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:49 by J. Riesmeier
  *
  */
 
@@ -162,4 +162,13 @@ class DCMTK_CMR_EXPORT CID7453_PerformingRoles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7453_PerformingRoles CMR_CID7453;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
similarity index 74%
copy from dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
copy to dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
index 89ccabb..eec5b62 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
@@ -1,18 +1,18 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file for class CID7021_MeasurementReportDocumentTitles
+ *  Header file for class CID7464_GeneralRegionOfInterestMeasurementModifiers
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:55:09 by J. Riesmeier
+ *  File created on 2016-01-16 12:26:51 by J. Riesmeier
  *
  */
 
 
-#ifndef CMR_CID7021_H
-#define CMR_CID7021_H
+#ifndef CMR_CID7464_H
+#define CMR_CID7464_H
 
 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
 
@@ -25,27 +25,45 @@
  *---------------------*/
 
 /** Implementation of DCMR Context Group:
- *  CID 7021 - Measurement Report Document Titles.
- *  (type: extensible, version: 20141110)
+ *  CID 7464 - General Region of Interest Measurement Modifiers.
+ *  (type: extensible, version: 20121101)
  */
-class DCMTK_CMR_EXPORT CID7021_MeasurementReportDocumentTitles
+class DCMTK_CMR_EXPORT CID7464_GeneralRegionOfInterestMeasurementModifiers
   : public DSRContextGroup
 {
 
   public:
 
-    /** types of measurement report document titles
+    /** types of general region of interest measurement modifiers
      */
     enum EnumType
     {
-        /// (126000,DCM,"Imaging Measurement Report")
-        ImagingMeasurementReport,
-        /// (126001,DCM,"Oncology Measurement Report")
-        OncologyMeasurementReport,
-        /// (126002,DCM,"Dynamic Contrast MR Measurement Report")
-        DynamicContrastMRMeasurementReport,
-        /// (126003,DCM,"PET Measurement Report")
-        PETMeasurementReport
+        /// (G-A437,SRT,"Maximum"), included from CID 3488
+        Maximum,
+        /// (R-404FB,SRT,"Minimum"), included from CID 3488
+        Minimum,
+        /// (R-00317,SRT,"Mean"), included from CID 3488
+        Mean,
+        /// (R-10047,SRT,"Standard Deviation")
+        StandardDeviation,
+        /// (R-40507,SRT,"Total")
+        Total,
+        /// (R-00319,SRT,"Median")
+        Median,
+        /// (R-0032E,SRT,"Mode")
+        Mode,
+        /// (126031,DCM,"Peak Value Within ROI")
+        PeakValueWithinROI,
+        /// (C0681921,UMLS,"Coefficient of Variance")
+        CoefficientOfVariance,
+        /// (126051,DCM,"Skewness")
+        Skewness,
+        /// (126052,DCM,"Kurtosis")
+        Kurtosis,
+        /// (C1711260,UMLS,"Variance")
+        Variance,
+        /// (C2347976,UMLS,"Root Mean Square")
+        RootMeanSquare
     };
 
     /** (default) constructor
@@ -54,15 +72,15 @@ class DCMTK_CMR_EXPORT CID7021_MeasurementReportDocumentTitles
      *                         for this context group, i.e. no checks are performed.
      *                         Call DSRContextGroup::checkSelectedValue() if needed.
      */
-    CID7021_MeasurementReportDocumentTitles(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
+    CID7464_GeneralRegionOfInterestMeasurementModifiers(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
 
     /** constructor
      ** @param  selectedValue         type mapped to a coded entry that is selected as the
      *                                current value
      ** @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
      */
-    CID7021_MeasurementReportDocumentTitles(const EnumType selectedValue,
-                                            const OFBool enhancedEncodingMode = OFFalse);
+    CID7464_GeneralRegionOfInterestMeasurementModifiers(const EnumType selectedValue,
+                                                        const OFBool enhancedEncodingMode = OFFalse);
 
     /** select a coded entry given by its type as the current value
      ** @param  selectedValue         type mapped to a coded entry that is selected as the
@@ -150,4 +168,13 @@ class DCMTK_CMR_EXPORT CID7021_MeasurementReportDocumentTitles
     static CodeList *Codes;
 };
 
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7464_GeneralRegionOfInterestMeasurementModifiers CMR_CID7464;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
new file mode 100644
index 0000000..20f7803
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
@@ -0,0 +1,434 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class CID7469_GenericIntensityAndSizeMeasurements
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-16 12:26:53 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CMR_CID7469_H
+#define CMR_CID7469_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrctxgr.h"
+#include "dcmtk/dcmsr/cmr/define.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Context Group:
+ *  CID 7469 - Generic Intensity and Size Measurements.
+ *  (type: extensible, version: 20141110)
+ */
+class DCMTK_CMR_EXPORT CID7469_GenericIntensityAndSizeMeasurements
+  : public DSRContextGroup
+{
+
+  public:
+
+    /** types of generic intensity and size measurements
+     */
+    enum EnumType
+    {
+        /// (F-6175A,SRT,"N-acetylaspartate"), included from CID 4033
+        NAcetylaspartate,
+        /// (F-61080,SRT,"Citrate"), included from CID 4033
+        Citrate,
+        /// (F-61620,SRT,"Choline"), included from CID 4033
+        Choline,
+        /// (F-61380,SRT,"Creatine"), included from CID 4033
+        Creatine,
+        /// (113094,DCM,"Creatine and Choline"), included from CID 4033
+        CreatineAndCholine,
+        /// (F-61760,SRT,"Lactate"), included from CID 4033
+        Lactate,
+        /// (F-63600,SRT,"Lipid"), included from CID 4033
+        Lipid,
+        /// (113095,DCM,"Lipid and Lactate"), included from CID 4033
+        LipidAndLactate,
+        /// (113080,DCM,"Glutamate and glutamine"), included from CID 4033
+        GlutamateAndGlutamine,
+        /// (F-64210,SRT,"Glutamine"), included from CID 4033
+        Glutamine,
+        /// (F-64460,SRT,"Tuarine"), included from CID 4033
+        Tuarine,
+        /// (F-61A90,SRT,"Inositol"), included from CID 4033
+        Inositol,
+        /// (113081,DCM,"Choline/Creatine Ratio"), included from CID 4033
+        CholinePerCreatineRatio,
+        /// (113082,DCM,"N-acetylaspartate/Creatine Ratio"), included from CID 4033
+        NAcetylaspartatePerCreatineRatio,
+        /// (113083,DCM,"N-acetylaspartate/Choline Ratio"), included from CID 4033
+        NAcetylaspartatePerCholineRatio,
+        /// (113096,DCM,"Creatine+Choline/Citrate Ratio"), included from CID 4033
+        CreatinePlusCholinePerCitrateRatio,
+        /// (113063,DCM,"T1"), included from CID 7180
+        T1,
+        /// (113065,DCM,"T2"), included from CID 7180
+        T2,
+        /// (113064,DCM,"T2*"), included from CID 7180
+        T2Star,
+        /// (113058,DCM,"Proton Density"), included from CID 7180
+        ProtonDensity,
+        /// (110800,DCM,"Spin Tagging Perfusion MR Signal Intensity"), included from CID 7180
+        SpinTaggingPerfusionMRSignalIntensity,
+        /// (113070,DCM,"Velocity encoded"), included from CID 7180
+        VelocityEncoded,
+        /// (113067,DCM,"Temperature encoded"), included from CID 7180
+        TemperatureEncoded,
+        /// (110801,DCM,"Contrast Agent Angio MR Signal Intensity"), included from CID 7180
+        ContrastAgentAngioMRSignalIntensity,
+        /// (110802,DCM,"Time Of Flight Angio MR Signal Intensity"), included from CID 7180
+        TimeOfFlightAngioMRSignalIntensity,
+        /// (110803,DCM,"Proton Density Weighted MR Signal Intensity"), included from CID 7180
+        ProtonDensityWeightedMRSignalIntensity,
+        /// (110804,DCM,"T1 Weighted MR Signal Intensity"), included from CID 7180
+        T1WeightedMRSignalIntensity,
+        /// (110805,DCM,"T2 Weighted MR Signal Intensity"), included from CID 7180
+        T2WeightedMRSignalIntensity,
+        /// (110806,DCM,"T2* Weighted MR Signal Intensity"), included from CID 7180
+        T2StarWeightedMRSignalIntensity,
+        /// (113043,DCM,"Diffusion weighted"), included from CID 7180
+        DiffusionWeighted,
+        /// (110807,DCM,"Field Map MR Signal Intensity"), included from CID 7180
+        FieldMapMRSignalIntensity,
+        /// (110808,DCM,"Fractional Anisotropy"), included from CID 7180
+        FractionalAnisotropy,
+        /// (110809,DCM,"Relative Anisotropy"), included from CID 7180
+        RelativeAnisotropy,
+        /// (113041,DCM,"Apparent Diffusion Coefficient"), included from CID 7180
+        ApparentDiffusionCoefficient,
+        /// (110810,DCM,"Volumetric Diffusion Dxx Component"), included from CID 7180
+        VolumetricDiffusionDxxComponent,
+        /// (110811,DCM,"Volumetric Diffusion Dxy Component"), included from CID 7180
+        VolumetricDiffusionDxyComponent,
+        /// (110812,DCM,"Volumetric Diffusion Dxz Component"), included from CID 7180
+        VolumetricDiffusionDxzComponent,
+        /// (110813,DCM,"Volumetric Diffusion Dyy Component"), included from CID 7180
+        VolumetricDiffusionDyyComponent,
+        /// (110814,DCM,"Volumetric Diffusion Dyz Component"), included from CID 7180
+        VolumetricDiffusionDyzComponent,
+        /// (110815,DCM,"Volumetric Diffusion Dzz Component"), included from CID 7180
+        VolumetricDiffusionDzzComponent,
+        /// (110816,DCM,"T1 Weighted Dynamic Contrast Enhanced MR Signal Intensity"), included from CID 7180
+        T1WeightedDynamicContrastEnhancedMRSignalIntensity,
+        /// (110817,DCM,"T2 Weighted Dynamic Contrast Enhanced MR Signal Intensity"), included from CID 7180
+        T2WeightedDynamicContrastEnhancedMRSignalIntensity,
+        /// (110818,DCM,"T2* Weighted Dynamic Contrast Enhanced MR Signal Intensity"), included from CID 7180
+        T2StarWeightedDynamicContrastEnhancedMRSignalIntensity,
+        /// (110819,DCM,"Blood Oxygenation Level"), included from CID 7180
+        BloodOxygenationLevel,
+        /// (110820,DCM,"Nuclear Medicine Projection Activity"), included from CID 7180
+        NuclearMedicineProjectionActivity,
+        /// (110821,DCM,"Nuclear Medicine Tomographic Activity"), included from CID 7180
+        NuclearMedicineTomographicActivity,
+        /// (110822,DCM,"Spatial Displacement X Component"), included from CID 7180
+        SpatialDisplacementXComponent,
+        /// (110823,DCM,"Spatial Displacement Y Component"), included from CID 7180
+        SpatialDisplacementYComponent,
+        /// (110824,DCM,"Spatial Displacement Z Component"), included from CID 7180
+        SpatialDisplacementZComponent,
+        /// (110825,DCM,"Hemodynamic Resistance"), included from CID 7180
+        HemodynamicResistance,
+        /// (110826,DCM,"Indexed Hemodynamic Resistance"), included from CID 7180
+        IndexedHemodynamicResistance,
+        /// (112031,DCM,"Attenuation Coefficient"), included from CID 7180
+        AttenuationCoefficient,
+        /// (110827,DCM,"Tissue Velocity"), included from CID 7180
+        TissueVelocity,
+        /// (110828,DCM,"Flow Velocity"), included from CID 7180
+        FlowVelocity,
+        /// (P0-02241,SRT,"Power Doppler"), included from CID 7180
+        PowerDoppler,
+        /// (110829,DCM,"Flow Variance"), included from CID 7180
+        FlowVariance,
+        /// (110830,DCM,"Elasticity"), included from CID 7180
+        Elasticity,
+        /// (110831,DCM,"Perfusion"), included from CID 7180
+        Perfusion,
+        /// (110832,DCM,"Speed of sound"), included from CID 7180
+        SpeedOfSound,
+        /// (110833,DCM,"Ultrasound Attenuation"), included from CID 7180
+        UltrasoundAttenuation,
+        /// (113068,DCM,"Student's T-test"), included from CID 7180
+        StudentsTTest,
+        /// (113071,DCM,"Z-score"), included from CID 7180
+        ZScore,
+        /// (113057,DCM,"R-Coefficient"), included from CID 7180
+        RCoefficient,
+        /// (126220,DCM,"R2-Coefficient"), included from CID 7180
+        R2Coefficient,
+        /// (110834,DCM,"RGB R Component"), included from CID 7180
+        RGBRComponent,
+        /// (110835,DCM,"RGB G Component"), included from CID 7180
+        RGBGComponent,
+        /// (110836,DCM,"RGB B Component"), included from CID 7180
+        RGBBComponent,
+        /// (110837,DCM,"YBR FULL Y Component"), included from CID 7180
+        YBR_FULLYComponent,
+        /// (110838,DCM,"YBR FULL CB Component"), included from CID 7180
+        YBR_FULL_CBComponent,
+        /// (110839,DCM,"YBR FULL CR Component"), included from CID 7180
+        YBR_FULL_CRComponent,
+        /// (110840,DCM,"YBR PARTIAL Y Component"), included from CID 7180
+        YBR_PARTIALYComponent,
+        /// (110841,DCM,"YBR PARTIAL CB Component"), included from CID 7180
+        YBR_PARTIAL_CBComponent,
+        /// (110842,DCM,"YBR PARTIAL CR Component"), included from CID 7180
+        YBR_PARTIAL_CRComponent,
+        /// (110843,DCM,"YBR ICT Y Component"), included from CID 7180
+        YBR_ICTYComponent,
+        /// (110844,DCM,"YBR ICT CB Component"), included from CID 7180
+        YBR_ICT_CBComponent,
+        /// (110845,DCM,"YBR ICT CR Component"), included from CID 7180
+        YBR_ICT_CRComponent,
+        /// (110846,DCM,"YBR RCT Y Component"), included from CID 7180
+        YBR_RCTYComponent,
+        /// (110847,DCM,"YBR RCT CB Component"), included from CID 7180
+        YBR_RCT_CBComponent,
+        /// (110848,DCM,"YBR RCT CR Component"), included from CID 7180
+        YBR_RCT_CRComponent,
+        /// (110849,DCM,"Echogenicity"), included from CID 7180
+        Echogenicity,
+        /// (110850,DCM,"X-Ray Attenuation"), included from CID 7180
+        XRayAttenuation,
+        /// (110852,DCM,"MR signal intensity"), included from CID 7180
+        MRSignalIntensity,
+        /// (110853,DCM,"Binary Segmentation"), included from CID 7180
+        BinarySegmentation,
+        /// (110854,DCM,"Fractional Probabilistic Segmentation"), included from CID 7180
+        FractionalProbabilisticSegmentation,
+        /// (110855,DCM,"Fractional Occupancy Segmentation"), included from CID 7180
+        FractionalOccupancySegmentation,
+        /// (126393,DCM,"R1"), included from CID 7180
+        R1,
+        /// (126394,DCM,"R2"), included from CID 7180
+        R2,
+        /// (126312,DCM,"Ktrans"), included from CID 4107
+        Ktrans,
+        /// (126313,DCM,"kep"), included from CID 4107
+        Kep,
+        /// (126314,DCM,"ve"), included from CID 4107
+        Ve,
+        /// (126330,DCM,"tau_m"), included from CID 4107
+        Tau_m,
+        /// (126331,DCM,"vp"), included from CID 4107
+        Vp,
+        /// (113055,DCM,"Regional Cerebral Blood Flow"), included from CID 4108
+        RegionalCerebralBloodFlow,
+        /// (126390,DCM,"Regional Blood Flow"), included from CID 4108
+        RegionalBloodFlow,
+        /// (113056,DCM,"Regional Cerebral Blood Volume"), included from CID 4108
+        RegionalCerebralBloodVolume,
+        /// (126391,DCM,"Regional Blood Volume"), included from CID 4108
+        RegionalBloodVolume,
+        /// (113052,DCM,"Mean Transit Time"), included from CID 4108
+        MeanTransitTime,
+        /// (113069,DCM,"Time To Peak"), included from CID 4108
+        TimeToPeak,
+        /// (126392,DCM,"Oxygen Extraction Fraction"), included from CID 4108
+        OxygenExtractionFraction,
+        /// (126320,DCM,"IAUC"), included from CID 4109
+        IAUC,
+        /// (126321,DCM,"IAUC60"), included from CID 4109
+        IAUC60,
+        /// (126322,DCM,"IAUC90"), included from CID 4109
+        IAUC90,
+        /// (126370,DCM,"Time of Peak Concentration"), included from CID 4109
+        TimeOfPeakConcentration,
+        /// (126372,DCM,"Time of Leading Half-Peak Concentration"), included from CID 4109
+        TimeOfLeadingHalfPeakConcentration,
+        /// (126371,DCM,"Bolus Arrival Time"), included from CID 4109
+        BolusArrivalTime,
+        /// (126374,DCM,"Temporal Derivative Threshold"), included from CID 4109
+        TemporalDerivativeThreshold,
+        /// (126375,DCM,"Maximum Slope"), included from CID 4109
+        MaximumSlope,
+        /// (126376,DCM,"Maximum Difference"), included from CID 4109
+        MaximumDifference,
+        /// (126377,DCM,"Tracer Concentration"), included from CID 4109
+        TracerConcentration,
+        /// (126400,DCM,"Standardized Uptake Value"), included from CID 7180
+        StandardizedUptakeValue,
+        /// (126401,DCM,"SUVbw"), included from CID 7180
+        SUVbw,
+        /// (126402,DCM,"SUVlbm"), included from CID 7180
+        SUVlbm,
+        /// (126403,DCM,"SUVbsa"), included from CID 7180
+        SUVbsa,
+        /// (126404,DCM,"SUVibw"), included from CID 7180
+        SUVibw,
+        /// (G-A22A,SRT,"Length"), included from CID 7470
+        Length,
+        /// (121211,DCM,"Path length"), included from CID 7470
+        PathLength,
+        /// (121206,DCM,"Distance"), included from CID 7470
+        Distance,
+        /// (G-A220,SRT,"Width"), included from CID 7470
+        Width,
+        /// (G-D785,SRT,"Depth"), included from CID 7470
+        Depth,
+        /// (M-02550,SRT,"Diameter"), included from CID 7470
+        Diameter,
+        /// (G-A185,SRT,"Long Axis"), included from CID 7470
+        LongAxis,
+        /// (G-A186,SRT,"Short Axis"), included from CID 7470
+        ShortAxis,
+        /// (G-A193,SRT,"Major Axis"), included from CID 7470
+        MajorAxis,
+        /// (G-A194,SRT,"Minor Axis"), included from CID 7470
+        MinorAxis,
+        /// (G-A195,SRT,"Perpendicular Axis"), included from CID 7470
+        PerpendicularAxis,
+        /// (G-A196,SRT,"Radius"), included from CID 7470
+        Radius,
+        /// (G-A197,SRT,"Perimeter"), included from CID 7470
+        Perimeter,
+        /// (M-02560,SRT,"Circumference"), included from CID 7470
+        Circumference,
+        /// (G-A198,SRT,"Diameter of circumscribed circle"), included from CID 7470
+        DiameterOfCircumscribedCircle,
+        /// (121207,DCM,"Height"), included from CID 7470
+        Height,
+        /// (G-A166,SRT,"Area"), included from CID 7471
+        Area,
+        /// (G-A16A,SRT,"Area of defined region"), included from CID 7471
+        AreaOfDefinedRegion,
+        /// (G-D705,SRT,"Volume"), included from CID 7472
+        Volume,
+        /// (121216,DCM,"Volume estimated from single 2D region"), included from CID 7472
+        VolumeEstimatedFromSingle2DRegion,
+        /// (121218,DCM,"Volume estimated from two non-coplanar 2D regions"), included from CID 7472
+        VolumeEstimatedFromTwoNonCoplanar2DRegions,
+        /// (121217,DCM,"Volume estimated from three or more non-coplanar 2D regions"), included from CID 7472
+        VolumeEstimatedFromThreeOrMoreNonCoplanar2DRegions,
+        /// (121222,DCM,"Volume of sphere"), included from CID 7472
+        VolumeOfSphere,
+        /// (121221,DCM,"Volume of ellipsoid"), included from CID 7472
+        VolumeOfEllipsoid,
+        /// (121220,DCM,"Volume of circumscribed sphere"), included from CID 7472
+        VolumeOfCircumscribedSphere,
+        /// (121219,DCM,"Volume of bounding three dimensional region"), included from CID 7472
+        VolumeOfBoundingThreeDimensionalRegion
+    };
+
+    /** (default) constructor
+     ** @param  selectedValue  coded entry to be selected as the current value (optional).
+     *                         Should be a valid code according to the DICOM definitions
+     *                         for this context group, i.e. no checks are performed.
+     *                         Call DSRContextGroup::checkSelectedValue() if needed.
+     */
+    CID7469_GenericIntensityAndSizeMeasurements(const DSRCodedEntryValue &selectedValue = DSRCodedEntryValue());
+
+    /** constructor
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     ** @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     */
+    CID7469_GenericIntensityAndSizeMeasurements(const EnumType selectedValue,
+                                                const OFBool enhancedEncodingMode = OFFalse);
+
+    /** select a coded entry given by its type as the current value
+     ** @param  selectedValue         type mapped to a coded entry that is selected as the
+     *                                current value
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition selectValue(const EnumType selectedValue,
+                                    const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- static helper functions ---
+
+    /** initialize this context group explicitly.  Internally, the list of standard coded
+     *  entries is created and initialized by calling getCodes().
+     ** @note This function can be called multiple times but in case of multi-threaded
+     *        applications should be called at least once before any instance of this class
+     *        is actually used.  For single-threaded applications, there is no need to call
+     *        it since the initialization is done implicitly.
+     */
+    static void initialize();
+
+    /** cleanup this context group, i.e.\ delete the internal list of standard coded entries.
+     *  Usually, there is no need to call this method, but it might be useful in order to
+     *  explicitly free the associated memory, e.g. when checking for memory leaks.  The list
+     *  will be recreated automatically when needed (or when initialize() is called).
+     */
+    static void cleanup();
+
+    /** map a given type to the associated coded entry
+     ** @param  value                 type that should be mapped to a coded entry
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return coded entry that is associated with the given type
+     */
+    static DSRCodedEntryValue getCodedEntry(const EnumType value,
+                                            const OFBool enhancedEncodingMode = OFFalse);
+
+  // --- reintroduce methods from base class
+
+     using DSRContextGroup::selectValue;
+     using DSRContextGroup::findCodedEntry;
+
+
+  protected:
+
+    /// type used for storing and managing the coded entries
+    typedef OFMap<EnumType, DSRBasicCodedEntry> CodeList;
+
+    /** print details on coded entries that are contained in this context group.
+     *  See DSRCodedEntryValue::print() for details of the coded entry output.
+     ** @param  stream  stream to which the output should be printed
+     */
+    virtual void printCodes(STD_NAMESPACE ostream &stream) const;
+
+    /** search for a given coded entry in this context group
+     ** @param  searchForCodedEntry   coded entry to be searched for
+     *  @param  foundCodedEntry       pointer to variable that will store the coded entry
+     *                                (if found and pointer is not NULL)
+     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     ** @return result of the search process, also defines the type of the entry
+     */
+    virtual OFCondition findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                       DSRCodedEntryValue *foundCodedEntry,
+                                       const OFBool enhancedEncodingMode = OFFalse) const;
+
+  // --- static helper function ---
+
+    /** get list of standard coded entries that are managed by this context group.
+     *  Internally, the singleton pattern is used, so the list is initialized only once.
+     *  Please note that this function is not thread-safe.  Therefore, the initialize()
+     *  function can be called before any instance of this class is actually used.
+     ** @return reference to list of coded entries managed by this context group
+     */
+    static CodeList &getCodes();
+
+    /** set the "Enhanced Encoding Mode" for a given coded entry
+     ** @param  codedEntryValue  coded entry for which the enhanced encoding mode is set
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    static OFCondition setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue);
+
+
+  private:
+
+    /// pointer to internal code list (use a static variable for singleton pattern)
+    static CodeList *Codes;
+};
+
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the context group class
+typedef CID7469_GenericIntensityAndSizeMeasurements CMR_CID7469;
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/init.h b/dcmsr/include/dcmtk/dcmsr/cmr/init.h
index d966d91..7cbf481 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/init.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/init.h
@@ -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.
  *
  *  Header file for class CMR_ContentMappingResource
@@ -44,10 +44,14 @@ class DCMTK_CMR_EXPORT CMR_ContentMappingResource
      *  - CID4031_CommonAnatomicRegions
      *  - CID5000_Languages
      *  - CID5001_Countries
+     *  - CID6147_ResponseCriteria
      *  - CID7021_MeasurementReportDocumentTitles
+     *  - CID7181_AbstractMultiDimensionalImageModelComponentUnits
      *  - CID7445_DeviceParticipatingRoles
      *  - CID7452_OrganizationalRoles
      *  - CID7453_PerformingRoles
+     *  - CID7464_GeneralRegionOfInterestMeasurementModifiers
+     *  - CID7469_GenericIntensityAndSizeMeasurements
      *  - CID10013_CTAcquisitionType
      *  - CID10033_CTReconstructionAlgorithm
      *
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h b/dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
index 18b54c0..8a1cd56 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
@@ -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.
  *
  *  Header file for class CMR_SRNumericMeasurementValue
@@ -23,8 +23,10 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for SR numeric measurement values
- *  (extended version with additional support of the DICOM Content Mapping Resource)
+/** Class for SR numeric values and measurements
+ *  (extended version with additional support of the DICOM Content Mapping Resource).
+ *  This class checks whether the optional value qualifier uses a coded entry from the
+ *  Defined Context Group 42 (Numeric Value Qualifier), see DICOM PS 3.3 Table C.18.1-1.
  */
 class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
   : public DSRNumericMeasurementValue
@@ -37,7 +39,7 @@ class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
     CMR_SRNumericMeasurementValue();
 
     /** constructor
-     ** @param  numericValue     numeric measurement value (VR=DS, mandatory)
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
      *  @param  measurementUnit  code representing the units of measurement (mandatory)
      *  @param  check            if enabled, check 'numericValue' and 'measurementUnit' for
      *                           validity before setting them.  See corresponding setValue()
@@ -48,17 +50,29 @@ class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
                                   const OFBool check = OFTrue);
 
     /** constructor
-     ** @param  numericValue     numeric measurement value (VR=DS, mandatory)
+     ** @param  valueQualifier  code representing the numeric value qualifier.  Used to
+     *                          specify the reason for the absence of the measured value
+     *                          sequence, i.e. why the numeric value and measurement unit
+     *                          are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See corresponding setValue() method for details.
+     */
+    CMR_SRNumericMeasurementValue(const CID42_NumericValueQualifier &valueQualifier,
+                                  const OFBool check = OFTrue);
+
+    /** constructor
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
      *  @param  measurementUnit  code representing the units of measurement (mandatory)
      *  @param  valueQualifier   code representing the numeric value qualifier (optional).
      *                           Can also be used to specify the reason for the absence of
-     *                           the measured value sequence.
+     *                           the measured value sequence (where 'numericValue' and
+     *                           'measurementUnit' are stored).
      *  @param  check            if enabled, check values for validity before setting them.
      *                           See corresponding setValue() method for details.
      */
     CMR_SRNumericMeasurementValue(const OFString &numericValue,
                                   const DSRCodedEntryValue &measurementUnit,
-                                  const DSRCodedEntryValue &valueQualifier,
+                                  const CID42_NumericValueQualifier &valueQualifier,
                                   const OFBool check = OFTrue);
 
     /** copy constructor
@@ -66,6 +80,11 @@ class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
      */
     CMR_SRNumericMeasurementValue(const CMR_SRNumericMeasurementValue &numericMeasurement);
 
+    /** copy constructor
+     ** @param  numericMeasurement  numeric measurement value to be copied (not checked !)
+     */
+    CMR_SRNumericMeasurementValue(const DSRNumericMeasurementValue &numericMeasurement);
+
     /** destructor
      */
     virtual ~CMR_SRNumericMeasurementValue();
@@ -76,19 +95,59 @@ class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
      */
     CMR_SRNumericMeasurementValue &operator=(const CMR_SRNumericMeasurementValue &numericMeasurement);
 
+    /** set empty numeric value and measurement unit with a numeric value qualifier.
+     *  Before setting the value, it is usually checked.  If the value is invalid, the
+     *  current numeric measurement value is not replaced and remains unchanged.
+     ** @param  valueQualifier  numeric value qualifier to be set.  Used to specify the
+     *                          reason for the absence of the measured value sequence,
+     *                          i.e. why the numeric value and measurement unit are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See checkNumericValueQualifier() method for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const CID42_NumericValueQualifier &valueQualifier,
+                         const OFBool check = OFTrue);
+
+    /** set numeric value, measurement unit and numeric value qualifier.
+     *  Before setting the values, they are usually checked.  Please note that both
+     *  'numericValue' and 'measurementUnit' either have to be empty or non-empty.
+     *  If one of the three values is invalid, the current numeric measurement value is not
+     *  replaced and remains unchanged.  If the values are replaced, the optional floating
+     *  point and rational representations are cleared, i.e. they have to be set manually if
+     *  needed.
+     ** @param  numericValue     numeric value to be set (VR=DS, mandatory)
+     *  @param  measurementUnit  measurement unit to be set (mandatory)
+     *  @param  valueQualifier   numeric value qualifier to be set (optional).  Can also be
+     *                           used to specify the reason for the absence of the measured
+     *                           value sequence (where 'numericValue' and 'measurementUnit'
+     *                           are stored).  Use an empty code to remove the current value.
+     *  @param  check            if enabled, check values for validity before setting them.
+     *                           See checkXXX() methods for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const OFString &numericValue,
+                         const DSRCodedEntryValue &measurementUnit,
+                         const CID42_NumericValueQualifier &valueQualifier,
+                         const OFBool check = OFTrue);
+
     /** set numeric value qualifier.
      *  This optional code specifies the qualification of the Numeric Value in the Measured
      *  Value Sequence, or the reason for the absence of the Measured Value Sequence Item.
-     ** @param  valueQualifier        numeric value qualifier to be set
-     *  @param  enhancedEncodingMode  set enhanced encoding mode for coded entry (if enabled)
+     *  Before setting the code, it is usually checked.  If the code is invalid the current
+     *  code is not replaced and remains unchanged.
+     ** @param  valueQualifier  numeric value qualifier to be set (optional).  Use an empty
+     *                          code to remove the current value.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See checkNumericValueQualifier() method for details.
      ** @return status, EC_Normal if successful, an error code otherwise
      */
-    OFCondition setNumericValueQualifier(CID42_NumericValueQualifier::EnumType valueQualifier,
-                                         const OFBool enhancedEncodingMode = OFFalse);
+    OFCondition setNumericValueQualifier(const CID42_NumericValueQualifier &valueQualifier,
+                                         const OFBool check = OFTrue);
 
   // --- reintroduce method from base class
 
-     using DSRNumericMeasurementValue::setNumericValueQualifier;
+    using DSRNumericMeasurementValue::setValue;
+    using DSRNumericMeasurementValue::setNumericValueQualifier;
 
 
   protected:
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h b/dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h
new file mode 100644
index 0000000..2838da0
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h
@@ -0,0 +1,319 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class CMR_SRNumericMeasurementValueWithUnits
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#ifndef CMR_SRNUMVLU_H
+#define CMR_SRNUMVLU_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/srnumvl.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Class for SR numeric values and measurements
+ *  (extended version with additional support of the DICOM Content Mapping Resource).
+ *  This class checks whether the optional value qualifier uses a coded entry from the
+ *  Defined Context Group 42 (Numeric Value Qualifier), see DICOM PS 3.3 Table C.18.1-1.
+ *  It also provides a means of specifying the Context Group for the measurement unit
+ *  as a C++ template type parameter.  Both Baseline (BCID) and Defined Context Groups
+ *  (DCID) are supported.
+ ** @tparam  T_Units         template type used for the measurement units (context group)
+ *  @tparam  T_DefinedGroup  flag indicating whether 'T_Units' is used as a baseline
+ *                           (default) or defined context group
+ */
+template <typename T_Units, OFBool T_DefinedGroup = OFFalse>
+class CMR_SRNumericMeasurementValueWithUnits
+  : public CMR_SRNumericMeasurementValue
+{
+
+  public:
+
+    /** default constructor
+     */
+    CMR_SRNumericMeasurementValueWithUnits();
+
+    /** constructor
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
+     *  @param  measurementUnit  code representing the units of measurement (mandatory)
+     *  @param  check            if enabled, check 'numericValue' and 'measurementUnit' for
+     *                           validity before setting them.  See corresponding setValue()
+     *                           method for details.
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const OFString &numericValue,
+                                           const T_Units &measurementUnit,
+                                           const OFBool check = OFTrue);
+
+    /** constructor
+     ** @param  valueQualifier  code representing the numeric value qualifier.  Used to
+     *                          specify the reason for the absence of the measured value
+     *                          sequence, i.e. why the numeric value and measurement unit
+     *                          are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See corresponding setValue() method for details.
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const CID42_NumericValueQualifier &valueQualifier,
+                                           const OFBool check = OFTrue);
+
+    /** constructor
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
+     *  @param  measurementUnit  code representing the units of measurement (mandatory)
+     *  @param  valueQualifier   code representing the numeric value qualifier (optional).
+     *                           Can also be used to specify the reason for the absence of
+     *                           the measured value sequence (where 'numericValue' and
+     *                           'measurementUnit' are stored).
+     *  @param  check            if enabled, check values for validity before setting them.
+     *                           See corresponding setValue() method for details.
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const OFString &numericValue,
+                                           const T_Units &measurementUnit,
+                                           const CID42_NumericValueQualifier &valueQualifier,
+                                           const OFBool check = OFTrue);
+
+    /** copy constructor
+     ** @param  numericMeasurement  numeric measurement value to be copied (not checked !)
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &numericMeasurement);
+
+    /** copy constructor
+     ** @param  numericMeasurement  numeric measurement value to be copied (not checked !)
+     */
+    CMR_SRNumericMeasurementValueWithUnits(const CMR_SRNumericMeasurementValue &numericMeasurement);
+
+    /** destructor
+     */
+    virtual ~CMR_SRNumericMeasurementValueWithUnits();
+
+    /** assignment operator
+     ** @param  numericMeasurement  numeric measurement value to be copied (not checked !)
+     ** @return reference to this numeric value after 'numericMeasurement' has been copied
+     */
+    CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &operator=(const CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &numericMeasurement);
+
+    /** set numeric value and measurement unit.
+     *  Before setting the values, they are usually checked.  Please note that both values
+     *  (i.e. 'numericValue' and 'measurementUnit') either have to be empty or non-empty.
+     *  If the value pair is invalid, the current value pair is not replaced and remains
+     *  unchanged.  If the value pair is replaced, the optional floating point and rational
+     *  representations are cleared, i.e. they have to be set manually if needed.
+     ** @param  numericValue     numeric value to be set (VR=DS, mandatory)
+     *  @param  measurementUnit  measurement unit to be set (mandatory)
+     *  @param  check            if enabled, check values for validity before setting them.
+     *                           See checkXXX() methods for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const OFString &numericValue,
+                         const T_Units &measurementUnit,
+                         const OFBool check = OFTrue);
+
+    /** set numeric value, measurement unit and numeric value qualifier.
+     *  Before setting the values, they are usually checked.  Please note that both
+     *  'numericValue' and 'measurementUnit' either have to be empty or non-empty.
+     *  If one of the three values is invalid, the current numeric measurement value is not
+     *  replaced and remains unchanged.  If the values are replaced, the optional floating
+     *  point and rational representations are cleared, i.e. they have to be set manually if
+     *  needed.
+     ** @param  numericValue     numeric value to be set (VR=DS, mandatory)
+     *  @param  measurementUnit  measurement unit to be set (mandatory)
+     *  @param  valueQualifier   numeric value qualifier to be set (optional).  Can also be
+     *                           used to specify the reason for the absence of the measured
+     *                           value sequence (where 'numericValue' and 'measurementUnit'
+     *                           are stored).  Use an empty code to remove the current value.
+     *  @param  check            if enabled, check values for validity before setting them.
+     *                           See checkXXX() methods for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const OFString &numericValue,
+                         const T_Units &measurementUnit,
+                         const CID42_NumericValueQualifier &valueQualifier,
+                         const OFBool check = OFTrue);
+
+    /** set measurement unit.
+     *  Before setting the code, it is usually checked.  If the code is invalid the current
+     *  code is not replaced and remains unchanged.
+     ** @param  measurementUnit  measurement unit to be set (mandatory)
+     *  @param  check            if enabled, check value for validity before setting it.
+     *                           See checkMeasurementUnit() method for details.  An empty
+     *                           value is never accepted, use the clear() method instead.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setMeasurementUnit(const T_Units &measurementUnit,
+                                   const OFBool check = OFTrue);
+
+
+  protected:
+
+    /** check the specified measurement unit for validity.
+     *  First, the inherited method CMR_SRNumericMeasurementValue::checkMeasurementUnit()
+     *  is called.  Then, conformance with any Defined Context Group (T_Units) is checked.
+     ** @param  measurementUnit  measurement unit to be checked
+     ** @return status, EC_Normal if measurement unit is valid, an error code otherwise
+     */
+    virtual OFCondition checkMeasurementUnit(const DSRCodedEntryValue &measurementUnit) const;
+
+    /** check the specified measurement unit for validity.
+     *  This method also checks conformance with any Defined Context Group (T_Units).
+     ** @param  measurementUnit  measurement unit to be checked
+     ** @return status, EC_Normal if measurement unit is valid, an error code otherwise
+     */
+    virtual OFCondition checkMeasurementUnit(const T_Units &measurementUnit) const;
+};
+
+
+/*------------------*
+ *  implementation  *
+ *------------------*/
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits()
+  : CMR_SRNumericMeasurementValue()
+{
+}
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const OFString &numericValue,
+                                                                                                        const T_Units &measurementUnit,
+                                                                                                        const OFBool check)
+  : CMR_SRNumericMeasurementValue()
+{
+    /* use this method in order to pass T_Units parameter */
+    setValue(numericValue, measurementUnit, check);
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const CID42_NumericValueQualifier &valueQualifier,
+                                                                                                        const OFBool check)
+  : CMR_SRNumericMeasurementValue(valueQualifier, check)
+{
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const OFString &numericValue,
+                                                                                                        const T_Units &measurementUnit,
+                                                                                                        const CID42_NumericValueQualifier &valueQualifier,
+                                                                                                        const OFBool check)
+  : CMR_SRNumericMeasurementValue()
+{
+    /* use this method in order to pass T_Units parameter */
+    setValue(numericValue, measurementUnit, valueQualifier, check);
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &numericMeasurement)
+  : CMR_SRNumericMeasurementValue(numericMeasurement)
+{
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::CMR_SRNumericMeasurementValueWithUnits(const CMR_SRNumericMeasurementValue &numericMeasurement)
+  : CMR_SRNumericMeasurementValue(numericMeasurement)
+{
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::~CMR_SRNumericMeasurementValueWithUnits()
+{
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::operator=(const CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup> &numericMeasurement)
+{
+    CMR_SRNumericMeasurementValue::operator=(numericMeasurement);
+    return *this;
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::setValue(const OFString &numericValue,
+                                                                                      const T_Units &measurementUnit,
+                                                                                      const OFBool check)
+{
+    const DSRCodedEntryValue valueQualifier;
+    /* call the function doing the real work */
+    return CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::setValue(numericValue, measurementUnit, valueQualifier, check);
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::setValue(const OFString &numericValue,
+                                                                                      const T_Units &measurementUnit,
+                                                                                      const CID42_NumericValueQualifier &valueQualifier,
+                                                                                      const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    if (check)
+    {
+        /* only check if at least one of the two values is non-empty */
+        if (!numericValue.empty() || !measurementUnit.hasSelectedValue())
+        {
+            /* check whether the passed values are valid */
+            result = checkNumericValue(numericValue);
+            if (result.good())
+                result = checkMeasurementUnit(measurementUnit);
+        }
+        if (result.good())
+            result = checkNumericValueQualifier(valueQualifier);
+    }
+    /* set the value (without checking all the details again) */
+    if (result.good())
+        result = CMR_SRNumericMeasurementValue::setValue(numericValue, measurementUnit, valueQualifier, OFFalse /*check*/);
+    return result;
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::setMeasurementUnit(const T_Units &measurementUnit,
+                                                                                                const OFBool check)
+{
+    /* first, check given measurement unit for validity (if not disabled) */
+    OFCondition result = (check) ? checkMeasurementUnit(measurementUnit) : EC_Normal;
+    /* then, set the measurement unit (without checking the coded entry again) */
+    if (result.good())
+        result = CMR_SRNumericMeasurementValue::setMeasurementUnit(measurementUnit, OFFalse /*check*/);
+    return result;
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::checkMeasurementUnit(const DSRCodedEntryValue &measurementUnit) const
+{
+    /* first, check coded entry for basic validity */
+    OFCondition result = CMR_SRNumericMeasurementValue::checkMeasurementUnit(measurementUnit);
+    /* then, check whether coded entry is allowed (if defined context group) */
+    if (result.good() && T_DefinedGroup)
+    {
+        const T_Units contextGroup;
+        if (!contextGroup.hasCodedEntry(measurementUnit))
+            result = SR_EC_CodedEntryNotInContextGroup;
+    }
+    return result;
+}
+
+
+template <typename T_Units, OFBool T_DefinedGroup>
+OFCondition CMR_SRNumericMeasurementValueWithUnits<T_Units, T_DefinedGroup>::checkMeasurementUnit(const T_Units &measurementUnit) const
+{
+    /* measurement unit should never be empty */
+    return measurementUnit.hasSelectedValue() ? measurementUnit.checkSelectedValue(T_DefinedGroup)
+                                              : SR_EC_InvalidValue;
+}
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h b/dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h
index ce1a09f..cca17e3 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h
@@ -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.
  *
  *  Header file for class TID1001_ObservationContext
@@ -83,6 +83,7 @@ class DCMTK_CMR_EXPORT TID1001_ObservationContext
      *                            whilst the observations were being made (optional)
      *  @param  procedureRoles    the roles played by a device in a procedure (optional,
      *                            multiple values allowed)
+     *  @param  stationAEtitle    application entity title of the device (optional)
      *  @param  check             if enabled, check values for validity before setting them
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -93,6 +94,7 @@ class DCMTK_CMR_EXPORT TID1001_ObservationContext
                                   const OFString &serialNumber = "",
                                   const OFString &physicalLocation = "",
                                   const DeviceParticipatingRolesList &procedureRoles = DeviceParticipatingRolesList(),
+                                  const OFString &stationAEtitle = "",
                                   const OFBool check = OFTrue);
 
     /** add content items for TID 1005 (Procedure Context)
@@ -107,4 +109,12 @@ class DCMTK_CMR_EXPORT TID1001_ObservationContext
 };
 
 
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the SR template class
+typedef TID1001_ObservationContext CMR_TID1001;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h b/dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h
index 9fde606..d8f31a3 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h
@@ -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.
  *
  *  Header file for class TID1204_LanguageOfContentItemAndDescendants
@@ -27,7 +27,7 @@
  *---------------------*/
 
 /** Implementation of DCMR Template:
- *  TID 1204 - Language of Content Item and Descendants
+ *  TID 1204 - Language of Content Item and Descendants.
  *  All added content items are annotated with a text in the format "TID 1204 - Row [n]".
  */
 class DCMTK_CMR_EXPORT TID1204_LanguageOfContentItemAndDescendants
@@ -55,4 +55,12 @@ class DCMTK_CMR_EXPORT TID1204_LanguageOfContentItemAndDescendants
 };
 
 
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the SR template class
+typedef TID1204_LanguageOfContentItemAndDescendants CMR_TID1204;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h b/dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
new file mode 100644
index 0000000..58bace6
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
@@ -0,0 +1,325 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class TID1411_VolumetricROIMeasurements
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#ifndef CMR_TID1411_H
+#define CMR_TID1411_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrstpl.h"
+
+#include "dcmtk/dcmsr/cmr/define.h"
+#include "dcmtk/dcmsr/cmr/srnumvlu.h"
+
+
+// include this file in doxygen documentation
+
+/** @file tid1411.h
+ *  @brief Interface class and error constants for TID 1411 in module dcmsr/cmr
+ */
+
+
+/*------------------------*
+ *  constant definitions  *
+ *------------------------*/
+
+/** @name specific error conditions for TID 1411 in module dcmsr/cmr
+ */
+//@{
+
+/// error: there is no measurement group to add entries to
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoMeasurementGroup;
+/// error: the given segmentation object does not conform to the template constraints
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_InvalidSegmentationObject;
+/// error: the given DICOM object is not a real world value mapping object
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_InvalidRealWorldValueMappingObject;
+
+//@}
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Template:
+ *  TID 1411 - Volumetric ROI Measurements (and included templates 1502 and 1419).
+ *  All added content items are annotated with a text in the format "TID 1411 - Row [n]".
+ ** @tparam  T_Measurement  concept names for the numeric measurements (context group)
+ *  @tparam  T_Units        units of the numeric measurement values (context group)
+ *  @tparam  T_Method       methods used for measuring the values (context group)
+ *  @tparam  T_Derivation   methods of deriving or calculating the values (context group)
+ ** @note Please note that currently only the mandatory (and some optional/conditional)
+ *        content items and included templates are supported.
+ *  @note Also note that this template class requires explicit instantiation for those
+ *        combinations of the template parameters that are actually used.  This is
+ *        because the implementation is "hidden" in a separate source file, which has
+ *        some advantages over the usual header-only approach.
+ */
+template<typename T_Measurement, typename T_Units, typename T_Method, typename T_Derivation>
+class DCMTK_CMR_EXPORT TID1411_VolumetricROIMeasurements
+  : public DSRSubTemplate
+{
+
+  public:
+
+    // type definition
+    typedef CMR_SRNumericMeasurementValueWithUnits<T_Units> MeasurementValue;
+
+    /** (default) constructor
+     ** @param  createGroup  flag indicating whether to create an empty measurement group
+     *                       by calling createMeasurementGroup() during startup
+     */
+    TID1411_VolumetricROIMeasurements(const OFBool createGroup = OFFalse);
+
+    /** check whether the current internal state is valid.
+     *  That means, whether the base class is valid and whether all mandatory content
+     *  items and included templates are valid, i.e. hasMeasurementGroup(),
+     *  hasTrackingIdentifier(), hasTrackingUniqueIdentifier(), hasReferencedSegment(),
+     *  hasSourceSeriesForSegmentation() and hasROIMeasurements() return true.
+     ** @return OFTrue if valid, OFFalse otherwise
+     */
+    OFBool isValid() const;
+
+    /** check whether the 'Measurement Group' content item (TID 1411 - Row 1) is present.
+     *  Initially, this mandatory content item is created by the constructor of this
+     *  class (if not disabled).  After clear() has been called, it can be created again
+     *  by calling createMeasurementGroup().
+     ** @param  checkChildren  optional flag indicating whether to also check for any
+     *                         children, i.e.\ whether the respective content item has
+     *                         child nodes.  By default, the presence of the higher-level
+     *                         CONTAINER is checked only.
+     ** @return OFTrue if the measurement group is present, OFFalse otherwise
+     */
+    OFBool hasMeasurementGroup(const OFBool checkChildren = OFFalse) const;
+
+    /** check whether the 'Tracking Identifier' content item (TID 1411 - Row 2) is
+     *  present.  This content item is mandatory, i.e. should be present with a value.
+     ** @return OFTrue if the tracking identifier is present, OFFalse otherwise
+     */
+    OFBool hasTrackingIdentifier() const;
+
+    /** check whether the 'Tracking Unique Identifier' content item (TID 1411 - Row 3) is
+     *  present.  This content item is mandatory, i.e. should be present with a value.
+     ** @return OFTrue if the tracking unique identifier is present, OFFalse otherwise
+     */
+    OFBool hasTrackingUniqueIdentifier() const;
+
+    /** check whether the 'Referenced Segment' content item (TID 1411 - Row 7) is present.
+     *  This content item is conditional, but should be present to meet the conditions.
+     ** @return OFTrue if the referenced segment is present, OFFalse otherwise
+     */
+    OFBool hasReferencedSegment() const;
+
+    /** check whether the 'Source Series for Segmentation' content item (TID 1411 -
+     *  Row 12) is present.  This content item is conditional, but should be present to
+     *  meet the conditions.
+     ** @return OFTrue if source series for segmentation is present, OFFalse otherwise
+     */
+    OFBool hasSourceSeriesForSegmentation() const;
+
+    /** check whether there is an included 'ROI Measurements' template (TID 1411 -
+     *  Row 15) in this measurement template.  This included template is mandatory.
+     ** @return OFTrue if ROI measurements are present, OFFalse otherwise
+     */
+    OFBool hasROIMeasurements() const;
+
+    /** set the value of the 'Activity Session' content item (TID 1411 - Row 1b).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  session  identifier of the session during which the measurements were made
+     *  @param  check    if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setActivitySession(const OFString &session,
+                                   const OFBool check = OFTrue);
+
+    /** set the value of the 'Tracking Identifier' content item (TID 1411 - Row 2).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  trackingID  a text label used for tracking a finding or feature
+     *  @param  check       if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setTrackingIdentifier(const OFString &trackingID,
+                                      const OFBool check = OFTrue);
+
+    /** set the value of the 'Tracking Unique Identifier' content item (TID 1411 - Row 3).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  trackingUID  a unique identifier used for tracking a finding or feature
+     *                       (associated DICOM VR=UI)
+     *  @param  check        if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setTrackingUniqueIdentifier(const OFString &trackingUID,
+                                            const OFBool check = OFTrue);
+
+    /** set the value of the 'Finding' content item (TID 1411 - Row 3b).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  finding  coded entry that describes the type of the finding
+     *  @param  check    if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setFinding(const DSRCodedEntryValue &finding,
+                           const OFBool check = OFTrue);
+
+    /** set the value of the 'Time Point' content item (TID 1502 - Row 3).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  timePoint  a short pre-defined label that is human-readable
+     *  @param  check      if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setTimePoint(const OFString &timePoint,
+                             const OFBool check = OFTrue);
+
+    /** set the value of the 'Referenced Segment' content item (TID 1411 - Row 7).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  segment  reference to a segmentation object with a single selected
+     *                   segment; specifically the pixels or voxels identified as
+     *                   belonging to the classification of the identified segment
+     *  @param  check    if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setReferencedSegment(const DSRImageReferenceValue &segment,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Referenced Segment' content item (TID 1411 - Row 7).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     *  If 'copyTracking' is enabled and the 'dataset' contains appropriate tracking
+     *  information for the given 'segmentNumber', setTrackingIdentifier() and
+     *  setTrackingUniqueIdentifier() are also called by this method.
+     ** @param  dataset        DICOM dataset from which the values for the referenced
+     *                         segment (e.g. SOP class UID and SOP instance UID) should
+     *                         be retrieved
+     *  @param  segmentNumber  number of the segment that should be referenced.  The
+     *                         value is only checked when 'copyTracking' is enabled.
+     *  @param  copyTracking   flag indicating whether to copy tracking information
+     *                         (tracking ID and UID) from the 'dataset', if available
+     *  @param  check          if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setReferencedSegment(DcmItem &dataset,
+                                     const Uint16 segmentNumber,
+                                     const OFBool copyTracking = OFTrue,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Source series for segmentation' content item (TID 1411 -
+     *  Row 12).  A measurement group is created automatically (if none is present).
+     *  If the content item already exists, its value is overwritten.
+     ** @param  seriesUID  the unique identifier of the source series of images that
+     *                     were segmented to identify the ROI (associated DICOM VR=UI)
+     *  @param  check      if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setSourceSeriesForSegmentation(const OFString &seriesUID,
+                                               const OFBool check = OFTrue);
+
+    /** set the value of the 'Real World Value Map used for measurement' content item
+     *  (TID 1411 - Row 14).  A measurement group is created automatically (if none is
+     *  present).  If the content item already exists, its value is overwritten.
+     ** @param  valueMap  reference to a real world value mapping object applied to the
+     *                    stored image pixel values before their use for a measurement
+     *  @param  check     if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setRealWorldValueMap(const DSRCompositeReferenceValue &valueMap,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Real World Value Map used for measurement' content item
+     *  (TID 1411 - Row 14).  A measurement group is created automatically (if none is
+     *  present).  If the content item already exists, its value is overwritten.
+     ** @param  dataset  DICOM dataset from which the values for the reference to a
+     *                   real world value mapping object (SOP class UID and SOP instance
+     *                   UID) should be retrieved
+     *  @param  check    if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setRealWorldValueMap(DcmItem &dataset,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Measurement Method' content item (TID 1419 - Row 1).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  method  coded entry describing the method used for measuring the values
+     *                  (e.g.\ from the given context group 'T_Method')
+     *  @param  check   if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setMeasurementMethod(const T_Method &method,
+                                     const OFBool check = OFTrue);
+
+    /** set the value of the 'Finding Site' content item (TID 1419 - Row 2).
+     *  A measurement group is created automatically (if none is present).  If the
+     *  content item already exists, its value is overwritten.
+     ** @param  site   coded entry describing the anatomic location of the measurements
+     *  @param  check  if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setFindingSite(const DSRCodedEntryValue &site,
+                               const OFBool check = OFTrue);
+
+    /** add a measurement as defined in 'ROI Measurements' (TID 1419 - Row 5, 7 and 8).
+     *  There should be at least a single instance of the associated template.
+     ** @param  conceptName   coded entry specifying the concept name of the measurement
+     *                        (e.g.\ from the given context group 'T_Measurement')
+     *  @param  numericValue  numeric measurement value to be set.  The measurement unit
+     *                        could be taken from the baseline context group 'T_Units'.
+     *  @param  method        optional method used for measuring the value
+     *                        (e.g.\ from the given context group 'T_Method')
+     *  @param  derivation    optional method of deriving or calculating the value
+     *                        (e.g.\ from the context group 'T_Derivation')
+     *  @param  check         if enabled, check value for validity before setting it
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addMeasurement(const T_Measurement &conceptName,
+                               const MeasurementValue &numericValue,
+                               const T_Method &method = T_Method(),
+                               const T_Derivation &derivation = T_Derivation(),
+                               const OFBool check = OFTrue);
+
+
+  protected:
+
+    /** create the mandatory root content item of this template, i.e.\ TID 1411 - Row 1.
+     *  It is expected that the tree is currently empty.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createMeasurementGroup();
+
+    /** add a new or replace an existing content item with a given node ID.
+     *  If the content item does not exist, it is added to the measurement group, i.e.
+     *  below the root node.  If it does exist, both the 'valueType' and 'conceptName'
+     *  are checked before replacing the value.  However, the value is not replaced by
+     *  this method.  This is up to the caller after this method returned with success.
+     ** @param  nodePos           index of the list entry that stores the ID of the node
+     *                            to search for
+     *  @param  relationshipType  relationship type of the content item to be added/replaced
+     *  @param  valueType         value type of the content item to be added/replaced
+     *  @param  conceptName       concept name of the content item to be added/replaced
+     *  @param  annotationText    optional text used to annotate the content item
+     *  @param  check             if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addOrReplaceContentItem(const size_t nodePos,
+                                        const E_RelationshipType relationshipType,
+                                        const E_ValueType valueType,
+                                        const DSRCodedEntryValue &conceptName,
+                                        const OFString &annotationText,
+                                        const OFBool check);
+};
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h b/dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
new file mode 100644
index 0000000..59813a6
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
@@ -0,0 +1,290 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Header file for class TID1500_MeasurementReport
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#ifndef CMR_TID1500_H
+#define CMR_TID1500_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrrtpl.h"
+#include "dcmtk/dcmsr/dsrstpl.h"
+
+#include "dcmtk/dcmsr/cmr/define.h"
+#include "dcmtk/dcmsr/cmr/tid1001.h"
+#include "dcmtk/dcmsr/cmr/tid1204.h"
+#include "dcmtk/dcmsr/cmr/tid1411.h"
+#include "dcmtk/dcmsr/cmr/tid1600.h"
+#include "dcmtk/dcmsr/cmr/cid100.h"
+#include "dcmtk/dcmsr/cmr/cid6147.h"
+#include "dcmtk/dcmsr/cmr/cid7021.h"
+#include "dcmtk/dcmsr/cmr/cid7181.h"
+#include "dcmtk/dcmsr/cmr/cid7464.h"
+#include "dcmtk/dcmsr/cmr/cid7469.h"
+
+
+// include this file in doxygen documentation
+
+/** @file tid1500.h
+ *  @brief Interface class and error constants for TID 1500 in module dcmsr/cmr
+ */
+
+
+/*------------------------*
+ *  constant definitions  *
+ *------------------------*/
+
+/** @name specific error conditions for TID 1500 in module dcmsr/cmr
+ */
+//@{
+
+/// error: there is no measurement report to add content items to
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoMeasurementReport;
+
+//@}
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Implementation of DCMR Template:
+ *  TID 1500 - Measurement Report (and included templates 1204, 1001, 1600, 1411).
+ *  All added content items are annotated with a text in the format "TID 1500 - Row [n]".
+ ** @note Please note that currently only the mandatory (and some optional/conditional)
+ *        content items and included templates are supported.
+ */
+class DCMTK_CMR_EXPORT TID1500_MeasurementReport
+  : public DSRRootTemplate
+{
+
+  public:
+
+    // type definition
+    typedef TID1411_VolumetricROIMeasurements<CID7469_GenericIntensityAndSizeMeasurements,
+                                              CID7181_AbstractMultiDimensionalImageModelComponentUnits,
+                                              CID6147_ResponseCriteria,
+                                              CID7464_GeneralRegionOfInterestMeasurementModifiers>
+            TID1411_Measurements;
+
+    /** (default) constructor.
+     *  Also creates an initial, almost empty measurement report by calling
+     *  createNewMeasurementReport(), but only if a non-empty 'title' is passed.
+     ** @param  title  optional document title to be set (from CID 7021 - Measurement
+     *                 Report Document Titles), i.e.\ the concept name of the root node
+     */
+    TID1500_MeasurementReport(const CID7021_MeasurementReportDocumentTitles &title = CID7021_MeasurementReportDocumentTitles());
+
+    /** clear internal member variables.
+     *  Also see notes on the clear() method of the base class.
+     */
+    virtual void clear();
+
+    /** check whether the current internal state is valid.
+     *  That means, check whether the base class is valid, the mandatory included
+     *  templates TID 1204, 1001 and 1600 are valid, and whether hasProcedureReported()
+     *  as well as hasImagingMeasurements() or hasQualitativeEvaluations() return true.
+     ** @return OFTrue if valid, OFFalse otherwise
+     */
+    virtual OFBool isValid() const;
+
+    /** check whether there are any 'Procedure reported' content items (TID 1500 - Row 4)
+     *  in this measurement report.  This content item is mandatory, i.e. one or more
+     *  instances of the associated content item should be present.
+     ** @return OFTrue if at least one procedure reported is present, OFFalse otherwise
+     */
+    OFBool hasProcedureReported() const;
+
+    /** check whether there is an included 'Volumetric ROI Measurements' template
+     *  (TID 1500 - Row 8) in this measurement report.  Initially, this optional
+     *  sub-template is created and included by the constructor of this class.  After
+     *  clear() has been called or no document title is passed to the constructor, it
+     *  can be created again by calling createNewMeasurementReport().
+     ** @param  checkChildren  optional flag indicating whether to also check for any
+     *                         children, i.e.\ whether the respective sub-template has
+     *                         any content (child nodes).  By default, the presence of
+     *                         the "included template" content item is checked only.
+     ** @return OFTrue if volumetric ROI measurements are present, OFFalse otherwise
+     */
+    OFBool hasVolumetricROIMeasurements(const OFBool checkChildren = OFFalse) const;
+
+    /** check whether there is an 'Imaging Measurements' content item (TID 1500 - Row 6)
+     *  in this measurement report.  Initially, this conditional content item is created
+     *  by the constructor of this class.  After clear() has been called or no document
+     *  title is passed to the constructor, it can be created again by calling
+     *  createNewMeasurementReport().
+     ** @param  checkChildren  optional flag indicating whether to also check for any
+     *                         children, i.e.\ whether the respective content item has
+     *                         child nodes.  By default, the presence of the higher-level
+     *                         CONTAINER is checked only.
+     ** @return OFTrue if imaging measurements are present, OFFalse otherwise
+     */
+    OFBool hasImagingMeasurements(const OFBool checkChildren = OFFalse) const;
+
+    /** check whether there is an 'Qualitative Evaluations' content item (TID 1500 -
+     *  Row 12) in this measurement report
+     ** @param  checkChildren  optional flag indicating whether to also check for any
+     *                         children, i.e.\ whether the respective content item has
+     *                         child nodes.  By default, the presence of the higher-level
+     *                         CONTAINER is checked only.
+     ** @return OFTrue if qualitative evaluations are present, OFFalse otherwise
+     */
+    OFBool hasQualitativeEvaluations(const OFBool checkChildren = OFFalse) const;
+
+    /** get language of this report as defined by TID 1204 (Language of Content Item and
+     *  Descendants).  This included template is mandatory, i.e. should not be empty.
+     ** @return reference to internally managed SR template
+     */
+    inline TID1204_LanguageOfContentItemAndDescendants &getLanguage() const
+    {
+        return *OFstatic_cast(TID1204_LanguageOfContentItemAndDescendants *, Language.get());
+    }
+
+    /** get observation context of this report as defined by TID 1001 (Observation
+     *  Context).  This included template is mandatory, i.e. should not be empty.
+     ** @return reference to internally managed SR template
+     */
+    inline TID1001_ObservationContext &getObservationContext() const
+    {
+        return *OFstatic_cast(TID1001_ObservationContext *, ObservationContext.get());
+    }
+
+    /** get image library of this report as defined by TID 1600 (Image Library).
+     *  This included template is mandatory, i.e. should not be empty.
+     ** @return reference to internally managed SR template
+     */
+    inline TID1600_ImageLibrary &getImageLibrary() const
+    {
+        return *OFstatic_cast(TID1600_ImageLibrary *, ImageLibrary.get());
+    }
+
+    /** get volumetric ROI measurements of this report as defined by TID 1411 (Volumetric
+     *  ROI Measurements), i.e.\ the current instance of TID 1500 - Row 8.
+     *  This included template is optional, i.e. might be empty (but not absent).
+     *  Further instances can be added by calling addVolumetricROIMeasurements().
+     ** @return reference to internally managed SR template (current instance)
+     */
+    inline TID1411_Measurements &getVolumetricROIMeasurements() const
+    {
+        return *OFstatic_cast(TID1411_Measurements *, VolumetricROIMeasurements.get());
+    }
+
+    /** get document title of this report, i.e.\ the concept name of the root node
+     ** @param  titleCode  coded entry that specifies the document title of this report
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getDocumentTitle(DSRCodedEntryValue &titleCode);
+
+    /** create a new measurement report.
+     *  Clear the report and create the mandatory (and other supported) content items of
+     *  this template, i.e.\ TID 1500 - Row 1 to 6 and 8.
+     ** @param  title  document title to be set (from CID 7021 - Measurement Report
+     *                 Document Titles), i.e.\ the concept name of the root node
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createNewMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title);
+
+    /** set language of this report as defined by TID 1204 (Language of Content Item and
+     *  Descendants)
+     ** @param  language  language of the report, being a language that is primarily
+     *                    used for human communication (from CID 5000 - Languages)
+     *  @param  country   coded entry that describes the country-specific variant of
+     *                    'language' (optional, from CID 5001 - Countries)
+     *  @param  check     if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setLanguage(const CID5000_Languages &language,
+                            const CID5001_Countries &country = CID5001_Countries(),
+                            const OFBool check = OFTrue);
+
+    /** add the imaging procedure whose results are reported (TID 1500 - Row 4).
+     *  There should be at least a single instance of the associated content item.
+     ** @param  procedure  coded entry that describes the imaging procedure to be added
+     *                     (from CID 100 - Quantitative Diagnostic Imaging Procedures)
+     *  @param  check      if enabled, check value for validity before setting it
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addProcedureReported(const CID100_QuantitativeDiagnosticImagingProcedures &procedure,
+                                     const OFBool check = OFTrue);
+
+    /** create another instance of TID 1411 (Volumetric ROI Measurements) and add it as
+     *  an included template to this report (TID 1500 - Row 8).  A first instance of
+     *  TID 1411 is created and added by calling createNewMeasurementReport().  Access
+     *  to the current instance is available through getVolumetricROIMeasurements().
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addVolumetricROIMeasurements();
+
+    /** add a qualitative evaluation related to the entire subject of the report as a
+     *  coded entry (TID 1500 - Row 13).  The higher-level CONTAINER (Row 12) is created
+     *  automatically (if none is present).
+     ** @param  conceptName  coded entry to be set as the concept name
+     *  @param  codeValue    coded entry to be set as the value of the new content item
+     *  @param  check        if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
+                                         const DSRCodedEntryValue &codeValue,
+                                         const OFBool check = OFTrue);
+
+    /** add a qualitative evaluation related to the entire subject of the report in
+     *  text form (TID 1500 - Row 14).  The higher-level CONTAINER (Row 12) is created
+     *  automatically (if none is present).
+     ** @param  conceptName  coded entry to be set as the concept name
+     *  @param  stringValue  character string to be set as the value of the content item
+     *  @param  check        if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
+                                         const OFString &stringValue,
+                                         const OFBool check = OFTrue);
+
+
+  protected:
+
+    /** create the mandatory (and other supported) content items of this template,
+     *  i.e.\ TID 1500 - Row 1 to 6 and 8.  It is expected that the tree is currently
+     *  empty.
+     ** @param  title  coded entry that specifies the document title to be set
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title);
+
+    /** create the 'Qualitative Evaluations' content item (TID 1500 - Row 12) if not
+     *  existing yet
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createQualitativeEvaluations();
+
+
+  private:
+
+    // shared pointer to included template "Language of Content Item and Descendants" (TID 1204)
+    DSRSharedSubTemplate Language;
+    // shared pointer to included template "Observation Context" (TID 1001)
+    DSRSharedSubTemplate ObservationContext;
+    // shared pointer to included template "Image Library" (TID 1600)
+    DSRSharedSubTemplate ImageLibrary;
+    // shared pointer to included template "Volumetric ROI Measurements" (TID 1411)
+    DSRSharedSubTemplate VolumetricROIMeasurements;
+};
+
+
+/*--------------------*
+ *  type definitions  *
+ *--------------------*/
+
+// define short names for the SR template classes
+typedef TID1500_MeasurementReport CMR_TID1500;
+typedef TID1500_MeasurementReport::TID1411_Measurements CMR_TID1411_in_TID1500;
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h b/dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
index 75eaca6..e9b6f70 100644
--- a/dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+++ b/dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
@@ -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.
  *
  *  Header file for class TID1600_ImageLibrary
@@ -18,20 +18,40 @@
 #include "dcmtk/dcmsr/dsrstpl.h"
 
 #include "dcmtk/dcmsr/cmr/define.h"
+#include "dcmtk/dcmsr/cmr/cid4020.h"
+#include "dcmtk/dcmsr/cmr/cid4021.h"
+#include "dcmtk/dcmsr/cmr/srnumvl.h"
 
 
-/*-----------------------*
+// include this file in doxygen documentation
+
+/** @file tid1600.h
+ *  @brief Interface class and error constants for TID 1600 in module dcmsr/cmr
+ */
+
+
+/*------------------------*
  *  constant definitions  *
- *-----------------------*/
+ *------------------------*/
 
 /** @name specific error conditions for TID 1600 in module dcmsr/cmr
  */
 //@{
 
+/// error: there is no image library to add image groups to
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoImageLibrary;
 /// error: there is no image library group to add image entries to
 extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoImageLibraryGroup;
+/// error: there is no image library entry to add descriptors to
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoImageLibraryEntry;
 /// error: cannot add multiple image library entry descriptors (see TID 1600 Row 3)
 extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors;
+/// error: the current (most recently added) image library entry has no modality descriptor
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_MissingImageLibraryEntryDescriptorModality;
+/// error: the current (most recently added) image library entry has the wrong modality descriptor
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_WrongImageLibraryEntryDescriptorModality;
+/// normal: there are no image library entry descriptors to be added (copied from the dataset)
+extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded;
 
 //@}
 
@@ -62,9 +82,36 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
         withAllDescriptors
     };
 
-    /** default constructor
+    /** (default) constructor
+     ** @param  createLibrary  flag indicating whether to create an empty image library
+     *                         by calling createImageLibrary() during startup (default)
+     */
+    TID1600_ImageLibrary(const OFBool createLibrary = OFTrue);
+
+    /** check whether the current internal state is valid.
+     *  That means, whether the base class is valid and hasImageLibrary() returns true.
+     ** @return OFTrue if valid, OFFalse otherwise
+     */
+    virtual OFBool isValid() const;
+
+    /** check whether the content item 'Image Library' (TID 1600 - Row 1) is present.
+     *  Initially, this mandatory content item is created by the constructor of this
+     *  class (if not disabled).  After clear() has been called, it can be created again
+     *  by calling createNewImageLibrary().
+     ** @return OFTrue if the image library is present, OFFalse otherwise
+     */
+    OFBool hasImageLibrary() const;
+
+    /** check whether there is an image group in this image library (TID 1600 - Row 2)
+     ** @return OFTrue if at least one image group is present, OFFalse otherwise
+     */
+    OFBool hasImageLibraryGroup() const;
+
+    /** clear the internally stored tree of content items and create the mandatory
+     *  content item 'Image Library' (TID 1600 - Row 1) as the root node of this template
+     ** @return status, EC_Normal if successful, an error code otherwise
      */
-    TID1600_ImageLibrary();
+    OFCondition createNewImageLibrary();
 
     /** add an image group to the image library
      ** @return status, EC_Normal if successful, an error code otherwise
@@ -74,6 +121,8 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
     /** add an image entry to the current image group, i.e.\ add content items for
      *  TID 1601 (Image Library Entry).  The values of the content items (including
      *  the image reference) are copied from the data elements of the given 'dataset'.
+     *  If no descriptors were added, CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded
+     *  is returned.
      ** @param  dataset  DICOM dataset from which the values should be copied
      *  @param  mode     mode specifying which optional content items are to be added
      *  @param  check    if enabled, check values for validity before setting them
@@ -84,10 +133,11 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                               const AddImageMode mode = withoutDescriptors,
                               const OFBool check = OFTrue);
 
-    /** add an image entry descriptors to the current image group, i.e.\ add content
+    /** add image entry descriptors to the current image group, i.e.\ add content
      *  items for TID 1602 (Image Library Entry Descriptors) and included templates.
      *  The values of the content items are copied from the data elements of the given
-     *  'dataset'.
+     *  'dataset'.  If none were added, CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded
+     *  is returned.
      *  Please note that this method should only be called once for each image group.
      ** @param  dataset  DICOM dataset from which the values should be copied
      *  @param  check    if enabled, check values for validity before setting them
@@ -97,9 +147,93 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
     OFCondition addImageEntryDescriptors(DcmItem &dataset,
                                          const OFBool check = OFTrue);
 
+    /** go to the most recently added image library entry and get the value of the
+     *  descriptor 'Modality' (TID 1602 - Row 1)
+     ** @param  modalityCode  reference to coded entry that will store the result
+     *                        (cleared if an error occurs)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition getImageEntryModality(DSRCodedEntryValue &modalityCode);
+
+  // --- set modality-specific content manually ---
+
+    /** set the value of the descriptor 'Radionuclide' (TID 1607 - Row 1) for the current
+     *  (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  radionuclide  coded entry to be set (from CID 4020 - PET Radionuclide)
+     *  @param  check         if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadionuclide(const CID4020_PETRadionuclide &radionuclide,
+                                        const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Agent' (TID 1607 - Row 2)
+     *  for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  agent  coded entry to be set (from CID 4021 - PET Radiopharmaceutical)
+     *  @param  check  if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadiopharmaceuticalAgent(const CID4021_PETRadiopharmaceutical &agent,
+                                                    const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Start Date Time' (TID 1607 -
+     *  Row 4) for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  dateTime  date/time value to be set (associated DICOM VR=DT)
+     *  @param  check     if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadiopharmaceuticalStartDateTime(const OFString &dateTime,
+                                                            const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Stop Date Time' (TID 1607 -
+     *  Row 5) for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  dateTime  date/time value to be set (associated DICOM VR=DT)
+     *  @param  check     if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadiopharmaceuticalStopDateTime(const OFString &dateTime,
+                                                           const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Volume' (TID 1607 - Row 6)
+     *  for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  volume  numeric measurement value to be set (measurement unit should be
+     *                  CODE_UCUM_cm3 or a coded entry that is identical to this)
+     *  @param  check   if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadiopharmaceuticalVolume(const CMR_SRNumericMeasurementValue &volume,
+                                                     const OFBool check = OFTrue);
+
+    /** set the value of the descriptor 'Radiopharmaceutical Total Dose' (TID 1607 -
+     *  Row 7) for the current (most recently added) PET image library entry.
+     *  If the content item already exists, its value is overwritten.  Otherwise, a new
+     *  content item is added to the end of the list of image library entry descriptors.
+     ** @param  totalDose  numeric measurement value to be set (measurement unit should
+     *                     be CODE_UCUM_Bq or a coded entry that is identical to this)
+     *  @param  check      if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setPETImageRadionuclideTotalDose(const CMR_SRNumericMeasurementValue &totalDose,
+                                                 const OFBool check = OFTrue);
+
 
   protected:
 
+    /** create the mandatory content item 'Image Library' (TID 1600 - Row 1) as the root
+     *  node of this template.  It is expected that the tree is currently empty.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition createImageLibrary();
+
     /** add image library entry descriptors (TID 1602) to given document subtree.
      *  This method also calls addModalitySpecificDescriptors() in order to add the
      *  included templates (TID 1603 to 1607).
@@ -169,7 +303,7 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                 const OFBool check);
 
     /** add image library entry descriptors for PET (TID 1607).
-     *  @note The template rows 9 to 14 are not yet supported by this method.
+     *  @note The template rows 10 to 15 are not yet supported by this method.
      ** @param  tree     subtree to which the content items should be added
      *  @param  dataset  DICOM dataset from which the values should be copied
      *  @param  check    if enabled, check values for validity before setting them
@@ -179,6 +313,62 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                          DcmItem &dataset,
                                                          const OFBool check);
 
+    /** go to the most recently added image library entry and check the value of the
+     *  descriptor 'Modality' (TID 1602 - Row 1)
+     ** @param  modalityCode  coded entry (from CID 29) associated with the modality.
+     *                        Used to check the image library entry.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition goAndCheckImageLibraryEntry(const DSRCodedEntryValue &modalityCode);
+
+    /** search for a particular content item (given by the concept name and value type)
+     *  and set its string value.  If not found, a new content item is added to the
+     *  current position and the value is set.
+     ** @param  valueType       value type of the content item to be set/added
+     *  @param  conceptName     concept name of the content item to be set/added
+     *  @param  stringValue     string value of the content item to be set/added
+     *  @param  annotationText  text used to annotate the content item (might be empty)
+     *  @param  check           if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setStringContentItemFromValue(const E_ValueType valueType,
+                                              const DSRCodedEntryValue &conceptName,
+                                              const OFString &stringValue,
+                                              const OFString &annotationText,
+                                              const OFBool check);
+
+    /** search for a particular CODE content item (given by the concept name) and set its
+     *  coded entry value.  If not found, a new content item is added to the current
+     *  position and the value is set.
+     ** @param  conceptName     concept name of the content item to be set/added
+     *  @param  codeValue       coded entry value of the content item to be set/added
+     *  @param  annotationText  text used to annotate the content item (might be empty)
+     *  @param  check           if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setCodeContentItemFromValue(const DSRCodedEntryValue &conceptName,
+                                            const DSRCodedEntryValue &codeValue,
+                                            const OFString &annotationText,
+                                            const OFBool check);
+
+    /** search for a particular NUM content item (given by the concept name) and set its
+     *  numeric measurement value.  If not found, a new content item is added to the
+     *  current position and the value is set.
+     ** @param  conceptName      concept name of the content item to be set/added
+     *  @param  numericValue     numeric measurement value of the content item to be
+     *                           set/added
+     *  @param  measurementUnit  measurement unit that should be used by 'numericValue'
+     *                           (optional, might be empty).  Used for checking purposes.
+     *  @param  annotationText   text used to annotate the content item (might be empty)
+     *  @param  check            if enabled, check values for validity before setting them
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setNumericContentItemFromValue(const DSRCodedEntryValue &conceptName,
+                                               const DSRNumericMeasurementValue &numericValue,
+                                               const DSRCodedEntryValue &measurementUnit,
+                                               const OFString &annotationText,
+                                               const OFBool check);
+
   // --- static helper functions ---
 
     /** add a content item with a string value copied from the given dataset.
@@ -204,7 +394,7 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                        const OFString &annotationText,
                                                        const OFBool check);
 
-    /** add a content item with a coded entry value copied from the given dataset.
+    /** add a CODE content item with a coded entry value copied from the given dataset.
      *  The content item is only created and added to the subtree if the specified code
      *  sequence is present in the 'dataset' and its value is valid (not empty).
      ** @param  tree            subtree to which the content items should be added
@@ -223,7 +413,7 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                      const OFString &annotationText,
                                                      const OFBool check);
 
-    /** add a content item with a numeric value copied from the given dataset.
+    /** add a NUM content item with a numeric value copied from the given dataset.
      *  The content item is only created and added to the subtree if the specified data
      *  element is present in the 'dataset' and its value (retrieved as a string) is not
      *  empty.
@@ -247,8 +437,15 @@ class DCMTK_CMR_EXPORT TID1600_ImageLibrary
                                                         const DSRCodedEntryValue &measurementUnit,
                                                         const OFString &annotationText,
                                                         const OFBool check);
-
 };
 
 
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+// define short name for the SR template class
+typedef TID1600_ImageLibrary CMR_TID1600;
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/dcm.h b/dcmsr/include/dcmtk/dcmsr/codes/dcm.h
index e56cc78..7654c10 100644
--- a/dcmsr/include/dcmtk/dcmsr/codes/dcm.h
+++ b/dcmsr/include/dcmtk/dcmsr/codes/dcm.h
@@ -1,12 +1,13 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  Header file with DICOM Code Definitions (Coding Scheme "DCM", Version "01")
  *
  *  Generated automatically from DICOM PS 3.16-2015c
  *  File created on 2015-08-23 14:58:58 by J. Riesmeier
+ *  Last modified on 2016-01-25 by Riesmeier
  *
  */
 
@@ -3204,4 +3205,9 @@
 #define CODE_DCM_IEC61217GantryContinuousPitchAngle                        DSRBasicCodedEntry("126810", "DCM", "IEC61217 Gantry Continuous Pitch Angle")
 #define CODE_DCM_IEC61217GantryContinuousYawAngle                          DSRBasicCodedEntry("126811", "DCM", "IEC61217 Gantry Continuous Yaw Angle")
 
+// recently approved correction items
+
+#define CODE_DCM_StationAETitle                                            DSRBasicCodedEntry("110119", "DCM", "Station AE Title")   // added from CP-1516
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/srt.h b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h
similarity index 50%
copy from dcmsr/include/dcmtk/dcmsr/codes/srt.h
copy to dcmsr/include/dcmtk/dcmsr/codes/ncit.h
index e303995..40ea784 100644
--- a/dcmsr/include/dcmtk/dcmsr/codes/srt.h
+++ b/dcmsr/include/dcmtk/dcmsr/codes/ncit.h
@@ -1,17 +1,18 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
  *
- *  Header file with SNOMED-RT Code Definitions (Coding Scheme "SRT")
+ *  Header file with NCIt Code Definitions (Coding Scheme "NCIt")
  *
  *  Generated semi-automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-24 by J. Riesmeier
+ *  File created on 2016-01-12 18:02:09 by J. Riesmeier
  *
  */
 
 
-#ifndef CODES_SRT_H
-#define CODES_SRT_H
+#ifndef CODES_NCIT_H
+#define CODES_NCIT_H
 
 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
 
@@ -22,28 +23,31 @@
  *  general information  *
  *-----------------------*/
 
-#define CODE_SRT_CodingSchemeDesignator  "SRT"
-#define CODE_SRT_CodingSchemeName        "SNOMED-RT"
-#define CODE_SRT_CodingSchemeDescription "SNOMED-CT, using the 'SNOMED-RT style' code values"
-#define CODE_SRT_CodingSchemeUID         "2.16.840.1.113883.6.96"
+#define CODE_NCIt_CodingSchemeDesignator  "NCIt"
+#define CODE_NCIt_CodingSchemeName        "NCIt"
+#define CODE_NCIt_CodingSchemeDescription "NCI Thesaurus"
+#define CODE_NCIt_CodingSchemeUID         "2.16.840.1.113883.3.26.1.1"
 
 
 /*--------------------*
  *  code definitions  *
  *--------------------*/
 
+// total number of codes: 2
+// - retired: 0
+// - no name: 0
+// - not unique: 0
+
 // The basic scheme for creating the names is as follows:
 //   'CODE_' + <coding-scheme-designator> + ['_RETIRED'] + '_' + <code-name>
-// where <coding-scheme-designator> is "SRT" and <code-name> is either
+// where <coding-scheme-designator> is "NCIt" and <code-name> is either
 // - a cleaned camel-case version of the code meaning (if unique within this coding scheme) or
 // - a cleaned camel-case version of the code meaning with an underscore and the code value appended or
 // - simply the code value with an underscore character appended (if code meaning contains an equation).
 // The "cleaned camel-case version of the code meaning" is an attempt to map the free text
 // description of the code meaning to a compiler-friendly but still human-readable representation.
 
-#define CODE_SRT_Radionuclide                   DSRBasicCodedEntry("C-10072", "SRT", "Radionuclide")
-#define CODE_SRT_RadiopharmaceuticalAgent       DSRBasicCodedEntry("F-61FDB", "SRT", "Radiopharmaceutical agent")
-#define CODE_SRT_HalfLifeOfRadiopharmaceutical  DSRBasicCodedEntry("R-42806", "SRT", "Half-life of radiopharmaceutical")
-#define CODE_SRT_RouteOfAdministration          DSRBasicCodedEntry("G-C340", "SRT", "Route of Administration")
+#define CODE_NCIt_RANO             DSRBasicCodedEntry("C114879", "NCIt", "RANO")
+#define CODE_NCIt_ActivitySession  DSRBasicCodedEntry("C67447", "NCIt", "Activity Session")   // added from CP-1466
 
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/srt.h b/dcmsr/include/dcmtk/dcmsr/codes/srt.h
index e303995..081764f 100644
--- a/dcmsr/include/dcmtk/dcmsr/codes/srt.h
+++ b/dcmsr/include/dcmtk/dcmsr/codes/srt.h
@@ -1,11 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *
  *  Header file with SNOMED-RT Code Definitions (Coding Scheme "SRT")
  *
  *  Generated semi-automatically from DICOM PS 3.16-2015c
  *  File created on 2015-08-24 by J. Riesmeier
+ *  Last modified on 2016-01-23 by Riesmeier
  *
  */
 
@@ -42,8 +43,19 @@
 // description of the code meaning to a compiler-friendly but still human-readable representation.
 
 #define CODE_SRT_Radionuclide                   DSRBasicCodedEntry("C-10072", "SRT", "Radionuclide")
+#define CODE_SRT_18_Fluorine                    DSRBasicCodedEntry("C-111A1", "SRT", "^18^Fluorine")
+#define CODE_SRT_Fluorodeoxyglucose_F18         DSRBasicCodedEntry("C-B1031", "SRT", "Fluorodeoxyglucose F^18^")
 #define CODE_SRT_RadiopharmaceuticalAgent       DSRBasicCodedEntry("F-61FDB", "SRT", "Radiopharmaceutical agent")
-#define CODE_SRT_HalfLifeOfRadiopharmaceutical  DSRBasicCodedEntry("R-42806", "SRT", "Half-life of radiopharmaceutical")
+#define CODE_SRT_MeasurementMethod              DSRBasicCodedEntry("G-C036", "SRT", "Measurement Method")
+#define CODE_SRT_FindingSite                    DSRBasicCodedEntry("G-C0E3", "SRT", "Finding Site")
 #define CODE_SRT_RouteOfAdministration          DSRBasicCodedEntry("G-C340", "SRT", "Route of Administration")
+#define CODE_SRT_Neoplasm_Primary               DSRBasicCodedEntry("M-80003", "SRT", "Neoplasm, Primary")
+#define CODE_SRT_Neoplasm_Secondary             DSRBasicCodedEntry("M-80006", "SRT", "Neoplasm, Secondary")
+#define CODE_SRT_HalfLifeOfRadiopharmaceutical  DSRBasicCodedEntry("R-42806", "SRT", "Half-life of radiopharmaceutical")
+#define CODE_SRT_AorticArch                     DSRBasicCodedEntry("T-42300", "SRT", "Aortic arch")
+#define CODE_SRT_Liver_T62000                   DSRBasicCodedEntry("T-62000", "SRT", "Liver")
+#define CODE_SRT_Liver_T62002                   DSRBasicCodedEntry("T-62002", "SRT", "Liver")
+#define CODE_SRT_Cerebellum                     DSRBasicCodedEntry("T-A6000", "SRT", "Cerebellum")
+#define CODE_SRT_LymphNode                      DSRBasicCodedEntry("T-C4000", "SRT", "Lymph node")
 
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/ucum.h b/dcmsr/include/dcmtk/dcmsr/codes/ucum.h
index ef86530..d057e64 100644
--- a/dcmsr/include/dcmtk/dcmsr/codes/ucum.h
+++ b/dcmsr/include/dcmtk/dcmsr/codes/ucum.h
@@ -1,11 +1,12 @@
 /*
  *
- *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
  *
  *  Header file with UCUM Code Definitions (Coding Scheme "UCUM")
  *
  *  Generated semi-automatically from DICOM PS 3.16-2015c
  *  File created on 2015-08-24 by J. Riesmeier
+ *  Last modified on 2016-01-23 by Riesmeier
  *
  */
 
@@ -42,15 +43,16 @@
 // description of the code meaning to a compiler-friendly but still human-readable representation.
 
 #define CODE_UCUM_Pixels            DSRBasicCodedEntry("{pixels}", "UCUM", "pixels")
-#define CODE_UCUM_Degrees           DSRBasicCodedEntry("deg", "UCUM", "degrees")
+#define CODE_UCUM_Degrees           DSRBasicCodedEntry("deg", "UCUM", "deg")
 #define CODE_UCUM_Minus1To1         DSRBasicCodedEntry("{-1:1}", "UCUM", "{-1:1}")
 #define CODE_UCUM_Millimeter        DSRBasicCodedEntry("mm", "UCUM", "millimeter")
-#define CODE_UCUM_Cm3               DSRBasicCodedEntry("cm3", "UCUM", "cm3")
-#define CODE_UCUM_S                 DSRBasicCodedEntry("s", "UCUM", "s")
-#define CODE_UCUM_Min               DSRBasicCodedEntry("min", "UCUM", "min")
+#define CODE_UCUM_cm3               DSRBasicCodedEntry("cm3", "UCUM", "cm3")
+#define CODE_UCUM_ml                DSRBasicCodedEntry("ml", "UCUM", "ml")
+#define CODE_UCUM_s                 DSRBasicCodedEntry("s", "UCUM", "s")
+#define CODE_UCUM_min               DSRBasicCodedEntry("min", "UCUM", "min")
 #define CODE_UCUM_Bq                DSRBasicCodedEntry("Bq", "UCUM", "Bq")
 #define CODE_UCUM_BqPerMol          DSRBasicCodedEntry("Bq/mol", "UCUM", "Bq/mol")
-#define CODE_UCUM_MmolPerL          DSRBasicCodedEntry("mmol/l", "UCUM", "mmol/l")
+#define CODE_UCUM_mmolPerL          DSRBasicCodedEntry("mmol/l", "UCUM", "mmol/l")
 #define CODE_UCUM_CountsPerSecond   DSRBasicCodedEntry("{counts}/s", "UCUM", "Counts per second")
 
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/codes/umls.h b/dcmsr/include/dcmtk/dcmsr/codes/umls.h
new file mode 100644
index 0000000..047bc51
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/codes/umls.h
@@ -0,0 +1,72 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *
+ *  Header file with UMLS Code Definitions (Coding Scheme "UMLS")
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2015-08-23 14:59:04 by J. Riesmeier
+ *
+ */
+
+
+#ifndef CODES_UMLS_H
+#define CODES_UMLS_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrcodvl.h"
+
+
+/*-----------------------*
+ *  general information  *
+ *-----------------------*/
+
+#define CODE_UMLS_CodingSchemeDesignator  "UMLS"
+#define CODE_UMLS_CodingSchemeName        "UMLS"
+#define CODE_UMLS_CodingSchemeDescription "UMLS codes as CUIs making up the values in a coding system"
+#define CODE_UMLS_CodingSchemeUID         "2.16.840.1.113883.6.86"
+
+
+/*--------------------*
+ *  code definitions  *
+ *--------------------*/
+
+// total number of codes: 22
+// - retired: 0
+// - no name: 0
+// - not unique: 0
+
+// The basic scheme for creating the names is as follows:
+//   'CODE_' + <coding-scheme-designator> + ['_RETIRED'] + '_' + <code-name>
+// where <coding-scheme-designator> is "UMLS" and <code-name> is either
+// - a cleaned camel-case version of the code meaning (if unique within this coding scheme) or
+// - a cleaned camel-case version of the code meaning with an underscore and the code value appended or
+// - simply the code value with an underscore character appended (if code meaning contains an equation).
+// The "cleaned camel-case version of the code meaning" is an attempt to map the free text
+// description of the code meaning to a compiler-friendly but still human-readable representation.
+
+#define CODE_UMLS_QualitativeEvaluations                     DSRBasicCodedEntry("C0034375", "UMLS", "Qualitative Evaluations")
+#define CODE_UMLS_UnknownPrimaryNeoplasiaSite                DSRBasicCodedEntry("C0221297", "UMLS", "unknown primary neoplasia site")
+#define CODE_UMLS_CoefficientOfVariance                      DSRBasicCodedEntry("C0681921", "UMLS", "Coefficient of Variance")
+#define CODE_UMLS_Intern                                     DSRBasicCodedEntry("C1144859", "UMLS", "Intern")
+#define CODE_UMLS_ConsultingPhysician                        DSRBasicCodedEntry("C1441532", "UMLS", "Consulting Physician")
+#define CODE_UMLS_Baseline                                   DSRBasicCodedEntry("C1442488", "UMLS", "Baseline")
+#define CODE_UMLS_Fluoroetanidazole_F18                      DSRBasicCodedEntry("C1541539", "UMLS", "Fluoroetanidazole F^18^")
+#define CODE_UMLS_Unscheduled                                DSRBasicCodedEntry("C1699701", "UMLS", "Unscheduled")
+#define CODE_UMLS_Nadir                                      DSRBasicCodedEntry("C1708760", "UMLS", "Nadir")
+#define CODE_UMLS_MedicalPhysicist                           DSRBasicCodedEntry("C1708969", "UMLS", "Medical Physicist")
+#define CODE_UMLS_Referring                                  DSRBasicCodedEntry("C1709880", "UMLS", "Referring")
+#define CODE_UMLS_Variance                                   DSRBasicCodedEntry("C1711260", "UMLS", "Variance")
+#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_RootMeanSquare                             DSRBasicCodedEntry("C2347976", "UMLS", "Root Mean Square")
+#define CODE_UMLS_TimePoint                                  DSRBasicCodedEntry("C2348792", "UMLS", "Time Point")
+#define CODE_UMLS_Edotreotide_Ga68                           DSRBasicCodedEntry("C2713594", "UMLS", "Edotreotide Ga^68^")
+#define CODE_UMLS_FluoropropylDihydrotetrabenazine_DTBZ_F18  DSRBasicCodedEntry("C2934038", "UMLS", "Fluoropropyl-dihydrotetrabenazine (DTBZ) F^18^")
+#define CODE_UMLS_ISO1_F18                                   DSRBasicCodedEntry("C2981788", "UMLS", "ISO-1 F^18^")
+#define CODE_UMLS_RadiationPhysicist                         DSRBasicCodedEntry("C2985483", "UMLS", "Radiation Physicist")
+#define CODE_UMLS_Pretreatment                               DSRBasicCodedEntry("C3539075", "UMLS", "Pretreatment")
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsdefine.h b/dcmsr/include/dcmtk/dcmsr/dsdefine.h
index f123d4c..08c8071 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsdefine.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsdefine.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2014, OFFIS e.V.
+ *  Copyright (C) 2012-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -34,5 +34,13 @@
 #define DCMTK_DCMSR_EXPORT DCMTK_DECL_IMPORT
 #endif
 
+#ifndef DCMTK_EXPLICIT_SPECIALIZATION
+#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
+#define DCMTK_EXPLICIT_SPECIALIZATION template<>
+#else
+#define DCMTK_EXPLICIT_SPECIALIZATION
+#endif
+#endif
+
 
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h b/dcmsr/include/dcmtk/dcmsr/dsracqcc.h
similarity index 64%
copy from dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
copy to dcmsr/include/dcmtk/dcmsr/dsracqcc.h
index 2d2f2a1..da6b2b1 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsracqcc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2015, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -16,13 +16,13 @@
  *  Author: Joerg Riesmeier
  *
  *  Purpose:
- *    classes: DSRRadiopharmaceuticalRadiationDoseConstraintChecker
+ *    classes: DSRAcquisitionContextConstraintChecker
  *
  */
 
 
-#ifndef DSRRRDCC_H
-#define DSRRRDCC_H
+#ifndef DSRACQCC_H
+#define DSRACQCC_H
 
 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
 
@@ -33,10 +33,13 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Radiopharmaceutical
- *  Radiation Dose SR IOD
+/** Class for checking the relationship content constraints of the Acquisition Context
+ *  SR IOD.
+ *  According to DICOM PS 3.3: "The document may be constructed from Baseline TID 8001
+ *  (Preclinical Small Animal Image Acquisition Context) invoked at the root node.
+ *  Note: This IOD may be used with other Templates defined for Acquisition Context."
  */
-class DCMTK_DCMSR_EXPORT DSRRadiopharmaceuticalRadiationDoseConstraintChecker
+class DCMTK_DCMSR_EXPORT DSRAcquisitionContextConstraintChecker
   : public DSRIODConstraintChecker
 {
 
@@ -44,11 +47,11 @@ class DCMTK_DCMSR_EXPORT DSRRadiopharmaceuticalRadiationDoseConstraintChecker
 
     /** default constructor
      */
-    DSRRadiopharmaceuticalRadiationDoseConstraintChecker();
+    DSRAcquisitionContextConstraintChecker();
 
     /** destructor
      */
-    virtual ~DSRRadiopharmaceuticalRadiationDoseConstraintChecker();
+    virtual ~DSRAcquisitionContextConstraintChecker();
 
     /** check whether by-reference relationships are allowed for this SR IOD
      ** @return always returns OFFalse, i.e. by-reference relationships are not allowed
@@ -60,13 +63,17 @@ class DCMTK_DCMSR_EXPORT DSRRadiopharmaceuticalRadiationDoseConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
-     ** @return document type (DSRTypes::DT_RadiopharmaceuticalRadiationDoseSR)
+     ** @return document type (DSRTypes::DT_AcquisitionContextSR)
      */
     virtual E_DocumentType getDocumentType() const;
 
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrbascc.h b/dcmsr/include/dcmtk/dcmsr/dsrbascc.h
index 534c4e2..2d9e599 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrbascc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrbascc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSRBasicTextSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_BasicTextSR)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrc3dcc.h b/dcmsr/include/dcmtk/dcmsr/dsrc3dcc.h
index ddfee7b..e2c7517 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrc3dcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrc3dcc.h
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSRComprehensive3DSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_Comprehensive3DSR)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrchecc.h b/dcmsr/include/dcmtk/dcmsr/dsrchecc.h
index 9fe63f0..b1b775c 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrchecc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrchecc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,7 +33,11 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Chest CAD SR IOD
+/** Class for checking the relationship content constraints of the Chest CAD SR IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 4100
+ *  (Chest CAD Document Root) invoked at the root node.  When a content item sub-tree
+ *  from a prior document is duplicated by-value, its observation context shall be
+ *  defined by TID 1001 (Observation Context) and its subordinate templates."
  */
 class DCMTK_DCMSR_EXPORT DSRChestCadSRConstraintChecker
   : public DSRIODConstraintChecker
@@ -59,10 +63,14 @@ class DCMTK_DCMSR_EXPORT DSRChestCadSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "4100"
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ChestCadSR)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrcodvl.h b/dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
index 9cd4606..0a61c88 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrcodvl.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
@@ -198,7 +198,7 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
      */
     DSRCodedEntryValue &operator=(const DSRCodedEntryValue &codedEntryValue);
 
-    /** comparison operator.
+    /** comparison operator "equal".
      *  Two codes are equal if the code value, coding scheme designator and the (optional)
      *  coding scheme version are equal.  The code meaning is not relevant for this check.
      ** @param  codedEntryValue  code which should be compared to the current one
@@ -206,7 +206,16 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
      */
     OFBool operator==(const DSRCodedEntryValue &codedEntryValue) const;
 
-    /** comparison operator.
+    /** comparison operator "not equal".
+     *  Two codes are not equal if either the code value or the coding scheme designator
+     *  or the (optional) coding scheme version are not equal.  The code meaning is not
+     *  relevant for this check.
+     ** @param  codedEntryValue  code which should be compared to the current one
+     ** @return OFTrue if both codes are not equal, OFFalse otherwise
+     */
+    OFBool operator!=(const DSRCodedEntryValue &codedEntryValue) const;
+
+    /** comparison operator "equal".
      *  Two codes are equal if the code value, coding scheme designator and the (optional)
      *  coding scheme version are equal.  The code meaning is not relevant for this check.
      ** @param  basicCodedEntry  code which should be compared to the current one
@@ -214,6 +223,15 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
      */
     OFBool operator==(const DSRBasicCodedEntry &basicCodedEntry) const;
 
+    /** comparison operator "not equal".
+     *  Two codes are not equal if either the code value or the coding scheme designator
+     *  or the (optional) coding scheme version are not equal.  The code meaning is not
+     *  relevant for this check.
+     ** @param  basicCodedEntry  code which should be compared to the current one
+     ** @return OFTrue if both codes are not equal, OFFalse otherwise
+     */
+    OFBool operator!=(const DSRBasicCodedEntry &basicCodedEntry) const;
+
     /** clear all internal variables.
      *  Since an empty code is invalid the code becomes invalid afterwards.
      */
@@ -231,6 +249,14 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
      */
     virtual OFBool isEmpty() const;
 
+    /** check whether the current code is complete, i.e.\ whether the three mandatory
+     *  components of the code are non-empty.  This is just a basic check that might be useful
+     *  for "validating" input data.  See isValid() for a more sophisticated way of checking
+     *  the current code.
+     ** @return OFTrue if code is complete, OFFalse otherwise
+     */
+    virtual OFBool isComplete() const;
+
     /** print code.
      *  The output of a typical code triple looks like this: (1234,99_OFFIS_DCMTK,"Code
      *  Meaning").  The optional coding scheme version is printed in square brackets directly
@@ -710,4 +736,15 @@ class DCMTK_DCMSR_EXPORT DSRCodedEntryValue
 };
 
 
+/** output stream operator for coded entry values.
+ *  Internally, the DSRCodedEntryValue::print() method is used, i.e. the output looks
+ *  like this: (1234,99_OFFIS_DCMTK,"Code Meaning") or (cm,UCUM[1.4],"centimeter")
+ *  @param  stream           output stream to which the coded entry value is printed
+ *  @param  codedEntryValue  coded entry value to be printed
+ *  @return reference to output stream
+ */
+DCMTK_DCMSR_EXPORT STD_NAMESPACE ostream &operator<<(STD_NAMESPACE ostream &stream,
+                                                     const DSRCodedEntryValue& codedEntryValue);
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrcolcc.h b/dcmsr/include/dcmtk/dcmsr/dsrcolcc.h
index 77c1901..7daa242 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrcolcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrcolcc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,7 +33,9 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Colon CAD SR IOD
+/** Class for checking the relationship content constraints of the Colon CAD SR IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 4120
+ *  (Colon CAD Document Root) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRColonCadSRConstraintChecker
   : public DSRIODConstraintChecker
@@ -59,10 +61,14 @@ class DCMTK_DCMSR_EXPORT DSRColonCadSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "4120"
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ColonCadSR)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrcomcc.h b/dcmsr/include/dcmtk/dcmsr/dsrcomcc.h
index cdada30..d35a8ca 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrcomcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrcomcc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSRComprehensiveSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ComprehensiveSR)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrcomvl.h b/dcmsr/include/dcmtk/dcmsr/dsrcomvl.h
index 179de0b..896c7c1 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrcomvl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrcomvl.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
@@ -89,11 +89,19 @@ class DCMTK_DCMSR_EXPORT DSRCompositeReferenceValue
     virtual OFBool isValid() const;
 
     /** check whether the current reference value is empty.
-     *  Checks whether both UIDs of the reference value are empty.
+     *  Checks whether both mandatory UIDs of the reference value are empty.
      ** @return OFTrue if value is empty, OFFalse otherwise
      */
     virtual OFBool isEmpty() const;
 
+    /** check whether the current reference value is complete, i.e.\ whether both
+     *  mandatory UIDs are non-empty.  This is just a basic check that might be useful
+     *  for "validating" input data.  See isValid() for a more sophisticated way of
+     *  checking the current reference value.
+     ** @return OFTrue if value is complete, OFFalse otherwise
+     */
+    virtual OFBool isComplete() const;
+
     /** print reference value.
      *  The output of a typical composite reference value looks like this: (BasicTextSR,"1.2.3").
      *  If the SOP class UID is unknown, the UID is printed instead of the related name.
@@ -168,6 +176,13 @@ class DCMTK_DCMSR_EXPORT DSRCompositeReferenceValue
         return SOPClassUID;
     }
 
+    /** get name associated with the SOP class UID (if any)
+     ** @param  defaultName  string value that is returned if the SOP class UID is unknown
+     ** @return name associated with the current SOP class UID (might be empty, e.g. in case
+     *          the SOP class UID is empty or 'defaultName' is an empty string)
+     */
+    const OFString getSOPClassName(const OFString &defaultName = "unknown SOP Class UID") const;
+
     /** get SOP instance UID
      ** @return current SOP instance UID (might be invalid or an empty string)
      */
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrctpl.h b/dcmsr/include/dcmtk/dcmsr/dsrctpl.h
index 4b0e797..4ab55f4 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrctpl.h
@@ -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.
  *
  *  This software and supporting documentation are maintained by
@@ -27,6 +27,7 @@
 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
 
 #include "dcmtk/dcmsr/dsrtypes.h"
+#include "dcmtk/dcmsr/dsrdoctn.h"
 
 
 /*-----------------------*
@@ -48,6 +49,10 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
 
   public:
 
+    /** clear non-static member variables
+     */
+    virtual void clear();
+
     /** check whether template identification is set
      ** @return OFTrue if set, OFFalse otherwise
      */
@@ -68,6 +73,17 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
         return ExtensibleMode;
     }
 
+    /** compare template identification with given values
+     ** @param  templateIdentifier  template identifier to compare with
+     *  @param  mappingResource     mapping resource that defines the template
+     *  @param  mappingResourceUID  uniquely identifies the mapping resource (optional).
+     *                              Not used for comparison if the value is empty.
+     ** @result OFTrue if template identification is identical, OFFalse otherwise
+     */
+    virtual OFBool compareTemplateIdentication(const OFString &templateIdentifier,
+                                               const OFString &mappingResource,
+                                               const OFString &mappingResourceUID = "") const;
+
     /** get template identifier
      ** @return identifier of the template
      */
@@ -116,11 +132,19 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
      */
     virtual ~DSRTemplateCommon();
 
+    /** clear all entries in the list of node IDs, i.e.\ set them to their initial value,
+     *  which is 0
+     */
+    void clearEntriesInNodeList();
+
     /** reserve a certain number of entries in the list of node IDs.  Using this method
      *  can help to avoid unwanted memory allocations and copying of list entries.
-     ** @param  count  number of entries to be reserved (for later use)
+     ** @param  count       number of entries to be reserved (for later use)
+     *  @param  initialize  initialize all entries with a value of 0 if OFTrue, just
+     *                      reserve but do not create them otherwise (default)
      */
-    void reserveEntriesInNodeList(const size_t count);
+    void reserveEntriesInNodeList(const size_t count,
+                                  const OFBool initialize = OFFalse);
 
     /** store given entry at a certain position in the list of node IDs
      ** @param  pos     index of the list entry to use for storage (starting from 0)
@@ -135,6 +159,15 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
      */
     size_t getEntryFromNodeList(const size_t pos) const;
 
+    /** set given cursor to a specific node
+     ** @param  cursor  reference to document tree node cursor that is used to start
+     *                  searching the node from and that is set afterwards
+     *  @param  pos     index of the list entry that stores the ID of the node
+     ** @return ID of the new current node within the tree if successful, 0 otherwise
+     */
+    size_t gotoEntryFromNodeList(DSRDocumentTreeNodeCursor &cursor,
+                                 const size_t pos) const;
+
     /** set internal cursor of a given document tree to a specific node
      ** @param  tree  pointer to document tree where nodes and cursor are stored
      *  @param  pos   index of the list entry that stores the ID of the node
@@ -149,12 +182,14 @@ class DCMTK_DCMSR_EXPORT DSRTemplateCommon
      *  entry with a non-zero value (valid node ID) is found or the first list entry
      *  is reached.  This approach in particular supports handling of template tables
      *  where the order of content items is significant.
-     ** @param  tree     pointer to document tree where nodes and cursor are stored
-     *  @param  lastPos  index of the last node list entry to start searching from
+     ** @param  tree      pointer to document tree where nodes and cursor are stored
+     *  @param  lastPos   index of the last node list entry to start searching from
+     *  @param  firstPos  optional index of the node list entry to stop searching
      ** @return ID of the new current node within the tree if successful, 0 otherwise
      */
     size_t gotoLastEntryFromNodeList(DSRDocumentSubTree *tree,
-                                     const size_t lastPos);
+                                     const size_t lastPos,
+                                     const size_t firstPos = 0);
 
 
   private:
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrctxgr.h b/dcmsr/include/dcmtk/dcmsr/dsrctxgr.h
index 326ad97..a82c56c 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrctxgr.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrctxgr.h
@@ -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.
  *
  *  This software and supporting documentation are maintained by
@@ -57,7 +57,7 @@ class DCMTK_DCMSR_EXPORT DSRContextGroup
     /** check whether context group is extensible
      ** @return OFTrue if extensible, OFFalse otherwise
      */
-    virtual OFBool isExtensible() const
+    inline OFBool isExtensible() const
     {
         return ExtensibleMode;
     }
@@ -65,7 +65,7 @@ class DCMTK_DCMSR_EXPORT DSRContextGroup
     /** change mode specifying whether the context group is extensible or non-extensible
      ** @param  mode  set context group type to extensible if OFTrue (default)
      */
-    virtual void setExtensible(const OFBool mode = OFTrue)
+    inline void setExtensible(const OFBool mode = OFTrue)
     {
         ExtensibleMode = mode;
     }
@@ -150,6 +150,12 @@ class DCMTK_DCMSR_EXPORT DSRContextGroup
      */
     virtual OFCondition findCodedEntry(const DSRCodedEntryValue &codedEntryValue) const;
 
+    /** check whether this context group has any extended coded entries.
+     *  Extended coded entries are those non-standard codes added by addCodedEntry().
+     ** @return OFTrue if there are any extended coded entries, OFFalse otherwise
+     */
+    virtual OFBool hasExtendedCodedEntries() const;
+
     /** add a coded entry to this context group as an extension, i.e.\ as a non-standard
      *  code.  Adding a new coded entry by this method only works for extensible context
      *  groups.  Please note that the 'codedEntryValue' is not checked for validity.
@@ -235,7 +241,7 @@ class DCMTK_DCMSR_EXPORT DSRContextGroup
                                        DSRCodedEntryValue *foundCodedEntry,
                                        const OFBool enhancedEncodingMode = OFFalse) const;
 
-    /** check whether the currently selected coded entry is valid.
+    /** check whether a given coded entry is valid.
      *  Internally, the method hasCodedEntry() is used if 'definedContextGroup' is OFTrue.
      ** @param  codedEntryValue      coded entry to be checked
      *  @param  definedContextGroup  flag indicating whether this context group is used as
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrdoc.h b/dcmsr/include/dcmtk/dcmsr/dsrdoc.h
index fccbee4..b44d952 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrdoc.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
@@ -212,7 +212,8 @@ class DCMTK_DCMSR_EXPORT DSRDocument
      *  Replace the currently stored document tree with the given one.  Please note that the
      *  given 'tree' is checked before setting it, i.e. only a valid document tree is accepted.
      *  However, a new SOP instance is never created.  If needed, this has to be done with
-     *  createNewSOPInstance() in addition to or with createNewDocument() before this method.
+     *  createNewSOPInstance() in addition to or with createNewDocument() before this method
+     *  is called.
      ** @param  tree  document tree to be set (content will be copied)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -220,21 +221,26 @@ class DCMTK_DCMSR_EXPORT DSRDocument
 
     /** set document tree from root template.
      *  Replace the currently stored document tree with the one from the given root template.
-     *  This is just a convenience function, so the additional comments on the above setTree()
-     *  method also apply.
+     *  By default, this method expands the tree, i.e. instances of DSRIncludedTemplateTreeNode
+     *  that were added to the tree with DSRDocumentSubTree::includeTemplate() are replaced by
+     *  their content, i.e. by the internally managed subtree.
+     *  Please note that the additional comments on the above setTree() method also apply.
      ** @param  rootTemplate  template specifying the document tree to be set (content will be
      *                        copied).  This parameter cannot be "const" because of
      *                        DSRRootTemplate::getTree(), which is called internally and which
      *                        modifies the tree.
+     *  @param  expandTree    optional flag that allows for disabling the expanding of the
+     *                        document tree before setting it.  Please note that various
+     *                        output methods like write() or renderHTML() do not yet work on
+     *                        such trees.
      ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition setTreeFromRootTemplate(DSRRootTemplate &rootTemplate);
+    virtual OFCondition setTreeFromRootTemplate(DSRRootTemplate &rootTemplate,
+                                                const OFBool expandTree = OFTrue);
 
     /** get specific character set type.
-     *  If the type is unknown the original DICOM defined term can be retrieved
-     *  with the method getSpecificCharacterSet().  Please note that only the
-     *  first of possibly multiple values is used to determine the type from the
-     *  given DICOM code string (multiple character sets are not yet supported).
+     *  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)
      */
     virtual E_CharacterSet getSpecificCharacterSetType() const;
@@ -661,10 +667,13 @@ class DCMTK_DCMSR_EXPORT DSRDocument
   // --- set DICOM string attributes ---
 
     /** set specific character set.  The internal enumerated value is set accordingly.
-     *  Please note that code extensions techniques are not supported.  Therefore, only
-     *  a single value can be passed.
-     ** @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
+     *  Please note that this method does not return an error if the given 'value' is not
+     *  defined by the DICOM standard or not supported by this class, e.g. when no mapping
+     *  to the character set names needed for HTML/XHTML or XML output is defined.
+     *  If needed, check the return value of the method getSpecificCharacterSetType() for
+     *  DSRTypes::CS_unknown after calling this method.
+     ** @param  value  value to be set (single or multiple values) or "" for no value
+     *  @param  check  check 'value' for conformance with VR (CS) and VM (1-n) if enabled
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition setSpecificCharacterSet(const OFString &value,
@@ -1185,7 +1194,7 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     /// defined term: see class DSRTypes
     E_CharacterSet     SpecificCharacterSetEnum;
 
-    // DICOM attributes are listed ordered by module.
+    // DICOM attributes are listed ordered by Module.
     // The comments for each attribute describe "Name: (VR, VM, Type)".
     // Please note that for particular SR documents (e.g. Key Object Selection)
     // other rules might apply.  See DICOM standard for further reference.
@@ -1278,7 +1287,9 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     DcmLongString       ProtocolName;
     /// Series Description: (LO, 1, 3)
     DcmLongString       SeriesDescription;
-    /// Referenced Performed Procedure Step Sequence: (SQ, 1-n, 2)
+    /// Series Description Code Sequence: (SQ, 1, 3)
+     // - tbd: optional attribute not yet supported
+    /// Referenced Performed Procedure Step Sequence: (SQ, 1, 2)
     DcmSequenceOfItems  ReferencedPerformedProcedureStep;
 
     // --- SR Document General Module (M) ---
@@ -1299,12 +1310,18 @@ class DCMTK_DCMSR_EXPORT DSRDocument
     DcmTime             ContentTime;
     /// Verifying Observer Sequence: (SQ, 1-n, 1C)
     DcmSequenceOfItems  VerifyingObserver;
+    /// Author Observer Sequence: (SQ, 1-n, 3)
+     // - tbd: optional attribute not yet supported
+    /// Participant Sequence: (SQ, 1-n, 3)
+     // - tbd: optional attribute not yet supported
+    /// Custodial Organization Sequence: (SQ, 1, 3)
+     // - tbd: optional attribute not yet supported
     /// Predecessor Documents Sequence: (SQ, 1-n, 1C)
     DSRSOPInstanceReferenceList PredecessorDocuments;
     /// Identical Documents Sequence: (SQ, 1-n, 1C)
     DSRSOPInstanceReferenceList IdenticalDocuments;
     // Referenced Request Sequence: (SQ, 1-n, 1C)
-    // - tbd: conditional attribute not yet supported
+     // - tbd: conditional attribute not yet supported
     /// Performed Procedure Code Sequence: (SQ, 1-n, 2)
     DcmSequenceOfItems  PerformedProcedureCode;
     /// Current Requested Procedure Evidence Sequence: (SQ, 1-n, 1C)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrdocst.h b/dcmsr/include/dcmtk/dcmsr/dsrdocst.h
index ee0512b..af6f671 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrdocst.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
@@ -30,14 +30,34 @@
 #include "dcmtk/dcmsr/dsrdoctn.h"
 #include "dcmtk/dcmsr/dsrcitem.h"
 
+#include "dcmtk/ofstd/ofmem.h"
 #include "dcmtk/dcmdata/dcitem.h"
 
 
-/*-----------------------*
- *  forward declaration  *
- *-----------------------*/
+/*------------------------*
+ *  forward declarations  *
+ *------------------------*/
 
 class DSRIODConstraintChecker;
+class DSRSubTemplate;
+
+
+/*-------------------*
+ *  type definition  *
+ *-------------------*/
+
+typedef OFshared_ptr<DSRSubTemplate> DSRSharedSubTemplate;
+
+
+/*--------------------------*
+ *  template instantiation  *
+ *--------------------------*/
+
+// the following is required in order to help older Clang compilers,
+// e.g. Clang 3.0 and 3.1 on Mac OS X when building with shared libs
+#if defined(__clang__)
+template class DSRTree<DSRDocumentTreeNode>;
+#endif
 
 
 /*---------------------*
@@ -64,6 +84,9 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *  Please note that the internal cursor is not copied but reset, i.e. set to the root
      *  node.  Also the IOD constraint checker is not copied by this class but recreated
      *  by the derived class DSRDocumentTree (based on the corresponding document type).
+     *  This constructor also updates any by-reference relationships, i.e. translates the
+     *  references from the source 'tree' (based on the position string) to the IDs of the
+     *  newly created nodes.
      ** @param  tree  subtree to be copied
      */
     DSRDocumentSubTree(const DSRDocumentSubTree &tree);
@@ -95,6 +118,11 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual OFBool isValid() const;
 
+    /** check whether the internal cursor, which points to the current content item, is valid
+     ** @return OFTrue if cursor is valid, OFFalse otherwise
+     */
+    virtual OFBool isCursorValid() const;
+
     /** check whether this subtree is a valid document tree.
      *  In order to be a valid document tree, there should be a single root node only, with
      *  the value type "CONTAINER", and the internal relationship type of this node should be
@@ -105,6 +133,14 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual OFBool isValidDocumentTree(const E_RelationshipType defaultRelType = RT_unknown) const;
 
+    /** check whether this subtree is an expanded document tree.
+     *  Expanded means that no instances of DSRIncludedTemplateTreeNode exist in the document
+     *  tree, i.e. no templates were included or all of them were replaced by their content
+     *  (subtree).
+     ** @return OFTrue if subtree is an expanded document tree, OFFalse otherwise
+     */
+    virtual OFBool isExpandedDocumentTree() const;
+
     /** check whether template identification is set
      ** @return OFTrue if template identification is set, OFFalse otherwise
      */
@@ -120,12 +156,23 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
     virtual OFBool canUseTemplateIdentification() const;
 
     /** print current SR document tree to specified output stream
-     ** @param  stream  output stream
-     *  @param  flags   flag used to customize the output (see DSRTypes::PF_xxx)
+     ** @param  stream      output stream
+     *  @param  flags       optional flag used to customize the output (see DSRTypes::PF_xxx)
+     *  @param  posCounter  optional pointer to position counter that should be used
+     *                      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 = 0);
+                              const size_t flags = 0,
+                              DSRPositionCounter *posCounter = NULL);
+
+    /** write current SR document tree in XML format
+     ** @param  stream  output stream to which the XML document is written
+     *  @param  flags   optional flag used to customize the output (see DSRTypes::XF_xxx)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
+                                 const size_t flags = 0);
 
     /** get reference to current content item.
      *  This mechanism allows to access all content items without using pointers.
@@ -133,6 +180,20 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual DSRContentItem &getCurrentContentItem();
 
+    /** count number of content items (nodes) in the document tree.
+     *  This method iterates over all nodes that are stored in the document tree.
+     *  By default, included sub-templates are counted as a single node (see options).
+     ** @param  searchIntoSubTemplates      optional flag indicating whether to also
+     *                                      count the content of included sub-templates
+     *                                      (i.e.\ the nodes of the managed subtrees)
+     *  @param  countIncludedTemplateNodes  optional flag indicating whether to count
+     *                                      the DSRIncludedTemplateTreeNode instances
+     *                                      as nodes.  See includeTemplate() for details.
+     ** @return number of nodes, 0 if document tree is empty
+     */
+    size_t countNodes(const OFBool searchIntoSubTemplates = OFFalse,
+                      const OFBool countIncludedTemplateNodes = OFTrue) const;
+
     /** set internal cursor to a named node.
      *  If more than one node exists with the given concept name, the first one will
      *  be selected.  Use gotoNextNamedNode() in order to go to the next matching node.
@@ -147,6 +208,18 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
                                  const OFBool startFromRoot = OFTrue,
                                  const OFBool searchIntoSub = OFTrue);
 
+    /** set internal cursor to a named node (starting from the first children of the
+     *  current node).
+     *  If more than one node exists with the given concept name, the first one will
+     *  be selected.  Use gotoNextNamedNode() in order to go to the next matching node.
+     ** @param  conceptName    concept name of the node to be searched for
+     *  @param  searchIntoSub  flag indicating whether to search into sub-trees
+     *                         ("deep search") or on the current level only
+     ** @return ID of the new current node if successful, 0 otherwise
+     */
+    virtual size_t gotoNamedChildNode(const DSRCodedEntryValue &conceptName,
+                                      const OFBool searchIntoSub = OFTrue);
+
     /** set internal cursor to the next named node.
      *  Starts from "next" node, i.e. either the first children of the current node
      *  or the first sibling following the current node.
@@ -180,7 +253,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
 
     /** check whether specified content item can be added to the current one.
      *  This method can be used to decide which type of content items can be added prior
-     *  to really doing so.
+     *  to really doing so.  Please note that only by-value relationships are supported.
      *  Always returns true if no constraint checker is available but 'relationshipType'
      *  and 'valueType' have valid values.
      ** @param  relationshipType  relationship type of node to be checked with regard to
@@ -192,18 +265,19 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual OFBool canAddContentItem(const E_RelationshipType relationshipType,
                                      const E_ValueType valueType,
-                                     const E_AddMode addMode = AM_afterCurrent);
+                                     const E_AddMode addMode = AM_afterCurrent) const;
 
     /** check whether specified by-reference relationship can be added to the current
      *  content item.
      *  Always returns true if no constraint checker is available but 'relationshipType' and
-     *  'targetValueType' have valid values.
+     *  'targetValueType' have valid values.  The value type DSRTypes::VT_includedTemplate is
+     *  never allowed for the target content item.
      ** @param  relationshipType  type of relationship between current and target node
      *  @param  targetValueType   value type of the referenced node (target content item)
      ** @return OFTrue if specified by-reference relationship can be added, OFFalse otherwise
      */
     virtual OFBool canAddByReferenceRelationship(const E_RelationshipType relationshipType,
-                                                 const E_ValueType targetValueType);
+                                                 const E_ValueType targetValueType) const;
 
     /** add specified content item to the current one.
      *  If possible, this method creates a new node as specified and adds it to the current
@@ -250,11 +324,13 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *                            to the current one
      *  @param  valueType         value type of node to be added
      *  @param  conceptName       concept name of the node to be added
+     *  @param  check             if enabled, check 'conceptName for validity before setting it
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition addContentItem(const E_RelationshipType relationshipType,
                                        const E_ValueType valueType,
-                                       const DSRCodedEntryValue &conceptName);
+                                       const DSRCodedEntryValue &conceptName,
+                                       const OFBool check = OFTrue);
 
     /** add specified content item below the current one.
      *  If possible, this method creates a new node as specified and adds it below the current
@@ -266,11 +342,13 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *                            to the current one
      *  @param  valueType         value type of node to be added
      *  @param  conceptName       concept name of the node to be added
+     *  @param  check             if enabled, check 'conceptName for validity before setting it
      ** @return status, EC_Normal if successful, an error code otherwise
      */
     virtual OFCondition addChildContentItem(const E_RelationshipType relationshipType,
                                             const E_ValueType valueType,
-                                            const DSRCodedEntryValue &conceptName);
+                                            const DSRCodedEntryValue &conceptName,
+                                            const OFBool check = OFTrue);
 
     /** add specified by-reference relationship to the current content item.
      *  If possible, this method creates a new pseudo-node (relationship) and adds it to the
@@ -283,6 +361,15 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
     virtual size_t addByReferenceRelationship(const E_RelationshipType relationshipType,
                                               const size_t referencedNodeID);
 
+    /** update the position strings used to encode by-reference relationships (if any).
+     *  Internally, this method calls checkByReferenceRelationships() with the 'mode'
+     *  parameter being DSRTypes::CM_updatePositionString.  It should be called before
+     *  this subtree is cloned in order to make sure that the by-reference relationships
+     *  (if any) still work on the cloned subtree.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition updateByReferenceRelationships();
+
     /** check whether specified subtree can be inserted at the current position, i.e.\ added
      *  to the current content item.  Internally, the method canAddContentItem() is used for
      *  all top-level nodes of the document subtree.  In addition, if a constraint checker
@@ -296,9 +383,9 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *                          type is used if the one of a top-level node is "unknown".
      ** @return OFTrue if specified subtree can be inserted, OFFalse otherwise
      */
-    virtual OFBool canInsertSubTree(DSRDocumentSubTree *tree,
+    virtual OFBool canInsertSubTree(const DSRDocumentSubTree *tree,
                                     const E_AddMode addMode = AM_belowCurrent,
-                                    const E_RelationshipType defaultRelType = RT_unknown);
+                                    const E_RelationshipType defaultRelType = RT_unknown) const;
 
     /** insert specified subtree to this tree, i.e.\ add it to the current content item.
      *  If possible, this method adds a given new subtree to the current content item.
@@ -371,6 +458,30 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual DSRDocumentSubTree *cloneSubTree(const size_t stopAfterNodeID = 0) const;
 
+    /** created an expanded version of this (sub)tree.
+     *  Expanded means that no instance of DSRIncludedTemplateTreeNode will exist in the new
+     *  document tree, i.e. all of them are replaced by their content (subtree).  Please note
+     *  that the returned subtree has to be deleted by the caller if it is not inserted into
+     *  the document tree using insertSubTree().
+     ** @param  tree  variable that will store the pointer to the new subtree
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition createExpandedSubTree(DSRDocumentSubTree *&tree) const;
+
+    /** compare template identification of the root node with given values.
+     *  Please note that the comparison only takes place if there is a single node at the
+     *  root of the tree and its value type is CONTAINER.
+     ** @param  templateIdentifier  template identifier to compare with
+     *  @param  mappingResource     mapping resource that defines the template
+     *  @param  mappingResourceUID  uniquely identifies the mapping resource (optional).
+     *                              Not used for comparison if the value is empty.
+     ** @result OFTrue if template identification can be compared and the values are
+     *          identical, OFFalse otherwise
+     */
+    virtual OFBool compareTemplateIdentification(const OFString &templateIdentifier,
+                                                 const OFString &mappingResource,
+                                                 const OFString &mappingResourceUID = "") const;
+
     /** get template identifier and mapping resource from the root node of this tree.  See
      *  DSRDocumentTreeNode::getTemplateIdentification() for details on template identification.
      *  Please note that the template identification is only retrieved if there is a single node
@@ -444,11 +555,21 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      ** @param  node     pointer to the new node to be added
      *  @param  addMode  flag specifying at which position to add the new node
      *                   (e.g. after or below the current node)
-     ** @return ID of the new added node if successful, 0 otherwise
+     ** @return ID of the new node if successful, 0 otherwise
      */
     virtual size_t addNode(DSRDocumentTreeNode *node,
                            const E_AddMode addMode = AM_afterCurrent);
 
+    /** replace current node by the given one.
+     *  Please note that no copy of the given node is created.  Therefore, the node
+     *  should be created with new() - do not use a reference to a local variable.  If
+     *  the node could be replaced successfully, the "old" node (and all of its child
+     *  nodes) are deleted, and the cursor is set to the new one.
+     ** @param  node  pointer to the new node to replace the current one
+     ** @return ID of the new node if successful, 0 otherwise
+     */
+    virtual size_t replaceNode(DSRDocumentTreeNode *node);
+
     /** extract current node from tree.
      *  Please note that not only the specified node but also all of its child nodes are
      *  extracted from the tree.  The cursor is set automatically to a new valid position.
@@ -472,6 +593,38 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      */
     virtual size_t removeNode();
 
+    /** include specified sub-template, i.e.\ add a new DSRIncludedTemplateTreeNode, which
+     *  references this template, to the current content item.
+     *  Please note that no checks are performed that would make sure that the template
+     *  with its top-level nodes can actually be added, e.g. by using an IOD constraint
+     *  checker.  This is also the reason why this method is "protected" and not "public",
+     *  i.e. it can only be used by derived classes, e.g. DSRSubTemplate and its children.
+     ** @param  subTemplate     shared pointer to a sub-template that should be included
+     *                          into this tree (at the current position)
+     *  @param  addMode         flag specifying at which position to add the 'subTemplate'
+     *                          (e.g. after or below the current node)
+     *  @param  defaultRelType  default relationship type that will be used when the
+     *                          subtree that is managed by the 'subTemplate' is inserted
+     *                          into this tree and the relationship type of one of the
+     *                          top-level nodes is "unknown".  Also see documentation of
+     *                          createExpandedSubTree().
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition includeTemplate(const DSRSharedSubTemplate &subTemplate,
+                                        const E_AddMode addMode = AM_belowCurrent,
+                                        const E_RelationshipType defaultRelType = RT_unknown);
+
+    /** expand all "included template" content items in a given (sub)tree.
+     *  Expanding means that all instances of DSRIncludedTemplateTreeNode are replaced by
+     *  their content (subtree).
+     *  Please note that the internal cursor of the given 'tree' is set to the root node
+     *  if no error occurred.  Otherwise, the cursor points to the content item that
+     *  caused the problem.
+     ** @param  tree  pointer to the subtree that should be expanded
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition expandIncludedTemplates(DSRDocumentSubTree *tree) const;
+
     /** check the by-reference relationships (if any) for validity.
      *  This function checks whether all by-reference relationships possibly contained
      *  in the document tree are valid according to the following restrictions: source
@@ -507,8 +660,8 @@ class DCMTK_DCMSR_EXPORT DSRDocumentSubTree
      *                   If NULL, no checks are performed by this method.
      ** @return status, EC_Normal if successful, an error code otherwise
      */
-    virtual OFCondition checkSubTreeConstraints(DSRDocumentSubTree *tree,
-                                                DSRIODConstraintChecker *checker);
+    virtual OFCondition checkSubTreeConstraints(const DSRDocumentSubTree *tree,
+                                                const DSRIODConstraintChecker *checker) const;
 
     /// check relationship content constraints of the associated IOD
     DSRIODConstraintChecker *ConstraintChecker;
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrdoctn.h b/dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
index d93e290..7e4f7f6 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrdoctn.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
@@ -139,6 +139,18 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
     virtual OFCondition print(STD_NAMESPACE ostream &stream,
                               const size_t flags) const;
 
+    /** print extended information on the content item.
+     *  The following details are printed (if present and output is enabled): observation
+     *  date/time (in curly brackets), annotation text (in quotation marks) and template
+     *  identification (after a hash mark).  This method is intended to be called after
+     *  the general print() method, e.g. like it is done by DSRDocumentSubTree::print().
+     ** @param  stream  output stream to which the extended information should be printed
+     *  @param  flags   flag used to customize the output (see DSRTypes::PF_xxx)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition printExtended(STD_NAMESPACE ostream &stream,
+                                      const size_t flags) const;
+
     /** read content item from dataset.
      *  A number of readXXX() methods are called (see "protected" part) in order to retrieve all
      *  possibly nested content items from the dataset.
@@ -399,6 +411,17 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
     virtual OFCondition setObservationUID(const OFString &observationUID,
                                           const OFBool check = OFTrue);
 
+    /** compare template identification with given values
+     ** @param  templateIdentifier  template identifier to compare with
+     *  @param  mappingResource     mapping resource that defines the template
+     *  @param  mappingResourceUID  uniquely identifies the mapping resource (optional).
+     *                              Not used for comparison if the value is empty.
+     ** @result OFTrue if template identification is identical, OFFalse otherwise
+     */
+    virtual OFBool compareTemplateIdentification(const OFString &templateIdentifier,
+                                                 const OFString &mappingResource,
+                                                 const OFString &mappingResourceUID = "") const;
+
     /** get template identifier and mapping resource.
      *  This value pair identifies the template that was used to create this content item
      *  (and its children).  According to the DICOM standard, it is "required if a template
@@ -598,7 +621,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
     /** read document relationship macro
      ** @param  dataset            DICOM dataset from which the data should be read
      *  @param  constraintChecker  checks relationship content constraints of the associated IOD
-     *  @param  posString          location of the current content item (e.g. "1.2.3")
+     *  @param  posString          location of the current content item (e.g.\ "1.2.3")
      *  @param  flags              flag used to customize the reading process (see DSRTypes::RF_xxx)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -618,7 +641,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
 
     /** read document content macro
      ** @param  dataset    DICOM dataset from which the data should be read
-     *  @param  posString  location of the current content item (e.g. "1.2.3")
+     *  @param  posString  location of the current content item (e.g.\ "1.2.3")
      *  @param  flags      flag used to customize the reading process (see DSRTypes::RF_xxx)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -635,7 +658,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
     /** read content sequence
      ** @param  dataset            DICOM dataset from which the data should be read
      *  @param  constraintChecker  checks relationship content constraints of the associated IOD
-     *  @param  posString          location of the current content item (e.g. "1.2.3")
+     *  @param  posString          location of the current content item (e.g.\ "1.2.3")
      *  @param  flags              flag used to customize the reading process (see DSRTypes::RF_xxx)
      ** @return status, EC_Normal if successful, an error code otherwise
      */
@@ -706,10 +729,10 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTreeNode
 
   private:
 
-    /// flag indicating whether the content item is marked (e.g. used for digital signatures).
+    /// flag indicating whether the content item is marked (e.g.\ used for digital signatures).
     /// The default value is OFFalse.
     OFBool             MarkFlag;
-    /// flag indicating whether the content item is referenced (by-reference relationship)
+    /// flag indicating whether the content item is referenced (by-reference relationship).
     /// The default value is OFFalse.
     OFBool             ReferenceTarget;
 
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrdoctr.h b/dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
index db47f84..06798fb 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrdoctr.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
@@ -91,6 +91,14 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
      */
     virtual OFBool isValid() const;
 
+    /** print current SR document tree to specified output stream
+     ** @param  stream  output stream
+     *  @param  flags   optional flag used to customize the output (see DSRTypes::PF_xxx)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition print(STD_NAMESPACE ostream &stream,
+                              const size_t flags = 0);
+
     /** read SR document tree from DICOM dataset.
      *  Please note that the current document tree is also deleted if the reading fails.
      *  If logging is enabled, the reason for any error might be obtained from the
@@ -104,7 +112,8 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
                              const E_DocumentType documentType,
                              const size_t flags = 0);
 
-    /** write current SR document tree to DICOM dataset
+    /** write current SR document tree to DICOM dataset.
+     *  Please note that included (non-expanded) sub-templates are not supported.
      ** @param  dataset      reference to DICOM dataset where the current tree should be
      *                       written to.  The 'dataset' is not cleared before writing to it!
      *  @param  markedItems  optional stack where pointers to all 'marked' content items
@@ -125,15 +134,8 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
                                 DSRXMLCursor cursor,
                                 const size_t flags);
 
-    /** write current SR document tree in XML format
-     ** @param  stream  output stream to which the XML document is written
-     *  @param  flags   flag used to customize the output (see DSRTypes::XF_xxx)
-     ** @return status, EC_Normal if successful, an error code otherwise
-     */
-    virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
-                                 const size_t flags);
-
-    /** render current SR document tree in HTML/XHTML format
+    /** render current SR document tree in HTML/XHTML format.
+     *  Please note that included (non-expanded) sub-templates are not supported.
      ** @param  docStream    output stream to which the main HTML/XHTML document is written
      *  @param  annexStream  output stream to which the HTML/XHTML document annex is written
      *  @param  flags        optional flag used to customize the output (see DSRTypes::HF_xxx)
@@ -144,7 +146,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
                                    const size_t flags = 0);
 
     /** get document type
-     ** return current document type (might be DSRTypes::DT_invalid)
+     ** @return current document type (might be DSRTypes::DT_invalid)
      */
     inline E_DocumentType getDocumentType() const
     {
@@ -183,7 +185,7 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
      */
     virtual OFBool canAddContentItem(const E_RelationshipType relationshipType,
                                      const E_ValueType valueType,
-                                     const E_AddMode addMode = AM_afterCurrent);
+                                     const E_AddMode addMode = AM_afterCurrent) const;
 
     /** check whether specified subtree can be inserted at the current position, i.e.\ added
      *  to the current content item.
@@ -198,9 +200,9 @@ class DCMTK_DCMSR_EXPORT DSRDocumentTree
      *                          type is used if the one of a top-level node is "unknown".
      ** @return OFTrue if specified subtree can be inserted, OFFalse otherwise
      */
-    virtual OFBool canInsertSubTree(DSRDocumentSubTree *tree,
+    virtual OFBool canInsertSubTree(const DSRDocumentSubTree *tree,
                                     const E_AddMode addMode = AM_belowCurrent,
-                                    const E_RelationshipType defaultRelType = RT_unknown);
+                                    const E_RelationshipType defaultRelType = RT_unknown) const;
 
     /** check whether the document tree complies with the constraints of the given checker.
      *  This method also checks whether the currently stored document tree is either empty
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrenhcc.h b/dcmsr/include/dcmtk/dcmsr/dsrenhcc.h
index 5f07e98..86b3c28 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrenhcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrenhcc.h
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSREnhancedSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_EnhancedSR)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrimgvl.h b/dcmsr/include/dcmtk/dcmsr/dsrimgvl.h
index 3fee4e4..01f622c 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrimgvl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrimgvl.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
@@ -135,6 +135,11 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
      */
     virtual OFBool isShort(const size_t flags) const;
 
+    /** check whether the current image reference points to a DICOM segmentation object
+     ** @return OFTrue if a segmentation object is referenced, OFFalse otherwise
+     */
+    virtual OFBool isSegmentation() const;
+
     /** print image reference.
      *  The output of a typical image reference value looks like this: (CT image,"1.2.3") or
      *  (CT image,"1.2.3"),(GSPS,"1.2.3.4") if a presentation state is present.
@@ -345,6 +350,14 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
         return FrameList;
     }
 
+    /** get read-only access to list of referenced frame numbers
+     ** @return constant reference to frame list
+     */
+    inline const DSRImageFrameList &getFrameList() const
+    {
+        return FrameList;
+    }
+
     /** get reference to list of referenced segment numbers.
      *  According to the DICOM standard, this list is required if the referenced image is
      *  a segmentation object, and the reference does not apply to all segments and the list
@@ -356,6 +369,14 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
         return SegmentList;
     }
 
+    /** get read-only access to list of referenced segment numbers
+     ** @return constant reference to segment list
+     */
+    inline const DSRImageSegmentList &getSegmentList() const
+    {
+        return SegmentList;
+    }
+
     /** check whether the image reference applies to a specific frame.
      *  The image reference applies to a frame (of multiframe images) if the list of
      *  referenced frame numbers is empty or the frame number is part of the list.
@@ -397,10 +418,16 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
      */
     virtual OFCondition writeItem(DcmItem &dataset) const;
 
+    /** check whether the given SOP class UID refers to a DICOM segmentation object
+     ** @param  sopClassUID  SOP class UID to be checked
+     ** @return OFTrue if the UID refers to a segmentation object, OFFalse otherwise
+     */
+    virtual OFBool isSegmentationObject(const OFString &sopClassUID) const;
+
     /** check the specified SOP class UID for validity.
      *  This method further specializes the checks performed in the base class
-     *  DSRCompositeReferenceValue.  All image SOP classes that are defined in
-     *  DICOM PS 3.6-2014a and the "Segmentation Storage SOP Class" are allowed.
+     *  DSRCompositeReferenceValue.  All image and segmentation SOP classes that
+     *  are defined in DICOM PS 3.6-2015c are allowed.
      ** @param  sopClassUID  SOP class UID to be checked
      ** @return status, EC_Normal if value is valid, an error code otherwise
      */
@@ -424,15 +451,19 @@ class DCMTK_DCMSR_EXPORT DSRImageReferenceValue
     virtual OFCondition checkRealWorldValueMapping(const DSRCompositeReferenceValue &referenceValue) const;
 
     /** check the given list of frame and segment numbers for validity.
-     *  The only check that is currently performed is that either both lists are empty or only
-     *  one of them is non-empty, because otherwise the "type 1C" condition would be violated.
-     ** @param  frameList       list of referenced frame numbers to be checked
+     *  Either both lists have to be empty or only one of them has to be non-empty,
+     *  because otherwise the "type 1C" condition would be violated.  Also the list
+     *  of segment numbers should only be non-empty for one of the DICOM segmentation
+     *  objects (see isSegmentationObject()).
+     ** @param  sopClassUID     SOP class UID of the image object to be checked
+     *  @param  frameList       list of referenced frame numbers to be checked
      *  @param  segmentList     list of referenced segment numbers to be checked
-     *  @param  reportWarnings  if enabled, report a warning message on each deviation from an
-     *                          expected value to the logger
+     *  @param  reportWarnings  if enabled, report a warning message on each deviation
+     *                          from an expected value to the logger
      ** @return status, EC_Normal if checked data is valid, an error code otherwise
      */
-    OFCondition checkListData(const DSRImageFrameList &frameList,
+    OFCondition checkListData(const OFString &sopClassUID,
+                              const DSRImageFrameList &frameList,
                               const DSRImageSegmentList &segmentList,
                               const OFBool reportWarnings = OFFalse) const;
 
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrimpcc.h b/dcmsr/include/dcmtk/dcmsr/dsrimpcc.h
index 2d4242e..5c72fe9 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrimpcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrimpcc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,8 +33,10 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the
- *  Implantation Plan SR Document IOD
+/** Class for checking the relationship content constraints of the Implantation Plan
+ *  SR Document IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 7000
+ *  (Implantation Plan) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRImplantationPlanSRDocumentConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRImplantationPlanSRDocumentConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "7000"
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ImplantationPlanSRDocument)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsriodcc.h b/dcmsr/include/dcmtk/dcmsr/dsriodcc.h
index e08892e..fd13781 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsriodcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsriodcc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -59,10 +59,14 @@ class DCMTK_DCMSR_EXPORT DSRIODConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const = 0;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) if required, NULL otherwise
+    /** 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 const char *getRootTemplateIdentifier() const = 0;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const = 0;
 
     /** get the associated document type of the SR IOD (abstract)
      ** @return document type (see DSRTypes::E_DocumentType)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrkeycc.h b/dcmsr/include/dcmtk/dcmsr/dsrkeycc.h
index ce26ef7..4ad2836 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrkeycc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrkeycc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,8 +33,10 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the
- *  Key Object Selection Document IOD
+/** Class for checking the relationship content constraints of the Key Object
+ *  Selection Document IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 2010
+ *  (Key Object Selection) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRKeyObjectSelectionDocumentConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRKeyObjectSelectionDocumentConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "2010"
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_KeyObjectSelectionDocument)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrmaccc.h b/dcmsr/include/dcmtk/dcmsr/dsrmaccc.h
index d954050..66c742b 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrmaccc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrmaccc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,8 +33,10 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the
- *  Macular Grid Thickness And Volume Report IOD
+/** Class for checking the relationship content constraints of the Macular Grid
+ *  Thickness And Volume Report IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 2100
+ *  (Macular Grid Thickness and Volume Report) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRMacularGridThicknessAndVolumeReportConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRMacularGridThicknessAndVolumeReportConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "2100"
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_MacularGridThicknessAndVolumeReport)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrmamcc.h b/dcmsr/include/dcmtk/dcmsr/dsrmamcc.h
index 2c72722..7335f37 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrmamcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrmamcc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,7 +33,12 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Mammography CAD SR IOD
+/** Class for checking the relationship content constraints of the Mammography CAD SR
+ *  IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 4000
+ *  (Mammography CAD Document Root) invoked at the root node.  When a content item
+ *  sub-tree from a prior document is duplicated by-value, its observation context
+ *  shall be defined by TID 1001 (Observation Context) and its subordinate templates."
  */
 class DCMTK_DCMSR_EXPORT DSRMammographyCadSRConstraintChecker
   : public DSRIODConstraintChecker
@@ -59,10 +64,14 @@ class DCMTK_DCMSR_EXPORT DSRMammographyCadSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "4000"
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_MammographyCadSR)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrnumvl.h b/dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
index 9c10355..7f4d599 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrnumvl.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
@@ -35,7 +35,7 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for numeric measurement values
+/** Class for numeric values and measurements
  */
 class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
 {
@@ -49,7 +49,7 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
     DSRNumericMeasurementValue();
 
     /** constructor
-     ** @param  numericValue     numeric measurement value (VR=DS, mandatory)
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
      *  @param  measurementUnit  code representing the units of measurement (mandatory)
      *  @param  check            if enabled, check 'numericValue' and 'measurementUnit' for
      *                           validity before setting them.  See corresponding setValue()
@@ -60,7 +60,18 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
                                const OFBool check = OFTrue);
 
     /** constructor
-     ** @param  numericValue     numeric measurement value (VR=DS, mandatory)
+     ** @param  valueQualifier  code representing the numeric value qualifier.  Used to
+     *                          specify the reason for the absence of the measured value
+     *                          sequence, i.e. why the numeric value and measurement unit
+     *                          are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See corresponding setValue() method for details.
+     */
+    DSRNumericMeasurementValue(const DSRCodedEntryValue &valueQualifier,
+                               const OFBool check = OFTrue);
+
+    /** constructor
+     ** @param  numericValue     numeric value (VR=DS, mandatory)
      *  @param  measurementUnit  code representing the units of measurement (mandatory)
      *  @param  valueQualifier   code representing the numeric value qualifier (optional).
      *                           Can also be used to specify the reason for the absence of
@@ -111,11 +122,21 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
      */
     virtual OFBool isEmpty() const;
 
+    /** check whether the current numeric measurement value is complete, i.e.\ whether the
+     *  numeric value is non-empty and the measurement unit is complete, or whether the
+     *  value qualifier is complete.  This is just a basic check that might be useful for
+     *  "validating" input data.  See isValid() for a more sophisticated way of checking
+     *  the current numeric measurement value.
+     ** @return OFTrue if value is complete, OFFalse otherwise
+     */
+    virtual OFBool isComplete() const;
+
     /** print numeric measurement value.
      *  The output of a typical numeric measurement value looks like this:
-     *  "3.5" (cm,UCUM[1.4],"centimeter").  If the value is empty the text "empty" is printed
-     *  instead.  The numeric value qualifier as well as the possibly available additional
-     *  floating point and rational representations of the numeric value are never printed.
+     *  "3.5" (cm,UCUM[1.4],"centimeter").  If the value is empty, the text "empty" is printed
+     *  instead, followed by the numeric value qualifier (if present).  The possibly available
+     *  additional floating point and rational representations of the numeric value are never
+     *  printed.
      ** @param  stream  output stream to which the numeric measurement value should be printed
      *  @param  flags   flag used to customize the output (not used)
      ** @return status, EC_Normal if successful, an error code otherwise
@@ -271,6 +292,19 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
                          const DSRCodedEntryValue &measurementUnit,
                          const OFBool check = OFTrue);
 
+    /** set empty numeric value and measurement unit with a numeric value qualifier.
+     *  Before setting the value, it is usually checked.  If the value is invalid, the
+     *  current numeric measurement value is not replaced and remains unchanged.
+     ** @param  valueQualifier  numeric value qualifier to be set.  Used to specify the
+     *                          reason for the absence of the measured value sequence,
+     *                          i.e. why the numeric value and measurement unit are empty.
+     *  @param  check           if enabled, check value for validity before setting it.
+     *                          See checkNumericValueQualifier() method for details.
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    OFCondition setValue(const DSRCodedEntryValue &valueQualifier,
+                         const OFBool check = OFTrue);
+
     /** set numeric value, measurement unit and numeric value qualifier.
      *  Before setting the values, they are usually checked.  Please note that both
      *  'numericValue' and 'measurementUnit' either have to be empty or non-empty.
@@ -495,4 +529,16 @@ class DCMTK_DCMSR_EXPORT DSRNumericMeasurementValue
 };
 
 
+/** output stream operator for numeric measurement values.
+ *  Internally, the DSRNumericMeasurementValue::print() method is used, i.e. the output
+ *  looks like this: "3.5" (cm,UCUM[1.4],"centimeter") or "empty" (if the value is empty)
+ *  @param  stream              output stream to which the numeric measurement value is
+ *                              printed
+ *  @param  numericMeasurement  numeric measurement value to be printed
+ *  @return reference to output stream
+ */
+DCMTK_DCMSR_EXPORT STD_NAMESPACE ostream &operator<<(STD_NAMESPACE ostream &stream,
+                                                     const DSRNumericMeasurementValue &numericMeasurement);
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrposcn.h b/dcmsr/include/dcmtk/dcmsr/dsrposcn.h
new file mode 100644
index 0000000..0768b9e
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/dsrposcn.h
@@ -0,0 +1,152 @@
+/*
+ *
+ *  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: DSRPositionCounter
+ *
+ */
+
+
+#ifndef DSRPOSCN_H
+#define DSRPOSCN_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/ofstd/ofstring.h"
+#include "dcmtk/ofstd/oflist.h"
+
+#include "dcmtk/dcmsr/dsdefine.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Class implementing a position counter to be used for iterating a tree of nodes
+ */
+class DCMTK_DCMSR_EXPORT DSRPositionCounter
+{
+  public:
+
+    /** default constructor
+     */
+    DSRPositionCounter();
+
+    /** copy constructor
+     ** @param  counter  object to be copied
+     */
+    DSRPositionCounter(const DSRPositionCounter &counter);
+
+    /** destructor
+     */
+    virtual ~DSRPositionCounter();
+
+    /** assignment operator
+     ** @param  counter  object to be copied
+     ** @return reference to modified cursor (this object)
+     */
+    DSRPositionCounter &operator=(const DSRPositionCounter &counter);
+
+    /** conversion operator that returns the position on the current level
+     *  (0 if the position counter is invalid)
+     */
+    inline operator size_t () const
+    {
+        return Position;
+    }
+
+    /** pre-increment operator.  Increases the position on the current level by 1.
+     *  Also makes the position counter valid if it was invalid before.
+     */
+    inline DSRPositionCounter &operator++()
+    {
+        ++Position;
+        return *this;
+    }
+
+    /** pre-decrement operator.  Decreases the position on the current level by 1.
+     *  This makes the position counter invalid if the position was 1 before.
+     */
+    inline DSRPositionCounter &operator--()
+    {
+        /* avoid underflow */
+        if (Position > 0) --Position;
+        return *this;
+    }
+
+    /** clear all member variables.
+     *  The position counter becomes invalid afterwards (same state as after default
+     *  construction).  Also see initialize().
+     */
+    void clear();
+
+    /** initialize the position counter
+     ** @param  valid  flag specifying whether the counter should be initialized as
+     *                 valid (default) or invalid
+     */
+    void initialize(const OFBool valid = OFTrue);
+
+    /** check whether position counter is valid (i.e.\ has been initialized)
+     ** @return OFTrue if valid, OFFalse otherwise
+     */
+    inline OFBool isValid() const
+    {
+        return (Position > 0);
+    }
+
+    /** go one level up, i.e.\ restore the position on the next upper level and forget
+     *  about the current level
+     ** @return OFTrue if successful, OFFalse otherwise
+     */
+    OFBool goUp();
+
+    /** go one level down, i.e.\ store the position on the current level and start with
+     *  1 on the new level
+     ** @return OFTrue if successful, OFFalse otherwise
+     */
+    OFBool goDown();
+
+    /** get current level of the position counter.
+     *  The top most (root) level is 1, the next lower level is 2, etc.
+     ** @return number of the current level if valid, 0 otherwise
+     */
+    inline size_t getLevel() const
+    {
+        /* check for valid counter */
+        return isValid() ? PositionList.size() + 1 : 0;
+    }
+
+    /** get string representing the current state of the position counter.
+     *  See DSRTreeNodeCursor::getPosition() for details.
+     ** @param  position   variable where the position string should be stored
+     *  @param  separator  character used to separate the figures (default: '.')
+     ** @return reference to the resulting position string (empty if invalid)
+     */
+    const OFString &getString(OFString &position,
+                              const char separator = '.') const;
+
+
+  private:
+
+    /// current position within the current level
+    size_t Position;
+    /// list of position counters in upper levels
+    OFList<size_t> PositionList;
+};
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrprocc.h b/dcmsr/include/dcmtk/dcmsr/dsrprocc.h
index bca1c89..55626dd 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrprocc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrprocc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,7 +33,9 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the Procedure Log IOD
+/** Class for checking the relationship content constraints of the Procedure Log IOD.
+ *  According to DICOM PS 3.3: "The document may be constructed from Baseline TID 3001
+ *  (Procedure Log) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRProcedureLogConstraintChecker
   : public DSRIODConstraintChecker
@@ -55,14 +57,18 @@ class DCMTK_DCMSR_EXPORT DSRProcedureLogConstraintChecker
     virtual OFBool isByReferenceAllowed() const;
 
     /** check whether this SR IOD requires template support
-     ** @return always returns OFTrue, i.e. template support is required
+     ** @return always returns OFFalse, i.e. template support is not required
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "3001"
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_ProcedureLog)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h b/dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
index 2d2f2a1..9fa55d6 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
@@ -34,7 +34,9 @@
  *---------------------*/
 
 /** Class for checking the relationship content constraints of the Radiopharmaceutical
- *  Radiation Dose SR IOD
+ *  Radiation Dose SR IOD.
+ *  According to DICOM PS 3.3: "The document may be constructed from Baseline TID 10021
+ *  (Radiopharmaceutical Radiation Dose) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRRadiopharmaceuticalRadiationDoseConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRRadiopharmaceuticalRadiationDoseConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_RadiopharmaceuticalRadiationDoseSR)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrrtpl.h b/dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
index 8f78a1e..a38447f 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
@@ -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.
  *
  *  This software and supporting documentation are maintained by
@@ -95,7 +95,9 @@ class DCMTK_DCMSR_EXPORT DSRRootTemplate
      */
     virtual void clear();
 
-    /** check whether the current internal state is valid
+    /** check whether the current internal state is valid.
+     *  That means, whether both the internally stored document tree and the template
+     *  identification are valid.
      ** @return OFTrue if valid, OFFalse otherwise
      */
     virtual OFBool isValid() const;
@@ -104,7 +106,7 @@ class DCMTK_DCMSR_EXPORT DSRRootTemplate
      *  document tree starting from the root node
      ** @return always returns OFTrue since this class handles root templates
      */
-    OFBool isRootTemplate() const
+    inline OFBool isRootTemplate() const
     {
         return OFTrue;
     }
@@ -112,7 +114,7 @@ class DCMTK_DCMSR_EXPORT DSRRootTemplate
     /** get read-only access to internally stored document tree.
      *  This method is not "const" because the template identification is set/updated
      *  automatically for the root node of the document tree (if applicable).
-     ** @return get constant reference to internally stored document tree
+     ** @return constant reference to internally stored document tree
      */
     virtual const DSRDocumentTree &getTree();
 
@@ -134,9 +136,26 @@ class DCMTK_DCMSR_EXPORT DSRRootTemplate
 
   // --- introduce some methods from base class to public API
 
+    using DSRDocumentTree::isEmpty;
+    using DSRDocumentTree::isCursorValid;
     using DSRDocumentTree::getDocumentType;
     using DSRDocumentTree::print;
+    using DSRDocumentTree::writeXML;
     using DSRDocumentTree::countNodes;
+    using DSRDocumentTree::countChildNodes;
+    using DSRDocumentTree::hasParentNode;
+    using DSRDocumentTree::hasChildNodes;
+    using DSRDocumentTree::hasPreviousNode;
+    using DSRDocumentTree::hasNextNode;
+    using DSRDocumentTree::hasSiblingNodes;
+    using DSRDocumentTree::iterate;
+    using DSRDocumentTree::gotoRoot;
+    using DSRDocumentTree::gotoFirst;
+    using DSRDocumentTree::gotoLast;
+    using DSRDocumentTree::gotoPrevious;
+    using DSRDocumentTree::gotoNext;
+    using DSRDocumentTree::gotoParent;
+    using DSRDocumentTree::gotoChild;
     using DSRDocumentTree::gotoNamedNode;
     using DSRDocumentTree::gotoNextNamedNode;
     using DSRDocumentTree::gotoAnnotatedNode;
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrscovl.h b/dcmsr/include/dcmtk/dcmsr/dsrscovl.h
index 75651fa..1e9d852 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrscovl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrscovl.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
@@ -261,6 +261,8 @@ class DCMTK_DCMSR_EXPORT DSRSpatialCoordinatesValue
     DSRGraphicDataList      GraphicDataList;
     /// Fiducial UID (VR=UI, VM=1, type 3)
     OFString                FiducialUID;
+    /// Pixel Origin Interpretation (VR=CS, VM=1, type 1C)
+     // - tbd: conditional attribute not yet supported
 };
 
 
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrsoprf.h b/dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
index f6620b4..92f1cb4 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrsoprf.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
@@ -234,6 +234,15 @@ class DCMTK_DCMSR_EXPORT DSRSOPInstanceReferenceList
      */
     const OFString &getSOPClassUID(OFString &stringValue) const;
 
+    /** get name associated with the SOP class UID of the currently selected entry
+     ** @param  stringValue  reference to string variable in which the result is stored
+     *  @param  defaultName  string value that is returned if the SOP class UID is unknown
+     ** @return reference to the resulting string (might be empty even if 'defaultName' is
+     *          non-empty, e.g. in case no entry is currently selected)
+     */
+    const OFString &getSOPClassName(OFString &stringValue,
+                                    const OFString &defaultName = "unknown SOP Class UID") const;
+
     /** get the retrieve application entity title of the currently selected entry (optional).
      *  The resulting string may contain multiple values separated by a backslash ("\").
      ** @param  stringValue  reference to string variable in which the result is stored
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrspecc.h b/dcmsr/include/dcmtk/dcmsr/dsrspecc.h
index 2e390b3..ca723c3 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrspecc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrspecc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,8 +33,10 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the
- *  Spectacle Prescription Report IOD
+/** Class for checking the relationship content constraints of the Spectacle
+ *  Prescription Report IOD.
+ *  According to DICOM PS 3.3: "The document shall be constructed from TID 2020
+ *  (Spectacle Prescription Report) invoked at the root node."
  */
 class DCMTK_DCMSR_EXPORT DSRSpectaclePrescriptionReportConstraintChecker
   : public DSRIODConstraintChecker
@@ -60,10 +62,14 @@ class DCMTK_DCMSR_EXPORT DSRSpectaclePrescriptionReportConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return root template identifier (TID) "2020"
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_SpectaclePrescriptionReport)
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrstpl.h b/dcmsr/include/dcmtk/dcmsr/dsrstpl.h
index 1b16435..6897418 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrstpl.h
@@ -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.
  *
  *  This software and supporting documentation are maintained by
@@ -86,7 +86,9 @@ class DCMTK_DCMSR_EXPORT DSRSubTemplate
      */
     virtual void clear();
 
-    /** check whether the current internal state is valid
+    /** check whether the current internal state is valid.
+     *  That means, whether both the internally stored subtree and the template
+     *  identification are valid.
      ** @return OFTrue if valid, OFFalse otherwise
      */
     virtual OFBool isValid() const;
@@ -95,7 +97,7 @@ class DCMTK_DCMSR_EXPORT DSRSubTemplate
      *  document tree starting from the root node
      ** @return always returns OFFalse since this class handles non-root templates only
      */
-    OFBool isRootTemplate() const
+    inline OFBool isRootTemplate() const
     {
         return OFFalse;
     }
@@ -103,7 +105,7 @@ class DCMTK_DCMSR_EXPORT DSRSubTemplate
     /** get read-only access to internally stored subtree.
      *  This method is not "const" because the template identification is set/updated
      *  automatically for the root node of the subtree (if applicable).
-     ** @return get constant reference to internally stored subtree
+     ** @return constant reference to internally stored subtree
      */
     virtual const DSRDocumentSubTree &getTree();
 
@@ -125,8 +127,25 @@ class DCMTK_DCMSR_EXPORT DSRSubTemplate
 
   // --- introduce some methods from base class to public API
 
+    using DSRDocumentSubTree::isEmpty;
+    using DSRDocumentSubTree::isCursorValid;
     using DSRDocumentSubTree::print;
+    using DSRDocumentSubTree::writeXML;
     using DSRDocumentSubTree::countNodes;
+    using DSRDocumentSubTree::countChildNodes;
+    using DSRDocumentSubTree::hasParentNode;
+    using DSRDocumentSubTree::hasChildNodes;
+    using DSRDocumentSubTree::hasPreviousNode;
+    using DSRDocumentSubTree::hasNextNode;
+    using DSRDocumentSubTree::hasSiblingNodes;
+    using DSRDocumentSubTree::iterate;
+    using DSRDocumentSubTree::gotoRoot;
+    using DSRDocumentSubTree::gotoFirst;
+    using DSRDocumentSubTree::gotoLast;
+    using DSRDocumentSubTree::gotoPrevious;
+    using DSRDocumentSubTree::gotoNext;
+    using DSRDocumentSubTree::gotoParent;
+    using DSRDocumentSubTree::gotoChild;
     using DSRDocumentSubTree::gotoNamedNode;
     using DSRDocumentSubTree::gotoNextNamedNode;
     using DSRDocumentSubTree::gotoAnnotatedNode;
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtncsr.h b/dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
index 561131f..4d731df 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrtncsr.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
@@ -26,12 +26,11 @@
 
 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
 
-#include "dcmtk/ofstd/ofstring.h"
 #include "dcmtk/ofstd/ofstack.h"
-#include "dcmtk/ofstd/oflist.h"
 
 #include "dcmtk/dcmsr/dsdefine.h"
 #include "dcmtk/dcmsr/dsrtypes.h"
+#include "dcmtk/dcmsr/dsrposcn.h"
 #include "dcmtk/dcmsr/dsrtnant.h"
 
 
@@ -62,10 +61,14 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      */
     DSRTreeNodeCursor(const DSRTreeNodeCursor<T> &cursor);
 
-    /** constructor
-     ** @param  node  pointer to tree node used to initialize the cursor (set to this node)
+    /** constructor.
+     *  See comments on setCursor(T*) method.
+     ** @param  node      pointer to tree node used to initialize the cursor
+     *  @param  position  optional pointer to position counter that should be used to
+     *                    initialize the internal counter
      */
-    DSRTreeNodeCursor(T *node);
+    DSRTreeNodeCursor(T *node,
+                      const DSRPositionCounter *position = NULL);
 
     /** destructor
      */
@@ -77,13 +80,15 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      */
     DSRTreeNodeCursor<T> &operator=(const DSRTreeNodeCursor<T> &cursor);
 
-    /** assignment operator
+    /** assignment operator.
+     *  See comments on setCursor(T*) method.
      ** @param  node  node to which the cursor should be set
      ** @return reference to modified cursor (this object)
      */
     DSRTreeNodeCursor<T> &operator=(T *node);
 
-    /** clear all member variables
+    /** clear all member variables.
+     *  The cursor becomes invalid afterwards (same state as after default construction).
      */
     virtual void clear();
 
@@ -104,27 +109,27 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
     /** check whether the current node has a parent
      ** @return OFTrue if the current node has a parent, OFFalse otherwise
      */
-    OFBool hasParentNode() const;
+    inline OFBool hasParentNode() const;
 
     /** check whether the current node has any children
      ** @return OFTrue if the current node has any children, OFFalse otherwise
      */
-    OFBool hasChildNodes() const;
+    inline OFBool hasChildNodes() const;
 
     /** check whether the current node has a preceding sibling
      ** @return OFTrue if the current node has a preceding sibling, OFFalse otherwise
      */
-    OFBool hasPreviousNode() const;
+    inline OFBool hasPreviousNode() const;
 
     /** check whether the current node has a following sibling
      ** @return OFTrue if the current node has a following sibling, OFFalse otherwise
      */
-    OFBool hasNextNode() const;
+    inline OFBool hasNextNode() const;
 
     /** check whether the current node has any siblings
      ** @return OFTrue if the current node has any siblings, OFFalse otherwise
      */
-    OFBool hasSiblingNodes() const;
+    inline OFBool hasSiblingNodes() const;
 
     /** get pointer to current node
      ** @return pointer to current node (might be NULL)
@@ -135,7 +140,7 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      *  Can be used to have a lookup to the parent node without changing the cursor.
      ** @return pointer to parent node (if any), NULL otherwise
      */
-    virtual const T *getParentNode();
+    virtual const T *getParentNode() const;
 
     /** get pointer to first child node.
      *  Can be used to have a lookup to the first child node without changing the cursor.
@@ -187,6 +192,14 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      */
     size_t goDown();
 
+    /** @copydoc goUp()
+     */
+    inline size_t gotoParent();
+
+    /** @copydoc goDown()
+     */
+    inline size_t gotoChild();
+
     /** iterate over all nodes. Starts from current position!
      ** @param  searchIntoSub  flag indicating whether to search into sub-trees
      *                         ("deep search") or on the current level only
@@ -221,13 +234,20 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      *  the navigation methods above do return this ID too.
      ** @return ID of the current node if valid, 0 otherwise
      */
-    size_t getNodeID() const;
+    inline size_t getNodeID() const;
 
     /** get current level.
      *  The level starts with 1 for the root node, then 2 for its child nodes, etc.
      ** @return number of the current level if valid, 0 otherwise
      */
-    size_t getLevel() const;
+    inline size_t getLevel() const;
+
+    /** get reference to internal position counter.
+     *  Please note that this method allows for manipulating the internal position
+     *  counter, so handle with care!
+     ** @return reference to internal position counter
+     */
+    inline DSRPositionCounter &getPositionCounter();
 
     /** get position string of the current node.
      *  Specifies the position of each node by means of a dot separated string of
@@ -240,8 +260,8 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      *  @param  separator  character used to separate the figures (default: '.')
      ** @return reference to the resulting position string (empty if invalid)
      */
-    const OFString &getPosition(OFString &position,
-                                const char separator = '.') const;
+    inline const OFString &getPosition(OFString &position,
+                                       const char separator = '.') const;
 
 
   protected:
@@ -250,8 +270,19 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
      */
     void clearNodeCursorStack();
 
+    /** get cursor
+     ** @return reference to cursor (this object)
+     */
+    inline const DSRTreeNodeCursor<T> &getCursor() const;
+
+    /** set cursor to specified object
+     ** @param  cursor  object to set this cursor to
+     */
+    inline void setCursor(const DSRTreeNodeCursor<T> &cursor);
+
     /** set cursor to specified node.
-     *  Clears the internal position list/stack and sets the position counter to 1.
+     *  Clears the internal position counter and sets the position of the current level
+     *  to 1 (if the passed 'node' is valid) or 0 (if the 'node' is invalid).
      ** @param  node  node to which the cursor should be set
      ** @return ID of the new current node if successful, 0 otherwise
      */
@@ -262,10 +293,8 @@ template<typename T = DSRTreeNode> class DSRTreeNodeCursor
     /// stack of node pointers. Used to store the cursor position of upper levels.
     OFStack<T *> NodeCursorStack;
 
-    /// current position within the current level
-    size_t Position;
-    /// list of position counters in upper levels
-    OFList<size_t> PositionList;
+    /// counter for the current position within the current level and on upper levels
+    DSRPositionCounter Position;
 };
 
 
@@ -277,8 +306,7 @@ template<typename T>
 DSRTreeNodeCursor<T>::DSRTreeNodeCursor()
   : NodeCursor(NULL),
     NodeCursorStack(),
-    Position(0),
-    PositionList()
+    Position()
 {
 }
 
@@ -287,19 +315,23 @@ template<typename T>
 DSRTreeNodeCursor<T>::DSRTreeNodeCursor(const DSRTreeNodeCursor<T> &cursor)
   : NodeCursor(cursor.NodeCursor),
     NodeCursorStack(cursor.NodeCursorStack),
-    Position(cursor.Position),
-    PositionList(cursor.PositionList)
+    Position(cursor.Position)
 {
 }
 
 
 template<typename T>
-DSRTreeNodeCursor<T>::DSRTreeNodeCursor(T *node)
+DSRTreeNodeCursor<T>::DSRTreeNodeCursor(T *node,
+                                        const DSRPositionCounter *position)
   : NodeCursor(node),
     NodeCursorStack(),
-    Position((node != NULL) ? 1 : 0),
-    PositionList()
+    Position()
 {
+    /* check whether a valid position counter is given */
+    if ((position != NULL) && position->isValid())
+        Position = *position;
+    else
+        Position.initialize(NodeCursor != NULL);
 }
 
 
@@ -312,11 +344,7 @@ DSRTreeNodeCursor<T>::~DSRTreeNodeCursor()
 template<typename T>
 DSRTreeNodeCursor<T> &DSRTreeNodeCursor<T>::operator=(const DSRTreeNodeCursor<T> &cursor)
 {
-    NodeCursor = cursor.NodeCursor;
-    NodeCursorStack = cursor.NodeCursorStack;
-    Position = cursor.Position;
-    /* copy position list (operator= is not private anymore in class OFList) */
-    PositionList = cursor.PositionList;
+    setCursor(cursor);
     return *this;
 }
 
@@ -334,8 +362,7 @@ void DSRTreeNodeCursor<T>::clear()
 {
     NodeCursor = NULL;
     clearNodeCursorStack();
-    Position = 0;
-    PositionList.clear();
+    Position.clear();
 }
 
 
@@ -417,14 +444,11 @@ T *DSRTreeNodeCursor<T>::getNode() const
 
 
 template<typename T>
-const T *DSRTreeNodeCursor<T>::getParentNode()
+const T *DSRTreeNodeCursor<T>::getParentNode() const
 {
     T *node = NULL;
     if (hasParentNode())
-    {
-        /* this method is not "const" because of OFStack.top() */
         node = NodeCursorStack.top();
-    }
     return node;
 }
 
@@ -460,18 +484,30 @@ const T *DSRTreeNodeCursor<T>::getNextNode() const
 
 
 template<typename T>
+const DSRTreeNodeCursor<T> &DSRTreeNodeCursor<T>::getCursor() const
+{
+    return *this;
+}
+
+
+template<typename T>
+void DSRTreeNodeCursor<T>::setCursor(const DSRTreeNodeCursor<T> &cursor)
+{
+    NodeCursor = cursor.NodeCursor;
+    NodeCursorStack = cursor.NodeCursorStack;
+    Position = cursor.Position;
+}
+
+
+template<typename T>
 size_t DSRTreeNodeCursor<T>::setCursor(T *node)
 {
     size_t nodeID = 0;
     NodeCursor = node;
-    clearNodeCursorStack();
-    PositionList.clear();
     if (NodeCursor != NULL)
-    {
         nodeID = NodeCursor->getIdent();
-        Position = 1;
-    } else
-        Position = 0;
+    clearNodeCursorStack();
+    Position.initialize(NodeCursor != NULL);
     return nodeID;
 }
 
@@ -558,11 +594,7 @@ size_t DSRTreeNodeCursor<T>::goUp()
             {
                 NodeCursor = cursor;
                 nodeID = NodeCursor->getIdent();
-                if (!PositionList.empty())
-                {
-                    Position = PositionList.back();
-                    PositionList.pop_back();
-                }
+                Position.goUp();
             }
         }
     }
@@ -581,11 +613,7 @@ size_t DSRTreeNodeCursor<T>::goDown()
             NodeCursorStack.push(NodeCursor);
             NodeCursor = NodeCursor->getDown();
             nodeID = NodeCursor->getIdent();
-            if (Position > 0)
-            {
-                PositionList.push_back(Position);
-                Position = 1;
-            }
+            Position.goDown();
         }
     }
     return nodeID;
@@ -593,6 +621,20 @@ size_t DSRTreeNodeCursor<T>::goDown()
 
 
 template<typename T>
+size_t DSRTreeNodeCursor<T>::gotoParent()
+{
+    return goUp();
+}
+
+
+template<typename T>
+size_t DSRTreeNodeCursor<T>::gotoChild()
+{
+    return goDown();
+}
+
+
+template<typename T>
 size_t DSRTreeNodeCursor<T>::iterate(const OFBool searchIntoSub)
 {
     size_t nodeID = 0;
@@ -604,11 +646,7 @@ size_t DSRTreeNodeCursor<T>::iterate(const OFBool searchIntoSub)
             NodeCursorStack.push(NodeCursor);
             NodeCursor = NodeCursor->getDown();
             nodeID = NodeCursor->getIdent();
-            if (Position > 0)
-            {
-                PositionList.push_back(Position);
-                Position = 1;
-            }
+            Position.goDown();
         }
         else if (NodeCursor->getNext() != NULL)
         {
@@ -623,11 +661,7 @@ size_t DSRTreeNodeCursor<T>::iterate(const OFBool searchIntoSub)
                 {
                     NodeCursor = NodeCursorStack.top();
                     NodeCursorStack.pop();
-                    if (!PositionList.empty())
-                    {
-                        Position = PositionList.back();
-                        PositionList.pop_back();
-                    }
+                    Position.goUp();
                 } else
                     NodeCursor = NULL;
             } while ((NodeCursor != NULL) && (NodeCursor->getNext() == NULL));
@@ -748,27 +782,17 @@ size_t DSRTreeNodeCursor<T>::getLevel() const
 
 
 template<typename T>
+DSRPositionCounter &DSRTreeNodeCursor<T>::getPositionCounter()
+{
+    return Position;
+}
+
+
+template<typename T>
 const OFString &DSRTreeNodeCursor<T>::getPosition(OFString &position,
                                                   const char separator) const
 {
-    position.clear();
-    if (Position > 0)
-    {
-        char stringBuf[20];
-        const OFListConstIterator(size_t) endPos = PositionList.end();
-        OFListConstIterator(size_t) iterator = PositionList.begin();
-        while (iterator != endPos)
-        {
-            if (!position.empty())
-                position += separator;
-            position += DSRTypes::numberToString(*iterator, stringBuf);
-            iterator++;
-        }
-        if (!position.empty())
-            position += separator;
-        position += DSRTypes::numberToString(Position, stringBuf);
-    }
-    return position;
+    return Position.getString(position, separator);
 }
 
 
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtpltn.h b/dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
new file mode 100644
index 0000000..0803f4c
--- /dev/null
+++ b/dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
@@ -0,0 +1,248 @@
+/*
+ *
+ *  Copyright (C) 2015-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: DSRIncludedTemplateTreeNode
+ *
+ */
+
+
+#ifndef DSRTPLTN_H
+#define DSRTPLTN_H
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrdoctn.h"
+#include "dcmtk/dcmsr/dsrstpl.h"
+
+
+/*---------------------*
+ *  class declaration  *
+ *---------------------*/
+
+/** Class for managing included templates (internal)
+ */
+class DCMTK_DCMSR_EXPORT DSRIncludedTemplateTreeNode
+  : public DSRDocumentTreeNode
+{
+
+  public:
+
+    /** constructor.
+     *  Also sets the template identification if available from 'referencedTemplate'.
+     ** @param  referencedTemplate  shared pointer to template that should be managed
+     *  @param  defaultRelType      default relationship type of the included template
+     */
+    DSRIncludedTemplateTreeNode(const DSRSharedSubTemplate &referencedTemplate,
+                                const E_RelationshipType defaultRelType);
+
+    /** copy constructor.
+     *  Please note that the comments on the copy constructor of the base class
+     *  DSRDocumentTreeNode apply.
+     ** @param  node  tree node to be copied
+     */
+    DSRIncludedTemplateTreeNode(const DSRIncludedTemplateTreeNode &node);
+
+    /** destructor
+     */
+    virtual ~DSRIncludedTemplateTreeNode();
+
+    /** clone this tree node.
+     *  Internally, the copy constructor is used, so the corresponding comments apply.
+     ** @return copy of this tree node
+     */
+    virtual DSRIncludedTemplateTreeNode *clone() const;
+
+    /** clear all member variables.
+     *  Please note that the content item becomes invalid afterwards.
+     */
+    virtual void clear();
+
+    /** check whether the content item is valid.
+     *  The content item is valid if the base class is valid and the reference to the
+     *  included template is valid.
+     ** @return OFTrue if tree node is valid, OFFalse otherwise
+     */
+    virtual OFBool isValid() const;
+
+    /** check whether the value of the content item, i.e.\ the reference to the included
+     *  template is valid.  See getValue().
+     ** @return OFTrue if the value is valid, OFFalse otherwise
+     */
+    virtual OFBool hasValidValue() const;
+
+    /** check whether the content is short.
+     *  This method is used to check whether the rendered output of this content item can
+     *  be expanded inline or not (used for renderHTML()).
+     ** @param  flags  flag used to customize the output (see DSRTypes::HF_xxx)
+     ** @return OFTrue if the content is short, OFFalse otherwise
+     */
+    virtual OFBool isShort(const size_t flags) const;
+
+    /** print content item.
+     *  A typical output looks like this: # INCLUDE TID 1600 (DCMR)
+     ** @param  stream  output stream to which the content item should be printed
+     *  @param  flags   flag used to customize the output (see DSRTypes::PF_xxx)
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition print(STD_NAMESPACE ostream &stream,
+                              const size_t flags) const;
+
+    /** write content of included template in XML format
+     ** @param  stream  output stream to which the XML document is written
+     *  @param  flags   flag used to customize the output (see DSRTypes::XF_xxx)
+     ** @return status, EC_Normal if successful (or included template is empty, so there
+     *          is nothing to do), an error code otherwise
+     */
+    virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
+                                 const size_t flags) const;
+
+    /** get reference to included template, i.e.\ the value of this content item
+     ** @return reference to included template.  The managed pointer might be NULL.
+     */
+    inline const DSRSharedSubTemplate &getValue() const
+    {
+        return ReferencedTemplate;
+    }
+
+    /** set reference to included template, i.e.\ the value of this content item.
+     *  Currently, no checks are performed on the passed 'referencedTemplate' parameter.
+     ** @param  referencedTemplate  shared pointer to template that should be managed
+     ** @return status, EC_Normal if successful, an error code otherwise
+     */
+    virtual OFCondition setValue(const DSRSharedSubTemplate &referencedTemplate);
+
+
+  protected:
+
+    /** read content item from dataset
+     ** @param  dataset            dummy parameter
+     *  @param  constraintChecker  dummy parameter
+     *  @param  flags              dummy parameter
+     ** @return always returns SR_EC_CannotProcessIncludedTemplates
+     */
+    virtual OFCondition read(DcmItem &dataset,
+                             const DSRIODConstraintChecker *constraintChecker,
+                             const size_t flags);
+
+    /** write content item to dataset
+     ** @param  dataset      dummy parameter
+     *  @param  markedItems  dummy parameter
+     ** @return always returns SR_EC_CannotProcessIncludedTemplates
+     */
+    virtual OFCondition write(DcmItem &dataset,
+                              DcmStack *markedItems = NULL);
+
+    /** read general XML document tree node data
+     ** @param  doc           dummy parameter
+     *  @param  cursor        dummy parameter
+     *  @param  documentType  dummy parameter
+     *  @param  flags         dummy parameter
+     ** @return always returns SR_EC_CannotProcessIncludedTemplates
+     */
+    virtual OFCondition readXML(const DSRXMLDocument &doc,
+                                DSRXMLCursor cursor,
+                                const E_DocumentType documentType,
+                                const size_t flags);
+
+    /** render content item in HTML/XHTML format
+     ** @param  docStream     dummy parameter
+     *  @param  annexStream   dummy parameter
+     *  @param  nestingLevel  dummy parameter
+     *  @param  annexNumber   dummy parameter
+     *  @param  flags         dummy parameter
+     ** @return always returns SR_EC_CannotProcessIncludedTemplates
+     */
+    virtual OFCondition renderHTML(STD_NAMESPACE ostream &docStream,
+                                   STD_NAMESPACE ostream &annexStream,
+                                   const size_t nestingLevel,
+                                   size_t &annexNumber,
+                                   const size_t flags) const;
+
+    /** set the concept name
+     ** @param  conceptName  dummy parameter
+     *  @param  check        dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setConceptName(const DSRCodedEntryValue &conceptName,
+                                       const OFBool check = OFTrue);
+
+    /** set observation date/time
+     ** @param  observationDateTime  dummy parameter
+     *  @param  check                dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setObservationDateTime(const OFString &observationDateTime,
+                                               const OFBool check = OFTrue);
+
+    /** set observation date/time from element
+     ** @param  delem  dummy parameter
+     *  @param  pos    dummy parameter
+     *  @param  check  dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setObservationDateTime(const DcmElement &delem,
+                                               const unsigned long pos = 0,
+                                               const OFBool check = OFTrue);
+
+    /** set observation date/time from dataset
+     ** @param  dataset  dummy parameter
+     *  @param  tagKey   dummy parameter
+     *  @param  pos      dummy parameter
+     *  @param  check    dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setObservationDateTime(DcmItem &dataset,
+                                               const DcmTagKey &tagKey,
+                                               const unsigned long pos = 0,
+                                               const OFBool check = OFTrue);
+
+    /** set observation unique identifier
+     ** @param  observationUID  dummy parameter
+     *  @param  check           dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setObservationUID(const OFString &observationUID,
+                                          const OFBool check = OFTrue);
+
+    /** set template identifier and mapping resource
+     ** @param  templateIdentifier  dummy parameter
+     *  @param  mappingResource     dummy parameter
+     *  @param  mappingResourceUID  dummy parameter
+     *  @param  check               dummy parameter
+     ** @return always returns EC_IllegalCall, since this method should not be called
+     */
+    virtual OFCondition setTemplateIdentification(const OFString &templateIdentifier,
+                                                  const OFString &mappingResource,
+                                                  const OFString &mappingResourceUID = "",
+                                                  const OFBool check = OFTrue);
+
+
+  private:
+
+    /// shared pointer to included template that is managed by this class
+    DSRSharedSubTemplate ReferencedTemplate;
+
+
+ // --- declaration of default constructor and assignment operator
+
+    DSRIncludedTemplateTreeNode();
+    DSRIncludedTemplateTreeNode &operator=(const DSRIncludedTemplateTreeNode &);
+};
+
+
+#endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtree.h b/dcmsr/include/dcmtk/dcmsr/dsrtree.h
index 40ff00e..86d1b7e 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrtree.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrtree.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
@@ -224,7 +224,7 @@ template<typename T = DSRTreeNode> class DSRTree
     /** check whether tree has any nodes
      ** @return OFTrue if tree is empty, OFFalse otherwise
      */
-    OFBool isEmpty() const;
+    inline OFBool isEmpty() const;
 
     /** count number of nodes in the tree.
      *  This method iterates over all nodes that are stored in the tree.
@@ -236,12 +236,12 @@ template<typename T = DSRTreeNode> class DSRTree
      *  The node ID uniquely identifies a content item in the document tree.
      ** @return ID of the next node to be created (should never be 0)
      */
-    size_t getNextNodeID() const;
+    inline size_t getNextNodeID() const;
 
     /** set internal cursor to root node
      ** @return ID of root node if successful, 0 otherwise
      */
-    size_t gotoRoot();
+    inline size_t gotoRoot();
 
     /** set internal cursor to specified node
      ** @param  searchID       ID of the node to set the cursor to
@@ -275,14 +275,24 @@ template<typename T = DSRTreeNode> class DSRTree
     /** add new node to the current one.
      *  Please note that no copy of the given node is created.  Therefore, the node
      *  should be created with new() - do not use a reference to a local variable.
-     *  If the node could be added successfully the cursor is set to it automatically.
+     *  If the node could be added successfully, the cursor is set to it automatically.
      ** @param  node     pointer to the new node to be added
      *  @param  addMode  flag specifying at which position to add the new node
-     ** @return ID of the new added node if successful, 0 otherwise
+     ** @return ID of the new node if successful, 0 otherwise
      */
     virtual size_t addNode(T *node,
                            const E_AddMode addMode = AM_afterCurrent);
 
+    /** replace current node by the given one.
+     *  Please note that no copy of the given node is created.  Therefore, the node
+     *  should be created with new() - do not use a reference to a local variable.  If
+     *  the node could be replaced successfully, the "old" node (and all of its child
+     *  nodes) are deleted, and the cursor is set to the new one.
+     ** @param  node  pointer to the new node to replace the current one
+     ** @return ID of the new node if successful, 0 otherwise
+     */
+    virtual size_t replaceNode(T *node);
+
     /** extract current node from tree.
      *  Please note that not only the specified node but also all of its child nodes are
      *  extracted from the tree.  The cursor is set automatically to a new valid position.
@@ -348,6 +358,12 @@ template<typename T = DSRTreeNode> class DSRTree
      */
     virtual T *getRoot() const;
 
+    /** delete a tree given by its root node.
+     *  Please note that the given 'rootNode' pointer becomes invalid afterwards.
+     ** @param  rootNode  pointer to the root node of the tree to be deleted
+     */
+    virtual void deleteTreeFromRootNode(T *rootNode);
+
 
   private:
 
@@ -549,12 +565,9 @@ void DSRTree<T>::clearAnnotations()
     DSRTreeNodeCursor<T> cursor(RootNode);
     if (cursor.isValid())
     {
-        T *node;
         /* iterate over all nodes */
         do {
-            node = cursor.getNode();
-            if (node != NULL)
-                node->clearAnnotation();
+            cursor.getNode()->clearAnnotation();
         } while (cursor.iterate());
     }
 }
@@ -684,14 +697,13 @@ size_t DSRTree<T>::addNode(T *node,
                     else if (!this->NodeCursorStack.empty() && (this->Position == 1))
                         this->NodeCursorStack.top()->Down = node;
                     this->NodeCursor->Prev = lastNode;
+                    /* check whether root node has been replaced */
+                    if (this->NodeCursor == this->RootNode)
+                        this->RootNode = node;
                     break;
                 case AM_belowCurrent:
                     /* store old position */
-                    if (this->Position > 0)
-                    {
-                        this->PositionList.push_back(this->Position);
-                        this->Position = 1;
-                    }
+                    this->Position.goDown();
                     this->NodeCursorStack.push(this->NodeCursor);
                     /* parent node has already child nodes */
                     if (this->NodeCursor->Down != NULL)
@@ -712,11 +724,7 @@ size_t DSRTree<T>::addNode(T *node,
                     break;
                 case AM_belowCurrentBeforeFirstChild:
                     /* store old position */
-                    if (this->Position > 0)
-                    {
-                        this->PositionList.push_back(this->Position);
-                        this->Position = 1;
-                    }
+                    this->Position.goDown();
                     this->NodeCursorStack.push(this->NodeCursor);
                     /* parent node has already child nodes */
                     if (this->NodeCursor->Down != NULL)
@@ -733,8 +741,9 @@ size_t DSRTree<T>::addNode(T *node,
             }
             this->NodeCursor = node;
         } else {
+            /* originally, the tree was empty */
             this->RootNode = this->NodeCursor = node;
-            this->Position = 1;
+            this->Position.initialize();
         }
         nodeID = this->NodeCursor->getIdent();
     }
@@ -743,6 +752,56 @@ size_t DSRTree<T>::addNode(T *node,
 
 
 template<typename T>
+size_t DSRTree<T>::replaceNode(T *node)
+{
+    size_t nodeID = 0;
+    /* make sure that 'node' points to a single node or to the "root" of a subtree */
+    if ((node != NULL) && (node->Prev == NULL))
+    {
+        if (this->NodeCursor != NULL)
+        {
+            /* connect to previous node */
+            if (this->NodeCursor->Prev != NULL)
+            {
+                (this->NodeCursor->Prev)->Next = node;
+                /* remove reference to former sibling */
+                this->NodeCursor->Prev = NULL;
+            } else {
+                /* is there any direct parent node? */
+                if (!this->NodeCursorStack.empty())
+                {
+                    DSRTreeNode *parent = this->NodeCursorStack.top();
+                    if (parent != NULL)
+                        parent->Down = node;
+                }
+            }
+            /* connect to next node */
+            if (this->NodeCursor->Next != NULL)
+            {
+                DSRTreeNode *lastNode = node;
+                /* goto last node (sibling), if any */
+                while (lastNode->Next != NULL)
+                    lastNode = lastNode->Next;
+                (this->NodeCursor->Next)->Prev = lastNode;
+                lastNode->Next = this->NodeCursor->Next;
+                /* remove reference to former sibling */
+                this->NodeCursor->Next = NULL;
+            }
+            /* check whether root node has been replaced */
+            if (this->NodeCursor == this->RootNode)
+                this->RootNode = node;
+            /* free memory of old (now replaced) node */
+            deleteTreeFromRootNode(this->NodeCursor);
+            /* set cursor to new node */
+            this->NodeCursor = node;
+            nodeID = node->getIdent();
+        }
+    }
+    return nodeID;
+}
+
+
+template<typename T>
 T *DSRTree<T>::extractNode()
 {
     T *cursor = this->NodeCursor;
@@ -783,20 +842,18 @@ T *DSRTree<T>::extractNode()
             {
                 this->NodeCursor = this->NodeCursorStack.top();
                 this->NodeCursorStack.pop();
-                this->Position = this->PositionList.back();
-                this->PositionList.pop_back();
+                this->Position.goUp();
                 /* should never be NULL, but ... */
                 if (this->NodeCursor != NULL)
                     this->NodeCursor->Down = NULL;
                 else
                 {
                     this->RootNode = NULL;                  // tree is now empty
-                    this->Position = 0;
+                    this->Position.clear();
                 }
             } else {
                 this->RootNode = this->NodeCursor = NULL;   // tree is now empty
-                this->Position = 0;
-                this->PositionList.clear();
+                this->Position.clear();
             }
         }
         /* remove references to former siblings */
@@ -893,4 +950,13 @@ T *DSRTree<T>::getRoot() const
 }
 
 
+template<typename T>
+void DSRTree<T>::deleteTreeFromRootNode(T *rootNode)
+{
+    /* create a temporary tree object from the given node, */
+    /* the content will be deleted during destruction */
+    DSRTree<T> tree(rootNode);
+}
+
+
 #endif
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrtypes.h b/dcmsr/include/dcmtk/dcmsr/dsrtypes.h
index 2152db5..4eb327d 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrtypes.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
@@ -213,6 +213,15 @@ extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_CodedEntryInStandardConte
 /// normal: a given coded entry is known as an extension of the context group
 extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_CodedEntryIsExtensionOfContextGroup;
 
+/// error: a value violates the value set constraint of a particular template row
+extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_ValueSetConstraintViolated;
+
+/// error: the internally managed structure of a template class is invalid
+extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_InvalidTemplateStructure;
+
+/// error: cannot process document tree with included templates
+extern DCMTK_DCMSR_EXPORT const OFConditionConst SR_EC_CannotProcessIncludedTemplates;
+
 //@}
 
 
@@ -381,6 +390,9 @@ class DCMTK_DCMSR_EXPORT DSRTypes
     /// read/write: template identification element encloses content items
     static const size_t XF_templateElementEnclosesItems;
 
+    /// write: add comments with details at beginning/end of included template (might be useful for debugging purposes)
+    static const size_t XF_addCommentsForIncludedTemplate;
+
     /// shortcut: combines all XF_xxxAsAttribute write flags (see above)
     static const size_t XF_encodeEverythingAsAttribute;
     //@}
@@ -431,6 +443,9 @@ class DCMTK_DCMSR_EXPORT DSRTypes
     /// print annotation of a content item (optional, e.g. user-defined information)
     static const size_t PF_printAnnotation;
 
+    /// do not print internal "included template" nodes (position counter is still increased)
+    static const size_t PF_hideIncludedTemplateNodes;
+
     /// shortcut: print all codes (combines all PF_printXxxCodes flags, see above)
     static const size_t PF_printAllCodes;
     //@}
@@ -492,8 +507,10 @@ class DCMTK_DCMSR_EXPORT DSRTypes
         DT_RadiopharmaceuticalRadiationDoseSR,
         /// DICOM IOD: Extensible SR (not yet implemented)
         DT_ExtensibleSR,
+        /// DICOM IOD: Acquisition Context SR
+        DT_AcquisitionContextSR,
         /// internal type used to mark the last entry
-        DT_last = DT_ExtensibleSR
+        DT_last = DT_AcquisitionContextSR
     };
 
     /** SR relationship types
@@ -562,8 +579,10 @@ class DCMTK_DCMSR_EXPORT DSRTypes
         VT_Container,
         /// internal type used to indicate by-reference relationships
         VT_byReference,
+        /// internal type used to indicate (enclose) included templates
+        VT_includedTemplate,
         /// internal type used to mark the last entry
-        VT_last = VT_byReference
+        VT_last = VT_includedTemplate
     };
 
     /** Softcopy presentation state types.  Used for content item IMAGE.
@@ -746,10 +765,18 @@ class DCMTK_DCMSR_EXPORT DSRTypes
         CS_Hebrew,
         /// ISO-IR 148: Latin alphabet No. 5
         CS_Latin5,
-        /// ISO-IR 13: Japanese (Katakana/Romaji)
-        CS_Japanese,
         /// ISO-IR 166: Thai
         CS_Thai,
+        /// ISO-IR 13/87: Japanese (Katakana/Romaji/Kanji)
+        CS_Japanese,
+        /// ISO-IR 6/149: Korean (Hangul/Hanja)
+        CS_Korean,
+        /// ISO-IR 6/58: Chinese
+        CS_ChineseISO,
+        /// GB18030: Chinese
+        CS_ChineseGB18030,
+        /// GBK: Chinese
+        CS_ChineseGBK,
         /// UTF-8: Unicode in UTF-8
         CS_UTF8,
         /// internal type used to mark the last entry
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrwavvl.h b/dcmsr/include/dcmtk/dcmsr/dsrwavvl.h
index 767d659..5af36b0 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrwavvl.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrwavvl.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
@@ -91,8 +91,8 @@ class DCMTK_DCMSR_EXPORT DSRWaveformReferenceValue
     virtual OFBool isShort(const size_t flags) const;
 
     /** print waveform reference.
-     *  The output of a typical waveform reference value looks like this: (HemodynamicWaveform
-     *  Storage,"1.2.3")
+     *  The output of a typical waveform reference value looks like this:
+     *  (HemodynamicWaveformStorage,"1.2.3")
      *  If the SOP class UID is unknown, the UID is printed instead of the related name.
      ** @param  stream  output stream to which the image reference value should be printed
      *  @param  flags   flag used to customize the output (see DSRTypes::PF_xxx)
@@ -204,7 +204,7 @@ class DCMTK_DCMSR_EXPORT DSRWaveformReferenceValue
     /** check the specified SOP class UID for validity.
      *  This method further specializes the checks performed in the base class
      *  DSRCompositeReferenceValue.  All waveform SOP classes that are defined
-     *  in DICOM PS 3.6-2014a are allowed.
+     *  in DICOM PS 3.6-2015c are allowed.
      ** @param  sopClassUID  SOP class UID to be checked
      ** @return status, EC_Normal if value is valid, an error code otherwise
      */
diff --git a/dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h b/dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h
index 0f7efa4..5b1fb82 100644
--- a/dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h
+++ b/dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2005-2014, OFFIS e.V.
+ *  Copyright (C) 2005-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -33,7 +33,13 @@
  *  class declaration  *
  *---------------------*/
 
-/** Class for checking the relationship content constraints of the X-Ray Radiation Dose SR IOD
+/** Class for checking the relationship content constraints of the X-Ray Radiation Dose
+ *  SR IOD.
+ *  According to DICOM PS 3.3: "The document may be constructed from Baseline TID 10001
+ *  (Projection X-Ray Radiation Dose) or Baseline TID 10011 (CT Radiation Dose) invoked
+ *  at the root node.  Note: This IOD maybe used with other Templates defined for Dose
+ *  Reporting.  Such other Templates may be specialized for specific modalities or
+ *  future dose measurement techniques."
  */
 class DCMTK_DCMSR_EXPORT DSRXRayRadiationDoseSRConstraintChecker
   : public DSRIODConstraintChecker
@@ -59,10 +65,14 @@ class DCMTK_DCMSR_EXPORT DSRXRayRadiationDoseSRConstraintChecker
      */
     virtual OFBool isTemplateSupportRequired() const;
 
-    /** get identifier of the root template
-     ** @return always returns NULL (no template required)
+    /** 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 const char *getRootTemplateIdentifier() const;
+    virtual OFCondition getRootTemplateIdentification(OFString &templateIdentifier,
+                                                      OFString &mappingResource) const;
 
     /** get the associated document type of the SR IOD
      ** @return document type (DSRTypes::DT_XRayRadiationDoseSR)
diff --git a/dcmsr/libcmr/CMakeLists.txt b/dcmsr/libcmr/CMakeLists.txt
index c31fd8f..8c670ba 100644
--- a/dcmsr/libcmr/CMakeLists.txt
+++ b/dcmsr/libcmr/CMakeLists.txt
@@ -1,4 +1,4 @@
 # create library from source files
-DCMTK_ADD_LIBRARY(cmr init logger srnumvl tid1001 tid1204 tid1600 cid11 cid29 cid29e cid42 cid100 cid244 cid244e cid4020 cid4021 cid4031 cid4031e cid5000 cid5001 cid7021 cid7445 cid7452 cid7453 cid10013 cid10013e cid10033 cid10033e)
+DCMTK_ADD_LIBRARY(cmr init logger srnumvl tid1001 tid1204 tid1411 tid1500 tid1600 cid11 cid29 cid29e cid42 cid100 cid244 cid244e cid4020 cid4021 cid4031 cid4031e cid5000 cid5001 cid6147 cid7021 cid7181 cid7445 cid7452 cid7453 cid7464 cid7469 cid10013 cid10013e cid10033 cid10033e)
 
 DCMTK_TARGET_LINK_MODULES(cmr dcmsr)
diff --git a/dcmsr/libcmr/Makefile.dep b/dcmsr/libcmr/Makefile.dep
index 8e8a32e..69f525a 100644
--- a/dcmsr/libcmr/Makefile.dep
+++ b/dcmsr/libcmr/Makefile.dep
@@ -41,6 +41,8 @@ cid100.o: cid100.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -109,6 +111,7 @@ cid100.o: cid100.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -156,6 +159,8 @@ cid10013.o: cid10013.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -224,6 +229,7 @@ cid10013.o: cid10013.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -272,6 +278,8 @@ cid10013e.o: cid10013e.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -340,6 +348,7 @@ cid10013e.o: cid10013e.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -387,6 +396,8 @@ cid10033.o: cid10033.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -455,6 +466,7 @@ cid10033.o: cid10033.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -503,6 +515,8 @@ cid10033e.o: cid10033e.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -571,6 +585,7 @@ cid10033e.o: cid10033e.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -618,6 +633,8 @@ cid11.o: cid11.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -686,6 +703,7 @@ cid11.o: cid11.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -733,6 +751,8 @@ cid244.o: cid244.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -801,6 +821,7 @@ cid244.o: cid244.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -849,6 +870,8 @@ cid244e.o: cid244e.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -917,6 +940,7 @@ cid244e.o: cid244e.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -964,6 +988,8 @@ cid29.o: cid29.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1032,6 +1058,7 @@ cid29.o: cid29.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1080,6 +1107,8 @@ cid29e.o: cid29e.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1148,6 +1177,7 @@ cid29e.o: cid29e.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1195,6 +1225,8 @@ cid4020.o: cid4020.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1263,6 +1295,7 @@ cid4020.o: cid4020.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1310,6 +1343,8 @@ cid4021.o: cid4021.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1378,6 +1413,7 @@ cid4021.o: cid4021.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1425,6 +1461,8 @@ cid4031.o: cid4031.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1493,6 +1531,7 @@ cid4031.o: cid4031.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1541,6 +1580,8 @@ cid4031e.o: cid4031e.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1609,6 +1650,7 @@ cid4031e.o: cid4031e.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1656,6 +1698,8 @@ cid42.o: cid42.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1724,6 +1768,7 @@ cid42.o: cid42.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1771,6 +1816,8 @@ cid5000.o: cid5000.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1839,6 +1886,7 @@ cid5000.o: cid5000.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -1886,6 +1934,8 @@ cid5001.o: cid5001.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1954,6 +2004,125 @@ cid5001.o: cid5001.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 \
+ ../include/dcmtk/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid6147.o: cid6147.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid6147.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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 \
+ ../../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/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -2001,6 +2170,480 @@ cid7021.o: cid7021.cc ../../config/include/dcmtk/config/osconfig.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/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/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid7181.o: cid7181.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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 \
+ ../../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/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid7445.o: cid7445.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7445.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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 \
+ ../../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/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid7452.o: cid7452.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7452.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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 \
+ ../../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/dcmsr/dsdefine.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+cid7453.o: cid7453.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7453.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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 \
  ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2069,12 +2712,13 @@ cid7021.o: cid7021.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/cmr/define.h
-cid7445.o: cid7445.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/cid7445.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+cid7464.o: cid7464.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h ../include/dcmtk/dcmsr/dsrctxgr.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -2116,6 +2760,8 @@ cid7445.o: cid7445.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2184,12 +2830,13 @@ cid7445.o: cid7445.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/cmr/define.h
-cid7452.o: cid7452.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/cid7452.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+cid7469.o: cid7469.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h ../include/dcmtk/dcmsr/dsrctxgr.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -2231,6 +2878,8 @@ cid7452.o: cid7452.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2299,22 +2948,24 @@ cid7452.o: cid7452.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/cmr/define.h
-cid7453.o: cid7453.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/cid7453.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+init.o: init.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/init.h ../include/dcmtk/dcmsr/cmr/define.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/dcmsr/cmr/cid11.h ../include/dcmtk/dcmsr/dsrctxgr.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
- ../../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 \
@@ -2346,6 +2997,8 @@ cid7453.o: cid7453.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2414,23 +3067,82 @@ cid7453.o: cid7453.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/cmr/define.h
-init.o: init.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/init.h ../include/dcmtk/dcmsr/cmr/define.h \
+ ../include/dcmtk/dcmsr/cmr/cid29.h ../include/dcmtk/dcmsr/cmr/cid42.h \
+ ../include/dcmtk/dcmsr/cmr/cid100.h ../include/dcmtk/dcmsr/cmr/cid244.h \
+ ../include/dcmtk/dcmsr/cmr/cid4020.h \
+ ../include/dcmtk/dcmsr/cmr/cid4021.h \
+ ../include/dcmtk/dcmsr/cmr/cid4031.h \
+ ../include/dcmtk/dcmsr/cmr/cid5000.h \
+ ../include/dcmtk/dcmsr/cmr/cid5001.h \
+ ../include/dcmtk/dcmsr/cmr/cid6147.h \
+ ../include/dcmtk/dcmsr/cmr/cid7021.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h \
+ ../include/dcmtk/dcmsr/cmr/cid7445.h \
+ ../include/dcmtk/dcmsr/cmr/cid7452.h \
+ ../include/dcmtk/dcmsr/cmr/cid7453.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h \
+ ../include/dcmtk/dcmsr/cmr/cid10013.h \
+ ../include/dcmtk/dcmsr/cmr/cid10033.h
+logger.o: logger.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/logger.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 \
- ../include/dcmtk/dcmsr/cmr/cid11.h ../include/dcmtk/dcmsr/dsrctxgr.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/dcmsr/cmr/define.h
+srnumvl.o: srnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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 \
@@ -2462,6 +3174,8 @@ init.o: init.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2530,24 +3244,18 @@ init.o: init.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/cmr/cid29.h ../include/dcmtk/dcmsr/cmr/cid42.h \
- ../include/dcmtk/dcmsr/cmr/cid100.h ../include/dcmtk/dcmsr/cmr/cid244.h \
- ../include/dcmtk/dcmsr/cmr/cid4020.h \
- ../include/dcmtk/dcmsr/cmr/cid4021.h \
- ../include/dcmtk/dcmsr/cmr/cid4031.h \
- ../include/dcmtk/dcmsr/cmr/cid5000.h \
- ../include/dcmtk/dcmsr/cmr/cid5001.h \
- ../include/dcmtk/dcmsr/cmr/cid7021.h \
- ../include/dcmtk/dcmsr/cmr/cid7445.h \
- ../include/dcmtk/dcmsr/cmr/cid7452.h \
- ../include/dcmtk/dcmsr/cmr/cid7453.h \
- ../include/dcmtk/dcmsr/cmr/cid10013.h \
- ../include/dcmtk/dcmsr/cmr/cid10033.h
-logger.o: logger.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/logger.h \
+ ../include/dcmtk/dcmsr/cmr/cid42.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/cmr/define.h
+tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/tid1001.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
+ ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
@@ -2586,10 +3294,100 @@ logger.o: logger.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../include/dcmtk/dcmsr/cmr/define.h
-srnumvl.o: srnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/dsrnumvl.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.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/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstack.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
+ ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
+ ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrsc3vl.h \
+ ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtcovl.h \
+ ../include/dcmtk/dcmsr/dsrtcodt.h ../include/dcmtk/dcmsr/dsrtcosp.h \
+ ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
+ ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
+ ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid7445.h \
+ ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid7452.h \
+ ../include/dcmtk/dcmsr/cmr/cid7453.h ../include/dcmtk/dcmsr/codes/dcm.h
+tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/tid1204.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
+ ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
  ../../oflog/include/dcmtk/oflog/oflog.h \
@@ -2630,6 +3428,8 @@ srnumvl.o: srnumvl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2698,13 +3498,28 @@ srnumvl.o: srnumvl.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 \
- ../include/dcmtk/dcmsr/dsdefine.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstack.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/cmr/cid42.h ../include/dcmtk/dcmsr/dsrctxgr.h \
- ../include/dcmtk/dcmsr/cmr/define.h
-tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/tid1001.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
+ ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
+ ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrsc3vl.h \
+ ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtcovl.h \
+ ../include/dcmtk/dcmsr/dsrtcodt.h ../include/dcmtk/dcmsr/dsrtcosp.h \
+ ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
+ ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
+ ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid5000.h \
+ ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid5001.h \
+ ../include/dcmtk/dcmsr/codes/dcm.h
+tid1411.o: tid1411.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/tid1411.h ../include/dcmtk/dcmsr/dsrstpl.h \
  ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -2747,6 +3562,8 @@ tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2815,11 +3632,12 @@ tid1001.o: tid1001.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -2829,12 +3647,19 @@ tid1001.o: tid1001.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h \
- ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid7445.h \
- ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid7452.h \
- ../include/dcmtk/dcmsr/cmr/cid7453.h ../include/dcmtk/dcmsr/codes/dcm.h
-tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/cmr/tid1204.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvlu.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/cmr/cid42.h \
+ ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid6147.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h ../include/dcmtk/dcmsr/cmr/logger.h \
+ ../include/dcmtk/dcmsr/codes/dcm.h ../include/dcmtk/dcmsr/codes/ncit.h \
+ ../include/dcmtk/dcmsr/codes/srt.h ../include/dcmtk/dcmsr/codes/umls.h
+tid1500.o: tid1500.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/cmr/tid1500.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -2877,6 +3702,8 @@ tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2945,11 +3772,12 @@ tid1204.o: tid1204.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -2959,10 +3787,29 @@ tid1204.o: tid1204.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h \
- ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid5000.h \
- ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid5001.h \
- ../include/dcmtk/dcmsr/codes/dcm.h
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/dsrstpl.h ../include/dcmtk/dcmsr/cmr/define.h \
+ ../include/dcmtk/dcmsr/cmr/tid1001.h \
+ ../include/dcmtk/dcmsr/cmr/cid7445.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/cmr/cid7452.h \
+ ../include/dcmtk/dcmsr/cmr/cid7453.h \
+ ../include/dcmtk/dcmsr/cmr/tid1204.h \
+ ../include/dcmtk/dcmsr/cmr/cid5000.h \
+ ../include/dcmtk/dcmsr/cmr/cid5001.h \
+ ../include/dcmtk/dcmsr/cmr/tid1411.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvlu.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/cmr/cid42.h \
+ ../include/dcmtk/dcmsr/cmr/tid1600.h \
+ ../include/dcmtk/dcmsr/cmr/cid4020.h \
+ ../include/dcmtk/dcmsr/cmr/cid4021.h ../include/dcmtk/dcmsr/cmr/cid100.h \
+ ../include/dcmtk/dcmsr/cmr/cid6147.h \
+ ../include/dcmtk/dcmsr/cmr/cid7021.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h ../include/dcmtk/dcmsr/cmr/logger.h \
+ ../include/dcmtk/dcmsr/codes/dcm.h ../include/dcmtk/dcmsr/codes/umls.h \
+ ../include/dcmtk/dcmsr/dsrtpltn.h
 tid1600.o: tid1600.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/cmr/tid1600.h ../include/dcmtk/dcmsr/dsrstpl.h \
  ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
@@ -3007,6 +3854,8 @@ tid1600.o: tid1600.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3075,11 +3924,12 @@ tid1600.o: tid1600.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -3089,9 +3939,12 @@ tid1600.o: tid1600.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h \
- ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid29e.h \
- ../include/dcmtk/dcmsr/cmr/cid29.h ../include/dcmtk/dcmsr/dsrctxgr.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/cmr/define.h ../include/dcmtk/dcmsr/cmr/cid4020.h \
+ ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/cmr/cid4021.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h ../include/dcmtk/dcmsr/cmr/cid42.h \
+ ../include/dcmtk/dcmsr/cmr/cid29e.h ../include/dcmtk/dcmsr/cmr/cid29.h \
  ../include/dcmtk/dcmsr/cmr/cid244e.h ../include/dcmtk/dcmsr/cmr/cid244.h \
  ../include/dcmtk/dcmsr/cmr/cid4031e.h \
  ../include/dcmtk/dcmsr/cmr/cid4031.h \
diff --git a/dcmsr/libcmr/Makefile.in b/dcmsr/libcmr/Makefile.in
index 9ecf36f..f0ea994 100644
--- a/dcmsr/libcmr/Makefile.in
+++ b/dcmsr/libcmr/Makefile.in
@@ -21,10 +21,11 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
 	-I$(dcmsr)/include
 LOCALDEFS =
 
-objs = init.o logger.o srnumvl.o tid1001.o tid1204.o tid1600.o \
+objs = init.o logger.o srnumvl.o tid1001.o tid1204.o tid1411.o tid1500.o tid1600.o \
 	cid11.o cid29.o cid29e.o cid42.o cid100.o cid244.o cid244e.o cid4020.o \
-	cid4021.o cid4031.o cid4031e.o cid5000.o cid5001.o cid7021.o cid7445.o \
-	cid7452.o cid7453.o cid10013.o cid10013e.o cid10033.o cid10033e.o
+	cid4021.o cid4031.o cid4031e.o cid5000.o cid5001.o cid6147.o cid7021.o \
+	cid7181.o cid7445.o cid7452.o cid7453.o cid7464.o cid7469.o cid10013.o \
+	cid10013e.o cid10033.o cid10033e.o
 library = libcmr.$(LIBEXT)
 
 
diff --git a/dcmsr/libcmr/cid100.cc b/dcmsr/libcmr/cid100.cc
index 0164757..b24376a 100644
--- a/dcmsr/libcmr/cid100.cc
+++ b/dcmsr/libcmr/cid100.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID100_QuantitativeDiagnosticImagingProcedures
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:54:59 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:42 by J. Riesmeier
  *
  */
 
@@ -160,7 +160,7 @@ CID100_QuantitativeDiagnosticImagingProcedures::CodeList &CID100_QuantitativeDia
         Codes->insert(OFMake_pair(PETCT_METImagingOfWholeBody, DSRBasicCodedEntry("P5-08118", "SRT", "PET/CT MET imaging of whole body")));
         Codes->insert(OFMake_pair(CT_HEAD_PERFUSION_WITH_IV_CONTRAST, DSRBasicCodedEntry("RPID96", "RADLEX", "CT HEAD PERFUSION WITH IV CONTRAST")));
         Codes->insert(OFMake_pair(NM_HEAD_PERFUSION_BRAIN_SPECT, DSRBasicCodedEntry("RPID5258", "RADLEX", "NM HEAD PERFUSION BRAIN SPECT")));
-        Codes->insert(OFMake_pair(NM_HEAD_PERFUSION_BRAIN_PET_CT_AV_45, DSRBasicCodedEntry("RPID5427", "RADLEX", "NM HEAD PERFUSION BRAIN PET-CT AV-45")));
+        Codes->insert(OFMake_pair(NM_HEAD_PERFUSION_BRAIN_PET_CT_AV45, DSRBasicCodedEntry("RPID5427", "RADLEX", "NM HEAD PERFUSION BRAIN PET-CT AV-45")));
     }
     /* should never be NULL */
     return *Codes;
diff --git a/dcmsr/libcmr/cid10013.cc b/dcmsr/libcmr/cid10013.cc
index 66ed492..2c3837c 100644
--- a/dcmsr/libcmr/cid10013.cc
+++ b/dcmsr/libcmr/cid10013.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID10013_CTAcquisitionType
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:14 by J. Riesmeier
+ *  File created on 2016-01-08 15:05:05 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid10033.cc b/dcmsr/libcmr/cid10033.cc
index 0e09a0c..f5c2b3b 100644
--- a/dcmsr/libcmr/cid10033.cc
+++ b/dcmsr/libcmr/cid10033.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID10033_CTReconstructionAlgorithm
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:16 by J. Riesmeier
+ *  File created on 2016-01-08 15:05:06 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid11.cc b/dcmsr/libcmr/cid11.cc
index 0a70428..a4088f2 100644
--- a/dcmsr/libcmr/cid11.cc
+++ b/dcmsr/libcmr/cid11.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID11_RouteOfAdministration
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:24:57 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:37 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid244.cc b/dcmsr/libcmr/cid244.cc
index 497e1e6..58618c5 100644
--- a/dcmsr/libcmr/cid244.cc
+++ b/dcmsr/libcmr/cid244.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID244_Laterality
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:02 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:44 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid29.cc b/dcmsr/libcmr/cid29.cc
index 873ff0e..debe234 100644
--- a/dcmsr/libcmr/cid29.cc
+++ b/dcmsr/libcmr/cid29.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID29_AcquisitionModality
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:24:58 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:39 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid4020.cc b/dcmsr/libcmr/cid4020.cc
index f8921da..8cf0e72 100644
--- a/dcmsr/libcmr/cid4020.cc
+++ b/dcmsr/libcmr/cid4020.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID4020_PETRadionuclide
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:03 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:46 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid4021.cc b/dcmsr/libcmr/cid4021.cc
index 51ebb2c..943d855 100644
--- a/dcmsr/libcmr/cid4021.cc
+++ b/dcmsr/libcmr/cid4021.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID4021_PETRadiopharmaceutical
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:05 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:47 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid4031.cc b/dcmsr/libcmr/cid4031.cc
index 15564a2..7440c62 100644
--- a/dcmsr/libcmr/cid4031.cc
+++ b/dcmsr/libcmr/cid4031.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID4031_CommonAnatomicRegions
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:07 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:49 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid42.cc b/dcmsr/libcmr/cid42.cc
index 1756f83..35d336c 100644
--- a/dcmsr/libcmr/cid42.cc
+++ b/dcmsr/libcmr/cid42.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID42_NumericValueQualifier
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:00 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:41 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid244.cc b/dcmsr/libcmr/cid6147.cc
similarity index 63%
copy from dcmsr/libcmr/cid244.cc
copy to dcmsr/libcmr/cid6147.cc
index 497e1e6..476d940 100644
--- a/dcmsr/libcmr/cid244.cc
+++ b/dcmsr/libcmr/cid6147.cc
@@ -1,57 +1,57 @@
 /*
  *
- *  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 CID244_Laterality
+ *  Source file for class CID6147_ResponseCriteria
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:02 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:51 by J. Riesmeier
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
-#include "dcmtk/dcmsr/cmr/cid244.h"
+#include "dcmtk/dcmsr/cmr/cid6147.h"
 
 
-// general information on CID 244 (Laterality)
-#define CONTEXT_GROUP_NUMBER  "244"
-#define CONTEXT_GROUP_VERSION "20030108"
-#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.37"
+// general information on CID 6147 (Response Criteria)
+#define CONTEXT_GROUP_NUMBER  "6147"
+#define CONTEXT_GROUP_VERSION "20141110"
+#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.1004"
 #define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
 
 // initialize global/static variable
-CID244_Laterality::CodeList *CID244_Laterality::Codes = NULL;
+CID6147_ResponseCriteria::CodeList *CID6147_ResponseCriteria::Codes = NULL;
 
 
-CID244_Laterality::CID244_Laterality(const DSRCodedEntryValue &selectedValue)
+CID6147_ResponseCriteria::CID6147_ResponseCriteria(const DSRCodedEntryValue &selectedValue)
   : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, selectedValue)
 {
     setExtensible(CONTEXT_GROUP_TYPE);
 }
 
 
-CID244_Laterality::CID244_Laterality(const EnumType selectedValue,
-                                     const OFBool enhancedEncodingMode)
+CID6147_ResponseCriteria::CID6147_ResponseCriteria(const EnumType selectedValue,
+                                                   const OFBool enhancedEncodingMode)
   : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, getCodedEntry(selectedValue, enhancedEncodingMode))
 {
     setExtensible(CONTEXT_GROUP_TYPE);
 }
 
 
-OFCondition CID244_Laterality::selectValue(const EnumType selectedValue,
-                                           const OFBool enhancedEncodingMode)
+OFCondition CID6147_ResponseCriteria::selectValue(const EnumType selectedValue,
+                                                  const OFBool enhancedEncodingMode)
 {
     /* never check the coded entry */
     return DSRContextGroup::selectValue(getCodedEntry(selectedValue, enhancedEncodingMode), OFFalse /*check*/, OFFalse /*definedContextGroup*/);
 }
 
 
-OFCondition CID244_Laterality::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
-                                              DSRCodedEntryValue *foundCodedEntry,
-                                              const OFBool enhancedEncodingMode) const
+OFCondition CID6147_ResponseCriteria::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                                     DSRCodedEntryValue *foundCodedEntry,
+                                                     const OFBool enhancedEncodingMode) const
 {
     OFCondition result = SR_EC_CodedEntryNotInContextGroup;
     /* first, search for standard codes */
@@ -86,7 +86,7 @@ OFCondition CID244_Laterality::findCodedEntry(const DSRCodedEntryValue &searchFo
 }
 
 
-void CID244_Laterality::printCodes(STD_NAMESPACE ostream &stream) const
+void CID6147_ResponseCriteria::printCodes(STD_NAMESPACE ostream &stream) const
 {
     /* print standard codes */
     stream << "Standard codes:" << OFendl;
@@ -108,14 +108,14 @@ void CID244_Laterality::printCodes(STD_NAMESPACE ostream &stream) const
 
 // static functions
 
-void CID244_Laterality::initialize()
+void CID6147_ResponseCriteria::initialize()
 {
     /* create and initialize code list */
     getCodes();
 }
 
 
-void CID244_Laterality::cleanup()
+void CID6147_ResponseCriteria::cleanup()
 {
     /* delete code list, it will be recreated automatically when needed */
     delete Codes;
@@ -123,8 +123,8 @@ void CID244_Laterality::cleanup()
 }
 
 
-DSRCodedEntryValue CID244_Laterality::getCodedEntry(const EnumType value,
-                                                    const OFBool enhancedEncodingMode)
+DSRCodedEntryValue CID6147_ResponseCriteria::getCodedEntry(const EnumType value,
+                                                           const OFBool enhancedEncodingMode)
 {
     DSRCodedEntryValue codedEntry;
     /* search for given enumerated value */
@@ -141,7 +141,7 @@ DSRCodedEntryValue CID244_Laterality::getCodedEntry(const EnumType value,
 }
 
 
-CID244_Laterality::CodeList &CID244_Laterality::getCodes()
+CID6147_ResponseCriteria::CodeList &CID6147_ResponseCriteria::getCodes()
 {
     /* check whether code list has already been created and initialized */
     if (Codes == NULL)
@@ -149,17 +149,17 @@ CID244_Laterality::CodeList &CID244_Laterality::getCodes()
         /* create a new code list (should never fail) */
         Codes = new CodeList();
         /* and initialize it by adding the coded entries */
-        Codes->insert(OFMake_pair(Right, DSRBasicCodedEntry("G-A100", "SRT", "Right")));
-        Codes->insert(OFMake_pair(Left, DSRBasicCodedEntry("G-A101", "SRT", "Left")));
-        Codes->insert(OFMake_pair(RightAndLeft, DSRBasicCodedEntry("G-A102", "SRT", "Right and left")));
-        Codes->insert(OFMake_pair(Unilateral, DSRBasicCodedEntry("G-A103", "SRT", "Unilateral")));
+        Codes->insert(OFMake_pair(WHO, DSRBasicCodedEntry("112029", "DCM", "WHO")));
+        Codes->insert(OFMake_pair(RECIST10, DSRBasicCodedEntry("126080", "DCM", "RECIST 1.0")));
+        Codes->insert(OFMake_pair(RECIST11, DSRBasicCodedEntry("126081", "DCM", "RECIST 1.1")));
+        Codes->insert(OFMake_pair(RANO, DSRBasicCodedEntry("C114879", "NCIt", "RANO")));
     }
     /* should never be NULL */
     return *Codes;
 }
 
 
-OFCondition CID244_Laterality::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
+OFCondition CID6147_ResponseCriteria::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
 {
     return codedEntryValue.setEnhancedEncodingMode(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID);
 }
diff --git a/dcmsr/libcmr/cid7021.cc b/dcmsr/libcmr/cid7021.cc
index 792a2cb..356aff5 100644
--- a/dcmsr/libcmr/cid7021.cc
+++ b/dcmsr/libcmr/cid7021.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID7021_MeasurementReportDocumentTitles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:55:09 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:52 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7181.cc b/dcmsr/libcmr/cid7181.cc
new file mode 100644
index 0000000..d42dc71
--- /dev/null
+++ b/dcmsr/libcmr/cid7181.cc
@@ -0,0 +1,217 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class CID7181_AbstractMultiDimensionalImageModelComponentUnits
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-08 15:04:54 by J. Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/cid7181.h"
+
+
+// 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_UID     "1.2.840.10008.6.1.918"
+#define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
+
+// initialize global/static variable
+CID7181_AbstractMultiDimensionalImageModelComponentUnits::CodeList *CID7181_AbstractMultiDimensionalImageModelComponentUnits::Codes = NULL;
+
+
+CID7181_AbstractMultiDimensionalImageModelComponentUnits::CID7181_AbstractMultiDimensionalImageModelComponentUnits(const DSRCodedEntryValue &selectedValue)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, selectedValue)
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+CID7181_AbstractMultiDimensionalImageModelComponentUnits::CID7181_AbstractMultiDimensionalImageModelComponentUnits(const EnumType selectedValue,
+                                                                                                                   const OFBool enhancedEncodingMode)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, getCodedEntry(selectedValue, enhancedEncodingMode))
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+OFCondition CID7181_AbstractMultiDimensionalImageModelComponentUnits::selectValue(const EnumType selectedValue,
+                                                                                  const OFBool enhancedEncodingMode)
+{
+    /* never check the coded entry */
+    return DSRContextGroup::selectValue(getCodedEntry(selectedValue, enhancedEncodingMode), OFFalse /*check*/, OFFalse /*definedContextGroup*/);
+}
+
+
+OFCondition CID7181_AbstractMultiDimensionalImageModelComponentUnits::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                                                                     DSRCodedEntryValue *foundCodedEntry,
+                                                                                     const OFBool enhancedEncodingMode) const
+{
+    OFCondition result = SR_EC_CodedEntryNotInContextGroup;
+    /* first, search for standard codes */
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        /* if found, exit loop */
+        if (searchForCodedEntry == iter->second)
+        {
+            /* return coded entry (if requested) */
+            if (foundCodedEntry != NULL)
+            {
+                *foundCodedEntry = iter->second;
+                /* also set enhanced encoding mode (if enabled) */
+                if (!foundCodedEntry->isEmpty() && enhancedEncodingMode)
+                    setEnhancedEncodingMode(*foundCodedEntry);
+            }
+            result = SR_EC_CodedEntryInStandardContextGroup;
+            break;
+        }
+        ++iter;
+    }
+    /* if not, continue with extended codes */
+    if (result.bad())
+    {
+        result = DSRContextGroup::findCodedEntry(searchForCodedEntry, foundCodedEntry);
+        /* tbd: set "enhanced encoding mode" to mark a local/extended version? */
+    }
+    return result;
+}
+
+
+void CID7181_AbstractMultiDimensionalImageModelComponentUnits::printCodes(STD_NAMESPACE ostream &stream) const
+{
+    /* print standard codes */
+    stream << "Standard codes:" << OFendl;
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        stream << "  ";
+        /* print coded entry */
+        DSRCodedEntryValue(iter->second).print(stream);
+        stream << OFendl;
+        ++iter;
+    }
+    /* print extended codes */
+    DSRContextGroup::printCodes(stream);
+}
+
+
+// static functions
+
+void CID7181_AbstractMultiDimensionalImageModelComponentUnits::initialize()
+{
+    /* create and initialize code list */
+    getCodes();
+}
+
+
+void CID7181_AbstractMultiDimensionalImageModelComponentUnits::cleanup()
+{
+    /* delete code list, it will be recreated automatically when needed */
+    delete Codes;
+    Codes = NULL;
+}
+
+
+DSRCodedEntryValue CID7181_AbstractMultiDimensionalImageModelComponentUnits::getCodedEntry(const EnumType value,
+                                                                                           const OFBool enhancedEncodingMode)
+{
+    DSRCodedEntryValue codedEntry;
+    /* search for given enumerated value */
+    CodeList::iterator iter = getCodes().find(value);
+    /* if found, set the coded entry */
+    if (iter != getCodes().end())
+    {
+        codedEntry = iter->second;
+        /* also set enhanced encoding mode (if enabled) */
+        if (!codedEntry.isEmpty() && enhancedEncodingMode)
+            setEnhancedEncodingMode(codedEntry);
+    }
+    return codedEntry;
+}
+
+
+CID7181_AbstractMultiDimensionalImageModelComponentUnits::CodeList &CID7181_AbstractMultiDimensionalImageModelComponentUnits::getCodes()
+{
+    /* check whether code list has already been created and initialized */
+    if (Codes == NULL)
+    {
+        /* create a new code list (should never fail) */
+        Codes = new CodeList();
+        /* and initialize it by adding the coded entries */
+        Codes->insert(OFMake_pair(MmHg, DSRBasicCodedEntry("mm[Hg]", "UCUM", "mmHg")));
+        Codes->insert(OFMake_pair(KPa, DSRBasicCodedEntry("kPa", "UCUM", "kPa")));
+        Codes->insert(OFMake_pair(PRU, DSRBasicCodedEntry("[PRU]", "UCUM", "P.R.U.")));
+        Codes->insert(OFMake_pair(WoodU, DSRBasicCodedEntry("[wood'U]", "UCUM", "Wood U")));
+        Codes->insert(OFMake_pair(Dynscm5, DSRBasicCodedEntry("dyn.s.cm-5", "UCUM", "dyn.s.cm-5")));
+        Codes->insert(OFMake_pair(PRUPerM2, DSRBasicCodedEntry("[PRU]/m2", "UCUM", "P.R.U./m2")));
+        Codes->insert(OFMake_pair(WoodUPerM2, DSRBasicCodedEntry("[wood'U]/m2", "UCUM", "Wood U/m2")));
+        Codes->insert(OFMake_pair(Dynscm5PerM2, DSRBasicCodedEntry("dyn.s.cm-5/m2", "UCUM", "dyn.s.cm-5/m2")));
+        Codes->insert(OFMake_pair(Centimeter, DSRBasicCodedEntry("cm", "UCUM", "centimeter")));
+        Codes->insert(OFMake_pair(Millimeter, DSRBasicCodedEntry("mm", "UCUM", "millimeter")));
+        Codes->insert(OFMake_pair(Micrometer, DSRBasicCodedEntry("um", "UCUM", "micrometer")));
+        Codes->insert(OFMake_pair(SquareCentimeter, DSRBasicCodedEntry("cm2", "UCUM", "square centimeter")));
+        Codes->insert(OFMake_pair(SquareMillimeter, DSRBasicCodedEntry("mm2", "UCUM", "square millimeter")));
+        Codes->insert(OFMake_pair(SquareMicrometer, DSRBasicCodedEntry("um2", "UCUM", "square micrometer")));
+        Codes->insert(OFMake_pair(CubicDecimeter, DSRBasicCodedEntry("dm3", "UCUM", "cubic decimeter")));
+        Codes->insert(OFMake_pair(CubicCentimeter, DSRBasicCodedEntry("cm3", "UCUM", "cubic centimeter")));
+        Codes->insert(OFMake_pair(CubicMillimeter, DSRBasicCodedEntry("mm3", "UCUM", "cubic millimeter")));
+        Codes->insert(OFMake_pair(CubicMicrometer, DSRBasicCodedEntry("um3", "UCUM", "cubic micrometer")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueBodyWeight, DSRBasicCodedEntry("{SUVbw}g/ml", "UCUM", "Standardized Uptake Value body weight")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueLeanBodyMass, DSRBasicCodedEntry("{SUVlbm}g/ml", "UCUM", "Standardized Uptake Value lean body mass")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueBodySurfaceArea, DSRBasicCodedEntry("{SUVbsa}cm2/ml", "UCUM", "Standardized Uptake Value body surface area")));
+        Codes->insert(OFMake_pair(StandardizedUptakeValueIdealBodyWeight, DSRBasicCodedEntry("{SUVibw}g/ml", "UCUM", "Standardized Uptake Value ideal body weight")));
+        Codes->insert(OFMake_pair(Counts, DSRBasicCodedEntry("{counts}", "UCUM", "Counts")));
+        Codes->insert(OFMake_pair(CountsPerSecond, DSRBasicCodedEntry("{counts}/s", "UCUM", "Counts per second")));
+        Codes->insert(OFMake_pair(ProportionalToCounts, DSRBasicCodedEntry("{propcounts}", "UCUM", "Proportional to counts")));
+        Codes->insert(OFMake_pair(ProportionalToCountsPerSecond, DSRBasicCodedEntry("{propcounts}/s", "UCUM", "Proportional to counts per second")));
+        Codes->insert(OFMake_pair(Percent, DSRBasicCodedEntry("%", "UCUM", "Percent")));
+        Codes->insert(OFMake_pair(BecquerelsPerMilliliter, DSRBasicCodedEntry("Bq/ml", "UCUM", "Becquerels/milliliter")));
+        Codes->insert(OFMake_pair(MilligramsPerMinutePerMilliliter, DSRBasicCodedEntry("mg/min/ml", "UCUM", "Milligrams/minute/milliliter")));
+        Codes->insert(OFMake_pair(MicromolePerMinutePerMilliliter, DSRBasicCodedEntry("umol/min/ml", "UCUM", "Micromole/minute/milliliter")));
+        Codes->insert(OFMake_pair(MilliliterPerMinutePerGram, DSRBasicCodedEntry("ml/min/g", "UCUM", "Milliliter/minute/gram")));
+        Codes->insert(OFMake_pair(MilliliterPerGram, DSRBasicCodedEntry("ml/g", "UCUM", "Milliliter/gram")));
+        Codes->insert(OFMake_pair(PerCentimeter, DSRBasicCodedEntry("/cm", "UCUM", "/Centimeter")));
+        Codes->insert(OFMake_pair(MicromolePerMilliliter, DSRBasicCodedEntry("umol/ml", "UCUM", "Micromole/milliliter")));
+        Codes->insert(OFMake_pair(NoUnits, DSRBasicCodedEntry("1", "UCUM", "no units")));
+        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(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")));
+        Codes->insert(OFMake_pair(DegreesCelsius, DSRBasicCodedEntry("Cel", "UCUM", "degrees Celsius")));
+        Codes->insert(OFMake_pair(MilliliterPerMinute, DSRBasicCodedEntry("ml/min", "UCUM", "milliliter per minute")));
+        Codes->insert(OFMake_pair(MilliliterPerSecond, DSRBasicCodedEntry("ml/s", "UCUM", "milliliter per second")));
+        Codes->insert(OFMake_pair(Millisecond, DSRBasicCodedEntry("ms", "UCUM", "millisecond")));
+        Codes->insert(OFMake_pair(Second, DSRBasicCodedEntry("s", "UCUM", "second")));
+        Codes->insert(OFMake_pair(Hertz, DSRBasicCodedEntry("Hz", "UCUM", "Hertz")));
+        Codes->insert(OFMake_pair(MilliTesla, DSRBasicCodedEntry("mT", "UCUM", "milliTesla")));
+        Codes->insert(OFMake_pair(NumberParticlesPer100GramOfTissue, DSRBasicCodedEntry("{Particles}/[100]g{Tissue}", "UCUM", "number particles per 100 gram of tissue")));
+        Codes->insert(OFMake_pair(SquareMillimeterPerSecond, DSRBasicCodedEntry("mm2/s", "UCUM", "square millimeter per second")));
+        Codes->insert(OFMake_pair(SecondPerSquareMillimeter, DSRBasicCodedEntry("s/mm2", "UCUM", "second per square millimeter")));
+        Codes->insert(OFMake_pair(MilliliterPer100GramPerMinute, DSRBasicCodedEntry("ml/[100]g/min", "UCUM", "milliliter per 100 gram per minute")));
+        Codes->insert(OFMake_pair(MilliliterPer100Milliliter, DSRBasicCodedEntry("ml/[100]ml", "UCUM", "milliliter per 100 milliliter")));
+        Codes->insert(OFMake_pair(MillimolesPerKgWetWeight, DSRBasicCodedEntry("mmol/kg{WetWeight}", "UCUM", "millimoles per kg wet weight")));
+        Codes->insert(OFMake_pair(PerMin, DSRBasicCodedEntry("/min", "UCUM", "/min")));
+        Codes->insert(OFMake_pair(PerS, DSRBasicCodedEntry("/s", "UCUM", "/s")));
+    }
+    /* should never be NULL */
+    return *Codes;
+}
+
+
+OFCondition CID7181_AbstractMultiDimensionalImageModelComponentUnits::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
+{
+    return codedEntryValue.setEnhancedEncodingMode(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID);
+}
diff --git a/dcmsr/libcmr/cid7445.cc b/dcmsr/libcmr/cid7445.cc
index b583831..c69546e 100644
--- a/dcmsr/libcmr/cid7445.cc
+++ b/dcmsr/libcmr/cid7445.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID7445_DeviceParticipatingRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:09 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:56 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7452.cc b/dcmsr/libcmr/cid7452.cc
index 5903151..69af1ab 100644
--- a/dcmsr/libcmr/cid7452.cc
+++ b/dcmsr/libcmr/cid7452.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID7452_OrganizationalRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:10 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:58 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7453.cc b/dcmsr/libcmr/cid7453.cc
index 5f09777..18c6810 100644
--- a/dcmsr/libcmr/cid7453.cc
+++ b/dcmsr/libcmr/cid7453.cc
@@ -1,12 +1,12 @@
 /*
  *
- *  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 CID7453_PerformingRoles
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-23 15:25:12 by J. Riesmeier
+ *  File created on 2016-01-08 15:04:59 by J. Riesmeier
  *
  */
 
diff --git a/dcmsr/libcmr/cid7021.cc b/dcmsr/libcmr/cid7464.cc
similarity index 54%
copy from dcmsr/libcmr/cid7021.cc
copy to dcmsr/libcmr/cid7464.cc
index 792a2cb..e37280f 100644
--- a/dcmsr/libcmr/cid7021.cc
+++ b/dcmsr/libcmr/cid7464.cc
@@ -1,57 +1,57 @@
 /*
  *
- *  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 CID7021_MeasurementReportDocumentTitles
+ *  Source file for class CID7464_GeneralRegionOfInterestMeasurementModifiers
  *
  *  Generated automatically from DICOM PS 3.16-2015c
- *  File created on 2015-08-26 19:55:09 by J. Riesmeier
+ *  File created on 2016-01-08 15:05:01 by J. Riesmeier
  *
  */
 
 
 #include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
 
-#include "dcmtk/dcmsr/cmr/cid7021.h"
+#include "dcmtk/dcmsr/cmr/cid7464.h"
 
 
-// general information on CID 7021 (Measurement Report Document Titles)
-#define CONTEXT_GROUP_NUMBER  "7021"
-#define CONTEXT_GROUP_VERSION "20141110"
-#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.997"
+// general information on CID 7464 (General Region of Interest Measurement Modifiers)
+#define CONTEXT_GROUP_NUMBER  "7464"
+#define CONTEXT_GROUP_VERSION "20121101"
+#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.951"
 #define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
 
 // initialize global/static variable
-CID7021_MeasurementReportDocumentTitles::CodeList *CID7021_MeasurementReportDocumentTitles::Codes = NULL;
+CID7464_GeneralRegionOfInterestMeasurementModifiers::CodeList *CID7464_GeneralRegionOfInterestMeasurementModifiers::Codes = NULL;
 
 
-CID7021_MeasurementReportDocumentTitles::CID7021_MeasurementReportDocumentTitles(const DSRCodedEntryValue &selectedValue)
+CID7464_GeneralRegionOfInterestMeasurementModifiers::CID7464_GeneralRegionOfInterestMeasurementModifiers(const DSRCodedEntryValue &selectedValue)
   : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, selectedValue)
 {
     setExtensible(CONTEXT_GROUP_TYPE);
 }
 
 
-CID7021_MeasurementReportDocumentTitles::CID7021_MeasurementReportDocumentTitles(const EnumType selectedValue,
-                                                                                 const OFBool enhancedEncodingMode)
+CID7464_GeneralRegionOfInterestMeasurementModifiers::CID7464_GeneralRegionOfInterestMeasurementModifiers(const EnumType selectedValue,
+                                                                                                         const OFBool enhancedEncodingMode)
   : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, getCodedEntry(selectedValue, enhancedEncodingMode))
 {
     setExtensible(CONTEXT_GROUP_TYPE);
 }
 
 
-OFCondition CID7021_MeasurementReportDocumentTitles::selectValue(const EnumType selectedValue,
-                                                                 const OFBool enhancedEncodingMode)
+OFCondition CID7464_GeneralRegionOfInterestMeasurementModifiers::selectValue(const EnumType selectedValue,
+                                                                             const OFBool enhancedEncodingMode)
 {
     /* never check the coded entry */
     return DSRContextGroup::selectValue(getCodedEntry(selectedValue, enhancedEncodingMode), OFFalse /*check*/, OFFalse /*definedContextGroup*/);
 }
 
 
-OFCondition CID7021_MeasurementReportDocumentTitles::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
-                                                                    DSRCodedEntryValue *foundCodedEntry,
-                                                                    const OFBool enhancedEncodingMode) const
+OFCondition CID7464_GeneralRegionOfInterestMeasurementModifiers::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                                                                DSRCodedEntryValue *foundCodedEntry,
+                                                                                const OFBool enhancedEncodingMode) const
 {
     OFCondition result = SR_EC_CodedEntryNotInContextGroup;
     /* first, search for standard codes */
@@ -86,7 +86,7 @@ OFCondition CID7021_MeasurementReportDocumentTitles::findCodedEntry(const DSRCod
 }
 
 
-void CID7021_MeasurementReportDocumentTitles::printCodes(STD_NAMESPACE ostream &stream) const
+void CID7464_GeneralRegionOfInterestMeasurementModifiers::printCodes(STD_NAMESPACE ostream &stream) const
 {
     /* print standard codes */
     stream << "Standard codes:" << OFendl;
@@ -108,14 +108,14 @@ void CID7021_MeasurementReportDocumentTitles::printCodes(STD_NAMESPACE ostream &
 
 // static functions
 
-void CID7021_MeasurementReportDocumentTitles::initialize()
+void CID7464_GeneralRegionOfInterestMeasurementModifiers::initialize()
 {
     /* create and initialize code list */
     getCodes();
 }
 
 
-void CID7021_MeasurementReportDocumentTitles::cleanup()
+void CID7464_GeneralRegionOfInterestMeasurementModifiers::cleanup()
 {
     /* delete code list, it will be recreated automatically when needed */
     delete Codes;
@@ -123,8 +123,8 @@ void CID7021_MeasurementReportDocumentTitles::cleanup()
 }
 
 
-DSRCodedEntryValue CID7021_MeasurementReportDocumentTitles::getCodedEntry(const EnumType value,
-                                                                          const OFBool enhancedEncodingMode)
+DSRCodedEntryValue CID7464_GeneralRegionOfInterestMeasurementModifiers::getCodedEntry(const EnumType value,
+                                                                                      const OFBool enhancedEncodingMode)
 {
     DSRCodedEntryValue codedEntry;
     /* search for given enumerated value */
@@ -141,7 +141,7 @@ DSRCodedEntryValue CID7021_MeasurementReportDocumentTitles::getCodedEntry(const
 }
 
 
-CID7021_MeasurementReportDocumentTitles::CodeList &CID7021_MeasurementReportDocumentTitles::getCodes()
+CID7464_GeneralRegionOfInterestMeasurementModifiers::CodeList &CID7464_GeneralRegionOfInterestMeasurementModifiers::getCodes()
 {
     /* check whether code list has already been created and initialized */
     if (Codes == NULL)
@@ -149,17 +149,26 @@ CID7021_MeasurementReportDocumentTitles::CodeList &CID7021_MeasurementReportDocu
         /* create a new code list (should never fail) */
         Codes = new CodeList();
         /* and initialize it by adding the coded entries */
-        Codes->insert(OFMake_pair(ImagingMeasurementReport, DSRBasicCodedEntry("126000", "DCM", "Imaging Measurement Report")));
-        Codes->insert(OFMake_pair(OncologyMeasurementReport, DSRBasicCodedEntry("126001", "DCM", "Oncology Measurement Report")));
-        Codes->insert(OFMake_pair(DynamicContrastMRMeasurementReport, DSRBasicCodedEntry("126002", "DCM", "Dynamic Contrast MR Measurement Report")));
-        Codes->insert(OFMake_pair(PETMeasurementReport, DSRBasicCodedEntry("126003", "DCM", "PET Measurement Report")));
+        Codes->insert(OFMake_pair(Maximum, DSRBasicCodedEntry("G-A437", "SRT", "Maximum")));
+        Codes->insert(OFMake_pair(Minimum, DSRBasicCodedEntry("R-404FB", "SRT", "Minimum")));
+        Codes->insert(OFMake_pair(Mean, DSRBasicCodedEntry("R-00317", "SRT", "Mean")));
+        Codes->insert(OFMake_pair(StandardDeviation, DSRBasicCodedEntry("R-10047", "SRT", "Standard Deviation")));
+        Codes->insert(OFMake_pair(Total, DSRBasicCodedEntry("R-40507", "SRT", "Total")));
+        Codes->insert(OFMake_pair(Median, DSRBasicCodedEntry("R-00319", "SRT", "Median")));
+        Codes->insert(OFMake_pair(Mode, DSRBasicCodedEntry("R-0032E", "SRT", "Mode")));
+        Codes->insert(OFMake_pair(PeakValueWithinROI, DSRBasicCodedEntry("126031", "DCM", "Peak Value Within ROI")));
+        Codes->insert(OFMake_pair(CoefficientOfVariance, DSRBasicCodedEntry("C0681921", "UMLS", "Coefficient of Variance")));
+        Codes->insert(OFMake_pair(Skewness, DSRBasicCodedEntry("126051", "DCM", "Skewness")));
+        Codes->insert(OFMake_pair(Kurtosis, DSRBasicCodedEntry("126052", "DCM", "Kurtosis")));
+        Codes->insert(OFMake_pair(Variance, DSRBasicCodedEntry("C1711260", "UMLS", "Variance")));
+        Codes->insert(OFMake_pair(RootMeanSquare, DSRBasicCodedEntry("C2347976", "UMLS", "Root Mean Square")));
     }
     /* should never be NULL */
     return *Codes;
 }
 
 
-OFCondition CID7021_MeasurementReportDocumentTitles::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
+OFCondition CID7464_GeneralRegionOfInterestMeasurementModifiers::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
 {
     return codedEntryValue.setEnhancedEncodingMode(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID);
 }
diff --git a/dcmsr/libcmr/cid7469.cc b/dcmsr/libcmr/cid7469.cc
new file mode 100644
index 0000000..877588b
--- /dev/null
+++ b/dcmsr/libcmr/cid7469.cc
@@ -0,0 +1,301 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class CID7469_GenericIntensityAndSizeMeasurements
+ *
+ *  Generated automatically from DICOM PS 3.16-2015c
+ *  File created on 2016-01-08 15:05:03 by J. Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/cid7469.h"
+
+
+// general information on CID 7469 (Generic Intensity and Size Measurements)
+#define CONTEXT_GROUP_NUMBER  "7469"
+#define CONTEXT_GROUP_VERSION "20141110"
+#define CONTEXT_GROUP_UID     "1.2.840.10008.6.1.1003"
+#define CONTEXT_GROUP_TYPE    OFTrue  /* extensible */
+
+// initialize global/static variable
+CID7469_GenericIntensityAndSizeMeasurements::CodeList *CID7469_GenericIntensityAndSizeMeasurements::Codes = NULL;
+
+
+CID7469_GenericIntensityAndSizeMeasurements::CID7469_GenericIntensityAndSizeMeasurements(const DSRCodedEntryValue &selectedValue)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, selectedValue)
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+CID7469_GenericIntensityAndSizeMeasurements::CID7469_GenericIntensityAndSizeMeasurements(const EnumType selectedValue,
+                                                                                         const OFBool enhancedEncodingMode)
+  : DSRContextGroup(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID, getCodedEntry(selectedValue, enhancedEncodingMode))
+{
+    setExtensible(CONTEXT_GROUP_TYPE);
+}
+
+
+OFCondition CID7469_GenericIntensityAndSizeMeasurements::selectValue(const EnumType selectedValue,
+                                                                     const OFBool enhancedEncodingMode)
+{
+    /* never check the coded entry */
+    return DSRContextGroup::selectValue(getCodedEntry(selectedValue, enhancedEncodingMode), OFFalse /*check*/, OFFalse /*definedContextGroup*/);
+}
+
+
+OFCondition CID7469_GenericIntensityAndSizeMeasurements::findCodedEntry(const DSRCodedEntryValue &searchForCodedEntry,
+                                                                        DSRCodedEntryValue *foundCodedEntry,
+                                                                        const OFBool enhancedEncodingMode) const
+{
+    OFCondition result = SR_EC_CodedEntryNotInContextGroup;
+    /* first, search for standard codes */
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        /* if found, exit loop */
+        if (searchForCodedEntry == iter->second)
+        {
+            /* return coded entry (if requested) */
+            if (foundCodedEntry != NULL)
+            {
+                *foundCodedEntry = iter->second;
+                /* also set enhanced encoding mode (if enabled) */
+                if (!foundCodedEntry->isEmpty() && enhancedEncodingMode)
+                    setEnhancedEncodingMode(*foundCodedEntry);
+            }
+            result = SR_EC_CodedEntryInStandardContextGroup;
+            break;
+        }
+        ++iter;
+    }
+    /* if not, continue with extended codes */
+    if (result.bad())
+    {
+        result = DSRContextGroup::findCodedEntry(searchForCodedEntry, foundCodedEntry);
+        /* tbd: set "enhanced encoding mode" to mark a local/extended version? */
+    }
+    return result;
+}
+
+
+void CID7469_GenericIntensityAndSizeMeasurements::printCodes(STD_NAMESPACE ostream &stream) const
+{
+    /* print standard codes */
+    stream << "Standard codes:" << OFendl;
+    CodeList::const_iterator iter = getCodes().begin();
+    CodeList::const_iterator last = getCodes().end();
+    /* iterate over coded entry list */
+    while (iter != last)
+    {
+        stream << "  ";
+        /* print coded entry */
+        DSRCodedEntryValue(iter->second).print(stream);
+        stream << OFendl;
+        ++iter;
+    }
+    /* print extended codes */
+    DSRContextGroup::printCodes(stream);
+}
+
+
+// static functions
+
+void CID7469_GenericIntensityAndSizeMeasurements::initialize()
+{
+    /* create and initialize code list */
+    getCodes();
+}
+
+
+void CID7469_GenericIntensityAndSizeMeasurements::cleanup()
+{
+    /* delete code list, it will be recreated automatically when needed */
+    delete Codes;
+    Codes = NULL;
+}
+
+
+DSRCodedEntryValue CID7469_GenericIntensityAndSizeMeasurements::getCodedEntry(const EnumType value,
+                                                                              const OFBool enhancedEncodingMode)
+{
+    DSRCodedEntryValue codedEntry;
+    /* search for given enumerated value */
+    CodeList::iterator iter = getCodes().find(value);
+    /* if found, set the coded entry */
+    if (iter != getCodes().end())
+    {
+        codedEntry = iter->second;
+        /* also set enhanced encoding mode (if enabled) */
+        if (!codedEntry.isEmpty() && enhancedEncodingMode)
+            setEnhancedEncodingMode(codedEntry);
+    }
+    return codedEntry;
+}
+
+
+CID7469_GenericIntensityAndSizeMeasurements::CodeList &CID7469_GenericIntensityAndSizeMeasurements::getCodes()
+{
+    /* check whether code list has already been created and initialized */
+    if (Codes == NULL)
+    {
+        /* create a new code list (should never fail) */
+        Codes = new CodeList();
+        /* and initialize it by adding the coded entries */
+        Codes->insert(OFMake_pair(NAcetylaspartate, DSRBasicCodedEntry("F-6175A", "SRT", "N-acetylaspartate")));
+        Codes->insert(OFMake_pair(Citrate, DSRBasicCodedEntry("F-61080", "SRT", "Citrate")));
+        Codes->insert(OFMake_pair(Choline, DSRBasicCodedEntry("F-61620", "SRT", "Choline")));
+        Codes->insert(OFMake_pair(Creatine, DSRBasicCodedEntry("F-61380", "SRT", "Creatine")));
+        Codes->insert(OFMake_pair(CreatineAndCholine, DSRBasicCodedEntry("113094", "DCM", "Creatine and Choline")));
+        Codes->insert(OFMake_pair(Lactate, DSRBasicCodedEntry("F-61760", "SRT", "Lactate")));
+        Codes->insert(OFMake_pair(Lipid, DSRBasicCodedEntry("F-63600", "SRT", "Lipid")));
+        Codes->insert(OFMake_pair(LipidAndLactate, DSRBasicCodedEntry("113095", "DCM", "Lipid and Lactate")));
+        Codes->insert(OFMake_pair(GlutamateAndGlutamine, DSRBasicCodedEntry("113080", "DCM", "Glutamate and glutamine")));
+        Codes->insert(OFMake_pair(Glutamine, DSRBasicCodedEntry("F-64210", "SRT", "Glutamine")));
+        Codes->insert(OFMake_pair(Tuarine, DSRBasicCodedEntry("F-64460", "SRT", "Tuarine")));
+        Codes->insert(OFMake_pair(Inositol, DSRBasicCodedEntry("F-61A90", "SRT", "Inositol")));
+        Codes->insert(OFMake_pair(CholinePerCreatineRatio, DSRBasicCodedEntry("113081", "DCM", "Choline/Creatine Ratio")));
+        Codes->insert(OFMake_pair(NAcetylaspartatePerCreatineRatio, DSRBasicCodedEntry("113082", "DCM", "N-acetylaspartate/Creatine Ratio")));
+        Codes->insert(OFMake_pair(NAcetylaspartatePerCholineRatio, DSRBasicCodedEntry("113083", "DCM", "N-acetylaspartate/Choline Ratio")));
+        Codes->insert(OFMake_pair(CreatinePlusCholinePerCitrateRatio, DSRBasicCodedEntry("113096", "DCM", "Creatine+Choline/Citrate Ratio")));
+        Codes->insert(OFMake_pair(T1, DSRBasicCodedEntry("113063", "DCM", "T1")));
+        Codes->insert(OFMake_pair(T2, DSRBasicCodedEntry("113065", "DCM", "T2")));
+        Codes->insert(OFMake_pair(T2Star, DSRBasicCodedEntry("113064", "DCM", "T2*")));
+        Codes->insert(OFMake_pair(ProtonDensity, DSRBasicCodedEntry("113058", "DCM", "Proton Density")));
+        Codes->insert(OFMake_pair(SpinTaggingPerfusionMRSignalIntensity, DSRBasicCodedEntry("110800", "DCM", "Spin Tagging Perfusion MR Signal Intensity")));
+        Codes->insert(OFMake_pair(VelocityEncoded, DSRBasicCodedEntry("113070", "DCM", "Velocity encoded")));
+        Codes->insert(OFMake_pair(TemperatureEncoded, DSRBasicCodedEntry("113067", "DCM", "Temperature encoded")));
+        Codes->insert(OFMake_pair(ContrastAgentAngioMRSignalIntensity, DSRBasicCodedEntry("110801", "DCM", "Contrast Agent Angio MR Signal Intensity")));
+        Codes->insert(OFMake_pair(TimeOfFlightAngioMRSignalIntensity, DSRBasicCodedEntry("110802", "DCM", "Time Of Flight Angio MR Signal Intensity")));
+        Codes->insert(OFMake_pair(ProtonDensityWeightedMRSignalIntensity, DSRBasicCodedEntry("110803", "DCM", "Proton Density Weighted MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T1WeightedMRSignalIntensity, DSRBasicCodedEntry("110804", "DCM", "T1 Weighted MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T2WeightedMRSignalIntensity, DSRBasicCodedEntry("110805", "DCM", "T2 Weighted MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T2StarWeightedMRSignalIntensity, DSRBasicCodedEntry("110806", "DCM", "T2* Weighted MR Signal Intensity")));
+        Codes->insert(OFMake_pair(DiffusionWeighted, DSRBasicCodedEntry("113043", "DCM", "Diffusion weighted")));
+        Codes->insert(OFMake_pair(FieldMapMRSignalIntensity, DSRBasicCodedEntry("110807", "DCM", "Field Map MR Signal Intensity")));
+        Codes->insert(OFMake_pair(FractionalAnisotropy, DSRBasicCodedEntry("110808", "DCM", "Fractional Anisotropy")));
+        Codes->insert(OFMake_pair(RelativeAnisotropy, DSRBasicCodedEntry("110809", "DCM", "Relative Anisotropy")));
+        Codes->insert(OFMake_pair(ApparentDiffusionCoefficient, DSRBasicCodedEntry("113041", "DCM", "Apparent Diffusion Coefficient")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDxxComponent, DSRBasicCodedEntry("110810", "DCM", "Volumetric Diffusion Dxx Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDxyComponent, DSRBasicCodedEntry("110811", "DCM", "Volumetric Diffusion Dxy Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDxzComponent, DSRBasicCodedEntry("110812", "DCM", "Volumetric Diffusion Dxz Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDyyComponent, DSRBasicCodedEntry("110813", "DCM", "Volumetric Diffusion Dyy Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDyzComponent, DSRBasicCodedEntry("110814", "DCM", "Volumetric Diffusion Dyz Component")));
+        Codes->insert(OFMake_pair(VolumetricDiffusionDzzComponent, DSRBasicCodedEntry("110815", "DCM", "Volumetric Diffusion Dzz Component")));
+        Codes->insert(OFMake_pair(T1WeightedDynamicContrastEnhancedMRSignalIntensity, DSRBasicCodedEntry("110816", "DCM", "T1 Weighted Dynamic Contrast Enhanced MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T2WeightedDynamicContrastEnhancedMRSignalIntensity, DSRBasicCodedEntry("110817", "DCM", "T2 Weighted Dynamic Contrast Enhanced MR Signal Intensity")));
+        Codes->insert(OFMake_pair(T2StarWeightedDynamicContrastEnhancedMRSignalIntensity, DSRBasicCodedEntry("110818", "DCM", "T2* Weighted Dynamic Contrast Enhanced MR Signal Intensity")));
+        Codes->insert(OFMake_pair(BloodOxygenationLevel, DSRBasicCodedEntry("110819", "DCM", "Blood Oxygenation Level")));
+        Codes->insert(OFMake_pair(NuclearMedicineProjectionActivity, DSRBasicCodedEntry("110820", "DCM", "Nuclear Medicine Projection Activity")));
+        Codes->insert(OFMake_pair(NuclearMedicineTomographicActivity, DSRBasicCodedEntry("110821", "DCM", "Nuclear Medicine Tomographic Activity")));
+        Codes->insert(OFMake_pair(SpatialDisplacementXComponent, DSRBasicCodedEntry("110822", "DCM", "Spatial Displacement X Component")));
+        Codes->insert(OFMake_pair(SpatialDisplacementYComponent, DSRBasicCodedEntry("110823", "DCM", "Spatial Displacement Y Component")));
+        Codes->insert(OFMake_pair(SpatialDisplacementZComponent, DSRBasicCodedEntry("110824", "DCM", "Spatial Displacement Z Component")));
+        Codes->insert(OFMake_pair(HemodynamicResistance, DSRBasicCodedEntry("110825", "DCM", "Hemodynamic Resistance")));
+        Codes->insert(OFMake_pair(IndexedHemodynamicResistance, DSRBasicCodedEntry("110826", "DCM", "Indexed Hemodynamic Resistance")));
+        Codes->insert(OFMake_pair(AttenuationCoefficient, DSRBasicCodedEntry("112031", "DCM", "Attenuation Coefficient")));
+        Codes->insert(OFMake_pair(TissueVelocity, DSRBasicCodedEntry("110827", "DCM", "Tissue Velocity")));
+        Codes->insert(OFMake_pair(FlowVelocity, DSRBasicCodedEntry("110828", "DCM", "Flow Velocity")));
+        Codes->insert(OFMake_pair(PowerDoppler, DSRBasicCodedEntry("P0-02241", "SRT", "Power Doppler")));
+        Codes->insert(OFMake_pair(FlowVariance, DSRBasicCodedEntry("110829", "DCM", "Flow Variance")));
+        Codes->insert(OFMake_pair(Elasticity, DSRBasicCodedEntry("110830", "DCM", "Elasticity")));
+        Codes->insert(OFMake_pair(Perfusion, DSRBasicCodedEntry("110831", "DCM", "Perfusion")));
+        Codes->insert(OFMake_pair(SpeedOfSound, DSRBasicCodedEntry("110832", "DCM", "Speed of sound")));
+        Codes->insert(OFMake_pair(UltrasoundAttenuation, DSRBasicCodedEntry("110833", "DCM", "Ultrasound Attenuation")));
+        Codes->insert(OFMake_pair(StudentsTTest, DSRBasicCodedEntry("113068", "DCM", "Student's T-test")));
+        Codes->insert(OFMake_pair(ZScore, DSRBasicCodedEntry("113071", "DCM", "Z-score")));
+        Codes->insert(OFMake_pair(RCoefficient, DSRBasicCodedEntry("113057", "DCM", "R-Coefficient")));
+        Codes->insert(OFMake_pair(R2Coefficient, DSRBasicCodedEntry("126220", "DCM", "R2-Coefficient")));
+        Codes->insert(OFMake_pair(RGBRComponent, DSRBasicCodedEntry("110834", "DCM", "RGB R Component")));
+        Codes->insert(OFMake_pair(RGBGComponent, DSRBasicCodedEntry("110835", "DCM", "RGB G Component")));
+        Codes->insert(OFMake_pair(RGBBComponent, DSRBasicCodedEntry("110836", "DCM", "RGB B Component")));
+        Codes->insert(OFMake_pair(YBR_FULLYComponent, DSRBasicCodedEntry("110837", "DCM", "YBR FULL Y Component")));
+        Codes->insert(OFMake_pair(YBR_FULL_CBComponent, DSRBasicCodedEntry("110838", "DCM", "YBR FULL CB Component")));
+        Codes->insert(OFMake_pair(YBR_FULL_CRComponent, DSRBasicCodedEntry("110839", "DCM", "YBR FULL CR Component")));
+        Codes->insert(OFMake_pair(YBR_PARTIALYComponent, DSRBasicCodedEntry("110840", "DCM", "YBR PARTIAL Y Component")));
+        Codes->insert(OFMake_pair(YBR_PARTIAL_CBComponent, DSRBasicCodedEntry("110841", "DCM", "YBR PARTIAL CB Component")));
+        Codes->insert(OFMake_pair(YBR_PARTIAL_CRComponent, DSRBasicCodedEntry("110842", "DCM", "YBR PARTIAL CR Component")));
+        Codes->insert(OFMake_pair(YBR_ICTYComponent, DSRBasicCodedEntry("110843", "DCM", "YBR ICT Y Component")));
+        Codes->insert(OFMake_pair(YBR_ICT_CBComponent, DSRBasicCodedEntry("110844", "DCM", "YBR ICT CB Component")));
+        Codes->insert(OFMake_pair(YBR_ICT_CRComponent, DSRBasicCodedEntry("110845", "DCM", "YBR ICT CR Component")));
+        Codes->insert(OFMake_pair(YBR_RCTYComponent, DSRBasicCodedEntry("110846", "DCM", "YBR RCT Y Component")));
+        Codes->insert(OFMake_pair(YBR_RCT_CBComponent, DSRBasicCodedEntry("110847", "DCM", "YBR RCT CB Component")));
+        Codes->insert(OFMake_pair(YBR_RCT_CRComponent, DSRBasicCodedEntry("110848", "DCM", "YBR RCT CR Component")));
+        Codes->insert(OFMake_pair(Echogenicity, DSRBasicCodedEntry("110849", "DCM", "Echogenicity")));
+        Codes->insert(OFMake_pair(XRayAttenuation, DSRBasicCodedEntry("110850", "DCM", "X-Ray Attenuation")));
+        Codes->insert(OFMake_pair(MRSignalIntensity, DSRBasicCodedEntry("110852", "DCM", "MR signal intensity")));
+        Codes->insert(OFMake_pair(BinarySegmentation, DSRBasicCodedEntry("110853", "DCM", "Binary Segmentation")));
+        Codes->insert(OFMake_pair(FractionalProbabilisticSegmentation, DSRBasicCodedEntry("110854", "DCM", "Fractional Probabilistic Segmentation")));
+        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(Ktrans, DSRBasicCodedEntry("126312", "DCM", "Ktrans")));
+        Codes->insert(OFMake_pair(Kep, DSRBasicCodedEntry("126313", "DCM", "kep")));
+        Codes->insert(OFMake_pair(Ve, DSRBasicCodedEntry("126314", "DCM", "ve")));
+        Codes->insert(OFMake_pair(Tau_m, DSRBasicCodedEntry("126330", "DCM", "tau_m")));
+        Codes->insert(OFMake_pair(Vp, DSRBasicCodedEntry("126331", "DCM", "vp")));
+        Codes->insert(OFMake_pair(RegionalCerebralBloodFlow, DSRBasicCodedEntry("113055", "DCM", "Regional Cerebral Blood Flow")));
+        Codes->insert(OFMake_pair(RegionalBloodFlow, DSRBasicCodedEntry("126390", "DCM", "Regional Blood Flow")));
+        Codes->insert(OFMake_pair(RegionalCerebralBloodVolume, DSRBasicCodedEntry("113056", "DCM", "Regional Cerebral Blood Volume")));
+        Codes->insert(OFMake_pair(RegionalBloodVolume, DSRBasicCodedEntry("126391", "DCM", "Regional Blood Volume")));
+        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(IAUC, DSRBasicCodedEntry("126320", "DCM", "IAUC")));
+        Codes->insert(OFMake_pair(IAUC60, DSRBasicCodedEntry("126321", "DCM", "IAUC60")));
+        Codes->insert(OFMake_pair(IAUC90, DSRBasicCodedEntry("126322", "DCM", "IAUC90")));
+        Codes->insert(OFMake_pair(TimeOfPeakConcentration, DSRBasicCodedEntry("126370", "DCM", "Time of Peak Concentration")));
+        Codes->insert(OFMake_pair(TimeOfLeadingHalfPeakConcentration, DSRBasicCodedEntry("126372", "DCM", "Time of Leading Half-Peak Concentration")));
+        Codes->insert(OFMake_pair(BolusArrivalTime, DSRBasicCodedEntry("126371", "DCM", "Bolus Arrival Time")));
+        Codes->insert(OFMake_pair(TemporalDerivativeThreshold, DSRBasicCodedEntry("126374", "DCM", "Temporal Derivative Threshold")));
+        Codes->insert(OFMake_pair(MaximumSlope, DSRBasicCodedEntry("126375", "DCM", "Maximum Slope")));
+        Codes->insert(OFMake_pair(MaximumDifference, DSRBasicCodedEntry("126376", "DCM", "Maximum Difference")));
+        Codes->insert(OFMake_pair(TracerConcentration, DSRBasicCodedEntry("126377", "DCM", "Tracer Concentration")));
+        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(SUVbsa, DSRBasicCodedEntry("126403", "DCM", "SUVbsa")));
+        Codes->insert(OFMake_pair(SUVibw, DSRBasicCodedEntry("126404", "DCM", "SUVibw")));
+        Codes->insert(OFMake_pair(Length, DSRBasicCodedEntry("G-A22A", "SRT", "Length")));
+        Codes->insert(OFMake_pair(PathLength, DSRBasicCodedEntry("121211", "DCM", "Path length")));
+        Codes->insert(OFMake_pair(Distance, DSRBasicCodedEntry("121206", "DCM", "Distance")));
+        Codes->insert(OFMake_pair(Width, DSRBasicCodedEntry("G-A220", "SRT", "Width")));
+        Codes->insert(OFMake_pair(Depth, DSRBasicCodedEntry("G-D785", "SRT", "Depth")));
+        Codes->insert(OFMake_pair(Diameter, DSRBasicCodedEntry("M-02550", "SRT", "Diameter")));
+        Codes->insert(OFMake_pair(LongAxis, DSRBasicCodedEntry("G-A185", "SRT", "Long Axis")));
+        Codes->insert(OFMake_pair(ShortAxis, DSRBasicCodedEntry("G-A186", "SRT", "Short Axis")));
+        Codes->insert(OFMake_pair(MajorAxis, DSRBasicCodedEntry("G-A193", "SRT", "Major Axis")));
+        Codes->insert(OFMake_pair(MinorAxis, DSRBasicCodedEntry("G-A194", "SRT", "Minor Axis")));
+        Codes->insert(OFMake_pair(PerpendicularAxis, DSRBasicCodedEntry("G-A195", "SRT", "Perpendicular Axis")));
+        Codes->insert(OFMake_pair(Radius, DSRBasicCodedEntry("G-A196", "SRT", "Radius")));
+        Codes->insert(OFMake_pair(Perimeter, DSRBasicCodedEntry("G-A197", "SRT", "Perimeter")));
+        Codes->insert(OFMake_pair(Circumference, DSRBasicCodedEntry("M-02560", "SRT", "Circumference")));
+        Codes->insert(OFMake_pair(DiameterOfCircumscribedCircle, DSRBasicCodedEntry("G-A198", "SRT", "Diameter of circumscribed circle")));
+        Codes->insert(OFMake_pair(Height, DSRBasicCodedEntry("121207", "DCM", "Height")));
+        Codes->insert(OFMake_pair(Area, DSRBasicCodedEntry("G-A166", "SRT", "Area")));
+        Codes->insert(OFMake_pair(AreaOfDefinedRegion, DSRBasicCodedEntry("G-A16A", "SRT", "Area of defined region")));
+        Codes->insert(OFMake_pair(Volume, DSRBasicCodedEntry("G-D705", "SRT", "Volume")));
+        Codes->insert(OFMake_pair(VolumeEstimatedFromSingle2DRegion, DSRBasicCodedEntry("121216", "DCM", "Volume estimated from single 2D region")));
+        Codes->insert(OFMake_pair(VolumeEstimatedFromTwoNonCoplanar2DRegions, DSRBasicCodedEntry("121218", "DCM", "Volume estimated from two non-coplanar 2D regions")));
+        Codes->insert(OFMake_pair(VolumeEstimatedFromThreeOrMoreNonCoplanar2DRegions, DSRBasicCodedEntry("121217", "DCM", "Volume estimated from three or more non-coplanar 2D regions")));
+        Codes->insert(OFMake_pair(VolumeOfSphere, DSRBasicCodedEntry("121222", "DCM", "Volume of sphere")));
+        Codes->insert(OFMake_pair(VolumeOfEllipsoid, DSRBasicCodedEntry("121221", "DCM", "Volume of ellipsoid")));
+        Codes->insert(OFMake_pair(VolumeOfCircumscribedSphere, DSRBasicCodedEntry("121220", "DCM", "Volume of circumscribed sphere")));
+        Codes->insert(OFMake_pair(VolumeOfBoundingThreeDimensionalRegion, DSRBasicCodedEntry("121219", "DCM", "Volume of bounding three dimensional region")));
+    }
+    /* should never be NULL */
+    return *Codes;
+}
+
+
+OFCondition CID7469_GenericIntensityAndSizeMeasurements::setEnhancedEncodingMode(DSRCodedEntryValue &codedEntryValue)
+{
+    return codedEntryValue.setEnhancedEncodingMode(CONTEXT_GROUP_NUMBER, "DCMR", CONTEXT_GROUP_VERSION, CONTEXT_GROUP_UID);
+}
diff --git a/dcmsr/libcmr/init.cc b/dcmsr/libcmr/init.cc
index cb64598..0edea68 100644
--- a/dcmsr/libcmr/init.cc
+++ b/dcmsr/libcmr/init.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 CMR_ContentMappingResource
@@ -24,10 +24,14 @@
 #include "dcmtk/dcmsr/cmr/cid4031.h"
 #include "dcmtk/dcmsr/cmr/cid5000.h"
 #include "dcmtk/dcmsr/cmr/cid5001.h"
+#include "dcmtk/dcmsr/cmr/cid6147.h"
 #include "dcmtk/dcmsr/cmr/cid7021.h"
+#include "dcmtk/dcmsr/cmr/cid7181.h"
 #include "dcmtk/dcmsr/cmr/cid7445.h"
 #include "dcmtk/dcmsr/cmr/cid7452.h"
 #include "dcmtk/dcmsr/cmr/cid7453.h"
+#include "dcmtk/dcmsr/cmr/cid7464.h"
+#include "dcmtk/dcmsr/cmr/cid7469.h"
 #include "dcmtk/dcmsr/cmr/cid10013.h"
 #include "dcmtk/dcmsr/cmr/cid10033.h"
 
@@ -49,10 +53,14 @@ void CMR_ContentMappingResource::initializeAllContextGroups()
     CID4031_CommonAnatomicRegions::initialize();
     CID5000_Languages::initialize();
     CID5001_Countries::initialize();
+    CID6147_ResponseCriteria::initialize();
     CID7021_MeasurementReportDocumentTitles::initialize();
+    CID7181_AbstractMultiDimensionalImageModelComponentUnits::initialize();
     CID7445_DeviceParticipatingRoles::initialize();
     CID7452_OrganizationalRoles::initialize();
     CID7453_PerformingRoles::initialize();
+    CID7464_GeneralRegionOfInterestMeasurementModifiers::initialize();
+    CID7469_GenericIntensityAndSizeMeasurements::initialize();
     CID10013_CTAcquisitionType::initialize();
     CID10033_CTReconstructionAlgorithm::initialize();
 }
@@ -71,10 +79,14 @@ void CMR_ContentMappingResource::cleanupAllContextGroups()
     CID4031_CommonAnatomicRegions::cleanup();
     CID5000_Languages::cleanup();
     CID5001_Countries::cleanup();
+    CID6147_ResponseCriteria::cleanup();
     CID7021_MeasurementReportDocumentTitles::cleanup();
+    CID7181_AbstractMultiDimensionalImageModelComponentUnits::cleanup();
     CID7445_DeviceParticipatingRoles::cleanup();
     CID7452_OrganizationalRoles::cleanup();
     CID7453_PerformingRoles::cleanup();
+    CID7464_GeneralRegionOfInterestMeasurementModifiers::cleanup();
+    CID7469_GenericIntensityAndSizeMeasurements::cleanup();
     CID10013_CTAcquisitionType::cleanup();
     CID10033_CTReconstructionAlgorithm::cleanup();
 }
diff --git a/dcmsr/libcmr/srnumvl.cc b/dcmsr/libcmr/srnumvl.cc
index a017f98..7ce6f27 100644
--- a/dcmsr/libcmr/srnumvl.cc
+++ b/dcmsr/libcmr/srnumvl.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 CMR_SRNumericMeasurementValue
@@ -29,9 +29,16 @@ CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const OFString &num
 }
 
 
+CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const CID42_NumericValueQualifier &valueQualifier,
+                                                             const OFBool check)
+  : DSRNumericMeasurementValue(valueQualifier, check)
+{
+}
+
+
 CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const OFString &numericValue,
                                                              const DSRCodedEntryValue &measurementUnit,
-                                                             const DSRCodedEntryValue &valueQualifier,
+                                                             const CID42_NumericValueQualifier &valueQualifier,
                                                              const OFBool check)
   : DSRNumericMeasurementValue(numericValue, measurementUnit, valueQualifier, check)
 {
@@ -44,6 +51,12 @@ CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const CMR_SRNumeric
 }
 
 
+CMR_SRNumericMeasurementValue::CMR_SRNumericMeasurementValue(const DSRNumericMeasurementValue &numericMeasurement)
+  : DSRNumericMeasurementValue(numericMeasurement)
+{
+}
+
+
 CMR_SRNumericMeasurementValue::~CMR_SRNumericMeasurementValue()
 {
 }
@@ -57,24 +70,42 @@ CMR_SRNumericMeasurementValue &CMR_SRNumericMeasurementValue::operator=(const CM
 }
 
 
-OFCondition CMR_SRNumericMeasurementValue::setNumericValueQualifier(CID42_NumericValueQualifier::EnumType valueQualifier,
-                                                                    const OFBool enhancedEncodingMode)
+OFCondition CMR_SRNumericMeasurementValue::setValue(const CID42_NumericValueQualifier &valueQualifier,
+                                                    const OFBool check)
+{
+    /* map type to coded entry and call the method doing the real work */
+    return DSRNumericMeasurementValue::setValue(valueQualifier, check);
+}
+
+
+OFCondition CMR_SRNumericMeasurementValue::setValue(const OFString &numericValue,
+                                                    const DSRCodedEntryValue &measurementUnit,
+                                                    const CID42_NumericValueQualifier &valueQualifier,
+                                                    const OFBool check)
+{
+    /* map type to coded entry and call the method doing the real work */
+    return DSRNumericMeasurementValue::setValue(numericValue, measurementUnit, valueQualifier, check);
+}
+
+
+OFCondition CMR_SRNumericMeasurementValue::setNumericValueQualifier(const CID42_NumericValueQualifier &valueQualifier,
+                                                                    const OFBool check)
 {
     /* map type to coded entry and call the method doing the real work */
-    return setNumericValueQualifier(CID42_NumericValueQualifier::getCodedEntry(valueQualifier, enhancedEncodingMode), OFFalse /*check*/);
+    return DSRNumericMeasurementValue::setNumericValueQualifier(valueQualifier, check);
 }
 
 
 OFCondition CMR_SRNumericMeasurementValue::checkNumericValueQualifier(const DSRCodedEntryValue &valueQualifier) const
 {
     /* first, perform some basic checks (done by the base class) */
-    OFCondition status = DSRNumericMeasurementValue::checkNumericValueQualifier(valueQualifier);
-    if (status.good() && !valueQualifier.isEmpty())
+    OFCondition result = DSRNumericMeasurementValue::checkNumericValueQualifier(valueQualifier);
+    if (result.good() && !valueQualifier.isEmpty())
     {
         /* then, also check for conformance with CID 42 */
         static const CID42_NumericValueQualifier contextGroup;
         if (contextGroup.findCodedEntry(valueQualifier).bad())
-            status = SR_EC_CodedEntryNotInContextGroup;
+            result = SR_EC_CodedEntryNotInContextGroup;
     }
-    return status;
+    return result;
 }
diff --git a/dcmsr/libcmr/tid1001.cc b/dcmsr/libcmr/tid1001.cc
index 54fadd6..262c499 100644
--- a/dcmsr/libcmr/tid1001.cc
+++ b/dcmsr/libcmr/tid1001.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 TID1001_ObservationContext
@@ -19,7 +19,8 @@
 // helper macros for checking the return value of API calls
 #define CHECK_RESULT(call) if (result.good()) result = call
 #define STORE_RESULT(call) result = call
-#define DELETE_ERROR(pointer) if (result.bad()) delete pointer
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
 
 // index positions in node list (makes source code more readable)
 #define LAST_PERSON_OBSERVER 0
@@ -53,7 +54,7 @@ OFCondition TID1001_ObservationContext::addPersonObserver(const OFString &person
     if (subTree != NULL)
     {
         /* TID 1002 (Observer Context) Row 1 */
-        STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_ObserverType));
+        STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_ObserverType, check));
         CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(CODE_DCM_Person, check));
         CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1002 - Row 1"));
         /* TID 1003 (Person Observer Identifying Attributes) Row 1 */
@@ -63,22 +64,22 @@ OFCondition TID1001_ObservationContext::addPersonObserver(const OFString &person
         /* TID 1003 (Person Observer Identifying Attributes) Row 2 */
         if (!organizationName.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_PersonObserverOrganizationName));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_PersonObserverOrganizationName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(organizationName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1003 - Row 2"));
         }
         /* TID 1003 (Person Observer Identifying Attributes) Row 3 */
         if (organizationRole.hasSelectedValue())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_PersonObserverRoleInTheOrganization));
-            CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(organizationRole.getSelectedValue(), check));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_PersonObserverRoleInTheOrganization, check));
+            CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(organizationRole, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1003 - Row 3"));
         }
         /* TID 1003 (Person Observer Identifying Attributes) Row 4 */
         if (procedureRole.hasSelectedValue())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_PersonObserverRoleInThisProcedure));
-            CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(procedureRole.getSelectedValue(), check));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_PersonObserverRoleInThisProcedure, check));
+            CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(procedureRole, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1003 - Row 4"));
         }
         /* if everything was OK, insert new subtree into the template */
@@ -86,15 +87,21 @@ OFCondition TID1001_ObservationContext::addPersonObserver(const OFString &person
         {
             const size_t lastNode = subTree->getNodeID();
             /* order is significant, so go to last person observer */
-            gotoLastEntryFromNodeList(this, LAST_PERSON_OBSERVER);
-            /* insert subtree at current position */
-            result = insertSubTree(subTree, AM_afterCurrent);
+            if (gotoLastEntryFromNodeList(this, LAST_PERSON_OBSERVER) > 0)
+            {
+                /* insert subtree at current position */
+                STORE_RESULT(insertSubTree(subTree, AM_afterCurrent));
+            } else {
+                /* this is the first person observer (but there might be device observers) */
+                gotoRoot();
+                /* insert subtree before current position (at the beginning of the tree) */
+                STORE_RESULT(insertSubTree(subTree, AM_beforeCurrent));
+            }
             /* store ID of recently added node for later use */
-            if (result.good())
-                storeEntryInNodeList(LAST_PERSON_OBSERVER, lastNode);
+            GOOD_RESULT(storeEntryInNodeList(LAST_PERSON_OBSERVER, lastNode));
         }
         /* in case of error, make sure that memory is freed */
-        DELETE_ERROR(subTree);
+        BAD_RESULT(delete subTree);
     }
     return result;
 }
@@ -107,6 +114,7 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
                                                           const OFString &serialNumber,
                                                           const OFString &physicalLocation,
                                                           const DeviceParticipatingRolesList &procedureRoles,
+                                                          const OFString &stationAEtitle,
                                                           const OFBool check)
 {
     OFCondition result = EC_MemoryExhausted;
@@ -115,7 +123,7 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
     if (subTree != NULL)
     {
         /* TID 1002 (Observer Context) Row 1 */
-        STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_ObserverType));
+        STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_ObserverType, check));
         CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(CODE_DCM_Device, check));
         CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1002 - Row 1"));
         /* TID 1004 (Device Observer Identifying Attributes) Row 1 */
@@ -125,35 +133,35 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
         /* TID 1004 (Device Observer Identifying Attributes) Row 2 */
         if (!deviceName.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverName));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(deviceName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 2"));
         }
         /* TID 1004 (Device Observer Identifying Attributes) Row 3 */
         if (!manufacturer.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverManufacturer));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverManufacturer, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(manufacturer, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 3"));
         }
         /* TID 1004 (Device Observer Identifying Attributes) Row 4 */
         if (!modelName.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverModelName));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverModelName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(modelName, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 4"));
         }
         /* TID 1004 (Device Observer Identifying Attributes) Row 5 */
         if (!serialNumber.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverSerialNumber));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverSerialNumber, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(serialNumber, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 5"));
         }
         /* TID 1004 (Device Observer Identifying Attributes) Row 6 */
         if (!physicalLocation.empty())
         {
-            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverPhysicalLocationDuringObservation));
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_DeviceObserverPhysicalLocationDuringObservation, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(physicalLocation, check));
             CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 6"));
         }
@@ -165,12 +173,19 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
             /* iterate over all list entries */
             while ((iter != last) && result.good())
             {
-                STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_DeviceRoleInProcedure));
+                STORE_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Code, CODE_DCM_DeviceRoleInProcedure, check));
                 CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(iter->getSelectedValue(), check));
                 CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 7"));
                 ++iter;
             }
         }
+        /* TID 1004 (Device Observer Identifying Attributes) Row 8 */
+        if (!stationAEtitle.empty())
+        {
+            CHECK_RESULT(subTree->addContentItem(RT_hasObsContext, VT_Text, CODE_DCM_StationAETitle, check));
+            CHECK_RESULT(subTree->getCurrentContentItem().setStringValue(stationAEtitle, check));
+            CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1004 - Row 8"));
+        }
         /* if everything was OK, insert new subtree into the template */
         if (result.good())
         {
@@ -178,13 +193,12 @@ OFCondition TID1001_ObservationContext::addDeviceObserver(const OFString &device
             /* order is significant, so go to last device (or person) observer */
             gotoLastEntryFromNodeList(this, LAST_DEVICE_OBSERVER);
             /* insert subtree at current position */
-            result = insertSubTree(subTree, AM_afterCurrent);
+            STORE_RESULT(insertSubTree(subTree, AM_afterCurrent));
             /* store ID of recently added node for later use */
-            if (result.good())
-                storeEntryInNodeList(LAST_DEVICE_OBSERVER, lastNode);
+            GOOD_RESULT(storeEntryInNodeList(LAST_DEVICE_OBSERVER, lastNode));
         }
         /* in case of error, make sure that memory is freed */
-        DELETE_ERROR(subTree);
+        BAD_RESULT(delete subTree);
 }
     return result;
 }
diff --git a/dcmsr/libcmr/tid1204.cc b/dcmsr/libcmr/tid1204.cc
index e3b358b..6f38c0e 100644
--- a/dcmsr/libcmr/tid1204.cc
+++ b/dcmsr/libcmr/tid1204.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 TID1204_LanguageOfContentItemAndDescendants
@@ -19,6 +19,8 @@
 // helper macros for checking the return value of API calls
 #define CHECK_RESULT(call) if (result.good()) result = call
 #define STORE_RESULT(call) result = call
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
 
 // general information on TID 1204 (Language of Content Item and Descendants)
 #define TEMPLATE_NUMBER      "1204"
@@ -42,21 +44,17 @@ OFCondition TID1204_LanguageOfContentItemAndDescendants::setLanguage(const CID50
     /* create a new subtree in order to "rollback" in case of error */
     DSRDocumentSubTree subTree;
     /* TID 1204 (Language of Content Item and Descendants) Row 1 */
-    STORE_RESULT(subTree.addContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_LanguageOfContentItemAndDescendants));
-    CHECK_RESULT(subTree.getCurrentContentItem().setCodeValue(language.getSelectedValue(), check));
+    STORE_RESULT(subTree.addContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_LanguageOfContentItemAndDescendants, check));
+    CHECK_RESULT(subTree.getCurrentContentItem().setCodeValue(language, check));
     CHECK_RESULT(subTree.getCurrentContentItem().setAnnotationText("TID 1204 - Row 1"));
     /* TID 1204 (Language of Content Item and Descendants) Row 2 */
     if (country.hasSelectedValue())
     {
-        CHECK_RESULT(subTree.addChildContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_CountryOfLanguage));
-        CHECK_RESULT(subTree.getCurrentContentItem().setCodeValue(country.getSelectedValue(), check));
+        CHECK_RESULT(subTree.addChildContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_CountryOfLanguage, check));
+        CHECK_RESULT(subTree.getCurrentContentItem().setCodeValue(country, check));
         CHECK_RESULT(subTree.getCurrentContentItem().setAnnotationText("TID 1204 - Row 2"));
     }
-    /* if everything was OK, insert new subtree into the template */
-    if (result.good())
-    {
-        /* replace currently stored subtree (if any) */
-        swap(subTree);
-    }
+    /* if everything was OK, replace current subtree of the template */
+    GOOD_RESULT(swap(subTree));
     return result;
 }
diff --git a/dcmsr/libcmr/tid1411.cc b/dcmsr/libcmr/tid1411.cc
new file mode 100644
index 0000000..2334a85
--- /dev/null
+++ b/dcmsr/libcmr/tid1411.cc
@@ -0,0 +1,603 @@
+/*
+ *
+ *  Copyright (C) 2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class TID1411_VolumetricROIMeasurements
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/tid1411.h"
+#include "dcmtk/dcmsr/cmr/cid6147.h"
+#include "dcmtk/dcmsr/cmr/cid7181.h"
+#include "dcmtk/dcmsr/cmr/cid7464.h"
+#include "dcmtk/dcmsr/cmr/cid7469.h"
+#include "dcmtk/dcmsr/cmr/logger.h"
+#include "dcmtk/dcmsr/codes/dcm.h"
+#include "dcmtk/dcmsr/codes/ncit.h"
+#include "dcmtk/dcmsr/codes/srt.h"
+#include "dcmtk/dcmsr/codes/umls.h"
+
+#include "dcmtk/dcmdata/dcdeftag.h"
+
+
+// helper macros for checking the return value of API calls
+#define CHECK_RESULT(call) if (result.good()) result = call
+#define STORE_RESULT(call) result = call
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
+
+// index positions in node list (makes source code more readable)
+#define MEASUREMENT_GROUP               0
+#define ACTIVITY_SESSION                1
+#define TRACKING_IDENTIFIER             2
+#define TRACKING_UNIQUE_IDENTIFIER      3
+#define FINDING                         4
+#define TIME_POINT                      5
+#define REFERENCED_SEGMENT              6
+#define SOURCE_SERIES_FOR_SEGMENTATION  7
+#define REAL_WORLD_VALUE_MAP            8
+#define MEASUREMENT_METHOD              9
+#define FINDING_SITE                   10
+#define LAST_MEASUREMENT               11
+
+// general information on TID 1411 (Volumetric ROI Measurements)
+#define TEMPLATE_NUMBER      "1411"
+#define MAPPING_RESOURCE     "DCMR"
+#define MAPPING_RESOURCE_UID UID_DICOMContentMappingResource
+#define TEMPLATE_TYPE        OFTrue  /* extensible */
+
+// conditions constants
+makeOFConditionConst(CMR_EC_NoMeasurementGroup,                 OFM_dcmsr, 1411, OF_error, "No Measurement Group");
+makeOFConditionConst(CMR_EC_InvalidSegmentationObject,          OFM_dcmsr, 1412, OF_error, "Invalid Segmentation Object");
+makeOFConditionConst(CMR_EC_InvalidRealWorldValueMappingObject, OFM_dcmsr, 1413, OF_error, "Invalid Real World Value Mapping Object");
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::TID1411_VolumetricROIMeasurements(const OFBool createGroup)
+  : DSRSubTemplate(TEMPLATE_NUMBER, MAPPING_RESOURCE, MAPPING_RESOURCE_UID)
+{
+    setExtensible(TEMPLATE_TYPE);
+    /* need to store position of various content items */
+    reserveEntriesInNodeList(12, OFTrue /*initialize*/);
+    /* TID 1411 (Volumetric ROI Measurements) Row 1 */
+    if (createGroup)
+        createMeasurementGroup();
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::isValid() const
+{
+    /* check whether base class is valid and all required content items are present */
+    return DSRSubTemplate::isValid() &&
+        hasMeasurementGroup() && hasTrackingIdentifier() && hasTrackingUniqueIdentifier() &&
+        hasReferencedSegment() && hasSourceSeriesForSegmentation() && hasROIMeasurements();
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasMeasurementGroup(const OFBool checkChildren) const
+{
+    OFBool result = OFFalse;
+    /* need to check for child nodes? */
+    if (checkChildren)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* go to content item at TID 1411 (Volumetric ROI Measurements) Row 1 */
+        if (gotoEntryFromNodeList(cursor, MEASUREMENT_GROUP) > 0)
+            result = cursor.hasChildNodes();
+    } else {
+        /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 1 */
+        result = (getEntryFromNodeList(MEASUREMENT_GROUP) > 0);
+    }
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasTrackingIdentifier() const
+{
+    /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 2 */
+    return (getEntryFromNodeList(TRACKING_IDENTIFIER) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasTrackingUniqueIdentifier() const
+{
+    /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 3 */
+    return (getEntryFromNodeList(TRACKING_UNIQUE_IDENTIFIER) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasReferencedSegment() const
+{
+    /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 7 */
+    return (getEntryFromNodeList(REFERENCED_SEGMENT) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasSourceSeriesForSegmentation() const
+{
+    /* check for content item at TID 1411 (Volumetric ROI Measurements) Row 12 */
+    return (getEntryFromNodeList(SOURCE_SERIES_FOR_SEGMENTATION) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFBool TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::hasROIMeasurements() const
+{
+    /* check for content item at TID 1419 (ROI Measurements) Row 5 */
+    return (getEntryFromNodeList(LAST_MEASUREMENT) > 0);
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setActivitySession(const OFString &session,
+                                                                                  const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!session.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 1b */
+        CHECK_RESULT(addOrReplaceContentItem(ACTIVITY_SESSION, RT_hasObsContext, VT_Text, CODE_NCIt_ActivitySession, "TID 1411 - Row 1b", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(session, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setTrackingIdentifier(const OFString &trackingID,
+                                                                                     const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!trackingID.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 2 */
+        CHECK_RESULT(addOrReplaceContentItem(TRACKING_IDENTIFIER, RT_hasObsContext, VT_Text, CODE_DCM_TrackingIdentifier, "TID 1411 - Row 2", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(trackingID, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setTrackingUniqueIdentifier(const OFString &trackingUID,
+                                                                                           const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!trackingUID.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 3 */
+        CHECK_RESULT(addOrReplaceContentItem(TRACKING_UNIQUE_IDENTIFIER, RT_hasObsContext, VT_UIDRef, CODE_DCM_TrackingUniqueIdentifier, "TID 1411 - Row 3", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(trackingUID, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setFinding(const DSRCodedEntryValue &finding,
+                                                                          const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (finding.isComplete())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 3b */
+        CHECK_RESULT(addOrReplaceContentItem(FINDING, RT_contains, VT_Code, CODE_DCM_Finding, "TID 1411 - Row 3b", check));
+        CHECK_RESULT(getCurrentContentItem().setCodeValue(finding, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setTimePoint(const OFString &timePoint,
+                                                                            const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!timePoint.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1502 (Time Point Context) Row 3 */
+        CHECK_RESULT(addOrReplaceContentItem(TIME_POINT, RT_hasObsContext, VT_Text, CODE_UMLS_TimePoint, "TID 1502 - Row 3", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(timePoint, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setReferencedSegment(const DSRImageReferenceValue &segment,
+                                                                                    const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (segment.isComplete())
+    {
+        const char *annotationText = "TID 1411 - Row 7";
+        const DSRBasicCodedEntry conceptName(CODE_DCM_ReferencedSegment);
+        /* check for supported segmentation SOP classes */
+        if ((segment.getSOPClassUID() != UID_SegmentationStorage) && (segment.getSOPClassUID() != UID_SurfaceSegmentationStorage))
+        {
+            DCMSR_CMR_WARN("Cannot set value of '" << conceptName.CodeMeaning << "' content item (" << annotationText << ") ... wrong SOP Class");
+            DCMSR_CMR_DEBUG("SOP Class UID \"" << segment.getSOPClassUID() << "\" does not match one of the known Segmentation objects");
+            result = CMR_EC_InvalidSegmentationObject;
+        }
+        /*  ... and number of referenced segments */
+        else if ((segment.getSegmentList().getNumberOfItems() != 1))
+        {
+            DCMSR_CMR_WARN("Cannot set value of '" << conceptName.CodeMeaning << "' content item (" << annotationText << ") ... wrong number of segments");
+            result = CMR_EC_InvalidSegmentationObject;
+        } else {
+            /* check whether measurement group already exists */
+            if (!hasMeasurementGroup())
+                result = createMeasurementGroup();
+            /* TID 1411 (Volumetric ROI Measurements) Row 7 */
+            CHECK_RESULT(addOrReplaceContentItem(REFERENCED_SEGMENT, RT_contains, VT_Image, conceptName, annotationText, check));
+            CHECK_RESULT(getCurrentContentItem().setImageReference(segment, check));
+        }
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setReferencedSegment(DcmItem &dataset,
+                                                                                    const Uint16 segmentNumber,
+                                                                                    const OFBool copyTracking,
+                                                                                    const OFBool check)
+{
+    DSRImageReferenceValue segment;
+    /* first, create the referenced image/segment object */
+    OFCondition result = segment.setReference(dataset, check);
+    segment.getSegmentList().addItem(segmentNumber);
+    /* then, add/set the corresponding content item */
+    CHECK_RESULT(setReferencedSegment(segment, check));
+    /* need to copy tracking information? (introduced with CP-1496) */
+    if (copyTracking && result.good())
+    {
+        DcmSequenceOfItems *dseq = NULL;
+        /* get SegmentSequence (should always be present) */
+        result = dataset.findAndGetSequence(DCM_SegmentSequence, dseq);
+        checkElementValue(dseq, DCM_SegmentSequence, "1-n", "1", result, "SegmentDescriptionMacro");
+        if (result.good())
+        {
+            DcmObject *dobj = NULL;
+            OFBool segmentFound = OFFalse;
+            /* iterate over all items in this sequence */
+            while (((dobj = dseq->nextInContainer(dobj)) != NULL) && !segmentFound)
+            {
+                Uint16 number = 0;
+                DcmItem *ditem = OFstatic_cast(DcmItem *, dobj);
+                /* search for given segment number */
+                if (ditem->findAndGetUint16(DCM_SegmentNumber, number).good())
+                {
+                    if (segmentNumber == number)
+                    {
+                        OFString trackingID, trackingUID;
+                        /* get tracking ID and UID from current item (if present) and add/set content item */
+                        getAndCheckStringValueFromDataset(*ditem, DCM_TrackingID, trackingID, "1", "1C", "SegmentSequence");
+                        getAndCheckStringValueFromDataset(*ditem, DCM_TrackingUID, trackingUID, "1", "1C", "SegmentSequence");
+                        if (!trackingID.empty() && !trackingUID.empty())
+                        {
+                            CHECK_RESULT(setTrackingIdentifier(trackingID, check));
+                            CHECK_RESULT(setTrackingUniqueIdentifier(trackingUID, check));
+                        }
+                        else if (trackingID.empty() != trackingUID.empty())
+                        {
+                            /* report a violation of the type 1C conditions */
+                            DCMSR_CMR_WARN("Either Tracking ID or Tracking UID is absent/empty in referenced segmentation object");
+                        }
+                        /* given segment number found */
+                        segmentFound = OFTrue;
+                    }
+                }
+            }
+            /* report a warning if referenced segment could not be found */
+            if (!segmentFound)
+            {
+                DCMSR_CMR_WARN("Cannot copy tracking information for '" << CODE_DCM_ReferencedSegment.CodeMeaning << "' content item (TID 1411 - Row 7) ... segment not found");
+                DCMSR_CMR_DEBUG("Cannot find given Segment Number (" << segmentNumber << ") in Segment Sequence of referenced segmentation object");
+            }
+        } else {
+            /* report a warning if referenced segment could not be found */
+            DCMSR_CMR_WARN("Cannot copy tracking information for '" << CODE_DCM_ReferencedSegment.CodeMeaning << "' content item (TID 1411 - Row 7) ... segment not found");
+        }
+        /* tbc: return with an error in case the tracking information could not be copied? */
+    }
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setSourceSeriesForSegmentation(const OFString &seriesUID,
+                                                                                              const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (!seriesUID.empty())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1411 (Volumetric ROI Measurements) Row 12 */
+        CHECK_RESULT(addOrReplaceContentItem(SOURCE_SERIES_FOR_SEGMENTATION, RT_contains, VT_UIDRef, CODE_DCM_SourceSeriesForSegmentation, "TID 1411 - Row 12", check));
+        CHECK_RESULT(getCurrentContentItem().setStringValue(seriesUID, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setRealWorldValueMap(const DSRCompositeReferenceValue &valueMap,
+                                                                                    const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (valueMap.isComplete())
+    {
+        const char *annotationText = "TID 1411 - Row 14";
+        const DSRBasicCodedEntry conceptName(CODE_DCM_RealWorldValueMapUsedForMeasurement);
+        /* check for real world value mapping SOP classes */
+        if (valueMap.getSOPClassUID() != UID_RealWorldValueMappingStorage)
+        {
+            DCMSR_CMR_WARN("Cannot set value of '" << conceptName.CodeMeaning << "' content item (" << annotationText << ") ... wrong SOP Class");
+            DCMSR_CMR_DEBUG("SOP Class UID \"" << valueMap.getSOPClassUID() << "\" does not match the one of the Real World Value Mapping object");
+            result = CMR_EC_InvalidRealWorldValueMappingObject;
+        } else {
+            /* check whether measurement group already exists */
+            if (!hasMeasurementGroup())
+                result = createMeasurementGroup();
+            /* TID 1411 (Volumetric ROI Measurements) Row 14 */
+            CHECK_RESULT(addOrReplaceContentItem(REAL_WORLD_VALUE_MAP, RT_contains, VT_Composite, conceptName, annotationText, check));
+            CHECK_RESULT(getCurrentContentItem().setCompositeReference(valueMap, check));
+        }
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setRealWorldValueMap(DcmItem &dataset,
+                                                                                    const OFBool check)
+{
+    DSRCompositeReferenceValue valueMap;
+    /* first, create the referenced composite object */
+    OFCondition result = valueMap.setReference(dataset, check);
+    /* then, add/set the corresponding content item */
+    CHECK_RESULT(setRealWorldValueMap(valueMap, check));
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T_Method, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T_Method, T4>::setMeasurementMethod(const T_Method &method,
+                                                                                          const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (method.hasSelectedValue())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1419 (ROI Measurements) Row 1 */
+        CHECK_RESULT(addOrReplaceContentItem(MEASUREMENT_METHOD, RT_hasConceptMod, VT_Code, CODE_SRT_MeasurementMethod, "TID 1419 - Row 1", check));
+        CHECK_RESULT(getCurrentContentItem().setCodeValue(method, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::setFindingSite(const DSRCodedEntryValue &site,
+                                                                              const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of parameter */
+    if (site.isComplete())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        /* TID 1419 (ROI Measurements) Row 2 */
+        CHECK_RESULT(addOrReplaceContentItem(FINDING_SITE, RT_hasConceptMod, VT_Code, CODE_SRT_FindingSite, "TID 1419 - Row 2", check));
+        CHECK_RESULT(getCurrentContentItem().setCodeValue(site, check));
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+template<typename T_Measurement, typename T_Units, typename T_Method, typename T_Derivation>
+OFCondition TID1411_VolumetricROIMeasurements<T_Measurement, T_Units, T_Method, T_Derivation>::addMeasurement(const T_Measurement &conceptName,
+                                                                                                              const MeasurementValue &numericValue,
+                                                                                                              const T_Method &method,
+                                                                                                              const T_Derivation &derivation,
+                                                                                                              const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* basic check of mandatory parameters */
+    if (conceptName.hasSelectedValue() && numericValue.isComplete())
+    {
+        /* check whether measurement group already exists */
+        if (!hasMeasurementGroup())
+            result = createMeasurementGroup();
+        if (result.good())
+        {
+            /* create a new subtree in order to "rollback" in case of error */
+            DSRDocumentSubTree *subTree = new DSRDocumentSubTree;
+            if (subTree != NULL)
+            {
+                /* TID 1419 (ROI Measurements) Row 5 */
+                STORE_RESULT(subTree->addContentItem(RT_contains, VT_Num, conceptName, check));
+                CHECK_RESULT(subTree->getCurrentContentItem().setNumericValue(numericValue, check));
+                CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1419 - Row 5"));
+                const size_t lastNode = subTree->getNodeID();
+                /* TID 1419 (ROI Measurements) Row 7 - optional */
+                if (method.hasSelectedValue())
+                {
+                    CHECK_RESULT(subTree->addChildContentItem(RT_hasConceptMod, VT_Code, CODE_SRT_MeasurementMethod, check));
+                    CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(method, check));
+                    CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1419 - Row 7"));
+                    GOOD_RESULT(subTree->gotoParent());
+                }
+                /* TID 1419 (ROI Measurements) Row 8 - optional */
+                if (derivation.hasSelectedValue())
+                {
+                    CHECK_RESULT(subTree->addChildContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_Derivation, check));
+                    CHECK_RESULT(subTree->getCurrentContentItem().setCodeValue(derivation, check));
+                    CHECK_RESULT(subTree->getCurrentContentItem().setAnnotationText("TID 1419 - Row 8"));
+                    GOOD_RESULT(subTree->gotoParent());
+                }
+                /* if everything was OK, insert new subtree into the template */
+                if (result.good() && !subTree->isEmpty())
+                {
+                    /* go to last measurement (if any) */
+                    if (gotoLastEntryFromNodeList(this, LAST_MEASUREMENT) > 0)
+                    {
+                        /* insert subtree at current position */
+                        STORE_RESULT(insertSubTree(subTree, AM_afterCurrent));
+                        /* store ID of recently added node for later use */
+                        GOOD_RESULT(storeEntryInNodeList(LAST_MEASUREMENT, lastNode));
+                    } else {
+                        /* should never happen but ... */
+                        result = CMR_EC_NoMeasurementGroup;
+                    }
+                    /* in case of error, make sure that memory is freed */
+                    BAD_RESULT(delete subTree);
+                } else {
+                    /* delete the new subtree since it has not been inserted */
+                    delete subTree;
+                }
+            } else
+                result = EC_MemoryExhausted;
+        }
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+// protected methods
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::createMeasurementGroup()
+{
+    OFCondition result = SR_EC_InvalidTemplateStructure;
+    if (isEmpty())
+    {
+        /* TID 1411 (Volumetric ROI Measurements) Row 1 */
+        STORE_RESULT(addContentItem(RT_unknown, VT_Container, CODE_DCM_MeasurementGroup));
+        CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1411 - Row 1"));
+        /* store ID of root node for later use */
+        GOOD_RESULT(storeEntryInNodeList(MEASUREMENT_GROUP, getNodeID()));
+    }
+    return result;
+}
+
+
+template<typename T1, typename T2, typename T3, typename T4>
+OFCondition TID1411_VolumetricROIMeasurements<T1, T2, T3, T4>::addOrReplaceContentItem(const size_t nodePos,
+                                                                                       const E_RelationshipType relationshipType,
+                                                                                       const E_ValueType valueType,
+                                                                                       const DSRCodedEntryValue &conceptName,
+                                                                                       const OFString &annotationText,
+                                                                                       const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* check concept name and coded entry value */
+    if (conceptName.isComplete())
+    {
+        /* check whether content item already exists */
+        if (getEntryFromNodeList(nodePos) == 0)
+        {
+            /* if not, create the content item (at correct position) */
+            if (gotoLastEntryFromNodeList(this, nodePos) == getEntryFromNodeList(MEASUREMENT_GROUP))
+            {
+                /* need to add the new content item as the first child */
+                if (addContentItem(relationshipType, valueType, AM_belowCurrentBeforeFirstChild) > 0)
+                {
+                    if (getCurrentContentItem().setConceptName(conceptName, check).bad())
+                        result = SR_EC_InvalidConceptName;
+                } else
+                    result = SR_EC_CannotAddContentItem;
+
+            } else {
+                /* add new content item as a sibling (after the current one) */
+                STORE_RESULT(addContentItem(relationshipType, valueType, conceptName));
+            }
+            /* store ID of added node for later use */
+            GOOD_RESULT(storeEntryInNodeList(nodePos, getNodeID()));
+        }
+        else if (gotoEntryFromNodeList(this, nodePos) > 0)
+        {
+            /* make sure that the value type of the existing content item is correct */
+            if (getCurrentContentItem().getValueType() != valueType)
+            {
+                DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                    << "' content item (" << annotationText << ") ... wrong value type");
+                result = SR_EC_InvalidContentItem;
+            }
+            else if (getCurrentContentItem().getConceptName() != conceptName)
+            {
+                DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                    << "' content item (" << annotationText << ") ... wrong concept name");
+                result = SR_EC_InvalidConceptName;
+            } else {
+                DCMSR_CMR_DEBUG("Replacing value of '" << conceptName.getCodeMeaning()
+                    << "' content item (" << annotationText << ")");
+            }
+        } else
+            result = SR_EC_InvalidTemplateStructure;
+        /* finally, set annotation */
+        CHECK_RESULT(getCurrentContentItem().setAnnotationText(annotationText));
+    } else
+        result = SR_EC_InvalidConceptName;
+    return result;
+}
+
+
+// explicit template instantiation (needed for use in TID 1500)
+template class TID1411_VolumetricROIMeasurements<CID7469_GenericIntensityAndSizeMeasurements,
+                                                 CID7181_AbstractMultiDimensionalImageModelComponentUnits,
+                                                 CID6147_ResponseCriteria,
+                                                 CID7464_GeneralRegionOfInterestMeasurementModifiers>;
diff --git a/dcmsr/libcmr/tid1500.cc b/dcmsr/libcmr/tid1500.cc
new file mode 100644
index 0000000..3c4b7b2
--- /dev/null
+++ b/dcmsr/libcmr/tid1500.cc
@@ -0,0 +1,373 @@
+/*
+ *
+ *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
+ *  All rights reserved.  See COPYRIGHT file for details.
+ *
+ *  Source file for class TID1500_MeasurementReport
+ *
+ *  Author: Joerg Riesmeier
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/cmr/tid1500.h"
+#include "dcmtk/dcmsr/cmr/logger.h"
+#include "dcmtk/dcmsr/codes/dcm.h"
+#include "dcmtk/dcmsr/codes/umls.h"
+
+#include "dcmtk/dcmsr/dsrtpltn.h"
+
+
+// helper macros for checking the return value of API calls
+#define CHECK_RESULT(call) if (result.good()) result = call
+#define STORE_RESULT(call) result = call
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
+
+// index positions in node list (makes source code more readable)
+#define MEASUREMENT_REPORT               0
+#define OBSERVATION_CONTEXT              1
+#define LAST_PROCEDURE_REPORTED          2
+#define IMAGING_MEASUREMENTS             3
+#define LAST_VOLUMETRIC_ROI_MEASUREMENTS 4
+#define QUALITATIVE_EVALUATIONS          5
+
+// general information on TID 1500 (Measurement Report)
+#define TEMPLATE_NUMBER      "1500"
+#define MAPPING_RESOURCE     "DCMR"
+#define MAPPING_RESOURCE_UID UID_DICOMContentMappingResource
+#define TEMPLATE_TYPE        OFTrue  /* extensible */
+
+// conditions constants
+makeOFConditionConst(CMR_EC_NoMeasurementReport, OFM_dcmsr, 1500, OF_error, "No Measurement Report");
+
+
+TID1500_MeasurementReport::TID1500_MeasurementReport(const CID7021_MeasurementReportDocumentTitles &title)
+  : DSRRootTemplate(DT_EnhancedSR, TEMPLATE_NUMBER, MAPPING_RESOURCE, MAPPING_RESOURCE_UID),
+    Language(new TID1204_LanguageOfContentItemAndDescendants()),
+    ObservationContext(new TID1001_ObservationContext()),
+    ImageLibrary(new TID1600_ImageLibrary()),
+    VolumetricROIMeasurements(new TID1411_Measurements())
+{
+    setExtensible(TEMPLATE_TYPE);
+    /* need to store position of various content items */
+    reserveEntriesInNodeList(6, OFTrue /*initialize*/);
+    /* if specified, create an initial report */
+    if (title.hasSelectedValue())
+        createMeasurementReport(title);
+}
+
+
+void TID1500_MeasurementReport::clear()
+{
+    DSRRootTemplate::clear();
+    Language->clear();
+    ObservationContext->clear();
+    ImageLibrary->clear();
+    VolumetricROIMeasurements->clear();
+}
+
+
+OFBool TID1500_MeasurementReport::isValid() const
+{
+    /* check whether base class is valid and all required content items are present */
+    return DSRRootTemplate::isValid() &&
+        Language->isValid() && ObservationContext->isValid() && ImageLibrary->isValid() &&
+        hasProcedureReported() && (hasImagingMeasurements() || hasQualitativeEvaluations());
+}
+
+
+OFBool TID1500_MeasurementReport::hasProcedureReported() const
+{
+    /* check for content item at TID 1500 (Measurement Report) Row 4 */
+    return (getEntryFromNodeList(LAST_PROCEDURE_REPORTED) > 0);
+}
+
+
+OFBool TID1500_MeasurementReport::hasImagingMeasurements(const OFBool checkChildren) const
+{
+    OFBool result = OFFalse;
+    /* need to check for child nodes? */
+    if (checkChildren)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* go to content item at TID 1500 (Measurement Report) Row 6 */
+        if (gotoEntryFromNodeList(cursor, IMAGING_MEASUREMENTS) > 0)
+        {
+            /* check whether any of the "included templates" is non-empty */
+            if (cursor.gotoChild())
+            {
+                while (cursor.isValid() && (cursor.getNode()->getValueType() == VT_includedTemplate))
+                {
+                    const DSRSubTemplate *subTempl = OFstatic_cast(const DSRIncludedTemplateTreeNode *, cursor.getNode())->getValue().get();
+                    if (subTempl != NULL)
+                    {
+                        result = !subTempl->isEmpty();
+                        if (result) break;
+                    }
+                    if (cursor.gotoNext() == 0)
+                    {
+                        /* invalidate cursor */
+                        cursor.clear();
+                    }
+                }
+            }
+        }
+    } else {
+        /* check for content item at TID 1500 (Measurement Report) Row 6 */
+        result = (getEntryFromNodeList(IMAGING_MEASUREMENTS) > 0);
+    }
+    return result;
+}
+
+
+OFBool TID1500_MeasurementReport::hasVolumetricROIMeasurements(const OFBool checkChildren) const
+{
+    OFBool result = OFFalse;
+    /* need to check for child nodes? */
+    if (checkChildren)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* go to content item at TID 1500 (Measurement Report) Row 8 */
+        if (gotoEntryFromNodeList(cursor, LAST_VOLUMETRIC_ROI_MEASUREMENTS) > 0)
+        {
+            /* check whether any of the "included TID 1411 templates" is non-empty */
+            while (cursor.isValid() && (cursor.getNode()->getValueType() == VT_includedTemplate))
+            {
+                const DSRSubTemplate *subTempl = OFstatic_cast(const DSRIncludedTemplateTreeNode *, cursor.getNode())->getValue().get();
+                if (subTempl != NULL)
+                {
+                    if (subTempl->compareTemplateIdentication("1411", "DCMR"))
+                    {
+                        result = !subTempl->isEmpty();
+                        if (result) break;
+                    } else {
+                        /* exit loop */
+                        break;
+                    }
+                }
+                if (cursor.gotoPrevious() == 0)
+                {
+                    /* invalidate cursor */
+                    cursor.clear();
+                }
+            }
+        }
+    } else {
+        /* check for content item at TID 1500 (Measurement Report) Row 8 */
+        result = (getEntryFromNodeList(LAST_VOLUMETRIC_ROI_MEASUREMENTS) > 0);
+    }
+    return result;
+}
+
+
+OFBool TID1500_MeasurementReport::hasQualitativeEvaluations(const OFBool checkChildren) const
+{
+    OFBool result = OFFalse;
+    /* need to check for child nodes? */
+    if (checkChildren)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* go to content item at TID 1500 (Measurement Report) Row 12 */
+        if (gotoEntryFromNodeList(cursor, QUALITATIVE_EVALUATIONS) > 0)
+            result = cursor.hasChildNodes();
+    } else {
+        /* check for content item at TID 1500 (Measurement Report) Row 12 */
+        result = (getEntryFromNodeList(QUALITATIVE_EVALUATIONS) > 0);
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::getDocumentTitle(DSRCodedEntryValue &titleCode)
+{
+    OFCondition result = EC_Normal;
+    /* go to content item at TID 1500 (Measurement Report) Row 1 */
+    if (gotoEntryFromNodeList(this, MEASUREMENT_REPORT) > 0)
+    {
+        titleCode = getCurrentContentItem().getConceptName();
+    } else {
+        /* in case of error, clear the result variable */
+        titleCode.clear();
+        result = SR_EC_ContentItemNotFound;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::createNewMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title)
+{
+    clear();
+    /* TID 1500 (Measurement Report) Row 1 */
+    return createMeasurementReport(title);
+}
+
+
+OFCondition TID1500_MeasurementReport::setLanguage(const CID5000_Languages &language,
+                                                   const CID5001_Countries &country,
+                                                   const OFBool check)
+{
+    /* TID 1500 (Measurement Report) Row 2 */
+    return getLanguage().setLanguage(language, country, check);
+}
+
+
+OFCondition TID1500_MeasurementReport::addProcedureReported(const CID100_QuantitativeDiagnosticImagingProcedures &procedure,
+                                                            const OFBool check)
+{
+    OFCondition result = EC_IllegalParameter;
+    /* make sure that there is a coded entry */
+    if (procedure.hasSelectedValue())
+    {
+        /* go to last content item at TID 1500 (Measurement Report) Row 3 or 4 */
+        if (gotoLastEntryFromNodeList(this, LAST_PROCEDURE_REPORTED, OBSERVATION_CONTEXT) > 0)
+        {
+            /* TID 1500 (Measurement Report) Row 4 */
+            STORE_RESULT(addContentItem(RT_hasConceptMod, VT_Code, CODE_DCM_ProcedureReported, check));
+            CHECK_RESULT(getCurrentContentItem().setCodeValue(procedure, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 4"));
+            /* store ID of recently added node for later use */
+            GOOD_RESULT(storeEntryInNodeList(LAST_PROCEDURE_REPORTED, getNodeID()));
+        } else
+            result = CMR_EC_NoMeasurementReport;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::addVolumetricROIMeasurements()
+{
+    OFCondition result = CMR_EC_NoMeasurementReport;
+    /* go to content item at TID 1500 (Measurement Report) Row 8 */
+    if (gotoEntryFromNodeList(this, LAST_VOLUMETRIC_ROI_MEASUREMENTS) > 0)
+    {
+        /* create new instance of TID 1411 (Volumetric ROI Measurements) */
+        TID1411_Measurements *subTempl = new TID1411_Measurements();
+        if (subTempl != NULL)
+        {
+            /* store (shared) reference to new instance */
+            VolumetricROIMeasurements.reset(subTempl);
+            /* and add it to the current template (TID 1500 - Row 8) */
+            STORE_RESULT(includeTemplate(VolumetricROIMeasurements, AM_afterCurrent, RT_contains));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 8"));
+            GOOD_RESULT(storeEntryInNodeList(LAST_VOLUMETRIC_ROI_MEASUREMENTS, getNodeID()));
+            /* tbc: what if the call of includeTemplate() fails? */
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
+                                                                const DSRCodedEntryValue &codeValue,
+                                                                const OFBool check)
+{
+    OFCondition result = EC_IllegalParameter;
+    /* make sure that the parameters are non-empty */
+    if (conceptName.isComplete() && codeValue.isComplete())
+    {
+        /* create content item at TID 1500 (Measurement Report) Row 12 if not existing */
+        result = createQualitativeEvaluations();
+        /* go to content item at TID 1500 (Measurement Report) Row 12 */
+        if (gotoEntryFromNodeList(this, QUALITATIVE_EVALUATIONS) > 0)
+        {
+            /* TID 1500 (Measurement Report) Row 13 */
+            CHECK_RESULT(addChildContentItem(RT_contains, VT_Code, conceptName, check));
+            CHECK_RESULT(getCurrentContentItem().setCodeValue(codeValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 13"));
+        } else
+            result = CMR_EC_NoMeasurementReport;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
+                                                                const OFString &stringValue,
+                                                                const OFBool check)
+{
+    OFCondition result = EC_IllegalParameter;
+    /* make sure that the parameters are non-empty */
+    if (conceptName.isComplete() && !stringValue.empty())
+    {
+        /* create content item at TID 1500 (Measurement Report) Row 12 if not existing */
+        result = createQualitativeEvaluations();
+        /* go to content item at TID 1500 (Measurement Report) Row 12 */
+        if (gotoEntryFromNodeList(this, QUALITATIVE_EVALUATIONS) > 0)
+        {
+            /* TID 1500 (Measurement Report) Row 14 */
+            CHECK_RESULT(addChildContentItem(RT_contains, VT_Text, conceptName, check));
+            CHECK_RESULT(getCurrentContentItem().setStringValue(stringValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 14"));
+        } else
+            result = CMR_EC_NoMeasurementReport;
+    }
+    return result;
+}
+
+
+// protected methods
+
+OFCondition TID1500_MeasurementReport::createMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title)
+{
+    OFCondition result = EC_IllegalParameter;
+    /* make sure that there is a coded entry */
+    if (title.hasSelectedValue())
+    {
+        /* reassure that the report is definitely empty */
+        if (isEmpty())
+        {
+            /* TID 1500 (Measurement Report) Row 1 */
+            STORE_RESULT(addContentItem(RT_isRoot, VT_Container, title));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 1"));
+            /* store ID of root node for later use */
+            if (result.good())
+                storeEntryInNodeList(MEASUREMENT_REPORT, getNodeID());
+            /* TID 1500 (Measurement Report) Row 2 */
+            CHECK_RESULT(includeTemplate(Language, AM_belowCurrent, RT_hasConceptMod));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 2"));
+            /* TID 1500 (Measurement Report) Row 3 */
+            CHECK_RESULT(includeTemplate(ObservationContext, AM_afterCurrent, RT_hasObsContext));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 3"));
+            GOOD_RESULT(storeEntryInNodeList(OBSERVATION_CONTEXT, getNodeID()));
+            /* TID 1500 (Measurement Report) Row 5 */
+            CHECK_RESULT(includeTemplate(ImageLibrary, AM_afterCurrent, RT_contains));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 5"));
+            /* TID 1500 (Measurement Report) Row 6 */
+            CHECK_RESULT(addContentItem(RT_contains, VT_Container, CODE_DCM_ImagingMeasurements));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 6"));
+            GOOD_RESULT(storeEntryInNodeList(IMAGING_MEASUREMENTS, getNodeID()));
+            /* TID 1500 (Measurement Report) Row 8 */
+            CHECK_RESULT(includeTemplate(VolumetricROIMeasurements, AM_belowCurrent, RT_contains));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 8"));
+            GOOD_RESULT(storeEntryInNodeList(LAST_VOLUMETRIC_ROI_MEASUREMENTS, getNodeID()));
+            /* if anything went wrong, clear the report */
+            BAD_RESULT(clear());
+        } else
+            result = SR_EC_InvalidTemplateStructure;
+    }
+    return result;
+}
+
+
+OFCondition TID1500_MeasurementReport::createQualitativeEvaluations()
+{
+    OFCondition result = EC_Normal;
+    /* check whether content item at TID 1500 (Measurement Report) Row 12 already exists */
+    if (!hasQualitativeEvaluations())
+    {
+        /* if not, go to the preceding content item, which always exists */
+        if (gotoEntryFromNodeList(this, IMAGING_MEASUREMENTS) > 0)
+        {
+            /* ... and add TID 1500 (Measurement Report) Row 12 */
+            STORE_RESULT(addContentItem(RT_contains, VT_Container, CODE_UMLS_QualitativeEvaluations));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1500 - Row 12"));
+            GOOD_RESULT(storeEntryInNodeList(QUALITATIVE_EVALUATIONS, getNodeID()));
+        } else
+            result = CMR_EC_NoMeasurementReport;
+    }
+    return result;
+}
diff --git a/dcmsr/libcmr/tid1600.cc b/dcmsr/libcmr/tid1600.cc
index a42276d..f082ac9 100644
--- a/dcmsr/libcmr/tid1600.cc
+++ b/dcmsr/libcmr/tid1600.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 TID1600_ImageLibrary
@@ -24,17 +24,18 @@
 #include "dcmtk/dcmsr/codes/ucum.h"
 
 #include "dcmtk/dcmsr/dsrdattn.h"
-#include "dcmtk/dcmsr/dsrnumvl.h"
 
 
 // helper macros for checking the return value of API calls
 #define CHECK_RESULT(call) if (result.good()) result = call
 #define STORE_RESULT(call) result = call
-#define DELETE_ERROR(pointer) if (result.bad()) delete pointer
+#define GOOD_RESULT(call) if (result.good()) call
+#define BAD_RESULT(call) if (result.bad()) call
 
 // index positions in node list (makes source code more readable)
-#define LAST_IMAGE_LIBRARY_GROUP 0
-#define LAST_IMAGE_LIBRARY_ENTRY 1
+#define IMAGE_LIBRARY            0
+#define LAST_IMAGE_LIBRARY_GROUP 1
+#define LAST_IMAGE_LIBRARY_ENTRY 2
 
 // general information on TID 1600 (Image Library)
 #define TEMPLATE_NUMBER      "1600"
@@ -44,106 +45,159 @@
 
 
 // conditions constants
-makeOFConditionConst(CMR_EC_NoImageLibraryGroup,                           OFM_dcmsr, 1600, OF_error, "No Image Library Group");
-makeOFConditionConst(CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors, OFM_dcmsr, 1602, OF_error, "Cannot add multiple Image Library Entry Descriptors");
+makeOFConditionConst(CMR_EC_NoImageLibrary,                                OFM_dcmsr, 1600, OF_error, "No Image Library");
+makeOFConditionConst(CMR_EC_NoImageLibraryGroup,                           OFM_dcmsr, 1601, OF_error, "No Image Library Group");
+makeOFConditionConst(CMR_EC_NoImageLibraryEntry,                           OFM_dcmsr, 1602, OF_error, "No Image Library Entry");
+makeOFConditionConst(CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors, OFM_dcmsr, 1603, OF_error, "Cannot add multiple Image Library Entry Descriptors");
+makeOFConditionConst(CMR_EC_MissingImageLibraryEntryDescriptorModality,    OFM_dcmsr, 1604, OF_error, "Missing Image Library Entry Descriptor 'Modality'");
+makeOFConditionConst(CMR_EC_WrongImageLibraryEntryDescriptorModality,      OFM_dcmsr, 1605, OF_error, "Wrong Image Library Entry Descriptor 'Modality'");
+makeOFConditionConst(CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded,       OFM_dcmsr, 1606, OF_ok,    "No Image Library Entry Descriptors to be added");
 
 
-TID1600_ImageLibrary::TID1600_ImageLibrary()
+TID1600_ImageLibrary::TID1600_ImageLibrary(const OFBool createLibrary)
   : DSRSubTemplate(TEMPLATE_NUMBER, MAPPING_RESOURCE, MAPPING_RESOURCE_UID)
 {
     setExtensible(TEMPLATE_TYPE);
-    /* need to store last image library group and entry */
-    reserveEntriesInNodeList(2);
+    /* need to store image library, last image library group and entry */
+    reserveEntriesInNodeList(3);
     /* TID 1600 (Image Library) Row 1 */
-    if (addChildContentItem(RT_unknown, VT_Container, CODE_DCM_ImageLibrary).good())
-        getCurrentContentItem().setAnnotationText("TID 1600 - Row 1");
+    if (createLibrary)
+        createImageLibrary();
+}
+
+
+OFBool TID1600_ImageLibrary::isValid() const
+{
+    /* check whether base class is valid and image library exists */
+    return DSRSubTemplate::isValid() && hasImageLibrary();
+}
+
+
+OFBool TID1600_ImageLibrary::hasImageLibrary() const
+{
+    /* check for image library (TID 1600 - Row 1) */
+    return (getEntryFromNodeList(IMAGE_LIBRARY) > 0);
+}
+
+
+OFBool TID1600_ImageLibrary::hasImageLibraryGroup() const
+{
+    /* check for image library group (TID 1600 - Row 2) */
+    return (getEntryFromNodeList(LAST_IMAGE_LIBRARY_GROUP) > 0);
+}
+
+
+OFCondition TID1600_ImageLibrary::createNewImageLibrary()
+{
+    clear();
+    /* TID 1600 (Image Library) Row 1 */
+    return createImageLibrary();
 }
 
 
 OFCondition TID1600_ImageLibrary::addImageGroup()
 {
-    OFCondition result = EC_Normal;
-    /* go to last image library group (if any) */
-    if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
-    {
-        /* TID 1600 (Image Library) Row 2, append to last group */
-        STORE_RESULT(addContentItem(RT_contains, VT_Container, CODE_DCM_ImageLibraryGroup));
-    } else {
-        /* TID 1600 (Image Library) Row 2, create first group (child) */
-        STORE_RESULT(addChildContentItem(RT_contains, VT_Container, CODE_DCM_ImageLibraryGroup));
-    }
-    CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1600 - Row 2"));
-    /* store ID of recently added node for later use */
-    if (result.good())
+    OFCondition result = CMR_EC_NoImageLibrary;
+    /* check whether image library exists */
+    if (hasImageLibrary())
     {
-        storeEntryInNodeList(LAST_IMAGE_LIBRARY_GROUP, getNodeID());
-        storeEntryInNodeList(LAST_IMAGE_LIBRARY_ENTRY, 0 /* forget last entry */);
+        /* go to last image library group (if any) */
+        if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
+        {
+            /* TID 1600 (Image Library) Row 2, append to last group */
+            STORE_RESULT(addContentItem(RT_contains, VT_Container, CODE_DCM_ImageLibraryGroup));
+        }
+        /* go to image library (root node) */
+        else if (gotoEntryFromNodeList(this, IMAGE_LIBRARY) > 0)
+        {
+            /* TID 1600 (Image Library) Row 2, create first group (child) */
+            STORE_RESULT(addChildContentItem(RT_contains, VT_Container, CODE_DCM_ImageLibraryGroup));
+        } else {
+            /* should never happen but ... */
+            result = SR_EC_InvalidTemplateStructure;
+        }
+        CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1600 - Row 2"));
+        /* store ID of recently added node for later use */
+        if (result.good())
+        {
+            storeEntryInNodeList(LAST_IMAGE_LIBRARY_GROUP, getNodeID());
+            storeEntryInNodeList(LAST_IMAGE_LIBRARY_ENTRY, 0 /* forget last entry */);
+        }
     }
     return result;
 }
 
 
-
 OFCondition TID1600_ImageLibrary::addImageEntry(DcmItem &dataset,
                                                 const AddImageMode mode,
                                                 const OFBool check)
 {
-    OFCondition result = EC_MemoryExhausted;
-    /* create a new subtree in order to "rollback" in case of error */
-    DSRDocumentSubTree *tid1601 = new DSRDocumentSubTree;
-    if (tid1601 != NULL)
+    OFCondition result = CMR_EC_NoImageLibraryGroup;
+    /* check whether image library group exists */
+    if (hasImageLibraryGroup())
     {
-        DSRImageReferenceValue imageRef;
-        /* TID 1601 (Image Library Entry) Row 1 */
-        STORE_RESULT(tid1601->addContentItem(RT_contains, VT_Image, DSRCodedEntryValue()));
-        CHECK_RESULT(imageRef.setReference(dataset, check));
-        CHECK_RESULT(tid1601->getCurrentContentItem().setImageReference(imageRef, check));
-        CHECK_RESULT(tid1601->getCurrentContentItem().setAnnotationText("TID 1601 - Row 1"));
-        const size_t lastNode = tid1601->getNodeID();
-        /* TID 1601 (Image Library Entry) Row 2 */
-        if (mode == withAllDescriptors)
+        /* create a new subtree in order to "rollback" in case of error */
+        DSRDocumentSubTree *tid1601 = new DSRDocumentSubTree;
+        if (tid1601 != NULL)
         {
-            /* create a new subtree for TID 1602 (Image Library Entry Descriptors) */
-            DSRDocumentSubTree *tid1602 = new DSRDocumentSubTree;
-            if (tid1602 != NULL)
+            DSRImageReferenceValue imageRef;
+            /* TID 1601 (Image Library Entry) Row 1 */
+            STORE_RESULT(tid1601->addContentItem(RT_contains, VT_Image, DSRCodedEntryValue(), check));
+            CHECK_RESULT(imageRef.setReference(dataset, check));
+            CHECK_RESULT(tid1601->getCurrentContentItem().setImageReference(imageRef, check));
+            CHECK_RESULT(tid1601->getCurrentContentItem().setAnnotationText("TID 1601 - Row 1"));
+            const size_t lastNode = tid1601->getNodeID();
+            /* TID 1601 (Image Library Entry) Row 2 */
+            if (mode == withAllDescriptors)
             {
-                /* call the function doing the real work */
-                result = addImageEntryDescriptors(*tid1602, dataset, check);
-                /* if everything was OK, insert new subtree into the template */
-                if (result.good() && !tid1602->isEmpty())
+                /* create a new subtree for TID 1602 (Image Library Entry Descriptors) */
+                DSRDocumentSubTree *tid1602 = new DSRDocumentSubTree;
+                if (tid1602 != NULL)
                 {
-                    /* insert subtree below current node */
-                    result = tid1601->insertSubTree(tid1602);
-                }
-                /* in case of error, make sure that memory is freed */
-                DELETE_ERROR(tid1602);
-            } else
-                result = EC_MemoryExhausted;
-        }
-        /* if everything was OK, insert new subtree into the template */
-        if (result.good())
-        {
-            E_AddMode addMode = AM_afterCurrent;
-            /* go to last image library entry (if any) */
-            if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_ENTRY) > 0)
-                addMode = AM_afterCurrent;
-            /* go to last image library group (if any) */
-            else if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
-                addMode = AM_belowCurrent;
-            else
-                result = CMR_EC_NoImageLibraryGroup;
-            /* there is at least an image library group */
+                    /* call the function doing the real work */
+                    STORE_RESULT(addImageEntryDescriptors(*tid1602, dataset, check));
+                    /* if everything was OK, insert new subtree into the template */
+                    if (result.good() && !tid1602->isEmpty())
+                    {
+                        /* insert subtree below current node */
+                        STORE_RESULT(tid1601->insertSubTree(tid1602));
+                        /* in case of error, make sure that memory is freed */
+                        BAD_RESULT(delete tid1602);
+                    } else {
+                        CHECK_RESULT(CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded);
+                        /* delete the new subtree since it has not been inserted */
+                        delete tid1602;
+                    }
+                } else
+                    result = EC_MemoryExhausted;
+            }
+            /* if everything was OK, insert new subtree into the template */
             if (result.good())
             {
-                /* insert subtree at current position */
-                result = insertSubTree(tid1601, addMode);
-                /* store ID of recently added node for later use */
+                E_AddMode addMode = AM_afterCurrent;
+                /* go to last image library entry (if any) */
+                if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_ENTRY) > 0)
+                    addMode = AM_afterCurrent;
+                /* go to last image library group */
+                else if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
+                    addMode = AM_belowCurrent;
+                else {
+                    /* should never happen but ... */
+                    result = CMR_EC_NoImageLibraryGroup;
+                }
+                /* there is at least an image library group */
                 if (result.good())
-                    storeEntryInNodeList(LAST_IMAGE_LIBRARY_ENTRY, lastNode);
+                {
+                    /* insert subtree at current position */
+                    STORE_RESULT(insertSubTree(tid1601, addMode));
+                    /* store ID of recently added node for later use */
+                    GOOD_RESULT(storeEntryInNodeList(LAST_IMAGE_LIBRARY_ENTRY, lastNode));
+                }
             }
-        }
-        /* in case of error, make sure that memory is freed */
-        DELETE_ERROR(tid1601);
+            /* in case of error, make sure that memory is freed */
+            BAD_RESULT(delete tid1601);
+        } else
+            result = EC_MemoryExhausted;
     }
     return result;
 }
@@ -152,42 +206,179 @@ OFCondition TID1600_ImageLibrary::addImageEntry(DcmItem &dataset,
 OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DcmItem &dataset,
                                                            const OFBool check)
 {
-    OFCondition result = EC_MemoryExhausted;
-    /* create a new subtree in order to "rollback" in case of error */
-    DSRDocumentSubTree *subTree = new DSRDocumentSubTree;
-    if (subTree != NULL)
+    OFCondition result = CMR_EC_NoImageLibraryGroup;
+    /* check whether image library group exists */
+    if (hasImageLibraryGroup())
     {
-        /* call the function doing the real work */
-        result = addImageEntryDescriptors(*subTree, dataset, check);
-        /* if everything was OK, insert new subtree into the template */
-        if (result.good() && !subTree->isEmpty())
+        /* create a new subtree in order to "rollback" in case of error */
+        DSRDocumentSubTree *subTree = new DSRDocumentSubTree;
+        if (subTree != NULL)
         {
-            /* go to last image library group (if any) */
-            if (gotoLastEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
+            /* call the function doing the real work */
+            STORE_RESULT(addImageEntryDescriptors(*subTree, dataset, check));
+            /* if everything was OK, insert new subtree into the template */
+            if (result.good() && !subTree->isEmpty())
             {
-
-                /* check whether TID 1600 (Image Library) Row 3 is already there */
-                const DSRDocumentTreeNode *childNode = getChildNode();
-                if ((childNode != NULL) && (childNode->getRelationshipType() == RT_hasAcqContext))
+                /* go to last image library group (if any) */
+                if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_GROUP) > 0)
                 {
-                    /* only a single invocation of the included template allowed */
-                    result = CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors;
+                    /* check whether TID 1600 (Image Library) Row 3 is already there */
+                    const DSRDocumentTreeNode *childNode = getChildNode();
+                    if ((childNode != NULL) && (childNode->getRelationshipType() == RT_hasAcqContext))
+                    {
+                        /* only a single invocation of the included template allowed */
+                        result = CMR_EC_CannotAddMultipleImageLibraryEntryDescriptors;
+                    } else {
+                        /* insert subtree at current position */
+                        STORE_RESULT(insertSubTree(subTree, AM_belowCurrentBeforeFirstChild));
+                    }
                 } else {
-                    /* insert subtree at current position */
-                    result = insertSubTree(subTree, AM_belowCurrentBeforeFirstChild);
+                    /* should never happen but ... */
+                    result = CMR_EC_NoImageLibraryGroup;
                 }
-            } else
-                result = CMR_EC_NoImageLibraryGroup;
-        }
-        /* in case of error, make sure that memory is freed */
-        DELETE_ERROR(subTree);
+                /* in case of error, make sure that memory is freed */
+                BAD_RESULT(delete subTree);
+            } else {
+                CHECK_RESULT(CMR_EC_NoImageLibraryEntryDescriptorsToBeAdded);
+                /* delete the new subtree since it has not been inserted */
+                delete subTree;
+            }
+        } else
+            result = EC_MemoryExhausted;
+    }
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::getImageEntryModality(DSRCodedEntryValue &modalityCode)
+{
+    OFCondition result = CMR_EC_NoImageLibraryEntry;
+    /* go to last image library entry (if any) */
+    if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_ENTRY) > 0)
+    {
+        /* get value of TID 1602 (Image Library Entry Descriptors) Row 1 */
+        if ((gotoNamedChildNode(CODE_DCM_Modality, OFFalse /*searchIntoSub*/) > 0))
+        {
+            modalityCode = getCurrentContentItem().getCodeValue();
+            result = EC_Normal;
+        } else
+            result = CMR_EC_MissingImageLibraryEntryDescriptorModality;
     }
+    /* in case of error, clear the result variable */
+    BAD_RESULT(modalityCode.clear());
+    return result;
+}
+
+
+// set methods
+
+OFCondition TID1600_ImageLibrary::setPETImageRadionuclide(const CID4020_PETRadionuclide &radionuclide,
+                                                          const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setCodeContentItemFromValue(CODE_SRT_Radionuclide, radionuclide, "TID 1607 - Row 1", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadiopharmaceuticalAgent(const CID4021_PETRadiopharmaceutical &agent,
+                                                                      const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setCodeContentItemFromValue(CODE_SRT_RadiopharmaceuticalAgent, agent, "TID 1607 - Row 2", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadiopharmaceuticalStartDateTime(const OFString &dateTime,
+                                                                              const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setStringContentItemFromValue(VT_DateTime, CODE_DCM_RadiopharmaceuticalStartTime /*DateTime*/, dateTime, "TID 1607 - Row 4", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadiopharmaceuticalStopDateTime(const OFString &dateTime,
+                                                                             const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setStringContentItemFromValue(VT_DateTime, CODE_DCM_RadiopharmaceuticalStopTime /*DateTime*/, dateTime, "TID 1607 - Row 5", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadiopharmaceuticalVolume(const CMR_SRNumericMeasurementValue &volume,
+                                                                       const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setNumericContentItemFromValue(CODE_DCM_RadiopharmaceuticalVolume, volume, CODE_UCUM_cm3 /*might change with a CP*/, "TID 1607 - Row 6", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setPETImageRadionuclideTotalDose(const CMR_SRNumericMeasurementValue &totalDose,
+                                                                   const OFBool check)
+{
+    /* remember current node */
+    const DSRDocumentTreeNodeCursor cursor(getCursor());
+    /* go to image library entry and check for expected modality */
+    OFCondition result = goAndCheckImageLibraryEntry(CODE_DCM_PositronEmissionTomography);
+    /* set content item value (and add a new content item if needed) */
+    CHECK_RESULT(setNumericContentItemFromValue(CODE_DCM_RadionuclideTotalDose, totalDose, CODE_UCUM_Bq, "TID 1607 - Row 7", check));
+    /* in case of error, reset cursor to stored node */
+    BAD_RESULT(setCursor(cursor));
     return result;
 }
 
 
 // protected methods
 
+OFCondition TID1600_ImageLibrary::createImageLibrary()
+{
+    OFCondition result = SR_EC_InvalidTemplateStructure;
+    if (isEmpty())
+    {
+        /* TID 1600 (Image Library) Row 1 */
+        STORE_RESULT(addContentItem(RT_unknown, VT_Container, CODE_DCM_ImageLibrary));
+        CHECK_RESULT(getCurrentContentItem().setAnnotationText("TID 1600 - Row 1"));
+        /* store ID of root node for later use */
+        GOOD_RESULT(storeEntryInNodeList(IMAGE_LIBRARY, getNodeID()));
+    }
+    return result;
+}
+
+
 OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DSRDocumentSubTree &tree,
                                                            DcmItem &dataset,
                                                            const OFBool check)
@@ -200,9 +391,9 @@ OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DSRDocumentSubTree &t
         /* determine modality code from CID 29 */
         const CID29e_AcquisitionModality contextGroup;
         DSRCodedEntryValue modalityCode(contextGroup.mapModality(modality));
-        if (modalityCode.isValid())
+        if (modalityCode.isComplete())
         {
-            CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_Modality));
+            CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_Modality, check));
             CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(modalityCode, check));
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1602 - Row 1"));
         } else {
@@ -220,16 +411,16 @@ OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DSRDocumentSubTree &t
         {
             /* alternatively, determine target region code from CID 4031 (using PS 3.16 Annex L) */
             regionCode = CID4031e_CommonAnatomicRegions::mapBodyPartExamined(bodyPartExamined);
-            if (!regionCode.isValid())
+            if (!regionCode.isComplete())
             {
                 /* report this as a debug message (avoid too many warnings) */
                 DCMSR_CMR_DEBUG("Cannot map Body Part Examined '" << bodyPartExamined << "' to a coded entry (no mapping to CID 4031 defined)");
             }
         }
     }
-    if (regionCode.isValid())
+    if (regionCode.isComplete())
     {
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_TargetRegion));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_TargetRegion, check));
         CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(regionCode, check));
         CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1602 - Row 2"));
     }
@@ -239,9 +430,9 @@ OFCondition TID1600_ImageLibrary::addImageEntryDescriptors(DSRDocumentSubTree &t
     {
         /* determine image laterality code from CID 244 */
         DSRCodedEntryValue lateralityCode(CID244e_Laterality::mapImageLaterality(imageLaterality));
-        if (lateralityCode.isValid())
+        if (lateralityCode.isComplete())
         {
-            CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ImageLaterality));
+            CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ImageLaterality, check));
             CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(lateralityCode, check));
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1602 - Row 3"));
         } else {
@@ -324,7 +515,7 @@ OFCondition TID1600_ImageLibrary::addProjectionRadiographyDescriptors(DSRDocumen
                     DSRCodedEntryValue modifierCode;
                     if (modifierCode.readSequenceItem(*OFstatic_cast(DcmItem *, object), DCM_ViewModifierCodeSequence).good())
                     {
-                        CHECK_RESULT(tree.addChildContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ImageViewModifier));
+                        CHECK_RESULT(tree.addChildContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ImageViewModifier, check));
                         CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(modifierCode, check));
                         CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1603 - Row 2"));
                         tree.goUp();
@@ -391,7 +582,7 @@ OFCondition TID1600_ImageLibrary::addComputedTomographyDescriptors(DSRDocumentSu
     OFCondition result = EC_Normal;
     /* TID 1605 (Image Library Entry Descriptors for CT) Row 1 */
     DcmSequenceOfItems *ctAcquisitionTypeSequence = NULL;
-    /* - tbd: only check in functional groups sequences? */
+    /* - tbd: only check in functional groups sequences? might use "dcmfg" for this purpose */
     if (dataset.findAndGetSequence(DCM_CTAcquisitionTypeSequence, ctAcquisitionTypeSequence, OFTrue /*searchIntoSub*/).good())
     {
         DcmItem *item = ctAcquisitionTypeSequence->getItem(0);
@@ -402,9 +593,9 @@ OFCondition TID1600_ImageLibrary::addComputedTomographyDescriptors(DSRDocumentSu
             {
                 /* determine CT acquisition type code from CID 10013 */
                 DSRCodedEntryValue acquisitionTypeCode(CID10013e_CTAcquisitionType::mapAcquisitionType(acquisitionType));
-                if (acquisitionTypeCode.isValid())
+                if (acquisitionTypeCode.isComplete())
                 {
-                    CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_CTAcquisitionType));
+                    CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_CTAcquisitionType, check));
                     CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(acquisitionTypeCode, check));
                     CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1605 - Row 1"));
                 } else {
@@ -416,7 +607,7 @@ OFCondition TID1600_ImageLibrary::addComputedTomographyDescriptors(DSRDocumentSu
     }
     /* TID 1605 (Image Library Entry Descriptors for CT) Row 2 */
     DcmSequenceOfItems *ctReconstructionSequence = NULL;
-    /* - tbd: only check in functional groups sequences? */
+    /* - tbd: only check in functional groups sequences? might use "dcmfg" for this purpose */
     if (dataset.findAndGetSequence(DCM_CTReconstructionSequence, ctReconstructionSequence, OFTrue /*searchIntoSub*/).good())
     {
         DcmItem *item = ctReconstructionSequence->getItem(0);
@@ -427,9 +618,9 @@ OFCondition TID1600_ImageLibrary::addComputedTomographyDescriptors(DSRDocumentSu
             {
                 /* determine CT reconstruction algorithm code from CID 10033 */
                 DSRCodedEntryValue reconstructionAlgorithmCode(CID10033e_CTReconstructionAlgorithm::mapReconstructionAlgorithm(reconstructionAlgorithm));
-                if (reconstructionAlgorithmCode.isValid())
+                if (reconstructionAlgorithmCode.isComplete())
                 {
-                    CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ReconstructionAlgorithm));
+                    CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, CODE_DCM_ReconstructionAlgorithm, check));
                     CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(reconstructionAlgorithmCode, check));
                     CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1605 - Row 2"));
                 } else {
@@ -454,7 +645,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? CODE_DCM_PulseSequenceName */));
+        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.getCurrentContentItem().setStringValue(sequenceName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText("TID 1606 - Row 1"));
     }
@@ -480,28 +671,28 @@ OFCondition TID1600_ImageLibrary::addPositronEmissionTomographyDescriptors(DSRDo
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 2 */
             CHECK_RESULT(addCodeContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalCodeSequence, CODE_SRT_RadiopharmaceuticalAgent, "TID 1607 - Row 2", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 3 */
-            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadionuclideHalfLife, 0 /*pos*/, CODE_SRT_HalfLifeOfRadiopharmaceutical, CODE_UCUM_S, "TID 1607 - Row 3", check));
+            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadionuclideHalfLife, 0 /*pos*/, CODE_SRT_HalfLifeOfRadiopharmaceutical, CODE_UCUM_s, "TID 1607 - Row 3", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 4 */
             CHECK_RESULT(addStringContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalStartDateTime, 0 /*pos*/, VT_DateTime, CODE_DCM_RadiopharmaceuticalStartTime /*DateTime*/, "TID 1607 - Row 4", check));
-            /* TID 1607 (Image Library Entry Descriptors for PET) Row 4b */
-            CHECK_RESULT(addStringContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalStopDateTime, 0 /*pos*/, VT_DateTime, CODE_DCM_RadiopharmaceuticalStopTime /*DateTime*/, "TID 1607 - Row 4b", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 5 */
-            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalVolume, 0 /*pos*/, CODE_DCM_RadiopharmaceuticalVolume, CODE_UCUM_Cm3, "TID 1607 - Row 5", check));
+            CHECK_RESULT(addStringContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalStopDateTime, 0 /*pos*/, VT_DateTime, CODE_DCM_RadiopharmaceuticalStopTime /*DateTime*/, "TID 1607 - Row 5", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 6 */
-            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadionuclideTotalDose, 0 /*pos*/, CODE_DCM_RadionuclideTotalDose, CODE_UCUM_Bq, "TID 1607 - Row 6", check));
+            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalVolume, 0 /*pos*/, CODE_DCM_RadiopharmaceuticalVolume, CODE_UCUM_cm3 /*might change with a CP*/, "TID 1607 - Row 6", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 7 */
-            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalSpecificActivity, 0 /*pos*/, CODE_DCM_RadiopharmaceuticalSpecificActivity, CODE_UCUM_BqPerMol, "TID 1607 - Row 7", check));
+            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadionuclideTotalDose, 0 /*pos*/, CODE_DCM_RadionuclideTotalDose, CODE_UCUM_Bq, "TID 1607 - Row 7", check));
             /* TID 1607 (Image Library Entry Descriptors for PET) Row 8 */
-            CHECK_RESULT(addCodeContentItemFromDataset(tree, *item, DCM_AdministrationRouteCodeSequence, CODE_SRT_RouteOfAdministration, "TID 1607 - Row 8", check));
+            CHECK_RESULT(addNumericContentItemFromDataset(tree, *item, DCM_RadiopharmaceuticalSpecificActivity, 0 /*pos*/, CODE_DCM_RadiopharmaceuticalSpecificActivity, CODE_UCUM_BqPerMol, "TID 1607 - Row 8", check));
+            /* TID 1607 (Image Library Entry Descriptors for PET) Row 9 */
+            CHECK_RESULT(addCodeContentItemFromDataset(tree, *item, DCM_AdministrationRouteCodeSequence, CODE_SRT_RouteOfAdministration, "TID 1607 - Row 9", check));
         }
     }
-    /* TID 1607 (Image Library Entry Descriptors for PET) Row 9 to 10
+    /* TID 1607 (Image Library Entry Descriptors for PET) Row 10 to 11
      * - contained in TID 15101 (NM/PET Protocol Context), i.e. not available in the image
      */
-    /* TID 1607 (Image Library Entry Descriptors for PET) Row 11
-     * - tbc: where to get "Radionuclide Incubation Time
+    /* TID 1607 (Image Library Entry Descriptors for PET) Row 12
+     * - "Radionuclide Incubation Time" calculated from time of injection and time of starting the scan
      */
-    /* TID 1607 (Image Library Entry Descriptors for PET) Row 12 to 14
+    /* TID 1607 (Image Library Entry Descriptors for PET) Row 13 to 15
      * - contained in TID 15101 (NM/PET Protocol Context), i.e. available from Modality Worklist, or
      * - tbd: in TID 3470 (NM/PET Acquisition Context), i.e. from the Acquisition Context Module
      */
@@ -509,6 +700,150 @@ OFCondition TID1600_ImageLibrary::addPositronEmissionTomographyDescriptors(DSRDo
 }
 
 
+OFCondition TID1600_ImageLibrary::goAndCheckImageLibraryEntry(const DSRCodedEntryValue &modalityCode)
+{
+    OFCondition result = CMR_EC_NoImageLibraryEntry;
+    /* go to last image library entry (if any) */
+    if (gotoEntryFromNodeList(this, LAST_IMAGE_LIBRARY_ENTRY) > 0)
+    {
+        /* check whether TID 1602 (Image Library Entry Descriptors) Row 1 has correct value */
+        if ((gotoNamedChildNode(CODE_DCM_Modality, OFFalse /*searchIntoSub*/) > 0) &&
+            (getCurrentContentItem().getCodeValue() == modalityCode))
+        {
+            result = EC_Normal;
+        } else
+            result = CMR_EC_WrongImageLibraryEntryDescriptorModality;
+    }
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setStringContentItemFromValue(const E_ValueType valueType,
+                                                                const DSRCodedEntryValue &conceptName,
+                                                                const OFString &stringValue,
+                                                                const OFString &annotationText,
+                                                                const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* check concept name and coded entry value */
+    if (conceptName.isComplete())
+    {
+        if (!stringValue.empty())
+        {
+            /* check whether content item is already present.
+             * (we assume that the content item we are searching for is a successor of the current one)
+             */
+            if (gotoNextNamedNode(conceptName, OFFalse /*searchIntoSub*/) == 0)
+            {
+                CHECK_RESULT(addContentItem(RT_hasAcqContext, valueType, conceptName, check));
+            } else {
+                /* make sure that the value type of the existing content item is correct */
+                if (getCurrentContentItem().getValueType() == valueType)
+                {
+                    DCMSR_CMR_DEBUG("Replacing value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") with \"" << stringValue << "\"");
+                } else {
+                    DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") ... wrong value type");
+                    result = SR_EC_InvalidContentItem;
+                }
+            }
+            CHECK_RESULT(getCurrentContentItem().setStringValue(stringValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText(annotationText));
+        } else
+            result = SR_EC_InvalidValue;
+    } else
+        result = SR_EC_InvalidConceptName;
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setCodeContentItemFromValue(const DSRCodedEntryValue &conceptName,
+                                                              const DSRCodedEntryValue &codeValue,
+                                                              const OFString &annotationText,
+                                                              const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* check concept name and coded entry value */
+    if (conceptName.isComplete())
+    {
+        if (codeValue.isComplete())
+        {
+            /* check whether content item is already present.
+             * (we assume that the content item we are searching for is a successor of the current one)
+             */
+            if (gotoNextNamedNode(conceptName, OFFalse /*searchIntoSub*/) == 0)
+            {
+                CHECK_RESULT(addContentItem(RT_hasAcqContext, VT_Code, conceptName, check));
+            } else {
+                /* make sure that the value type of the existing content item is correct */
+                if (getCurrentContentItem().getValueType() == VT_Code)
+                {
+                    DCMSR_CMR_DEBUG("Replacing value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") with " << codeValue);
+                } else {
+                    DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") ... wrong value type");
+                    result = SR_EC_InvalidContentItem;
+                }
+            }
+            CHECK_RESULT(getCurrentContentItem().setCodeValue(codeValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText(annotationText));
+        } else
+            result = SR_EC_InvalidValue;
+    } else
+        result = SR_EC_InvalidConceptName;
+    return result;
+}
+
+
+OFCondition TID1600_ImageLibrary::setNumericContentItemFromValue(const DSRCodedEntryValue &conceptName,
+                                                                 const DSRNumericMeasurementValue &numericValue,
+                                                                 const DSRCodedEntryValue &measurementUnit,
+                                                                 const OFString &annotationText,
+                                                                 const OFBool check)
+{
+    OFCondition result = EC_Normal;
+    /* check concept name and coded entry value */
+    if (conceptName.isComplete())
+    {
+        if (numericValue.isComplete())
+        {
+            /* check whether content item is already present.
+             * (we assume that the content item we are searching for is a successor of the current one)
+             */
+            if (gotoNextNamedNode(conceptName, OFFalse /*searchIntoSub*/) == 0)
+            {
+                CHECK_RESULT(addContentItem(RT_hasAcqContext, VT_Num, conceptName, check));
+            } else {
+                /* make sure that the value type of the existing content item is correct */
+                if (getCurrentContentItem().getValueType() == VT_Num)
+                {
+                    DCMSR_CMR_DEBUG("Replacing value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") with " << numericValue);
+                } else {
+                    DCMSR_CMR_WARN("Cannot replace value of '" << conceptName.getCodeMeaning()
+                        << "' content item (" << annotationText << ") ... wrong value type");
+                    result = SR_EC_InvalidContentItem;
+                }
+            }
+            /* check whether measurement unit meets the template constraint */
+            if (result.good() && !measurementUnit.isEmpty() && (numericValue.getMeasurementUnit() != measurementUnit))
+            {
+                DCMSR_CMR_WARN("Wrong measurement unit for '" << conceptName.getCodeMeaning()
+                    << "' content item (" << annotationText << ")");
+                result = SR_EC_ValueSetConstraintViolated;
+            }
+            CHECK_RESULT(getCurrentContentItem().setNumericValue(numericValue, check));
+            CHECK_RESULT(getCurrentContentItem().setAnnotationText(annotationText));
+        } else
+            result = SR_EC_InvalidValue;
+    } else
+        result = SR_EC_InvalidConceptName;
+    return result;
+}
+
+
 // static helper functions
 
 OFCondition TID1600_ImageLibrary::addStringContentItemFromDataset(DSRDocumentSubTree &tree,
@@ -526,7 +861,7 @@ OFCondition TID1600_ImageLibrary::addStringContentItemFromDataset(DSRDocumentSub
     if (getStringValueFromDataset(dataset, tagKey, stringValue, pos).good() && !stringValue.empty())
     {
         /* create new content item, set concept name and value */
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, valueType, conceptName));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, valueType, conceptName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setStringValue(stringValue, check));
         if (!annotationText.empty())
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText(annotationText));
@@ -545,9 +880,9 @@ OFCondition TID1600_ImageLibrary::addCodeContentItemFromDataset(DSRDocumentSubTr
     OFCondition result = EC_Normal;
     DSRCodedEntryValue codedEntry;
     /* get coded entry from code sequence in dataset */
-    if (codedEntry.readSequence(dataset, tagKey, "3" /*type*/).good() && codedEntry.isValid())
+    if (codedEntry.readSequence(dataset, tagKey, "3" /*type*/).good() && codedEntry.isComplete())
     {
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, conceptName));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Code, conceptName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setCodeValue(codedEntry, check));
         if (!annotationText.empty())
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText(annotationText));
@@ -571,7 +906,7 @@ OFCondition TID1600_ImageLibrary::addNumericContentItemFromDataset(DSRDocumentSu
     if (getStringValueFromDataset(dataset, tagKey, numericValue, pos).good() && !numericValue.empty())
     {
         /* create new content item, set concept name and value */
-        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Num, conceptName));
+        CHECK_RESULT(tree.addContentItem(RT_hasAcqContext, VT_Num, conceptName, check));
         CHECK_RESULT(tree.getCurrentContentItem().setNumericValue(DSRNumericMeasurementValue(numericValue, measurementUnit), check));
         if (!annotationText.empty())
             CHECK_RESULT(tree.getCurrentContentItem().setAnnotationText(annotationText));
diff --git a/dcmsr/libsrc/CMakeLists.txt b/dcmsr/libsrc/CMakeLists.txt
index 12ca360..2e2e2bb 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 dsrdoc dsrdocst dsrdoctn dsrdoctr dsrdtitn dsrimgfr dsrimgse dsrimgtn dsrimgvl dsrnumtn dsrnumvl dsrpnmtn dsrrefin dsrreftn dsrscogr dsrsc3gr dsrscotn dsrsc3tn dsrscovl dsrsc3vl dsrsoprf dsrstrvl dsrtcodt dsrtcosp dsrtcotn dsrtcoto dsrtcovl dsrtextn dsrtimtn dsrtncsr dsrtree dsrtypes dsruidtn dsrwavch dsrwavtn dsrwavvl dsrxmlc dsrxmld dsriodcc dsrbascc dsrenhcc dsrcomcc dsrkeycc dsrmamcc dsrch [...]
+DCMTK_ADD_LIBRARY(dcmsr dsrcitem dsrcodtn dsrcodvl dsrcomtn dsrcomvl dsrcontn dsrcsidl dsrdattn 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 dsrkeycc dsrma [...]
 
 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 bfacd51..f1e61dc 100644
--- a/dcmsr/libsrc/Makefile.dep
+++ b/dcmsr/libsrc/Makefile.dep
@@ -1,3 +1,119 @@
+dsracqcc.o: dsracqcc.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/dsracqcc.h ../include/dcmtk/dcmsr/dsriodcc.h \
+ ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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 \
+ ../../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/dcmsr/dsdefine.h
 dsrbascc.o: dsrbascc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrbascc.h ../include/dcmtk/dcmsr/dsriodcc.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
@@ -41,6 +157,8 @@ dsrbascc.o: dsrbascc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -109,6 +227,7 @@ dsrbascc.o: dsrbascc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrc3dcc.o: dsrc3dcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -154,6 +273,8 @@ dsrc3dcc.o: dsrc3dcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -222,6 +343,7 @@ dsrc3dcc.o: dsrc3dcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrchecc.o: dsrchecc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -267,6 +389,8 @@ dsrchecc.o: dsrchecc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -335,6 +459,7 @@ dsrchecc.o: dsrchecc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrcitem.o: dsrcitem.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -379,6 +504,8 @@ dsrcitem.o: dsrcitem.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -447,11 +574,13 @@ dsrcitem.o: dsrcitem.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdoctn.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrscovl.h \
  ../include/dcmtk/dcmsr/dsrscogr.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -512,6 +641,8 @@ dsrcodtn.o: dsrcodtn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -580,12 +711,14 @@ dsrcodtn.o: dsrcodtn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcodtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrcodvl.o: dsrcodvl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -630,6 +763,8 @@ dsrcodvl.o: dsrcodvl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -698,6 +833,7 @@ dsrcodvl.o: dsrcodvl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -745,6 +881,8 @@ dsrcolcc.o: dsrcolcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -813,6 +951,7 @@ dsrcolcc.o: dsrcolcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrcomcc.o: dsrcomcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -858,6 +997,8 @@ dsrcomcc.o: dsrcomcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -926,6 +1067,7 @@ dsrcomcc.o: dsrcomcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrcomtn.o: dsrcomtn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -970,6 +1112,8 @@ dsrcomtn.o: dsrcomtn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1038,12 +1182,14 @@ dsrcomtn.o: dsrcomtn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcomtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcomvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -1089,6 +1235,8 @@ dsrcomvl.o: dsrcomvl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1157,6 +1305,7 @@ dsrcomvl.o: dsrcomvl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -1202,6 +1351,8 @@ dsrcontn.o: dsrcontn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1270,12 +1421,14 @@ dsrcontn.o: dsrcontn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcontn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrcsidl.o: dsrcsidl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -1320,6 +1473,8 @@ dsrcsidl.o: dsrcsidl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1388,6 +1543,7 @@ dsrcsidl.o: dsrcsidl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -1433,6 +1589,8 @@ dsrctpl.o: dsrctpl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1501,22 +1659,24 @@ dsrctpl.o: dsrctpl.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 \
- ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdocst.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdoctn.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
- ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
- ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrsc3vl.h \
- ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtcovl.h \
- ../include/dcmtk/dcmsr/dsrtcodt.h ../include/dcmtk/dcmsr/dsrtcosp.h \
- ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
- ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
- ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h
+ ../include/dcmtk/dcmsr/dsrdocst.h ../include/dcmtk/dcmsr/dsrcitem.h \
+ ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrscovl.h \
+ ../include/dcmtk/dcmsr/dsrscogr.h ../include/dcmtk/dcmsr/dsrtlist.h \
+ ../include/dcmtk/dcmsr/dsrsc3vl.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
+ ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtcodt.h \
+ ../include/dcmtk/dcmsr/dsrtcosp.h ../include/dcmtk/dcmsr/dsrtcoto.h \
+ ../include/dcmtk/dcmsr/dsrcomvl.h ../include/dcmtk/dcmsr/dsrimgvl.h \
+ ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrimgse.h \
+ ../include/dcmtk/dcmsr/dsrwavvl.h ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h
 dsrctxgr.o: dsrctxgr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrctxgr.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
@@ -1560,6 +1720,8 @@ dsrctxgr.o: dsrctxgr.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1628,6 +1790,7 @@ dsrctxgr.o: dsrctxgr.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h
@@ -1673,6 +1836,8 @@ dsrdattn.o: dsrdattn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1741,12 +1906,14 @@ dsrdattn.o: dsrdattn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdattn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -1794,6 +1961,8 @@ dsrdoc.o: dsrdoc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1862,11 +2031,12 @@ dsrdoc.o: dsrdoc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -1876,7 +2046,8 @@ dsrdoc.o: dsrdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h \
@@ -1926,6 +2097,8 @@ dsrdocst.o: dsrdocst.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -1994,11 +2167,12 @@ dsrdocst.o: dsrdocst.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -2008,8 +2182,12 @@ dsrdocst.o: dsrdocst.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrcontn.h \
- ../include/dcmtk/dcmsr/dsrreftn.h ../include/dcmtk/dcmsr/dsriodcc.h
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/dcmsr/dsrcontn.h ../include/dcmtk/dcmsr/dsrreftn.h \
+ ../include/dcmtk/dcmsr/dsrtpltn.h ../include/dcmtk/dcmsr/dsrstpl.h \
+ ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/dsriodcc.h
 dsrdoctn.o: dsrdoctn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
@@ -2053,6 +2231,8 @@ dsrdoctn.o: dsrdoctn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2121,10 +2301,12 @@ dsrdoctn.o: dsrdoctn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrdtitn.h ../include/dcmtk/dcmsr/dsrstrvl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h \
@@ -2172,6 +2354,8 @@ dsrdoctr.o: dsrdoctr.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2240,11 +2424,12 @@ dsrdoctr.o: dsrdoctr.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -2254,9 +2439,11 @@ dsrdoctr.o: dsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrcontn.h \
- ../include/dcmtk/dcmsr/dsrreftn.h ../include/dcmtk/dcmsr/dsrxmld.h \
- ../include/dcmtk/dcmsr/dsrxmlc.h ../include/dcmtk/dcmsr/dsriodcc.h
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h \
+ ../include/dcmtk/dcmsr/dsrcontn.h ../include/dcmtk/dcmsr/dsrreftn.h \
+ ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h \
+ ../include/dcmtk/dcmsr/dsriodcc.h
 dsrdtitn.o: dsrdtitn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -2299,6 +2486,8 @@ dsrdtitn.o: dsrdtitn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2367,12 +2556,14 @@ dsrdtitn.o: dsrdtitn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrdtitn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -2419,6 +2610,8 @@ dsrenhcc.o: dsrenhcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2487,6 +2680,7 @@ dsrenhcc.o: dsrenhcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrimgfr.o: dsrimgfr.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2531,6 +2725,8 @@ dsrimgfr.o: dsrimgfr.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2599,6 +2795,7 @@ dsrimgfr.o: dsrimgfr.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrimgse.o: dsrimgse.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2643,6 +2840,8 @@ dsrimgse.o: dsrimgse.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2711,6 +2910,7 @@ dsrimgse.o: dsrimgse.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrimgtn.o: dsrimgtn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -2755,6 +2955,8 @@ dsrimgtn.o: dsrimgtn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2823,12 +3025,14 @@ dsrimgtn.o: dsrimgtn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrimgtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -2876,6 +3080,8 @@ dsrimgvl.o: dsrimgvl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -2944,6 +3150,7 @@ dsrimgvl.o: dsrimgvl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -3014,6 +3221,8 @@ dsrimpcc.o: dsrimpcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3082,6 +3291,7 @@ dsrimpcc.o: dsrimpcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsriodcc.o: dsriodcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3126,6 +3336,8 @@ dsriodcc.o: dsriodcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3194,6 +3406,7 @@ dsriodcc.o: dsriodcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrkeycc.o: dsrkeycc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3239,6 +3452,8 @@ dsrkeycc.o: dsrkeycc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3307,6 +3522,7 @@ dsrkeycc.o: dsrkeycc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrmaccc.o: dsrmaccc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3352,6 +3568,8 @@ dsrmaccc.o: dsrmaccc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3420,6 +3638,7 @@ dsrmaccc.o: dsrmaccc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrmamcc.o: dsrmamcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3465,6 +3684,8 @@ dsrmamcc.o: dsrmamcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3533,6 +3754,7 @@ dsrmamcc.o: dsrmamcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrnumtn.o: dsrnumtn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -3577,6 +3799,8 @@ dsrnumtn.o: dsrnumtn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3645,12 +3869,14 @@ dsrnumtn.o: dsrnumtn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrnumtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -3696,6 +3922,8 @@ dsrnumvl.o: dsrnumvl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3764,6 +3992,7 @@ dsrnumvl.o: dsrnumvl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrcodvl.h \
@@ -3811,6 +4040,8 @@ dsrpnmtn.o: dsrpnmtn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3879,15 +4110,132 @@ dsrpnmtn.o: dsrpnmtn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrpnmtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
+dsrposcn.o: dsrposcn.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/dsrposcn.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/oflist.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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/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
 dsrprocc.o: dsrprocc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrprocc.h ../include/dcmtk/dcmsr/dsriodcc.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
@@ -3931,6 +4279,8 @@ dsrprocc.o: dsrprocc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -3999,6 +4349,7 @@ dsrprocc.o: dsrprocc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrrefin.o: dsrrefin.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4043,6 +4394,8 @@ dsrrefin.o: dsrrefin.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4111,6 +4464,7 @@ dsrrefin.o: dsrrefin.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -4157,6 +4511,8 @@ dsrreftn.o: dsrreftn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4225,12 +4581,14 @@ dsrreftn.o: dsrreftn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrreftn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrrrdcc.o: dsrrrdcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4276,6 +4634,8 @@ dsrrrdcc.o: dsrrrdcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4344,6 +4704,7 @@ dsrrrdcc.o: dsrrrdcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrrtpl.o: dsrrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4390,6 +4751,8 @@ dsrrtpl.o: dsrrtpl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4458,11 +4821,12 @@ dsrrtpl.o: dsrrtpl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -4472,7 +4836,8 @@ dsrrtpl.o: dsrrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.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
 dsrsc3gr.o: dsrsc3gr.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4517,6 +4882,8 @@ dsrsc3gr.o: dsrsc3gr.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4585,6 +4952,7 @@ dsrsc3gr.o: dsrsc3gr.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrsc3tn.o: dsrsc3tn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4629,6 +4997,8 @@ dsrsc3tn.o: dsrsc3tn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4697,12 +5067,14 @@ dsrsc3tn.o: dsrsc3tn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrsc3tn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrsc3vl.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
@@ -4749,6 +5121,8 @@ dsrsc3vl.o: dsrsc3vl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4817,6 +5191,7 @@ dsrsc3vl.o: dsrsc3vl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
@@ -4863,6 +5238,8 @@ dsrscogr.o: dsrscogr.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -4931,6 +5308,7 @@ dsrscogr.o: dsrscogr.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrscotn.o: dsrscotn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -4975,6 +5353,8 @@ dsrscotn.o: dsrscotn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5043,12 +5423,14 @@ dsrscotn.o: dsrscotn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrscotn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
@@ -5095,6 +5477,8 @@ dsrscovl.o: dsrscovl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5163,6 +5547,7 @@ dsrscovl.o: dsrscovl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrscogr.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrxmld.h \
@@ -5182,6 +5567,8 @@ dsrsoprf.o: dsrsoprf.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/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 \
@@ -5278,6 +5665,7 @@ dsrsoprf.o: dsrsoprf.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -5325,6 +5713,8 @@ dsrspecc.o: dsrspecc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5393,6 +5783,7 @@ dsrspecc.o: dsrspecc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
 dsrstpl.o: dsrstpl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -5439,6 +5830,8 @@ dsrstpl.o: dsrstpl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5507,11 +5900,12 @@ dsrstpl.o: dsrstpl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -5521,7 +5915,8 @@ dsrstpl.o: dsrstpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrctpl.h
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h
 dsrstrvl.o: dsrstrvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -5564,6 +5959,8 @@ dsrstrvl.o: dsrstrvl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5632,6 +6029,7 @@ dsrstrvl.o: dsrstrvl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -5677,6 +6075,8 @@ dsrtcodt.o: dsrtcodt.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5745,6 +6145,7 @@ dsrtcodt.o: dsrtcodt.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrtcosp.o: dsrtcosp.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -5789,6 +6190,8 @@ dsrtcosp.o: dsrtcosp.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5857,6 +6260,7 @@ dsrtcosp.o: dsrtcosp.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrtcotn.o: dsrtcotn.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -5901,6 +6305,8 @@ dsrtcotn.o: dsrtcotn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -5969,12 +6375,14 @@ dsrtcotn.o: dsrtcotn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtcotn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtcodt.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrtcosp.h \
@@ -6022,6 +6430,8 @@ dsrtcoto.o: dsrtcoto.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6090,6 +6500,7 @@ dsrtcoto.o: dsrtcoto.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h
 dsrtcovl.o: dsrtcovl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -6134,6 +6545,8 @@ dsrtcovl.o: dsrtcovl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6202,6 +6615,7 @@ dsrtcovl.o: dsrtcovl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtcodt.h \
  ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrtcosp.h \
@@ -6249,6 +6663,8 @@ dsrtextn.o: dsrtextn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6317,12 +6733,14 @@ dsrtextn.o: dsrtextn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtextn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -6368,6 +6786,8 @@ dsrtimtn.o: dsrtimtn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6436,37 +6856,36 @@ dsrtimtn.o: dsrtimtn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtimtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
-dsrtncsr.o: dsrtncsr.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/dcmsr/dsrtncsr.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/ofstack.h \
- ../../ofstd/include/dcmtk/ofstd/oflist.h \
- ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtypes.h \
+dsrtpltn.o: dsrtpltn.cc ../../config/include/dcmtk/config/osconfig.h \
+ ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.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 \
+ ../../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 \
@@ -6483,12 +6902,15 @@ dsrtncsr.o: dsrtncsr.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6557,8 +6979,27 @@ dsrtncsr.o: dsrtncsr.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 \
- ../include/dcmtk/dcmsr/dsrtnant.h
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtpltn.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
+ ../include/dcmtk/dcmsr/dsrtncsr.h \
+ ../../ofstd/include/dcmtk/ofstd/ofstack.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/dsrstpl.h ../include/dcmtk/dcmsr/dsrdoctr.h \
+ ../include/dcmtk/dcmsr/dsrdocst.h ../include/dcmtk/dcmsr/dsrcitem.h \
+ ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrscovl.h \
+ ../include/dcmtk/dcmsr/dsrscogr.h ../include/dcmtk/dcmsr/dsrtlist.h \
+ ../include/dcmtk/dcmsr/dsrsc3vl.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
+ ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtcodt.h \
+ ../include/dcmtk/dcmsr/dsrtcosp.h ../include/dcmtk/dcmsr/dsrtcoto.h \
+ ../include/dcmtk/dcmsr/dsrcomvl.h ../include/dcmtk/dcmsr/dsrimgvl.h \
+ ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrimgse.h \
+ ../include/dcmtk/dcmsr/dsrwavvl.h ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrctpl.h \
+ ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrtree.o: dsrtree.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -6601,6 +7042,8 @@ dsrtree.o: dsrtree.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6669,10 +7112,11 @@ dsrtree.o: dsrtree.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h
 dsrtypes.o: dsrtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -6715,6 +7159,8 @@ dsrtypes.o: dsrtypes.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6783,12 +7229,14 @@ dsrtypes.o: dsrtypes.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtextn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrcodtn.h \
  ../include/dcmtk/dcmsr/dsrnumtn.h ../include/dcmtk/dcmsr/dsrnumvl.h \
@@ -6813,7 +7261,7 @@ dsrtypes.o: dsrtypes.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrprocc.h ../include/dcmtk/dcmsr/dsrxrdcc.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/dsrrrdcc.h ../include/dcmtk/dcmsr/dsracqcc.h
 dsruidtn.o: dsruidtn.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
@@ -6856,6 +7304,8 @@ dsruidtn.o: dsruidtn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -6924,12 +7374,14 @@ dsruidtn.o: dsruidtn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsruidtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrstrvl.h ../include/dcmtk/dcmsr/dsrxmld.h \
  ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -6975,6 +7427,8 @@ dsrwavch.o: dsrwavch.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7043,6 +7497,7 @@ dsrwavch.o: dsrwavch.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtlist.h \
  ../include/dcmtk/dcmsr/dsrxmld.h ../include/dcmtk/dcmsr/dsrxmlc.h
@@ -7088,6 +7543,8 @@ dsrwavtn.o: dsrwavtn.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7156,12 +7613,14 @@ dsrwavtn.o: dsrwavtn.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrwavtn.h \
  ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrwavvl.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -7208,6 +7667,8 @@ dsrwavvl.o: dsrwavvl.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7276,6 +7737,7 @@ dsrwavvl.o: dsrwavvl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrtlist.h \
@@ -7332,6 +7794,8 @@ dsrxmld.o: dsrxmld.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7400,6 +7864,7 @@ dsrxmld.o: dsrxmld.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrxmlc.h
 dsrxrdcc.o: dsrxrdcc.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -7445,6 +7910,8 @@ dsrxrdcc.o: dsrxrdcc.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -7513,5 +7980,6 @@ dsrxrdcc.o: dsrxrdcc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h
diff --git a/dcmsr/libsrc/Makefile.in b/dcmsr/libsrc/Makefile.in
index 3ba7139..f62d6a1 100644
--- a/dcmsr/libsrc/Makefile.in
+++ b/dcmsr/libsrc/Makefile.in
@@ -22,18 +22,18 @@ LOCALINCLUDES = -I$(ofstddir)/include -I$(oflogdir)/include -I$(dcmdatadir)/incl
 	-I$(dcmimgledir)/include -I$(dcmimagedir)/include
 LOCALDEFS =
 
-objs = dsrdoc.o dsrtree.o dsrtncsr.o dsrdoctn.o dsrdoctr.o dsrdocst.o \
+objs = dsrdoc.o dsrposcn.o dsrtree.o dsrdoctn.o dsrdoctr.o dsrdocst.o \
 	dsrctpl.o dsrrtpl.o dsrstpl.o dsrctxgr.o dsrcitem.o dsrtypes.o \
 	dsrimgfr.o dsrimgse.o dsrscogr.o dsrsc3gr.o dsrtcodt.o dsrtcosp.o \
 	dsrtcoto.o dsrwavch.o dsrstrvl.o dsrcodvl.o dsrnumvl.o dsrscovl.o \
 	dsrsc3vl.o dsrtcovl.o dsrcomvl.o dsrimgvl.o dsrwavvl.o dsrtextn.o \
 	dsrcodtn.o dsrnumtn.o dsrdtitn.o dsrdattn.o dsrtimtn.o dsruidtn.o \
 	dsrpnmtn.o dsrscotn.o dsrsc3tn.o dsrtcotn.o  dsrcomtn.o dsrimgtn.o \
-	dsrwavtn.o dsrcontn.o dsrreftn.o dsrsoprf.o dsrrefin.o dsrcsidl.o \
-	dsrxmlc.o dsrxmld.o \
+	dsrwavtn.o dsrcontn.o dsrreftn.o dsrtpltn.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
+	dsrimpcc.o dsrc3dcc.o dsrrrdcc.o dsracqcc.o
 library = libdcmsr.$(LIBEXT)
 
 
diff --git a/dcmsr/libsrc/dsracqcc.cc b/dcmsr/libsrc/dsracqcc.cc
new file mode 100644
index 0000000..ecd215f
--- /dev/null
+++ b/dcmsr/libsrc/dsracqcc.cc
@@ -0,0 +1,109 @@
+/*
+ *
+ *  Copyright (C) 2015, 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: DSRAcquisitionContextConstraintChecker
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsracqcc.h"
+
+
+DSRAcquisitionContextConstraintChecker::DSRAcquisitionContextConstraintChecker()
+  : DSRIODConstraintChecker()
+{
+}
+
+
+DSRAcquisitionContextConstraintChecker::~DSRAcquisitionContextConstraintChecker()
+{
+}
+
+
+OFBool DSRAcquisitionContextConstraintChecker::isByReferenceAllowed() const
+{
+    return OFFalse;
+}
+
+
+OFBool DSRAcquisitionContextConstraintChecker::isTemplateSupportRequired() const
+{
+    return OFFalse;
+}
+
+
+OFCondition DSRAcquisitionContextConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                  OFString &mappingResource) const
+{
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
+}
+
+
+DSRTypes::E_DocumentType DSRAcquisitionContextConstraintChecker::getDocumentType() const
+{
+    return DT_AcquisitionContextSR;
+}
+
+
+OFBool DSRAcquisitionContextConstraintChecker::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.x-2 in DICOM PS3.3 (Supplement 187) */
+    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_Code) || (targetValueType == VT_Container) || (targetValueType == VT_DateTime) ||
+                     (targetValueType == VT_Num)  || (targetValueType == VT_PName)     || (targetValueType == VT_Text)     ||
+                     (targetValueType == VT_Time) || (targetValueType == VT_UIDRef);
+        }
+        /* row 2 of the table */
+        else if ((relationshipType == RT_hasObsContext) && ((sourceValueType == VT_Container)))
+        {
+            result = (targetValueType == VT_Code) || (targetValueType == VT_Date)  || (targetValueType == VT_DateTime) ||
+                     (targetValueType == VT_Num)  || (targetValueType == VT_PName) || (targetValueType == VT_Text)     ||
+                     (targetValueType == VT_Time) || (targetValueType == VT_UIDRef);
+        }
+        /* row 3 of the table */
+        else if ((relationshipType == RT_hasObsContext) && (sourceValueType == VT_Code))
+        {
+            result = (targetValueType == VT_Code);
+        }
+        /* row 4 of the table */
+        else if (relationshipType == RT_hasConceptMod)
+        {
+            result = (targetValueType == VT_Code) || (targetValueType == VT_Text);
+        }
+        /* row 5 of the table */
+        else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_Code))
+        {
+            result = (targetValueType == VT_Code)     || (targetValueType == VT_DateTime) || (targetValueType == VT_Num) ||
+                     (targetValueType == VT_SCoord3D) || (targetValueType == VT_Text);
+        }
+    }
+    return result;
+}
diff --git a/dcmsr/libsrc/dsrbascc.cc b/dcmsr/libsrc/dsrbascc.cc
index ed0d1c7..cc2db99 100644
--- a/dcmsr/libsrc/dsrbascc.cc
+++ b/dcmsr/libsrc/dsrbascc.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
@@ -49,9 +49,12 @@ OFBool DSRBasicTextSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRBasicTextSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRBasicTextSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                           OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -107,7 +110,7 @@ OFBool DSRBasicTextSRConstraintChecker::checkContentRelationship(const E_ValueTy
                      (targetValueType == VT_PName) || (targetValueType == VT_Image) || (targetValueType == VT_Waveform) ||
                      (targetValueType == VT_Composite);
         }
-        /* row 6 of the table - introduced with CP 1076 */
+        /* row 6 of the table - introduced with CP-1076 */
         else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_PName))
         {
             result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
diff --git a/dcmsr/libsrc/dsrc3dcc.cc b/dcmsr/libsrc/dsrc3dcc.cc
index 967cd62..a48709e 100644
--- a/dcmsr/libsrc/dsrc3dcc.cc
+++ b/dcmsr/libsrc/dsrc3dcc.cc
@@ -49,9 +49,12 @@ OFBool DSRComprehensive3DSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRComprehensive3DSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRComprehensive3DSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                 OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -66,7 +69,7 @@ OFBool DSRComprehensive3DSRConstraintChecker::checkContentRelationship(const E_V
                                                                        const E_ValueType targetValueType,
                                                                        const OFBool byReference) const
 {
-    /* the following code implements the contraints of table A.35.X-2 in DICOM PS3.3 (Supplement 162) */
+    /* the following code implements the constraints of table A.35.13-2 in DICOM PS3.3 */
     OFBool result = OFFalse;
     /* row 1 of the table */
     if ((relationshipType == RT_contains) && (sourceValueType == VT_Container))
diff --git a/dcmsr/libsrc/dsrchecc.cc b/dcmsr/libsrc/dsrchecc.cc
index b348fcf..5a095cb 100644
--- a/dcmsr/libsrc/dsrchecc.cc
+++ b/dcmsr/libsrc/dsrchecc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRChestCadSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRChestCadSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRChestCadSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                          OFString &mappingResource) const
 {
-    return "4100";
+    templateIdentifier = "4100";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
diff --git a/dcmsr/libsrc/dsrcodvl.cc b/dcmsr/libsrc/dsrcodvl.cc
index b0bc488..bb0171a 100644
--- a/dcmsr/libsrc/dsrcodvl.cc
+++ b/dcmsr/libsrc/dsrcodvl.cc
@@ -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
@@ -188,6 +188,15 @@ OFBool DSRCodedEntryValue::operator==(const DSRCodedEntryValue &codedEntryValue)
 }
 
 
+OFBool DSRCodedEntryValue::operator!=(const DSRCodedEntryValue &codedEntryValue) const
+{
+    /* Code Meaning is not used for comparing the two codes */
+    return (CodeValue != codedEntryValue.CodeValue) ||
+           (CodingSchemeDesignator != codedEntryValue.CodingSchemeDesignator) ||
+           (CodingSchemeVersion != codedEntryValue.CodingSchemeVersion);
+}
+
+
 OFBool DSRCodedEntryValue::operator==(const DSRBasicCodedEntry &basicCodedEntry) const
 {
     /* Code Meaning is not used for comparing the two codes */
@@ -197,6 +206,15 @@ OFBool DSRCodedEntryValue::operator==(const DSRBasicCodedEntry &basicCodedEntry)
 }
 
 
+OFBool DSRCodedEntryValue::operator!=(const DSRBasicCodedEntry &basicCodedEntry) const
+{
+    /* Code Meaning is not used for comparing the two codes */
+    return (CodeValue != basicCodedEntry.CodeValue) ||
+           (CodingSchemeDesignator != basicCodedEntry.CodingSchemeDesignator) ||
+           (CodingSchemeVersion != basicCodedEntry.CodingSchemeVersion);
+}
+
+
 void DSRCodedEntryValue::clear()
 {
     CodeValueType = DSRTypes::CVT_auto;
@@ -225,6 +243,12 @@ OFBool DSRCodedEntryValue::isEmpty() const
 }
 
 
+OFBool DSRCodedEntryValue::isComplete() const
+{
+    return !CodeValue.empty() && !CodingSchemeDesignator.empty() && !CodeMeaning.empty();
+}
+
+
 void DSRCodedEntryValue::print(STD_NAMESPACE ostream &stream,
                                const OFBool printCodeValue,
                                const size_t flags) const
@@ -284,8 +308,8 @@ OFCondition DSRCodedEntryValue::readItem(DcmItem &dataset,
             /* check for a common error: Context Group Identifier includes "CID" prefix */
             if ((ContextIdentifier.find_first_not_of("0123456789") != OFString_npos) || (ContextIdentifier.at(0) == '0'))
             {
-                DCMSR_DEBUG("Reading invalid ContextIdentifier (" << ContextIdentifier << ")");
-                DCMSR_WARN("ContextIdentifier shall be a string of digits without leading zeros");
+                DCMSR_DEBUG("Reading invalid Context Identifier (" << ContextIdentifier << ")");
+                DCMSR_WARN("Context Identifier shall be a string of digits without leading zeros");
             }
             DSRTypes::getAndCheckStringValueFromDataset(dataset, DCM_MappingResource, MappingResource, "1", "1" /* was 1C */, moduleName);
             DSRTypes::getAndCheckStringValueFromDataset(dataset, DCM_ContextGroupVersion, ContextGroupVersion, "1", "1" /* was 1C */, moduleName);
@@ -769,3 +793,13 @@ DSRTypes::E_CodeValueType DSRCodedEntryValue::determineCodeValueType(const OFStr
         codeValueType = DSRTypes::CVT_Short;
     return codeValueType;
 }
+
+
+// output operators
+
+STD_NAMESPACE ostream &operator<<(STD_NAMESPACE ostream &stream,
+                                  const DSRCodedEntryValue& codedEntryValue)
+{
+    codedEntryValue.print(stream, OFTrue /*printCodeValue*/, 0 /*flags*/);
+    return stream;
+}
diff --git a/dcmsr/libsrc/dsrcolcc.cc b/dcmsr/libsrc/dsrcolcc.cc
index cd66303..c45fbe6 100644
--- a/dcmsr/libsrc/dsrcolcc.cc
+++ b/dcmsr/libsrc/dsrcolcc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRColonCadSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRColonCadSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRColonCadSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                          OFString &mappingResource) const
 {
-    return "4120";
+    templateIdentifier = "4120";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
diff --git a/dcmsr/libsrc/dsrcomcc.cc b/dcmsr/libsrc/dsrcomcc.cc
index cb5614b..cd04e1d 100644
--- a/dcmsr/libsrc/dsrcomcc.cc
+++ b/dcmsr/libsrc/dsrcomcc.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
@@ -49,9 +49,12 @@ OFBool DSRComprehensiveSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRComprehensiveSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRComprehensiveSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                               OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -66,7 +69,7 @@ OFBool DSRComprehensiveSRConstraintChecker::checkContentRelationship(const E_Val
                                                                      const E_ValueType targetValueType,
                                                                      const OFBool byReference) const
 {
-    /* the following code implements the contraints of table A.35.3-2 in DICOM PS3.3 */
+    /* the following code implements the constraints of table A.35.3-2 in DICOM PS3.3 */
     OFBool result = OFFalse;
     /* row 1 of the table */
     if ((relationshipType == RT_contains) && (sourceValueType == VT_Container))
@@ -108,7 +111,7 @@ OFBool DSRComprehensiveSRConstraintChecker::checkContentRelationship(const E_Val
                  (targetValueType == VT_Waveform) || (targetValueType == VT_Composite) || (targetValueType == VT_SCoord) ||
                  (targetValueType == VT_TCoord)   || (targetValueType == VT_Container);
     }
-    /* row 6 of the table - introduced with CP 1076 */
+    /* row 6 of the table - introduced with CP-1076 */
     else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_PName))
     {
         result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
diff --git a/dcmsr/libsrc/dsrcomvl.cc b/dcmsr/libsrc/dsrcomvl.cc
index d268d6b..e03a84f 100644
--- a/dcmsr/libsrc/dsrcomvl.cc
+++ b/dcmsr/libsrc/dsrcomvl.cc
@@ -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
@@ -87,6 +87,12 @@ OFBool DSRCompositeReferenceValue::isEmpty() const
 }
 
 
+OFBool DSRCompositeReferenceValue::isComplete() const
+{
+    return !SOPClassUID.empty() && !SOPInstanceUID.empty();
+}
+
+
 OFCondition DSRCompositeReferenceValue::print(STD_NAMESPACE ostream &stream,
                                               const size_t flags) const
 {
@@ -232,6 +238,13 @@ OFCondition DSRCompositeReferenceValue::renderHTML(STD_NAMESPACE ostream &docStr
 }
 
 
+const OFString DSRCompositeReferenceValue::getSOPClassName(const OFString &defaultName) const
+{
+    /* lookup name associated with the SOP class UID */
+    return SOPClassUID.empty() ? "" : dcmFindNameOfUID(SOPClassUID.c_str(), defaultName.c_str());
+}
+
+
 OFCondition DSRCompositeReferenceValue::getValue(DSRCompositeReferenceValue &referenceValue) const
 {
     referenceValue = *this;
diff --git a/dcmsr/libsrc/dsrcsidl.cc b/dcmsr/libsrc/dsrcsidl.cc
index 1d6ee71..8f6f663 100644
--- a/dcmsr/libsrc/dsrcsidl.cc
+++ b/dcmsr/libsrc/dsrcsidl.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2015, 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
@@ -133,7 +133,7 @@ OFCondition DSRCodingSchemeIdentificationList::write(DcmItem &dataset) const
                     putStringValueToDataset(*ditem, DCM_CodingSchemeExternalID, item->CodingSchemeExternalID, OFFalse /*allowEmpty*/);
                 else if (!item->CodingSchemeExternalID.empty())
                 {
-                    DCMSR_WARN("Both CodingSchemeUID and CodingSchemeExternalID present for \""
+                    DCMSR_WARN("Both Coding Scheme UID and Coding Scheme External ID present for \""
                         << item->CodingSchemeDesignator << "\", the latter will be ignored");
                 }
                 putStringValueToDataset(*ditem, DCM_CodingSchemeName, item->CodingSchemeName, OFFalse /*allowEmpty*/);
@@ -251,8 +251,8 @@ OFCondition DSRCodingSchemeIdentificationList::addItem(const OFString &codingSch
                 result = EC_MemoryExhausted;
             }
         } else {
-            DCMSR_WARN("CodingSchemeDesignator \"" << codingSchemeDesignator
-                << "\" already exists in CodingSchemeIdentificationSequence ... overwriting");
+            DCMSR_WARN("Coding Scheme Designator \"" << codingSchemeDesignator
+                << "\" already exists in Coding Scheme Identification Sequence ... overwriting");
             /* gotoItem() was successful, set item pointer */
             item = *Iterator;
         }
diff --git a/dcmsr/libsrc/dsrctpl.cc b/dcmsr/libsrc/dsrctpl.cc
index bc2aa90..95653f2 100644
--- a/dcmsr/libsrc/dsrctpl.cc
+++ b/dcmsr/libsrc/dsrctpl.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.
  *
  *  This software and supporting documentation are maintained by
@@ -45,6 +45,12 @@ DSRTemplateCommon::~DSRTemplateCommon()
 }
 
 
+void DSRTemplateCommon::clear()
+{
+    clearEntriesInNodeList();
+}
+
+
 OFBool DSRTemplateCommon::hasTemplateIdentification() const
 {
     /* mapping resource UID is optional, so do not check it */
@@ -77,11 +83,40 @@ OFBool DSRTemplateCommon::isTemplateIdentificationValid(const OFBool check) cons
 }
 
 
+OFBool DSRTemplateCommon::compareTemplateIdentication(const OFString &templateIdentifier,
+                                                      const OFString &mappingResource,
+                                                      const OFString &mappingResourceUID) const
+{
+    OFBool result = (TemplateIdentifier == templateIdentifier) && (MappingResource == mappingResource);
+    /* mapping resource UID is optional, so only check it if present */
+    if (result && !MappingResourceUID.empty() && !mappingResourceUID.empty())
+        result = (MappingResourceUID == mappingResourceUID);
+    return result;
+}
+
+
 // protected methods
 
-void DSRTemplateCommon::reserveEntriesInNodeList(const size_t count)
+void DSRTemplateCommon::clearEntriesInNodeList()
 {
-    NodeList.reserve(count);
+    /* set all entries to 0 */
+    for (size_t i = 0; i < NodeList.size(); ++i)
+        NodeList[i] = 0;
+}
+
+
+void DSRTemplateCommon::reserveEntriesInNodeList(const size_t count,
+                                                 const OFBool initialize)
+{
+    /* check whether the entries should be initialized... */
+    if (initialize)
+    {
+        NodeList.resize(count);
+        clearEntriesInNodeList();
+    } else {
+        /* ... or only reserved (not created and initialized) */
+        NodeList.reserve(count);
+    }
 }
 
 
@@ -105,6 +140,22 @@ size_t DSRTemplateCommon::getEntryFromNodeList(const size_t pos) const
 }
 
 
+size_t DSRTemplateCommon::gotoEntryFromNodeList(DSRDocumentTreeNodeCursor &cursor,
+                                                const size_t pos) const
+{
+    size_t nodeID = 0;
+    /* make sure that cursor is valid and list entry exists */
+    if ((cursor.isValid()) && (pos < NodeList.size()))
+    {
+        nodeID = NodeList[pos];
+        /* check whether current node is already the right one */
+        if (cursor.getNodeID() != nodeID)
+            nodeID = cursor.gotoNode(nodeID);
+    }
+    return nodeID;
+}
+
+
 size_t DSRTemplateCommon::gotoEntryFromNodeList(DSRDocumentSubTree *tree,
                                                 const size_t pos)
 {
@@ -122,14 +173,15 @@ size_t DSRTemplateCommon::gotoEntryFromNodeList(DSRDocumentSubTree *tree,
 
 
 size_t DSRTemplateCommon::gotoLastEntryFromNodeList(DSRDocumentSubTree *tree,
-                                                    const size_t lastPos)
+                                                    const size_t lastPos,
+                                                    const size_t firstPos)
 {
     size_t nodeID = 0;
     /* make sure that tree is valid and list entry exists */
-    if ((tree != NULL) && (lastPos < NodeList.size()))
+    if ((tree != NULL) && (firstPos <= lastPos) && (lastPos < NodeList.size()))
     {
         size_t pos = lastPos + 1;
-        while ((pos > 0) && (nodeID == 0))
+        while ((pos > firstPos) && (nodeID == 0))
             nodeID = NodeList[--pos];
         /* check whether current node is already the right one */
         if (tree->getNodeID() != nodeID)
diff --git a/dcmsr/libsrc/dsrctxgr.cc b/dcmsr/libsrc/dsrctxgr.cc
index 4f6203f..f9585b1 100644
--- a/dcmsr/libsrc/dsrctxgr.cc
+++ b/dcmsr/libsrc/dsrctxgr.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.
  *
  *  This software and supporting documentation are maintained by
@@ -87,6 +87,12 @@ OFCondition DSRContextGroup::findCodedEntry(const DSRCodedEntryValue &codedEntry
 }
 
 
+OFBool DSRContextGroup::hasExtendedCodedEntries() const
+{
+    return !ExtendedCodes.empty();
+}
+
+
 OFCondition DSRContextGroup::addCodedEntry(const DSRCodedEntryValue &codedEntryValue)
 {
     OFCondition result = EC_Normal;
diff --git a/dcmsr/libsrc/dsrdoc.cc b/dcmsr/libsrc/dsrdoc.cc
index 6c425c2..2ac6597 100644
--- a/dcmsr/libsrc/dsrdoc.cc
+++ b/dcmsr/libsrc/dsrdoc.cc
@@ -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
@@ -440,9 +440,7 @@ OFCondition DSRDocument::read(DcmItem &dataset,
         getElementFromDataset(dataset, SOPClassUID);   /* already checked */
         getAndCheckElementFromDataset(dataset, SOPInstanceUID, "1", "1", "SOPCommonModule");
         getAndCheckElementFromDataset(dataset, SpecificCharacterSet, "1-n", "1C", "SOPCommonModule");
-        if (SpecificCharacterSet.getVM() > 1)
-            DCMSR_WARN("Multiple values for Specific Character Set are not supported");
-        getStringValueFromElement(SpecificCharacterSet, tmpString);
+        getStringValueFromElement(SpecificCharacterSet, tmpString, -1 /* all components */);
         /* currently, the VR checker in 'dcmdata' only supports ASCII and Latin-1 */
         if (!tmpString.empty() && (tmpString != "ISO_IR 6") && (tmpString != "ISO_IR 100"))
             DCMSR_WARN("The VR checker does not support this Specific Character Set: " << tmpString);
@@ -515,7 +513,7 @@ OFCondition DSRDocument::read(DcmItem &dataset,
             PredecessorDocuments.read(dataset, flags);
             /* need to check sequence in two steps (avoids additional getAndCheck... method) */
             searchCond = getElementFromDataset(dataset, PerformedProcedureCode);
-            checkElementValue(PerformedProcedureCode, "1", "2", searchCond, "SRDocumentGeneralModule");
+            checkElementValue(PerformedProcedureCode, "1-n", "2", searchCond, "SRDocumentGeneralModule");
             PertinentOtherEvidence.read(dataset, flags);
             ReferencedInstances.read(dataset, flags);
         }
@@ -544,7 +542,7 @@ OFCondition DSRDocument::read(DcmItem &dataset,
             if (CompletionFlagEnum == CF_invalid)
                 printUnknownValueWarningMessage("CompletionFlag", tmpString.c_str());
             else if ((CompletionFlagEnum == CF_Partial) && (documentType == DT_XRayRadiationDoseSR))
-                DCMSR_WARN("Invalid value for CompletionFlag, should be 'COMPLETE' for X-Ray Radiation Dose SR");
+                DCMSR_WARN("Invalid value for Completion Flag, should be 'COMPLETE' for X-Ray Radiation Dose SR");
             /* get and check VerificationFlag / VerifyingObserverSequence */
             VerificationFlagEnum = enumeratedValueToVerificationFlag(getStringValueFromElement(VerificationFlag, tmpString));
             if (VerificationFlagEnum == VF_invalid)
@@ -552,7 +550,8 @@ OFCondition DSRDocument::read(DcmItem &dataset,
             else if (VerificationFlagEnum == VF_Verified)
                 checkElementValue(VerifyingObserver, "1-n", "1", obsSearchCond, "SRDocumentGeneralModule");
         }
-        SpecificCharacterSetEnum = definedTermToCharacterSet(getStringValueFromElement(SpecificCharacterSet, tmpString));
+        getStringValueFromElement(SpecificCharacterSet, tmpString, -1 /* all components */);
+        SpecificCharacterSetEnum = definedTermToCharacterSet(tmpString);
         /* check SpecificCharacterSet */
         if ((SpecificCharacterSetEnum == CS_invalid) && !tmpString.empty())
             printUnknownValueWarningMessage("SpecificCharacterSet", tmpString.c_str());
@@ -606,7 +605,7 @@ OFCondition DSRDocument::write(DcmItem &dataset,
 
         /* checking particular values */
         if ((CompletionFlagEnum == CF_Partial) && (getDocumentType() == DT_XRayRadiationDoseSR))
-            DCMSR_WARN("Invalid value for CompletionFlag, should be 'COMPLETE' for X-Ray Radiation Dose SR");
+            DCMSR_WARN("Invalid value for Completion Flag, should be 'COMPLETE' for X-Ray Radiation Dose SR");
 
         /* write general document attributes */
 
@@ -695,7 +694,7 @@ OFCondition DSRDocument::write(DcmItem &dataset,
                 PredecessorDocuments.write(dataset);    /* optional */
             /* always write empty sequence since not yet fully supported */
             PerformedProcedureCode.clear();
-            addElementToDataset(result, dataset, new DcmSequenceOfItems(PerformedProcedureCode), "1", "2", "SRDocumentGeneralModule");
+            addElementToDataset(result, dataset, new DcmSequenceOfItems(PerformedProcedureCode), "1-n", "2", "SRDocumentGeneralModule");
             if (result.good())
                 result = PertinentOtherEvidence.write(dataset);
             if (result.good())
@@ -1192,13 +1191,10 @@ OFCondition DSRDocument::writeXML(STD_NAMESPACE ostream &stream,
         stream << "<?xml version=\"1.0\"";
         /* optional character set */
         tmpString = characterSetToXMLName(SpecificCharacterSetEnum);
-        if (!tmpString.empty())
-        {
-            if (tmpString != "?")
-                stream << " encoding=\"" << tmpString << "\"";
-            else
-                DCMSR_WARN("Cannot map Specific Character Set to equivalent XML encoding");
-        }
+        if (!tmpString.empty() && (tmpString != "?"))
+            stream << " encoding=\"" << tmpString << "\"";
+        else if (!SpecificCharacterSet.isEmpty())
+            DCMSR_WARN("Cannot map Specific Character Set to equivalent XML encoding");
         stream << "?>" << OFendl;
 
         stream << "<report";
@@ -1901,10 +1897,30 @@ OFCondition DSRDocument::setTree(const DSRDocumentTree &tree)
 }
 
 
-OFCondition DSRDocument::setTreeFromRootTemplate(DSRRootTemplate &rootTemplate)
+OFCondition DSRDocument::setTreeFromRootTemplate(DSRRootTemplate &rootTemplate,
+                                                 const OFBool expandTree)
 {
-    /* call the functions doing the real work */
-    return setTree(rootTemplate.getTree());
+    OFCondition result = EC_Normal;
+    /* check whether to expand the included templates (if any) */
+    if (expandTree)
+    {
+        DSRDocumentSubTree *tree = NULL;
+        /* expand tree managed by the template and replace the currently stored tree */
+        result = rootTemplate.getTree().createExpandedSubTree(tree);
+        if (result.good())
+            result = DocumentTree.changeDocumentType(rootTemplate.getDocumentType(), OFTrue /*deleteTree*/);
+        if (result.good())
+            result = DocumentTree.insertSubTree(tree, AM_belowCurrent, RT_unknown, OFFalse /*deleteIfFail*/);
+        /* update IOD-specific DICOM attributes */
+        updateAttributes(OFFalse /*updateAll*/);
+        /* in case of error, free memory */
+        if (result.bad())
+            delete tree;
+    } else {
+        /* call the functions doing the real work */
+        result = setTree(rootTemplate.getTree());
+    }
+    return result;
 }
 
 
@@ -2274,8 +2290,7 @@ OFCondition DSRDocument::getAccessionNumber(OFString &value,
 OFCondition DSRDocument::setSpecificCharacterSet(const OFString &value,
                                                  const OFBool check)
 {
-    /* we only support a single value, i.e. no code extensions */
-    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1") : EC_Normal;
+    OFCondition result = (check) ? DcmCodeString::checkStringValue(value, "1-n") : EC_Normal;
     if (result.good())
     {
         SpecificCharacterSetEnum = definedTermToCharacterSet(value);
diff --git a/dcmsr/libsrc/dsrdocst.cc b/dcmsr/libsrc/dsrdocst.cc
index 93ad4da..e89ca5b 100644
--- a/dcmsr/libsrc/dsrdocst.cc
+++ b/dcmsr/libsrc/dsrdocst.cc
@@ -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
@@ -26,6 +26,8 @@
 #include "dcmtk/dcmsr/dsrdocst.h"
 #include "dcmtk/dcmsr/dsrcontn.h"
 #include "dcmtk/dcmsr/dsrreftn.h"
+#include "dcmtk/dcmsr/dsrtpltn.h"
+#include "dcmtk/dcmsr/dsrstpl.h"
 #include "dcmtk/dcmsr/dsriodcc.h"
 
 
@@ -43,7 +45,9 @@ DSRDocumentSubTree::DSRDocumentSubTree(const DSRDocumentSubTree &tree)
     ConstraintChecker(NULL),
     CurrentContentItem()
 {
-    /* the real work is done in the base class DSRTree */
+    /* the real work is done in the base class DSRTree,
+     * so just update the by-reference relationships (if any) */
+    checkByReferenceRelationships(CM_updateNodeID);
 }
 
 
@@ -99,6 +103,13 @@ OFBool DSRDocumentSubTree::isValid() const
 }
 
 
+OFBool DSRDocumentSubTree::isCursorValid() const
+{
+    /* check whether cursor points to an existing node */
+    return DSRTreeNodeCursor<DSRDocumentTreeNode>::isValid();
+}
+
+
 OFBool DSRDocumentSubTree::isValidDocumentTree(const E_RelationshipType defaultRelType) const
 {
     OFBool result = OFFalse;
@@ -119,6 +130,21 @@ OFBool DSRDocumentSubTree::isValidDocumentTree(const E_RelationshipType defaultR
 }
 
 
+OFBool DSRDocumentSubTree::isExpandedDocumentTree() const
+{
+    OFBool result = OFTrue;
+    DSRDocumentTreeNodeCursor cursor(getRoot());
+    if (cursor.isValid())
+    {
+        /* search for a single INCLUDE template node */
+        do {
+            result = (cursor.getNode()->getValueType() != VT_includedTemplate);
+        } while (result && cursor.iterate());
+    }
+    return result;
+}
+
+
 OFBool DSRDocumentSubTree::hasTemplateIdentification() const
 {
     OFBool result = OFFalse;
@@ -147,10 +173,12 @@ OFBool DSRDocumentSubTree::canUseTemplateIdentification() const
 
 
 OFCondition DSRDocumentSubTree::print(STD_NAMESPACE ostream &stream,
-                                      const size_t flags)
+                                      const size_t flags,
+                                      DSRPositionCounter *posCounter)
 {
     OFCondition result = EC_Normal;
-    DSRDocumentTreeNodeCursor cursor(getRoot());
+    /* initialize cursor with root node (and optional position counter) */
+    DSRDocumentTreeNodeCursor cursor(getRoot(), posCounter);
     if (cursor.isValid())
     {
         /* check and update by-reference relationships (if applicable) */
@@ -158,12 +186,12 @@ OFCondition DSRDocumentSubTree::print(STD_NAMESPACE ostream &stream,
         /* update the document tree for output (if needed) */
         updateTreeForOutput();
         OFString tmpString;
-        size_t level = 0;
-        const DSRDocumentTreeNode *node = NULL;
+        DSRDocumentTreeNode *node;
         /* iterate over all nodes */
         do {
             node = cursor.getNode();
-            if (node != NULL)
+            /* check whether to print node ID, position, indentation at all */
+            if ((node->getValueType() != VT_includedTemplate) || !(flags & PF_hideIncludedTemplateNodes))
             {
                 /* print node ID (might be useful for debugging purposes) */
                 if (flags & PF_printNodeID)
@@ -175,51 +203,83 @@ OFCondition DSRDocumentSubTree::print(STD_NAMESPACE ostream &stream,
                     stream << cursor.getPosition(tmpString) << "  ";
                 } else {
                     /* use line indentation */
-                    level = cursor.getLevel();
+                    const size_t level = cursor.getPositionCounter().getLevel();
                     if (level > 0)  // valid ?
                         stream << OFString((level - 1) * 2, ' ');
                 }
+            }
+            /* special handling for included templates */
+            if (node->getValueType() == VT_includedTemplate)
+            {
+                /* print separate line for internal template node (if requested) */
+                if (!(flags & PF_hideIncludedTemplateNodes))
+                {
+                    DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
+                    /* print content of template node */
+                    node->print(stream, flags);
+                    DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_RESET)
+                    stream << OFendl;
+                }
+                /* print content of included template (subtree) */
+                if (node->hasValidValue())
+                {
+                    DSRSubTemplate *subTempl = OFstatic_cast(DSRIncludedTemplateTreeNode *, node)->getValue().get();
+                    /* further indent included subtree */
+                    if (!(flags & PF_hideIncludedTemplateNodes))
+                        cursor.getPositionCounter().goDown();
+                    /* only print non-empty template (subtree) */
+                    if (!subTempl->isEmpty())
+                        result = subTempl->print(stream, flags, &cursor.getPositionCounter());
+                    /* make sure that empty templates are not counted */
+                    else if (flags & PF_hideIncludedTemplateNodes)
+                        --cursor.getPositionCounter();
+                    /* reset indentation of included subtree */
+                    if (!(flags & PF_hideIncludedTemplateNodes))
+                        cursor.getPositionCounter().goUp();
+                }
+            } else {
                 /* print node content */
                 DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
                 stream << "<";
                 result = node->print(stream, flags);
                 DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
                 stream << ">";
-                /* print observation date/time (optional) */
-                if (!node->getObservationDateTime().empty())
-                {
-                    stream << " {" << dicomToReadableDateTime(node->getObservationDateTime(), tmpString) << "}";
-                }
-                /* print annotation (optional) */
-                if (node->hasAnnotation() && (flags & PF_printAnnotation))
-                {
-                    DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_ANNOTATION)
-                    stream << "  \"" << node->getAnnotation().getText() << "\"";
-                }
-                /* print template identification (conditional) */
-                if (node->hasTemplateIdentification() && (flags & PF_printTemplateIdentification))
-                {
-                    OFString templateIdentifier;
-                    OFString mappingResource;
-                    OFString mappingResourceUID;
-                    if (node->getTemplateIdentification(templateIdentifier, mappingResource, mappingResourceUID).good())
-                    {
-                        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
-                        stream << "  # ";
-                        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_TEMPLATE_ID)
-                        stream << "TID " << templateIdentifier;
-                        stream << " (" << mappingResource;
-                        if (!mappingResourceUID.empty())
-                            stream << ", " << mappingResourceUID;
-                        stream << ")";
-                    }
-                }
+                /* print extended information on the node */
+                if (result.good())
+                    result = node->printExtended(stream, flags);
                 DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_RESET)
                 stream << OFendl;
-            } else
-                result = SR_EC_InvalidDocumentTree;
+            }
         } while (result.good() && cursor.iterate());
     }
+    /* store and return current value of position counter (if needed) */
+    if (posCounter != NULL)
+        *posCounter = cursor.getPositionCounter();
+    return result;
+}
+
+
+OFCondition DSRDocumentSubTree::writeXML(STD_NAMESPACE ostream &stream,
+                                         const size_t flags)
+{
+    OFCondition result = SR_EC_InvalidDocumentTree;
+    /* check whether document tree is valid */
+    if (isValid())
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        /* start writing from root node */
+        if (cursor.isValid())
+        {
+            /* check by-reference relationships (if applicable) */
+            checkByReferenceRelationships(CM_resetReferenceTargetFlag);
+            /* update the document tree for output (if needed) */
+            updateTreeForOutput();
+            /* write current node (and its siblings) */
+            do {
+                result = cursor.getNode()->writeXML(stream, flags);
+            } while (result.good() && cursor.gotoNext());
+        }
+    }
     return result;
 }
 
@@ -231,6 +291,44 @@ DSRContentItem &DSRDocumentSubTree::getCurrentContentItem()
 }
 
 
+size_t DSRDocumentSubTree::countNodes(const OFBool searchIntoSubTemplates,
+                                      const OFBool countIncludedTemplateNodes) const
+{
+    size_t count = 0;
+    /* check whether special handling of included templates is needed */
+    if (searchIntoSubTemplates || !countIncludedTemplateNodes)
+    {
+        DSRDocumentTreeNodeCursor cursor(getRoot());
+        if (cursor.isValid())
+        {
+            /* iterate over all nodes */
+            do {
+                if (cursor.getNode()->getValueType() == VT_includedTemplate)
+                {
+                    /* special handling: count nodes of included subtree */
+                    if (searchIntoSubTemplates)
+                    {
+                        const DSRSubTemplate *subTempl = OFstatic_cast(const DSRIncludedTemplateTreeNode *, cursor.getNode())->getValue().get();
+                        if (subTempl != NULL)
+                            count += subTempl->countNodes(searchIntoSubTemplates, countIncludedTemplateNodes);
+                    }
+                    /* also need to count "included template" node */
+                    if (countIncludedTemplateNodes)
+                        ++count;
+                } else {
+                  /* standard case */
+                  ++count;
+                }
+            } while (cursor.iterate());
+        }
+    } else {
+        /* call the inherited function */
+        count = DSRTree<DSRDocumentTreeNode>::countNodes();
+    }
+    return count;
+}
+
+
 size_t DSRDocumentSubTree::gotoNamedNode(const DSRCodedEntryValue &conceptName,
                                          const OFBool startFromRoot,
                                          const OFBool searchIntoSub)
@@ -240,7 +338,7 @@ size_t DSRDocumentSubTree::gotoNamedNode(const DSRCodedEntryValue &conceptName,
     {
         if (startFromRoot)
             gotoRoot();
-        const DSRDocumentTreeNode *node = NULL;
+        const DSRDocumentTreeNode *node;
         /* iterate over all nodes */
         do {
             node = getNode();
@@ -252,6 +350,17 @@ size_t DSRDocumentSubTree::gotoNamedNode(const DSRCodedEntryValue &conceptName,
 }
 
 
+size_t DSRDocumentSubTree::gotoNamedChildNode(const DSRCodedEntryValue &conceptName,
+                                              const OFBool searchIntoSub)
+{
+    /* first, goto child node */
+    size_t nodeID = gotoChild();
+    if (nodeID > 0)
+        nodeID = gotoNamedNode(conceptName, OFFalse /*startFromRoot*/, searchIntoSub);
+    return nodeID;
+}
+
+
 size_t DSRDocumentSubTree::gotoNextNamedNode(const DSRCodedEntryValue &conceptName,
                                              const OFBool searchIntoSub)
 {
@@ -283,36 +392,40 @@ size_t DSRDocumentSubTree::gotoNextAnnotatedNode(const OFString &annotationText)
 
 OFBool DSRDocumentSubTree::canAddContentItem(const E_RelationshipType relationshipType,
                                              const E_ValueType valueType,
-                                             const E_AddMode addMode)
+                                             const E_AddMode addMode) const
 {
     OFBool result = OFFalse;
     /* never accept invalid types */
     if ((relationshipType != RT_invalid) && (valueType != VT_invalid))
     {
-        const DSRDocumentTreeNode *node = getNode();
-        if (node != NULL)
+        /* also do not accept internal types */
+        if ((valueType != VT_byReference) && (valueType != VT_includedTemplate))
         {
-            /* do we have an IOD constraint checker? */
-            if (ConstraintChecker != NULL)
+            const DSRDocumentTreeNode *node = getNode();
+            if (node != NULL)
             {
-                if ((addMode == AM_beforeCurrent) || (addMode == AM_afterCurrent))
+                /* do we have an IOD constraint checker? */
+                if (ConstraintChecker != NULL)
                 {
-                    /* check parent node */
-                    node = getParentNode();
-                    if (node != NULL)
+                    if ((addMode == AM_beforeCurrent) || (addMode == AM_afterCurrent))
+                    {
+                        /* check parent node */
+                        node = getParentNode();
+                        if (node != NULL)
+                            result = ConstraintChecker->checkContentRelationship(node->getValueType(), relationshipType, valueType);
+                    } else
                         result = ConstraintChecker->checkContentRelationship(node->getValueType(), relationshipType, valueType);
-                } else
-                    result = ConstraintChecker->checkContentRelationship(node->getValueType(), relationshipType, valueType);
-            }
-            /* a root node can only be added to an empty tree */
-            else if (relationshipType != RT_isRoot)
-            {
-                /* "unknown" relationships are only allowed on top-level */
-                result = (!hasParentNode() && (addMode != AM_belowCurrent)) || (relationshipType != RT_unknown);
+                }
+                /* a root node can only be added to an empty tree */
+                else if (relationshipType != RT_isRoot)
+                {
+                    /* "unknown" relationships are only allowed on top-level */
+                    result = (!hasParentNode() && (addMode != AM_belowCurrent)) || (relationshipType != RT_unknown);
+                }
+            } else {
+                /* no special rules for root node (at least in a subtree) */
+                result = OFTrue;
             }
-        } else {
-            /* no special rules for root node (at least in a subtree) */
-            result = OFTrue;
         }
     }
     return result;
@@ -320,7 +433,7 @@ OFBool DSRDocumentSubTree::canAddContentItem(const E_RelationshipType relationsh
 
 
 OFBool DSRDocumentSubTree::canAddByReferenceRelationship(const E_RelationshipType relationshipType,
-                                                         const E_ValueType targetValueType)
+                                                         const E_ValueType targetValueType) const
 {
     OFBool result = OFFalse;
     /* never accept invalid types */
@@ -334,7 +447,7 @@ OFBool DSRDocumentSubTree::canAddByReferenceRelationship(const E_RelationshipTyp
                 result = ConstraintChecker->checkContentRelationship(node->getValueType(), relationshipType, targetValueType, OFTrue /*byReference*/);
         } else {
             /* certain relationships are never allowed */
-            result = (relationshipType != RT_isRoot) && (relationshipType != RT_unknown);
+            result = (relationshipType != RT_isRoot) && (relationshipType != RT_unknown) && (targetValueType != VT_includedTemplate);
         }
     }
     return result;
@@ -395,7 +508,8 @@ OFCondition DSRDocumentSubTree::addContentItem(DSRDocumentTreeNode *node,
 
 OFCondition DSRDocumentSubTree::addContentItem(const E_RelationshipType relationshipType,
                                                const E_ValueType valueType,
-                                               const DSRCodedEntryValue &conceptName)
+                                               const DSRCodedEntryValue &conceptName,
+                                               const OFBool check)
 {
     OFCondition result = EC_Normal;
     /* call the functions doing the real work */
@@ -404,7 +518,7 @@ OFCondition DSRDocumentSubTree::addContentItem(const E_RelationshipType relation
         if (!conceptName.isEmpty())
         {
             /* use a more appropriate error code than the one returned */
-            if (getCurrentContentItem().setConceptName(conceptName).bad())
+            if (getCurrentContentItem().setConceptName(conceptName, check).bad())
                 result = SR_EC_InvalidConceptName;
         }
     } else
@@ -415,7 +529,8 @@ OFCondition DSRDocumentSubTree::addContentItem(const E_RelationshipType relation
 
 OFCondition DSRDocumentSubTree::addChildContentItem(const E_RelationshipType relationshipType,
                                                     const E_ValueType valueType,
-                                                    const DSRCodedEntryValue &conceptName)
+                                                    const DSRCodedEntryValue &conceptName,
+                                                    const OFBool check)
 {
     OFCondition result = EC_Normal;
     /* call the functions doing the real work */
@@ -424,7 +539,7 @@ OFCondition DSRDocumentSubTree::addChildContentItem(const E_RelationshipType rel
         if (!conceptName.isEmpty())
         {
             /* use a more appropriate error code than the one returned */
-            if (getCurrentContentItem().setConceptName(conceptName).bad())
+            if (getCurrentContentItem().setConceptName(conceptName, check).bad())
                 result = SR_EC_InvalidConceptName;
         }
     } else
@@ -444,7 +559,7 @@ size_t DSRDocumentSubTree::addByReferenceRelationship(const E_RelationshipType r
         if (cursor.isValid())
         {
             /* goto specified target node (might be improved later on) */
-            if (cursor.gotoNode(referencedNodeID))
+            if (cursor.gotoNode(referencedNodeID) > 0)
             {
                 OFString sourceString;
                 OFString targetString;
@@ -454,29 +569,33 @@ size_t DSRDocumentSubTree::addByReferenceRelationship(const E_RelationshipType r
                 if (sourceString.substr(0, targetString.length()) != targetString)
                 {
                     const DSRDocumentTreeNode *targetNode = cursor.getNode();
-                    if (targetNode != NULL)
+                    const E_ValueType targetValueType = targetNode->getValueType();
+                    /* check whether relationship is valid/allowed */
+                    if (canAddByReferenceRelationship(relationshipType, targetValueType))
                     {
-                        const E_ValueType targetValueType = targetNode->getValueType();
-                        /* check whether relationship is valid/allowed */
-                        if (canAddByReferenceRelationship(relationshipType, targetValueType))
+                        DSRDocumentTreeNode *node = new DSRByReferenceTreeNode(relationshipType, referencedNodeID, targetValueType);
+                        if (node != NULL)
                         {
-                            DSRDocumentTreeNode *node = new DSRByReferenceTreeNode(relationshipType, referencedNodeID, targetValueType);
-                            if (node != NULL)
+                            nodeID = addNode(node, AM_belowCurrent);
+                            /* in case of error, free allocated memory */
+                            if (nodeID == 0)
                             {
-                                nodeID = addNode(node, AM_belowCurrent);
-                                /* in case of error, free allocated memory */
-                                if (nodeID == 0)
-                                {
-                                    delete node;
-                                    node = NULL;
-                                } else {
-                                    /* otherwise, go back to current node */
-                                    goUp();
-                                }
+                                delete node;
+                                node = NULL;
+                            } else {
+                                /* otherwise, go back to current node */
+                                goUp();
                             }
                         }
                     }
+                } else {
+                    /* report a warning with some details to the debug logger */
+                    DCMSR_DEBUG("Invalid by-reference relationship from content item \""
+                        << sourceString << "\" to \"" << targetString << "\" (loop check)");
                 }
+            } else {
+                /* report a warning with some details to the debug logger */
+                DCMSR_DEBUG("Target content item of by-reference relationship does not exist");
             }
         }
     }
@@ -484,15 +603,21 @@ size_t DSRDocumentSubTree::addByReferenceRelationship(const E_RelationshipType r
 }
 
 
-OFBool DSRDocumentSubTree::canInsertSubTree(DSRDocumentSubTree *tree,
+OFCondition DSRDocumentSubTree::updateByReferenceRelationships()
+{
+    /* update the position strings of by-reference relationships */
+    return checkByReferenceRelationships(CM_updatePositionString);
+}
+
+
+OFBool DSRDocumentSubTree::canInsertSubTree(const DSRDocumentSubTree *tree,
                                             const E_AddMode addMode,
-                                            const E_RelationshipType defaultRelType)
+                                            const E_RelationshipType defaultRelType) const
 {
     OFBool result = OFFalse;
     if (tree != NULL)
     {
-        const DSRDocumentTreeNode *currentNode = getNode();
-        if (currentNode != NULL)
+        if (getNode() != NULL)
         {
             /* check whether the top-level nodes of the subtree can be added */
             DSRDocumentTreeNodeCursor cursor(tree->getRoot());
@@ -634,6 +759,48 @@ DSRDocumentSubTree *DSRDocumentSubTree::cloneSubTree(const size_t stopAfterNodeI
 }
 
 
+OFCondition DSRDocumentSubTree::createExpandedSubTree(DSRDocumentSubTree *&tree) const
+{
+    OFCondition result = EC_Normal;
+    if (!isEmpty())
+    {
+        /* first, create a clone of this tree */
+        tree = clone();
+        if (tree != NULL)
+        {
+            /* expand all "included template" nodes in the new tree */
+            result = expandIncludedTemplates(tree);
+            /* in case of error, free memory */
+            if (result.bad())
+            {
+                delete tree;
+                tree = NULL;
+            }
+        } else
+            result = EC_MemoryExhausted;
+    } else {
+        tree = NULL;
+        result = SR_EC_EmptyDocumentTree;
+    }
+    return result;
+}
+
+
+OFBool DSRDocumentSubTree::compareTemplateIdentification(const OFString &templateIdentifier,
+                                                         const OFString &mappingResource,
+                                                         const OFString &mappingResourceUID) const
+{
+    OFBool result = OFFalse;
+    /* check whether template identification is possible */
+    if (canUseTemplateIdentification())
+    {
+        /* compare with template identification of root CONTAINER */
+        result = getRoot()->compareTemplateIdentification(templateIdentifier, mappingResource, mappingResourceUID);
+    }
+    return result;
+}
+
+
 OFCondition DSRDocumentSubTree::getTemplateIdentification(OFString &templateIdentifier,
                                                           OFString &mappingResource) const
 {
@@ -699,6 +866,13 @@ size_t DSRDocumentSubTree::addNode(DSRDocumentTreeNode *node,
 }
 
 
+size_t DSRDocumentSubTree::replaceNode(DSRDocumentTreeNode *node)
+{
+    /* might add further checks later on */
+    return DSRTree<DSRDocumentTreeNode>::replaceNode(node);
+}
+
+
 DSRDocumentTreeNode *DSRDocumentSubTree::extractNode()
 {
     /* might add further checks later on */
@@ -720,6 +894,98 @@ size_t DSRDocumentSubTree::removeNode()
 }
 
 
+OFCondition DSRDocumentSubTree::includeTemplate(const DSRSharedSubTemplate &subTemplate,
+                                                const E_AddMode addMode,
+                                                const E_RelationshipType defaultRelType)
+{
+    OFCondition result = EC_Normal;
+    /* make sure that managed object exists */
+    if (subTemplate)
+    {
+        /* create node that stores the reference to the included template */
+        DSRDocumentTreeNode *node = new DSRIncludedTemplateTreeNode(subTemplate, defaultRelType);
+        if (node != NULL)
+        {
+            /* check whether adding the node actually works */
+            if (addNode(node, addMode) == 0)
+            {
+                result = SR_EC_CannotAddContentItem;
+                /* if not, delete node */
+                delete node;
+            }
+        } else
+            result = EC_MemoryExhausted;
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
+OFCondition DSRDocumentSubTree::expandIncludedTemplates(DSRDocumentSubTree *tree) const
+{
+    OFCondition result = EC_Normal;
+    /* make sure that the passed tree pointer is valid and the tree is not empty */
+    if ((tree != NULL) && (tree->gotoRoot() > 0))
+    {
+        OFBool nodeDeleted;
+        const DSRDocumentTreeNode *node;
+        /* iterate over all nodes */
+        do {
+            node = tree->getNode();
+            nodeDeleted = OFFalse;
+            if (node != NULL)
+            {
+                /* and expand the included templates (if any) */
+                if (node->getValueType() == VT_includedTemplate)
+                {
+                    const DSRSubTemplate *subTempl = OFstatic_cast(const DSRIncludedTemplateTreeNode *, node)->getValue().get();
+                    if (subTempl != NULL)
+                    {
+                        /* template has no content items */
+                        if (subTempl->isEmpty())
+                        {
+                            /* just remove current node (included template) */
+                            nodeDeleted = (tree->removeNode() > 0);
+                        } else {
+                            /* clone the subtree managed by the template */
+                            DSRDocumentSubTree *subTree = subTempl->cloneTree();
+                            if (subTree != NULL)
+                            {
+                                /* check whether there are any "unknown" relationships on top level */
+                                const E_RelationshipType defaultRelType = node->getRelationshipType();
+                                DSRDocumentTreeNodeCursor cursor(subTree->getRoot());
+                                do {
+                                    DSRDocumentTreeNode *curNode = cursor.getNode();
+                                    /* if so, replace them with the "default" relationship type */
+                                    if ((curNode != NULL) && (curNode->getRelationshipType() == RT_unknown))
+                                        curNode->setRelationshipType(defaultRelType);
+                                } while (cursor.gotoNext());
+                                /* replace the current node (and its children) with the cloned subtree */
+                                if (tree->replaceNode(subTree->getRoot()) > 0)
+                                {
+                                    /* "forget" reference to root node */
+                                    subTree->getAndRemoveRootNode();
+                                } else
+                                    result = SR_EC_CannotInsertSubTree;
+                                /* free memory */
+                                delete subTree;
+                            } else
+                                result = EC_MemoryExhausted;
+                        }
+                    }
+                }
+            } else
+                result = SR_EC_InvalidDocumentTree;
+        } while (result.good() && (nodeDeleted || tree->iterate()));
+        /* finally, set cursor back to root node */
+        if (result.good())
+            tree->gotoRoot();
+    } else
+        result = EC_IllegalParameter;
+    return result;
+}
+
+
 OFCondition DSRDocumentSubTree::checkByReferenceRelationships(const size_t mode,
                                                               const size_t flags)
 {
@@ -737,95 +1003,89 @@ OFCondition DSRDocumentSubTree::checkByReferenceRelationships(const size_t mode,
             DSRDocumentTreeNodeCursor cursor(getRoot());
             if (cursor.isValid())
             {
-                const DSRDocumentTreeNode *node = NULL;
                 /* for all content items */
                 do {
-                    node = cursor.getNode();
-                    if (node != NULL)
+                    /* only check/update by-reference relationships */
+                    if (cursor.getNode()->getValueType() == VT_byReference)
                     {
-                        /* only check/update by-reference relationships */
-                        if (node->getValueType() == VT_byReference)
+                        size_t refNodeID = 0;
+                        OFString nodePosString;
+                        cursor.getPosition(nodePosString);
+                        /* type cast to access members of by-reference class */
+                        DSRByReferenceTreeNode *byRefNode = OFconst_cast(DSRByReferenceTreeNode *, OFstatic_cast(const DSRByReferenceTreeNode *, cursor.getNode()));
+                        if (flags & RF_showCurrentlyProcessedItem)
+                            DCMSR_INFO("Updating by-reference relationship in content item " << nodePosString);
+                        /* start searching from root node, be careful with large trees! (tbd: might be improved later on) */
+                        DSRDocumentTreeNodeCursor refCursor(getRoot());
+                        if (mode & CM_updateNodeID)
                         {
-                            size_t refNodeID = 0;
-                            OFString nodePosString;
-                            cursor.getPosition(nodePosString);
-                            /* type cast to access members of by-reference class */
-                            DSRByReferenceTreeNode *byRefNode = OFconst_cast(DSRByReferenceTreeNode *, OFstatic_cast(const DSRByReferenceTreeNode *, node));
-                            if (flags & RF_showCurrentlyProcessedItem)
-                                DCMSR_INFO("Updating by-reference relationship in content item " << nodePosString);
-                            /* start searching from root node, be careful with large trees! (tbd: might be improved later on) */
-                            DSRDocumentTreeNodeCursor refCursor(getRoot());
-                            if (mode & CM_updateNodeID)
+                            /* update node ID (based on position string; tbc: what about included templates?) */
+                            refNodeID = refCursor.gotoNode(byRefNode->getReferencedContentItem());
+                            const DSRDocumentTreeNode *targetNode = (refNodeID > 0) ? refCursor.getNode() : NULL;
+                            const E_ValueType targetValueType = (targetNode != NULL) ? targetNode->getValueType() : VT_invalid;
+                            byRefNode->updateReference(refNodeID, targetValueType);
+                        } else {
+                            /* node ID is expected to be valid */
+                            refNodeID = refCursor.gotoNode(byRefNode->getReferencedNodeID());
+                            if (mode & CM_updatePositionString)
                             {
-                                /* update node ID (based on position string) */
-                                refNodeID = refCursor.gotoNode(byRefNode->getReferencedContentItem());
-                                const DSRDocumentTreeNode *targetNode = (refNodeID > 0) ? refCursor.getNode() : NULL;
-                                const E_ValueType targetValueType = (targetNode != NULL) ? targetNode->getValueType() : VT_invalid;
-                                byRefNode->updateReference(refNodeID, targetValueType);
-                            } else {
-                                /* node ID is expected to be valid */
-                                refNodeID = refCursor.gotoNode(byRefNode->getReferencedNodeID());
-                                if (mode & CM_updatePositionString)
-                                {
-                                    OFString refPosString;
-                                    /* update position string */
-                                    if (refNodeID > 0)
-                                        refCursor.getPosition(refPosString);
-                                    byRefNode->updateReference(refPosString);
-                                } else if (refNodeID == 0)
-                                    byRefNode->invalidateReference();
-                            }
-                            const OFString refContentItem(byRefNode->getReferencedContentItem());
-                            if (refNodeID > 0)
+                                OFString refPosString;
+                                /* update position string (tbd: does not yet work correctly with "included templates" */
+                                if (refNodeID > 0)
+                                    refCursor.getPosition(refPosString);
+                                byRefNode->updateReference(refPosString);
+                            } else if (refNodeID == 0)
+                                byRefNode->invalidateReference();
+                        }
+                        const OFString refContentItem(byRefNode->getReferencedContentItem());
+                        if (refNodeID > 0)
+                        {
+                            /* source and target content items should not be identical */
+                            if (refNodeID != cursor.getNodeID())
                             {
-                                /* source and target content items should not be identical */
-                                if (refNodeID != cursor.getNodeID())
+                                /* check whether target node is an ancestor of source node (prevent loops) */
+                                if (refContentItem.empty() || (nodePosString.substr(0, refContentItem.length()) != refContentItem))
                                 {
-                                    /* check whether target node is an ancestor of source node (prevent loops) */
-                                    if (refContentItem.empty() || (nodePosString.substr(0, refContentItem.length()) != refContentItem))
+                                    /* refCursor should now point to the reference target (refNodeID > 0) */
+                                    const DSRDocumentTreeNode *parentNode = cursor.getParentNode();
+                                    DSRDocumentTreeNode *targetNode = refCursor.getNode();
+                                    if ((parentNode != NULL) && (targetNode != NULL))
                                     {
-                                        /* refCursor should now point to the reference target (refNodeID > 0) */
-                                        const DSRDocumentTreeNode *parentNode = cursor.getParentNode();
-                                        DSRDocumentTreeNode *targetNode = refCursor.getNode();
-                                        if ((parentNode != NULL) && (targetNode != NULL))
+                                        /* specify that this content item is target of an by-reference relationship */
+                                        targetNode->setReferenceTarget();
+                                        /* do we really need to check the constraints? */
+                                        E_RelationshipType relationshipType = byRefNode->getRelationshipType();
+                                        if (!(flags & RF_ignoreRelationshipConstraints) &&
+                                            (!(flags & RF_acceptUnknownRelationshipType) || (relationshipType != RT_unknown)))
                                         {
-                                            /* specify that this content item is target of an by-reference relationship */
-                                            targetNode->setReferenceTarget();
-                                            /* do we really need to check the constraints? */
-                                            E_RelationshipType relationshipType = byRefNode->getRelationshipType();
-                                            if (!(flags & RF_ignoreRelationshipConstraints) &&
-                                                (!(flags & RF_acceptUnknownRelationshipType) || (relationshipType != RT_unknown)))
+                                            /* check whether relationship is valid */
+                                            if ((ConstraintChecker != NULL) &&
+                                                !ConstraintChecker->checkContentRelationship(parentNode->getValueType(), relationshipType,
+                                                                                             targetNode->getValueType(), OFTrue /*byReference*/))
                                             {
-                                                /* check whether relationship is valid */
-                                                if ((ConstraintChecker != NULL) &&
-                                                    !ConstraintChecker->checkContentRelationship(parentNode->getValueType(), relationshipType,
-                                                                                                 targetNode->getValueType(), OFTrue /*byReference*/))
-                                                {
-                                                    if (refContentItem.empty())
-                                                        DCMSR_WARN("Invalid by-reference relationship at content item \"" << nodePosString << "\"");
-                                                    else {
-                                                        DCMSR_WARN("Invalid by-reference relationship between content item \""
-                                                            << nodePosString << "\" and \"" << refContentItem << "\"");
-                                                    }
+                                                if (refContentItem.empty())
+                                                    DCMSR_WARN("Invalid by-reference relationship at content item \"" << nodePosString << "\"");
+                                                else {
+                                                    DCMSR_WARN("Invalid by-reference relationship between content item \""
+                                                        << nodePosString << "\" and \"" << refContentItem << "\"");
                                                 }
                                             }
-                                        } else
-                                            DCMSR_WARN("Corrupted data structures while checking by-reference relationships");
-                                    } else {
-                                        DCMSR_WARN("By-reference relationship from \"" << nodePosString << "\" to ancestor content item \""
-                                            << refContentItem << "\" (loop check)");
-                                    }
-                                } else
-                                    DCMSR_WARN("Source and target content item of by-reference relationship are identical");
-                            } else {
-                                if (refContentItem.empty())
-                                    DCMSR_WARN("Target content item of by-reference relationship does not exist");
-                                else
-                                    DCMSR_WARN("Target content item \"" << refContentItem << "\" of by-reference relationship does not exist");
-                            }
+                                        }
+                                    } else
+                                        DCMSR_WARN("Corrupted data structures while checking by-reference relationships");
+                                } else {
+                                    DCMSR_WARN("By-reference relationship from \"" << nodePosString << "\" to ancestor content item \""
+                                        << refContentItem << "\" (loop check)");
+                                }
+                            } else
+                                DCMSR_WARN("Source and target content item of by-reference relationship are identical");
+                        } else {
+                            if (refContentItem.empty())
+                                DCMSR_WARN("Target content item of by-reference relationship does not exist");
+                            else
+                                DCMSR_WARN("Target content item \"" << refContentItem << "\" of by-reference relationship does not exist");
                         }
-                    } else
-                        result = SR_EC_InvalidDocumentTree;
+                    }
                 } while (result.good() && cursor.iterate());
             }
         }
@@ -840,13 +1100,10 @@ void DSRDocumentSubTree::resetReferenceTargetFlag()
     DSRDocumentTreeNodeCursor cursor(getRoot());
     if (cursor.isValid())
     {
-        DSRDocumentTreeNode *node = NULL;
         /* iterate over all nodes */
         do {
-            node = cursor.getNode();
             /* and reset the flag */
-            if (node != NULL)
-                node->setReferenceTarget(OFFalse);
+            cursor.getNode()->setReferenceTarget(OFFalse);
         } while (cursor.iterate());
     }
 }
@@ -858,8 +1115,8 @@ void DSRDocumentSubTree::updateTreeForOutput()
 }
 
 
-OFCondition DSRDocumentSubTree::checkSubTreeConstraints(DSRDocumentSubTree *tree,
-                                                        DSRIODConstraintChecker *checker)
+OFCondition DSRDocumentSubTree::checkSubTreeConstraints(const DSRDocumentSubTree *tree,
+                                                        const DSRIODConstraintChecker *checker) const
 {
     OFCondition result = EC_Normal;
     /* make sure that the passed tree pointer is valid */
@@ -887,6 +1144,13 @@ OFCondition DSRDocumentSubTree::checkSubTreeConstraints(DSRDocumentSubTree *tree
                             check = checker->checkContentRelationship(parent->getValueType(),
                                                                       node->getRelationshipType(), targetValueType,
                                                                       OFTrue /*byReference*/);
+                        }
+                        /* is it an included template? */
+                        else if (node->getValueType() == VT_includedTemplate)
+                        {
+                            // tbd: need to implement a proper check for this case
+                            DCMSR_TRACE("DSRDocumentSubTree::checkSubTreeConstraints() Need to check subtree of included template "
+                                << "at node id:" << node->getNodeID() << " ... not yet implemented");
                         } else {
                             /* check whether the relationship with parent is allowed */
                             check = checker->checkContentRelationship(parent->getValueType(),
diff --git a/dcmsr/libsrc/dsrdoctn.cc b/dcmsr/libsrc/dsrdoctn.cc
index 8c49292..b7583e8 100644
--- a/dcmsr/libsrc/dsrdoctn.cc
+++ b/dcmsr/libsrc/dsrdoctn.cc
@@ -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
@@ -136,6 +136,38 @@ OFCondition DSRDocumentTreeNode::print(STD_NAMESPACE ostream &stream,
 }
 
 
+OFCondition DSRDocumentTreeNode::printExtended(STD_NAMESPACE ostream &stream,
+                                               const size_t flags) const
+{
+    /* print observation date/time (optional) */
+    if (!ObservationDateTime.empty())
+    {
+        OFString tmpString;
+        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
+        stream << " {" << dicomToReadableDateTime(ObservationDateTime, tmpString) << "}";
+    }
+    /* print annotation (optional) */
+    if (hasAnnotation() && (flags & PF_printAnnotation))
+    {
+        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_ANNOTATION)
+        stream << "  \"" << getAnnotation().getText() << "\"";
+    }
+    /* print template identification (conditional) */
+    if (hasTemplateIdentification() && (flags & PF_printTemplateIdentification))
+    {
+        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_DELIMITER)
+        stream << "  # ";
+        DCMSR_PRINT_ANSI_ESCAPE_CODE(DCMSR_ANSI_ESCAPE_CODE_TEMPLATE_ID)
+        stream << "TID " << TemplateIdentifier;
+        stream << " (" << MappingResource;
+        if (!MappingResourceUID.empty())
+            stream << ", " << MappingResourceUID;
+        stream << ")";
+    }
+    return EC_Normal;
+}
+
+
 OFCondition DSRDocumentTreeNode::read(DcmItem &dataset,
                                       const DSRIODConstraintChecker *constraintChecker,
                                       const size_t flags)
@@ -282,7 +314,7 @@ OFCondition DSRDocumentTreeNode::writeXML(STD_NAMESPACE ostream &stream,
     /* write optional template identification */
     if ((flags & XF_writeTemplateIdentification) && !(flags & XF_templateElementEnclosesItems))
     {
-        if (!TemplateIdentifier.empty() && !MappingResource.empty())
+        if (hasTemplateIdentification())
         {
             if (flags & XF_templateIdentifierAsAttribute)
             {
@@ -336,14 +368,9 @@ OFCondition DSRDocumentTreeNode::writeXML(STD_NAMESPACE ostream &stream,
     DSRDocumentTreeNodeCursor cursor(getDown());
     if (cursor.isValid())
     {
-        const DSRDocumentTreeNode *node = NULL;
         /* for all child nodes */
         do {
-            node = cursor.getNode();
-            if (node != NULL)
-                result = node->writeXML(stream, flags);
-            else
-                result = SR_EC_InvalidDocumentTree;
+            result = cursor.getNode()->writeXML(stream, flags);
         } while (result.good() && cursor.gotoNext());
     }
     return result;
@@ -357,7 +384,7 @@ void DSRDocumentTreeNode::writeXMLItemStart(STD_NAMESPACE ostream &stream,
     /* write optional template identification */
     if ((flags & XF_writeTemplateIdentification) && (flags & XF_templateElementEnclosesItems))
     {
-        if (!TemplateIdentifier.empty() && !MappingResource.empty())
+        if (hasTemplateIdentification())
         {
             stream << "<template resource=\"" << MappingResource << "\"";
             if (!MappingResourceUID.empty())
@@ -393,7 +420,7 @@ void DSRDocumentTreeNode::writeXMLItemEnd(STD_NAMESPACE ostream &stream,
     /* close optional template identification */
     if ((flags & XF_writeTemplateIdentification) && (flags & XF_templateElementEnclosesItems))
     {
-        if (!TemplateIdentifier.empty() && !MappingResource.empty())
+        if (hasTemplateIdentification())
             stream << "</template>" << OFendl;
     }
 }
@@ -516,6 +543,18 @@ OFCondition DSRDocumentTreeNode::setObservationUID(const OFString &observationUI
 }
 
 
+OFBool DSRDocumentTreeNode::compareTemplateIdentification(const OFString &templateIdentifier,
+                                                          const OFString &mappingResource,
+                                                          const OFString &mappingResourceUID) const
+{
+    OFBool result = (TemplateIdentifier == templateIdentifier) && (MappingResource == mappingResource);
+    /* mapping resource UID is optional, so only check it if present */
+    if (result && !MappingResourceUID.empty() && !mappingResourceUID.empty())
+        result = (MappingResourceUID == mappingResourceUID);
+    return result;
+}
+
+
 OFCondition DSRDocumentTreeNode::getTemplateIdentification(OFString &templateIdentifier,
                                                            OFString &mappingResource) const
 {
@@ -568,7 +607,7 @@ OFCondition DSRDocumentTreeNode::setTemplateIdentification(const OFString &templ
     }
     if (result.good())
     {
-        if ((ValueType != VT_Container) && !templateIdentifier.empty())
+        if ((ValueType != VT_Container) && (ValueType != VT_includedTemplate) && !templateIdentifier.empty())
             DCMSR_WARN("Template identification should only be specified for CONTAINER content items");
         /* set current values, might be empty */
         TemplateIdentifier = templateIdentifier;
@@ -596,7 +635,7 @@ OFCondition DSRDocumentTreeNode::readContentItem(DcmItem & /*dataset*/,
 
 OFCondition DSRDocumentTreeNode::writeContentItem(DcmItem & /*dataset*/) const
 {
-    /* no content to insert */
+    /* no content to write */
     return EC_Normal;
 }
 
@@ -656,13 +695,16 @@ OFCondition DSRDocumentTreeNode::readDocumentRelationshipMacro(DcmItem &dataset,
     /* read ObservationUID (optional) */
     getAndCheckStringValueFromDataset(dataset, DCM_ObservationUID, ObservationUID, "1", "3");
     /* determine template identifier expected for this document */
-    const OFString expectedTemplateIdentifier = (constraintChecker != NULL) ? OFSTRING_GUARD(constraintChecker->getRootTemplateIdentifier()) : "";
+    OFString expectedTemplateIdentifier;
+    OFString expectedMappingResource;
+    if (constraintChecker != NULL)
+        constraintChecker->getRootTemplateIdentification(expectedTemplateIdentifier, expectedMappingResource);
     /* read ContentTemplateSequence (conditional) */
     DcmItem *ditem = NULL;
     if (dataset.findAndGetSequenceItem(DCM_ContentTemplateSequence, ditem, 0 /*itemNum*/).good())
     {
         if (ValueType != VT_Container)
-            DCMSR_WARN("Found ContentTemplateSequence for content item that is not a CONTAINER");
+            DCMSR_WARN("Found Content Template Sequence for content item \"" << posString << "\" which is not a CONTAINER");
         getAndCheckStringValueFromDataset(*ditem, DCM_MappingResource, MappingResource, "1", "1", "ContentTemplateSequence");
         getAndCheckStringValueFromDataset(*ditem, DCM_MappingResourceUID, MappingResourceUID, "1", "3", "ContentTemplateSequence");
         getAndCheckStringValueFromDataset(*ditem, DCM_TemplateIdentifier, TemplateIdentifier, "1", "1", "ContentTemplateSequence");
@@ -672,7 +714,7 @@ OFCondition DSRDocumentTreeNode::readDocumentRelationshipMacro(DcmItem &dataset,
             /* check whether the correct Mapping Resource UID is used (if present) */
             if (!MappingResourceUID.empty() && (MappingResourceUID != UID_DICOMContentMappingResource))
             {
-                DCMSR_WARN("Incorrect value for MappingResourceUID (" << MappingResourceUID << "), "
+                DCMSR_WARN("Incorrect value for Mapping Resource UID (" << MappingResourceUID << "), "
                     << UID_DICOMContentMappingResource << " expected");
             }
             /* check for a common error: Template Identifier includes "TID" prefix */
@@ -680,35 +722,35 @@ OFCondition DSRDocumentTreeNode::readDocumentRelationshipMacro(DcmItem &dataset,
             {
                 if ((TemplateIdentifier.find_first_not_of("0123456789") != OFString_npos) || (TemplateIdentifier.at(0) == '0'))
                 {
-                    DCMSR_DEBUG("Reading invalid TemplateIdentifier (" << TemplateIdentifier << ")");
-                    DCMSR_WARN("TemplateIdentifier shall be a string of digits without leading zeros");
+                    DCMSR_DEBUG("Reading invalid Template Identifier (" << TemplateIdentifier << ")");
+                    DCMSR_WARN("Template Identifier shall be a string of digits without leading zeros");
                 }
             }
         }
         /* check whether the expected template (if known) has been used */
         if (!expectedTemplateIdentifier.empty())
         {
-            /* check for DICOM Content Mapping Resource */
-            if (MappingResource == "DCMR")
+            /* compare with expected mapping resource */
+            if (MappingResource != expectedMappingResource)
             {
-                /* compare with expected TID */
-                if (TemplateIdentifier != expectedTemplateIdentifier)
-                {
-                    DCMSR_WARN("Incorrect value for TemplateIdentifier ("
-                        << ((TemplateIdentifier.empty()) ? "<empty>" : TemplateIdentifier) << "), "
-                        << expectedTemplateIdentifier << " expected");
-                }
-            } else if (!MappingResource.empty())
-                printUnknownValueWarningMessage("MappingResource", MappingResource.c_str());
+                DCMSR_WARN("Incorrect value for Mapping Resource ("
+                    << ((MappingResource.empty()) ? "<empty>" : MappingResource) << "), "
+                    << expectedMappingResource << " expected");
+            }
+            /* compare with expected template identifier */
+            if (TemplateIdentifier != expectedTemplateIdentifier)
+            {
+                DCMSR_WARN("Incorrect value for Template Identifier ("
+                    << ((TemplateIdentifier.empty()) ? "<empty>" : TemplateIdentifier) << "), "
+                    << expectedTemplateIdentifier << " expected");
+            }
         }
     }
     /* only check template identifier on dataset level (root node) */
     else if ((dataset.ident() == EVR_dataset) && !expectedTemplateIdentifier.empty())
     {
-        DCMSR_WARN("ContentTemplateSequence missing or empty, TemplateIdentifier "
-            << expectedTemplateIdentifier
-            /* DICOM Content Mapping Resource is currently hard-coded (see above) */
-            <<  " (DCMR) expected");
+        DCMSR_WARN("Content Template Sequence missing or empty, Template Identifier "
+            << expectedTemplateIdentifier << " (" << expectedMappingResource << ") expected");
     }
     /* read ContentSequence */
     if (result.good())
@@ -729,7 +771,7 @@ OFCondition DSRDocumentTreeNode::writeDocumentRelationshipMacro(DcmItem &dataset
         addElementToDataset(result, dataset, new DcmSequenceOfItems(DigitalSignatures), "1-n", "3", "SOPCommonModule");
         DCMSR_WARN("Writing possibly incorrect digital signature - same as read from dataset");
     }
-    /* add to mark stack */
+    /* add to marked items stack */
     if (MarkFlag && (markedItems != NULL))
         markedItems->push(&dataset);
     /* write ObservationDateTime (conditional) */
@@ -740,7 +782,7 @@ OFCondition DSRDocumentTreeNode::writeDocumentRelationshipMacro(DcmItem &dataset
     /* write ContentTemplateSequence (conditional) */
     if (result.good())
     {
-        if (!TemplateIdentifier.empty() && !MappingResource.empty())
+        if (hasTemplateIdentification())
         {
             DcmItem *ditem = NULL;
             /* create sequence with a single item */
@@ -748,7 +790,7 @@ OFCondition DSRDocumentTreeNode::writeDocumentRelationshipMacro(DcmItem &dataset
             if (result.good())
             {
                 if (ValueType != VT_Container)
-                    DCMSR_WARN("Writing ContentTemplateSequence for content item that is not a CONTAINER");
+                    DCMSR_WARN("Writing Content Template Sequence for content item that is not a CONTAINER");
                 /* write item data */
                 putStringValueToDataset(*ditem, DCM_MappingResource, MappingResource);
                 putStringValueToDataset(*ditem, DCM_MappingResourceUID, MappingResourceUID, OFFalse /*allowEmpty*/);
@@ -982,7 +1024,7 @@ OFCondition DSRDocumentTreeNode::readContentSequence(DcmItem &dataset,
             /* increment the counter (needed for generating the location string) */
             i++;
         }
-        /* skipping complete sub-tree if flag is set */
+        /* skipping complete subtree if flag is set */
         if (result.bad() && (flags & RF_skipInvalidContentItems))
         {
             printInvalidContentItemMessage("Skipping", node);
@@ -1010,39 +1052,35 @@ OFCondition DSRDocumentTreeNode::writeContentSequence(DcmItem &dataset,
             /* for all child nodes */
             do {
                 node = cursor.getNode();
-                if (node != NULL)
+                ditem = new DcmItem();
+                if (ditem != NULL)
                 {
-                    ditem = new DcmItem();
-                    if (ditem != NULL)
+                    /* write RelationshipType */
+                    result = putStringValueToDataset(*ditem, DCM_RelationshipType, relationshipTypeToDefinedTerm(node->getRelationshipType()));
+                    /* check for by-reference relationship */
+                    if (node->getValueType() == VT_byReference)
                     {
-                        /* write RelationshipType */
-                        result = putStringValueToDataset(*ditem, DCM_RelationshipType, relationshipTypeToDefinedTerm(node->getRelationshipType()));
-                        /* check for by-reference relationship */
-                        if (node->getValueType() == VT_byReference)
-                        {
-                            /* write ReferencedContentItemIdentifier */
-                            if (result.good())
-                                result = node->writeContentItem(*ditem);
-                        } else {    // by-value
-                            /* write RelationshipMacro */
-                            if (result.good())
-                                result = node->writeDocumentRelationshipMacro(*ditem, markedItems);
-                            /* write DocumentContentMacro */
-                            if (result.good())
-                                node->writeDocumentContentMacro(*ditem);
-                        }
-                        /* check for any errors */
-                        if (result.bad())
-                            printContentItemErrorMessage("Writing", result, node);
-                        /* insert item into sequence */
+                        /* write ReferencedContentItemIdentifier */
                         if (result.good())
-                            dseq->insert(ditem);
-                        else
-                            delete ditem;
-                    } else
-                        result = EC_MemoryExhausted;
+                            result = node->writeContentItem(*ditem);
+                    } else {    // by-value
+                        /* write RelationshipMacro */
+                        if (result.good())
+                            result = node->writeDocumentRelationshipMacro(*ditem, markedItems);
+                        /* write DocumentContentMacro */
+                        if (result.good())
+                            node->writeDocumentContentMacro(*ditem);
+                    }
+                    /* check for any errors */
+                    if (result.bad())
+                        printContentItemErrorMessage("Writing", result, node);
+                    /* insert item into sequence */
+                    if (result.good())
+                        dseq->insert(ditem);
+                    else
+                        delete ditem;
                 } else
-                    result = SR_EC_InvalidDocumentTree;
+                    result = EC_MemoryExhausted;
             } while (result.good() && cursor.gotoNext());
             if (result.good())
                 result = dataset.insert(dseq, OFTrue /*replaceOld*/);
@@ -1127,139 +1165,135 @@ OFCondition DSRDocumentTreeNode::renderHTMLChildNodes(STD_NAMESPACE ostream &doc
         /* for all child nodes */
         do {
             node = cursor.getNode();
-            if (node != NULL)
+            /* set/reset flag for footnote creation*/
+            newFlags &= ~HF_createFootnoteReferences;
+            if (!(flags & HF_renderItemsSeparately) && node->hasChildNodes() && (node->getValueType() != VT_Container))
+                newFlags |= HF_createFootnoteReferences;
+            /* render (optional) reference to annex */
+            OFString relationshipText;
+            if (!getRelationshipText(node->getRelationshipType(), relationshipText, flags).empty())
             {
-                /* set/reset flag for footnote creation*/
-                newFlags &= ~HF_createFootnoteReferences;
-                if (!(flags & HF_renderItemsSeparately) && node->hasChildNodes() && (node->getValueType() != VT_Container))
-                    newFlags |= HF_createFootnoteReferences;
-                /* render (optional) reference to annex */
-                OFString relationshipText;
-                if (!getRelationshipText(node->getRelationshipType(), relationshipText, flags).empty())
+                if (paragraphFlag)
                 {
-                    if (paragraphFlag)
+                    /* inside paragraph: line break */
+                    if (flags & HF_XHTML11Compatibility)
+                        docStream << "<br />" << OFendl;
+                    else
+                        docStream << "<br>" << OFendl;
+                } else {
+                    /* open paragraph */
+                    if (flags & HF_XHTML11Compatibility)
                     {
-                        /* inside paragraph: line break */
-                        if (flags & HF_XHTML11Compatibility)
-                            docStream << "<br />" << OFendl;
-                        else
-                            docStream << "<br>" << OFendl;
+                        docStream << "<div class=\"small\">" << OFendl;
+                        docStream << "<p>" << OFendl;
                     } else {
-                        /* open paragraph */
-                        if (flags & HF_XHTML11Compatibility)
-                        {
-                            docStream << "<div class=\"small\">" << OFendl;
-                            docStream << "<p>" << OFendl;
-                        } else {
-                            docStream << "<p>" << OFendl;
-                            docStream << "<small>" << OFendl;
-                        }
-                        paragraphFlag = OFTrue;
+                        docStream << "<p>" << OFendl;
+                        docStream << "<small>" << OFendl;
                     }
-                    if (newFlags & HF_XHTML11Compatibility)
-                        docStream << "<span class=\"relation\">" << relationshipText << "</span>: ";
-                    else if (flags & DSRTypes::HF_HTML32Compatibility)
-                        docStream << "<u>" << relationshipText << "</u>: ";
-                    else /* HTML 4.01 */
-                        docStream << "<span class=\"under\">" << relationshipText << "</span>: ";
-                    /* expand short nodes with no children inline (or depending on 'flags' all nodes) */
-                    if ((flags & HF_alwaysExpandChildrenInline) ||
-                        (!(flags & HF_neverExpandChildrenInline) && !node->hasChildNodes() && node->isShort(flags)))
+                    paragraphFlag = OFTrue;
+                }
+                if (newFlags & HF_XHTML11Compatibility)
+                    docStream << "<span class=\"relation\">" << relationshipText << "</span>: ";
+                else if (flags & DSRTypes::HF_HTML32Compatibility)
+                    docStream << "<u>" << relationshipText << "</u>: ";
+                else /* HTML 4.01 */
+                    docStream << "<span class=\"under\">" << relationshipText << "</span>: ";
+                /* expand short nodes with no children inline (or depending on 'flags' all nodes) */
+                if ((flags & HF_alwaysExpandChildrenInline) ||
+                    (!(flags & HF_neverExpandChildrenInline) && !node->hasChildNodes() && node->isShort(flags)))
+                {
+                    if (node->getValueType() != VT_byReference)
                     {
-                        if (node->getValueType() != VT_byReference)
-                        {
-                            /* render concept name/code or value type */
-                            if (node->getConceptName().getCodeMeaning().empty())
-                                docStream << valueTypeToReadableName(node->getValueType());
-                            else
-                                node->getConceptName().renderHTML(docStream, flags, (flags & HF_renderConceptNameCodes) && ConceptName.isValid() /*fullCode*/);
-                            docStream << " = ";
-                        }
-                        /* render HTML code (directly to the reference text) */
-                        result = node->renderHTML(docStream, annexStream, 0 /*nesting level*/, annexNumber, newFlags | HF_renderItemInline);
-                    } else {
-                        /* render concept name or value type */
+                        /* render concept name/code or value type */
                         if (node->getConceptName().getCodeMeaning().empty())
-                            docStream << valueTypeToReadableName(node->getValueType()) << " ";
-                        else
-                            docStream << node->getConceptName().getCodeMeaning() << " ";
-                        /* render annex heading and reference */
-                        createHTMLAnnexEntry(docStream, annexStream, "" /*referenceText*/, annexNumber, newFlags);
-                        if (flags & HF_XHTML11Compatibility)
-                            annexStream << "<div class=\"para\">" << OFendl;
+                            docStream << valueTypeToReadableName(node->getValueType());
                         else
-                            annexStream << "<div>" << OFendl;
-                        /* create memory output stream for the temporal annex */
-                        OFOStringStream tempAnnexStream;
-                        /* render HTML code (directly to the annex) */
-                        result = node->renderHTML(annexStream, tempAnnexStream, 0 /*nesting level*/, annexNumber, newFlags | HF_currentlyInsideAnnex);
-                        annexStream << "</div>" << OFendl;
-                        /* use empty paragraph for bottom margin */
-                        if (!(flags & HF_XHTML11Compatibility))
-                            annexStream << "<p>" << OFendl;
-                        /* append temporary stream to main stream */
-                        if (result.good())
-                            result = appendStream(annexStream, tempAnnexStream);
+                            node->getConceptName().renderHTML(docStream, flags, (flags & HF_renderConceptNameCodes) && ConceptName.isValid() /*fullCode*/);
+                        docStream << " = ";
                     }
+                    /* render HTML code (directly to the reference text) */
+                    result = node->renderHTML(docStream, annexStream, 0 /*nesting level*/, annexNumber, newFlags | HF_renderItemInline);
                 } else {
-                    /* close paragraph */
-                    if (paragraphFlag)
+                    /* render concept name or value type */
+                    if (node->getConceptName().getCodeMeaning().empty())
+                        docStream << valueTypeToReadableName(node->getValueType()) << " ";
+                    else
+                        docStream << node->getConceptName().getCodeMeaning() << " ";
+                    /* render annex heading and reference */
+                    createHTMLAnnexEntry(docStream, annexStream, "" /*referenceText*/, annexNumber, newFlags);
+                    if (flags & HF_XHTML11Compatibility)
+                        annexStream << "<div class=\"para\">" << OFendl;
+                    else
+                        annexStream << "<div>" << OFendl;
+                    /* create memory output stream for the temporal annex */
+                    OFOStringStream tempAnnexStream;
+                    /* render HTML code (directly to the annex) */
+                    result = node->renderHTML(annexStream, tempAnnexStream, 0 /*nesting level*/, annexNumber, newFlags | HF_currentlyInsideAnnex);
+                    annexStream << "</div>" << OFendl;
+                    /* use empty paragraph for bottom margin */
+                    if (!(flags & HF_XHTML11Compatibility))
+                        annexStream << "<p>" << OFendl;
+                    /* append temporary stream to main stream */
+                    if (result.good())
+                        result = appendStream(annexStream, tempAnnexStream);
+                }
+            } else {
+                /* close paragraph */
+                if (paragraphFlag)
+                {
+                    if (flags & HF_XHTML11Compatibility)
                     {
-                        if (flags & HF_XHTML11Compatibility)
-                        {
-                            docStream << "</p>" << OFendl;
-                            docStream << "</div>" << OFendl;
-                        } else {
-                            docStream << "</small>" << OFendl;
-                            docStream << "</p>" << OFendl;
-                        }
-                        paragraphFlag = OFFalse;
+                        docStream << "</p>" << OFendl;
+                        docStream << "</div>" << OFendl;
+                    } else {
+                        docStream << "</small>" << OFendl;
+                        docStream << "</p>" << OFendl;
                     }
-                    /* begin new paragraph */
-                    if (flags & HF_renderItemsSeparately)
+                    paragraphFlag = OFFalse;
+                }
+                /* begin new paragraph */
+                if (flags & HF_renderItemsSeparately)
+                {
+                    if (flags & HF_XHTML11Compatibility)
+                        docStream << "<div class=\"para\">" << OFendl;
+                    else
+                        docStream << "<div>" << OFendl;
+                }
+                /* write footnote text to temporary stream */
+                if (newFlags & HF_createFootnoteReferences)
+                {
+                    /* render HTML code (without child nodes) */
+                    result = node->renderHTMLContentItem(docStream, annexStream, 0 /*nestingLevel*/, annexNumber, newFlags);
+                    /* create footnote numbers (individually for each child?) */
+                    if (result.good())
                     {
+                        /* tags are closed automatically in 'node->renderHTMLChildNodes()' */
                         if (flags & HF_XHTML11Compatibility)
-                            docStream << "<div class=\"para\">" << OFendl;
-                        else
-                            docStream << "<div>" << OFendl;
-                    }
-                    /* write footnote text to temporary stream */
-                    if (newFlags & HF_createFootnoteReferences)
-                    {
-                        /* render HTML code (without child nodes) */
-                        result = node->renderHTMLContentItem(docStream, annexStream, 0 /*nestingLevel*/, annexNumber, newFlags);
-                        /* create footnote numbers (individually for each child?) */
-                        if (result.good())
                         {
-                            /* tags are closed automatically in 'node->renderHTMLChildNodes()' */
-                            if (flags & HF_XHTML11Compatibility)
-                            {
-                                tempDocStream << "<div class=\"small\">" << OFendl;
-                                tempDocStream << "<p>" << OFendl;
-                            } else {
-                                tempDocStream << "<p>" << OFendl;
-                                tempDocStream << "<small>" << OFendl;
-                            }
-                            /* render footnote text and reference */
-                            createHTMLFootnote(docStream, tempDocStream, footnoteNumber, node->getNodeID(), flags);
-                            /* render child nodes to temporary stream */
-                            result = node->renderHTMLChildNodes(tempDocStream, annexStream, 0 /*nestingLevel*/, annexNumber, newFlags);
+                            tempDocStream << "<div class=\"small\">" << OFendl;
+                            tempDocStream << "<p>" << OFendl;
+                        } else {
+                            tempDocStream << "<p>" << OFendl;
+                            tempDocStream << "<small>" << OFendl;
                         }
-                    } else {
-                        /* render HTML code (incl. child nodes)*/
-                        result = node->renderHTML(docStream, annexStream, nestingLevel + 1, annexNumber, newFlags);
-                    }
-                    /* end paragraph */
-                    if (flags & HF_renderItemsSeparately)
-                    {
-                        docStream << "</div>" << OFendl;
-                        /* use empty paragraph for bottom margin */
-                        if (!(flags & HF_XHTML11Compatibility))
-                            docStream << "<p>" << OFendl;
+                        /* render footnote text and reference */
+                        createHTMLFootnote(docStream, tempDocStream, footnoteNumber, node->getNodeID(), flags);
+                        /* render child nodes to temporary stream */
+                        result = node->renderHTMLChildNodes(tempDocStream, annexStream, 0 /*nestingLevel*/, annexNumber, newFlags);
                     }
+                } else {
+                    /* render HTML code (incl. child nodes)*/
+                    result = node->renderHTML(docStream, annexStream, nestingLevel + 1, annexNumber, newFlags);
                 }
-            } else
-                result = SR_EC_InvalidDocumentTree;
+                /* end paragraph */
+                if (flags & HF_renderItemsSeparately)
+                {
+                    docStream << "</div>" << OFendl;
+                    /* use empty paragraph for bottom margin */
+                    if (!(flags & HF_XHTML11Compatibility))
+                        docStream << "<p>" << OFendl;
+                }
+            }
         } while (result.good() && cursor.gotoNext());
         /* close last open paragraph (if any) */
         if (paragraphFlag)
diff --git a/dcmsr/libsrc/dsrdoctr.cc b/dcmsr/libsrc/dsrdoctr.cc
index 05984d2..db58d62 100644
--- a/dcmsr/libsrc/dsrdoctr.cc
+++ b/dcmsr/libsrc/dsrdoctr.cc
@@ -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
@@ -80,6 +80,14 @@ OFBool DSRDocumentTree::isValid() const
 }
 
 
+OFCondition DSRDocumentTree::print(STD_NAMESPACE ostream &stream,
+                                   const size_t flags)
+{
+    /* call the inherited method (hide additional parameters) */
+    return DSRDocumentSubTree::print(stream, flags);
+}
+
+
 OFCondition DSRDocumentTree::read(DcmItem &dataset,
                                   const E_DocumentType documentType,
                                   const size_t flags)
@@ -136,6 +144,35 @@ OFCondition DSRDocumentTree::read(DcmItem &dataset,
 }
 
 
+OFCondition DSRDocumentTree::write(DcmItem &dataset,
+                                   DcmStack *markedItems)
+{
+    OFCondition result = SR_EC_InvalidDocumentTree;
+    /* check whether document tree is valid */
+    if (isValid())
+    {
+        /* check whether document tree contains any included templates */
+        if (isExpandedDocumentTree())
+        {
+            DSRDocumentTreeNode *node = getRoot();
+            if (node != NULL)
+            {
+                /* check and update by-reference relationships (if applicable) */
+                checkByReferenceRelationships(CM_updatePositionString);
+                /* update the document tree for output (if needed) */
+                updateTreeForOutput();
+                /* start writing from root node */
+                result = node->write(dataset, markedItems);
+            }
+        } else {
+            /* tbd: cannot write document with included templates */
+            result = SR_EC_CannotProcessIncludedTemplates;
+        }
+    }
+    return result;
+}
+
+
 OFCondition DSRDocumentTree::readXML(const DSRXMLDocument &doc,
                                      DSRXMLCursor cursor,
                                      const size_t flags)
@@ -202,70 +239,31 @@ OFCondition DSRDocumentTree::readXML(const DSRXMLDocument &doc,
 }
 
 
-OFCondition DSRDocumentTree::write(DcmItem &dataset,
-                                   DcmStack *markedItems)
-{
-    OFCondition result = SR_EC_InvalidDocumentTree;
-    /* check whether root node has correct relationship and value type */
-    if (isValid())
-    {
-        DSRDocumentTreeNode *node = getRoot();
-        if (node != NULL)
-        {
-            /* check and update by-reference relationships (if applicable) */
-            checkByReferenceRelationships(CM_updatePositionString);
-            /* update the document tree for output (if needed) */
-            updateTreeForOutput();
-            /* start writing from root node */
-            result = node->write(dataset, markedItems);
-        }
-    }
-    return result;
-}
-
-
-OFCondition DSRDocumentTree::writeXML(STD_NAMESPACE ostream &stream,
-                                      const size_t flags)
-{
-    OFCondition result = SR_EC_InvalidDocumentTree;
-    /* check whether root node has correct relationship and value type */
-    if (isValid())
-    {
-        DSRDocumentTreeNode *node = getRoot();
-        /* start writing from root node */
-        if (node != NULL)
-        {
-            /* check by-reference relationships (if applicable) */
-            checkByReferenceRelationships(CM_resetReferenceTargetFlag);
-            /* update the document tree for output (if needed) */
-            updateTreeForOutput();
-            /* start writing from root node */
-            result = node->writeXML(stream, flags);
-        }
-    }
-    return result;
-}
-
-
 OFCondition DSRDocumentTree::renderHTML(STD_NAMESPACE ostream &docStream,
                                         STD_NAMESPACE ostream &annexStream,
                                         const size_t flags)
 {
     OFCondition result = SR_EC_InvalidDocumentTree;
-    /* check whether root node has correct relationship and value type */
+    /* check whether document tree is valid */
     if (isValid())
     {
-        DSRDocumentTreeNode *node = getRoot();
-        /* start rendering from root node */
-        if (node != NULL)
+        /* check whether document tree contains any included templates */
+        if (isExpandedDocumentTree())
         {
-            /* check by-reference relationships (if applicable) */
-            checkByReferenceRelationships(CM_resetReferenceTargetFlag);
-            /* update the document tree for output (if needed) */
-            updateTreeForOutput();
-            size_t annexNumber = 1;
-            /* start rendering from root node */
-            result = node->renderHTML(docStream, annexStream, 1 /*nestingLevel*/, annexNumber, flags & ~HF_internalUseOnly);
+            DSRDocumentTreeNode *node = getRoot();
+            if (node != NULL)
+            {
+                size_t annexNumber = 1;
+                /* check by-reference relationships (if applicable) */
+                checkByReferenceRelationships(CM_resetReferenceTargetFlag);
+                /* update the document tree for output (if needed) */
+                updateTreeForOutput();
+                /* start rendering from root node */
+                result = node->renderHTML(docStream, annexStream, 1 /*nestingLevel*/, annexNumber, flags & ~HF_internalUseOnly);
+            }
+        } else {
+            /* tbd: cannot render document with included templates */
+            result = SR_EC_CannotProcessIncludedTemplates;
         }
     }
     return result;
@@ -309,7 +307,7 @@ OFCondition DSRDocumentTree::changeDocumentType(const E_DocumentType documentTyp
 
 OFBool DSRDocumentTree::canAddContentItem(const E_RelationshipType relationshipType,
                                           const E_ValueType valueType,
-                                          const E_AddMode addMode)
+                                          const E_AddMode addMode) const
 {
     OFBool result = OFFalse;
     if (isEmpty())
@@ -326,9 +324,9 @@ OFBool DSRDocumentTree::canAddContentItem(const E_RelationshipType relationshipT
 }
 
 
-OFBool DSRDocumentTree::canInsertSubTree(DSRDocumentSubTree *tree,
+OFBool DSRDocumentTree::canInsertSubTree(const DSRDocumentSubTree *tree,
                                          const E_AddMode addMode,
-                                         const E_RelationshipType defaultRelType)
+                                         const E_RelationshipType defaultRelType) const
 {
     OFBool result = OFFalse;
     if (isEmpty())
@@ -356,8 +354,10 @@ OFCondition DSRDocumentTree::checkDocumentTreeConstraints(DSRIODConstraintChecke
             /* check whether the current document tree is valid, i.e. the root node is a container */
             if (isValid())
             {
-                /* determine template identifier (TID) expected for the new document type */
-                const OFString expectedTemplateIdentifier = OFSTRING_GUARD(checker->getRootTemplateIdentifier());
+                /* determine template identifier (TID) and mapping resource expected for the new document type */
+                OFString expectedTemplateIdentifier;
+                OFString expectedMappingResource;
+                checker->getRootTemplateIdentification(expectedTemplateIdentifier, expectedMappingResource);
                 /* check whether the expected template (if known) has been used */
                 if (!expectedTemplateIdentifier.empty())
                 {
@@ -372,16 +372,23 @@ OFCondition DSRDocumentTree::checkDocumentTreeConstraints(DSRIODConstraintChecke
                             /* check whether the correct Mapping Resource UID is used (if present) */
                             if (!mappingResourceUID.empty() && (mappingResourceUID != UID_DICOMContentMappingResource))
                             {
-                                DCMSR_WARN("Incorrect value for MappingResourceUID (" << mappingResourceUID << "), "
+                                DCMSR_WARN("Incorrect value for Mapping Resource UID (" << mappingResourceUID << "), "
                                     << UID_DICOMContentMappingResource << " expected");
                             }
-                            /* compare with expected TID */
-                            if (templateIdentifier != expectedTemplateIdentifier)
-                            {
-                                DCMSR_WARN("Incorrect value for TemplateIdentifier ("
-                                    << ((templateIdentifier.empty()) ? "<empty>" : templateIdentifier) << "), "
-                                    << expectedTemplateIdentifier << " expected");
-                            }
+                        }
+                        /* compare with expected mapping resource */
+                        if (mappingResource != expectedMappingResource)
+                        {
+                            DCMSR_WARN("Incorrect value for Mapping Resource ("
+                                << ((mappingResource.empty()) ? "<empty>" : mappingResource) << "), "
+                                << expectedMappingResource << " expected");
+                        }
+                        /* compare with expected template identifier */
+                        if (templateIdentifier != expectedTemplateIdentifier)
+                        {
+                            DCMSR_WARN("Incorrect value for Template Identifier ("
+                                << ((templateIdentifier.empty()) ? "<empty>" : templateIdentifier) << "), "
+                                << expectedTemplateIdentifier << " expected");
                         }
                     }
                 }
@@ -404,12 +411,9 @@ void DSRDocumentTree::unmarkAllContentItems()
     DSRDocumentTreeNodeCursor cursor(getRoot());
     if (cursor.isValid())
     {
-        DSRDocumentTreeNode *node = NULL;
         /* iterate over all nodes */
         do {
-            node = cursor.getNode();
-            if (node != NULL)
-                node->setMark(OFFalse);
+            cursor.getNode()->setMark(OFFalse);
         } while (cursor.iterate());
     }
 }
@@ -420,12 +424,9 @@ void DSRDocumentTree::removeSignatures()
     DSRDocumentTreeNodeCursor cursor(getRoot());
     if (cursor.isValid())
     {
-        DSRDocumentTreeNode *node = NULL;
         /* iterate over all nodes */
         do {
-            node = cursor.getNode();
-            if (node != NULL)
-                node->removeSignatures();
+            cursor.getNode()->removeSignatures();
         } while (cursor.iterate());
     }
 }
diff --git a/dcmsr/libsrc/dsrenhcc.cc b/dcmsr/libsrc/dsrenhcc.cc
index cc93980..ffa33eb 100644
--- a/dcmsr/libsrc/dsrenhcc.cc
+++ b/dcmsr/libsrc/dsrenhcc.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
@@ -49,9 +49,12 @@ OFBool DSREnhancedSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSREnhancedSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSREnhancedSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                          OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -110,7 +113,7 @@ OFBool DSREnhancedSRConstraintChecker::checkContentRelationship(const E_ValueTyp
                      (targetValueType == VT_Waveform) || (targetValueType == VT_Composite) || (targetValueType == VT_SCoord) ||
                      (targetValueType == VT_TCoord);
         }
-        /* row 6 of the table - introduced with CP 1076 */
+        /* row 6 of the table - introduced with CP-1076 */
         else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_PName))
         {
             result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
diff --git a/dcmsr/libsrc/dsrimgfr.cc b/dcmsr/libsrc/dsrimgfr.cc
index b66d656..26e0dfb 100644
--- a/dcmsr/libsrc/dsrimgfr.cc
+++ b/dcmsr/libsrc/dsrimgfr.cc
@@ -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
@@ -28,14 +28,9 @@
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const Sint32 DSRListOfItems<Sint32>::EmptyItem = 0;
+DCMTK_EXPLICIT_SPECIALIZATION
+const Sint32 DSRListOfItems<Sint32>::EmptyItem = 0;
 
 
 DSRImageFrameList::DSRImageFrameList()
diff --git a/dcmsr/libsrc/dsrimgse.cc b/dcmsr/libsrc/dsrimgse.cc
index 7a42b57..c5f2129 100644
--- a/dcmsr/libsrc/dsrimgse.cc
+++ b/dcmsr/libsrc/dsrimgse.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2013-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2013-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -28,14 +28,9 @@
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const Uint16 DSRListOfItems<Uint16>::EmptyItem = 0;
+DCMTK_EXPLICIT_SPECIALIZATION
+const Uint16 DSRListOfItems<Uint16>::EmptyItem = 0;
 
 
 DSRImageSegmentList::DSRImageSegmentList()
diff --git a/dcmsr/libsrc/dsrimgvl.cc b/dcmsr/libsrc/dsrimgvl.cc
index f19bb0b..e65d200 100644
--- a/dcmsr/libsrc/dsrimgvl.cc
+++ b/dcmsr/libsrc/dsrimgvl.cc
@@ -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
@@ -146,6 +146,12 @@ OFBool DSRImageReferenceValue::isShort(const size_t flags) const
 }
 
 
+OFBool DSRImageReferenceValue::isSegmentation() const
+{
+    return isSegmentationObject(SOPClassUID);
+}
+
+
 OFCondition DSRImageReferenceValue::print(STD_NAMESPACE ostream &stream,
                                           const size_t flags) const
 {
@@ -340,7 +346,7 @@ OFCondition DSRImageReferenceValue::readItem(DcmItem &dataset,
             }
         }
         /* check data and report warnings if any */
-        checkListData(FrameList, SegmentList, OFTrue /*reportWarnings*/);
+        checkListData(SOPClassUID, FrameList, SegmentList, OFTrue /*reportWarnings*/);
     }
     return result;
 }
@@ -397,7 +403,7 @@ OFCondition DSRImageReferenceValue::writeItem(DcmItem &dataset) const
         }
     }
     /* check data and report warnings if any */
-    checkListData(FrameList, SegmentList, OFTrue /*reportWarnings*/);
+    checkListData(SOPClassUID, FrameList, SegmentList, OFTrue /*reportWarnings*/);
     return result;
 }
 
@@ -650,14 +656,20 @@ OFBool DSRImageReferenceValue::appliesToSegment(const Uint16 segmentNumber) cons
 }
 
 
+OFBool DSRImageReferenceValue::isSegmentationObject(const OFString &sopClassUID) const
+{
+    /* check for all segmentation SOP classes (according to DICOM PS 3.6-2015c) */
+    return (sopClassUID == UID_SegmentationStorage) || (sopClassUID == UID_SurfaceSegmentationStorage);
+}
+
+
 OFCondition DSRImageReferenceValue::checkSOPClassUID(const OFString &sopClassUID) const
 {
     OFCondition result = DSRCompositeReferenceValue::checkSOPClassUID(sopClassUID);
     if (result.good())
     {
-        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2014a) */
-        if (!dcmIsImageStorageSOPClassUID(sopClassUID.c_str()) &&
-            (sopClassUID != UID_SegmentationStorage))
+        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2015c) */
+        if (!dcmIsImageStorageSOPClassUID(sopClassUID.c_str()) && !isSegmentationObject(sopClassUID))
         {
             result = SR_EC_InvalidValue;
         }
@@ -695,17 +707,25 @@ OFCondition DSRImageReferenceValue::checkRealWorldValueMapping(const DSRComposit
 // helper macro to avoid annoying check of boolean flag
 #define REPORT_WARNING(msg) { if (reportWarnings) DCMSR_WARN(msg); }
 
-OFCondition DSRImageReferenceValue::checkListData(const DSRImageFrameList &frameList,
+OFCondition DSRImageReferenceValue::checkListData(const OFString &sopClassUID,
+                                                  const DSRImageFrameList &frameList,
                                                   const DSRImageSegmentList &segmentList,
                                                   const OFBool reportWarnings) const
 {
     OFCondition result = EC_Normal;
+    /* check whether both lists of referenced frame and segment numbers are non-empty */
     if (!frameList.isEmpty() && !segmentList.isEmpty())
     {
         /* this is just a warning since only one list will ever be written */
-        REPORT_WARNING("Both ReferencedFrameNumber and ReferencedSegmentNumber present in IMAGE content item")
+        REPORT_WARNING("Both Referenced Frame Number and Referenced Segment Number present in IMAGE content item")
+    }
+    /* check whether referenced image is a segmentation object (see "type 1C" condition) */
+    if (!segmentList.isEmpty() && !isSegmentationObject(sopClassUID))
+    {
+        REPORT_WARNING("Referenced Segment Number present in IMAGE content item for non-segmentation object")
+        result = SR_EC_InvalidValue;
     }
-    /* tbd: check whether referenced image is a segmentation object? (see "type 1C" condition) */
+    /* tbd: check whether referenced image is a multi-frame image? (see "type 1C" condition) */
     return result;
 }
 
@@ -718,6 +738,6 @@ OFCondition DSRImageReferenceValue::checkCurrentValue() const
     if (result.good())
         result = checkRealWorldValueMapping(RealWorldValueMapping);
     if (result.good())
-        result = checkListData(FrameList, SegmentList);
+        result = checkListData(SOPClassUID, FrameList, SegmentList);
     return result;
 }
diff --git a/dcmsr/libsrc/dsrimpcc.cc b/dcmsr/libsrc/dsrimpcc.cc
index 9515979..92b9443 100644
--- a/dcmsr/libsrc/dsrimpcc.cc
+++ b/dcmsr/libsrc/dsrimpcc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRImplantationPlanSRDocumentConstraintChecker::isTemplateSupportRequired
 }
 
 
-const char *DSRImplantationPlanSRDocumentConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRImplantationPlanSRDocumentConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                          OFString &mappingResource) const
 {
-    return "7000";
+    templateIdentifier = "7000";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
@@ -66,7 +69,7 @@ OFBool DSRImplantationPlanSRDocumentConstraintChecker::checkContentRelationship(
                                                                                 const E_ValueType targetValueType,
                                                                                 const OFBool byReference) const
 {
-    /* the following code implements the constraints of table A.35.Y-2 in DICOM PS3.3 (Supplement 134) */
+    /* the following code implements the constraints of table A.35.12-2 in DICOM PS3.3 */
     OFBool result = OFFalse;
     /* by-reference relationships not allowed at all */
     if (!byReference)
diff --git a/dcmsr/libsrc/dsrkeycc.cc b/dcmsr/libsrc/dsrkeycc.cc
index e3332b7..59d5018 100644
--- a/dcmsr/libsrc/dsrkeycc.cc
+++ b/dcmsr/libsrc/dsrkeycc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRKeyObjectSelectionDocumentConstraintChecker::isTemplateSupportRequired
 }
 
 
-const char *DSRKeyObjectSelectionDocumentConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRKeyObjectSelectionDocumentConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                          OFString &mappingResource) const
 {
-    return "2010";
+    templateIdentifier = "2010";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
diff --git a/dcmsr/libsrc/dsrmaccc.cc b/dcmsr/libsrc/dsrmaccc.cc
index fcdfca7..aaca4f5 100644
--- a/dcmsr/libsrc/dsrmaccc.cc
+++ b/dcmsr/libsrc/dsrmaccc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRMacularGridThicknessAndVolumeReportConstraintChecker::isTemplateSuppor
 }
 
 
-const char *DSRMacularGridThicknessAndVolumeReportConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRMacularGridThicknessAndVolumeReportConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                                   OFString &mappingResource) const
 {
-    return "2100";
+    templateIdentifier = "2100";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
diff --git a/dcmsr/libsrc/dsrmamcc.cc b/dcmsr/libsrc/dsrmamcc.cc
index ce62ae4..8cc55b1 100644
--- a/dcmsr/libsrc/dsrmamcc.cc
+++ b/dcmsr/libsrc/dsrmamcc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRMammographyCadSRConstraintChecker::isTemplateSupportRequired() const
 }
 
 
-const char *DSRMammographyCadSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRMammographyCadSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                OFString &mappingResource) const
 {
-    return "4000";
+    templateIdentifier = "4000";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
diff --git a/dcmsr/libsrc/dsrnumvl.cc b/dcmsr/libsrc/dsrnumvl.cc
index d915895..ef12542 100644
--- a/dcmsr/libsrc/dsrnumvl.cc
+++ b/dcmsr/libsrc/dsrnumvl.cc
@@ -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
@@ -54,6 +54,20 @@ DSRNumericMeasurementValue::DSRNumericMeasurementValue(const OFString &numericVa
 }
 
 
+DSRNumericMeasurementValue::DSRNumericMeasurementValue(const DSRCodedEntryValue &valueQualifier,
+                                                       const OFBool check)
+  : NumericValue(),
+    MeasurementUnit(),
+    ValueQualifier(),
+    FloatingPointValue(DCM_FloatingPointValue),
+    RationalNumeratorValue(DCM_RationalNumeratorValue),
+    RationalDenominatorValue(DCM_RationalDenominatorValue)
+{
+    /* use the set method for checking purposes */
+    setValue(valueQualifier, check);
+}
+
+
 DSRNumericMeasurementValue::DSRNumericMeasurementValue(const OFString &numericValue,
                                                        const DSRCodedEntryValue &measurementUnit,
                                                        const DSRCodedEntryValue &valueQualifier,
@@ -121,10 +135,18 @@ OFBool DSRNumericMeasurementValue::isValid() const
 
 OFBool DSRNumericMeasurementValue::isEmpty() const
 {
+    /* the NumericValueQualifierCodeSequence is not checked */
     return NumericValue.empty() && MeasurementUnit.isEmpty();
 }
 
 
+OFBool DSRNumericMeasurementValue::isComplete() const
+{
+    /* officially, the NumericValueQualifierCodeSequence is optional (type 3) */
+    return (!NumericValue.empty() && MeasurementUnit.isComplete()) || ValueQualifier.isComplete();
+}
+
+
 OFCondition DSRNumericMeasurementValue::print(STD_NAMESPACE ostream &stream,
                                               const size_t flags) const
 {
@@ -132,6 +154,12 @@ OFCondition DSRNumericMeasurementValue::print(STD_NAMESPACE ostream &stream,
     {
         /* empty value */
         stream << "empty";
+        /* check for optional numeric value qualifier */
+        if (!ValueQualifier.isEmpty())
+        {
+            stream << " ";
+            ValueQualifier.print(stream, OFTrue /*printCodeValue*/, flags);
+        }
     } else {
         OFString printString;
         stream << "\"" << DSRTypes::convertToPrintString(NumericValue, printString) << "\" ";
@@ -471,6 +499,15 @@ OFCondition DSRNumericMeasurementValue::setValue(const OFString &numericValue,
 }
 
 
+OFCondition DSRNumericMeasurementValue::setValue(const DSRCodedEntryValue &valueQualifier,
+                                                 const OFBool check)
+{
+    const DSRCodedEntryValue measurementUnit;
+    /* call the function doing the real work */
+    return setValue("" /*numericValue*/, measurementUnit, valueQualifier, check);
+}
+
+
 OFCondition DSRNumericMeasurementValue::setValue(const OFString &numericValue,
                                                  const DSRCodedEntryValue &measurementUnit,
                                                  const DSRCodedEntryValue &valueQualifier,
@@ -639,7 +676,7 @@ void DSRNumericMeasurementValue::removeRationalRepresentation()
 
 OFCondition DSRNumericMeasurementValue::checkNumericValue(const OFString &numericValue) const
 {
-    /* numeric measurement value should never be empty */
+    /* numeric value should never be empty */
     return numericValue.empty() ? SR_EC_InvalidValue
                                 : DcmDecimalString::checkStringValue(numericValue, "1");
 }
@@ -689,3 +726,13 @@ OFCondition DSRNumericMeasurementValue::checkCurrentValue() const
     }
     return result;
 }
+
+
+// output operators
+
+STD_NAMESPACE ostream &operator<<(STD_NAMESPACE ostream &stream,
+                                  const DSRNumericMeasurementValue &numericMeasurement)
+{
+    numericMeasurement.print(stream, 0 /*flags*/);
+    return stream;
+}
diff --git a/dcmsr/libsrc/dsrposcn.cc b/dcmsr/libsrc/dsrposcn.cc
new file mode 100644
index 0000000..7130e50
--- /dev/null
+++ b/dcmsr/libsrc/dsrposcn.cc
@@ -0,0 +1,122 @@
+/*
+ *
+ *  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: DSRPositionCounter
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrposcn.h"
+#include "dcmtk/dcmsr/dsrtypes.h"
+
+
+DSRPositionCounter::DSRPositionCounter()
+  : Position(0),
+    PositionList()
+{
+}
+
+
+DSRPositionCounter::DSRPositionCounter(const DSRPositionCounter &counter)
+  : Position(counter.Position),
+    PositionList(counter.PositionList)
+{
+}
+
+
+DSRPositionCounter::~DSRPositionCounter()
+{
+}
+
+
+DSRPositionCounter &DSRPositionCounter::operator=(const DSRPositionCounter &counter)
+{
+    Position = counter.Position;
+    PositionList = counter.PositionList;
+    return *this;
+}
+
+
+void DSRPositionCounter::clear()
+{
+    /* clear and invalidate position counter */
+    Position = 0;
+    PositionList.clear();
+}
+
+
+void DSRPositionCounter::initialize(const OFBool valid)
+{
+    /* distinguish valid from non-valid position counter */
+    Position = (valid ? 1 : 0);
+    PositionList.clear();
+}
+
+
+OFBool DSRPositionCounter::goUp()
+{
+    const OFBool result = !PositionList.empty();
+    if (result)
+    {
+        /* get back last position on next upper level (if any) */
+        Position = PositionList.back();
+        PositionList.pop_back();
+    }
+    return result;
+}
+
+
+OFBool DSRPositionCounter::goDown()
+{
+    const OFBool result = (Position > 0);
+    if (result)
+    {
+        /* store current position and reset counter for next lower level */
+        PositionList.push_back(Position);
+        Position = 1;
+    }
+    return result;
+}
+
+
+const OFString &DSRPositionCounter::getString(OFString &position,
+                                              const char separator) const
+{
+    position.clear();
+    if (isValid())
+    {
+        char stringBuf[20];
+        const OFListConstIterator(size_t) endPos = PositionList.end();
+        OFListConstIterator(size_t) iterator = PositionList.begin();
+        /* iterate over all levels and append current position in each case */
+        while (iterator != endPos)
+        {
+            if (!position.empty())
+                position += separator;
+            position += DSRTypes::numberToString(*iterator, stringBuf);
+            iterator++;
+        }
+        /* also append the current position on the current level */
+        if (!position.empty())
+            position += separator;
+        position += DSRTypes::numberToString(Position, stringBuf);
+    }
+    return position;
+}
diff --git a/dcmsr/libsrc/dsrprocc.cc b/dcmsr/libsrc/dsrprocc.cc
index 4af54af..ae22634 100644
--- a/dcmsr/libsrc/dsrprocc.cc
+++ b/dcmsr/libsrc/dsrprocc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2003-2014, OFFIS e.V.
+ *  Copyright (C) 2003-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -45,13 +45,16 @@ OFBool DSRProcedureLogConstraintChecker::isByReferenceAllowed() const
 
 OFBool DSRProcedureLogConstraintChecker::isTemplateSupportRequired() const
 {
-    return OFTrue;
+    return OFFalse;
 }
 
 
-const char *DSRProcedureLogConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRProcedureLogConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                            OFString &mappingResource) const
 {
-    return "3001";
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
diff --git a/dcmsr/libsrc/dsrrrdcc.cc b/dcmsr/libsrc/dsrrrdcc.cc
index c48574c..9ee262c 100644
--- a/dcmsr/libsrc/dsrrrdcc.cc
+++ b/dcmsr/libsrc/dsrrrdcc.cc
@@ -49,9 +49,12 @@ OFBool DSRRadiopharmaceuticalRadiationDoseConstraintChecker::isTemplateSupportRe
 }
 
 
-const char *DSRRadiopharmaceuticalRadiationDoseConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRRadiopharmaceuticalRadiationDoseConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                                OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
diff --git a/dcmsr/libsrc/dsrrtpl.cc b/dcmsr/libsrc/dsrrtpl.cc
index a5fe797..19405d7 100644
--- a/dcmsr/libsrc/dsrrtpl.cc
+++ b/dcmsr/libsrc/dsrrtpl.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.
  *
  *  This software and supporting documentation are maintained by
@@ -70,7 +70,9 @@ DSRDocumentTree *DSRRootTemplate::cloneTree() const
 
 void DSRRootTemplate::clear()
 {
+    /* call clear() method of base classes */
     DSRDocumentTree::clear();
+    DSRTemplateCommon::clear();
 }
 
 
diff --git a/dcmsr/libsrc/dsrsc3gr.cc b/dcmsr/libsrc/dsrsc3gr.cc
index 5bc7550..b1d935c 100644
--- a/dcmsr/libsrc/dsrsc3gr.cc
+++ b/dcmsr/libsrc/dsrsc3gr.cc
@@ -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
@@ -26,14 +26,9 @@
 #include "dcmtk/dcmsr/dsrsc3gr.h"
 #include "dcmtk/ofstd/ofstd.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const DSRGraphicData3DItem DSRListOfItems<DSRGraphicData3DItem>::EmptyItem(0, 0, 0);
+DCMTK_EXPLICIT_SPECIALIZATION
+const DSRGraphicData3DItem DSRListOfItems<DSRGraphicData3DItem>::EmptyItem(0, 0, 0);
 
 
 DSRGraphicData3DList::DSRGraphicData3DList()
diff --git a/dcmsr/libsrc/dsrsc3vl.cc b/dcmsr/libsrc/dsrsc3vl.cc
index e093f4a..55f67b6 100644
--- a/dcmsr/libsrc/dsrsc3vl.cc
+++ b/dcmsr/libsrc/dsrsc3vl.cc
@@ -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
@@ -326,9 +326,9 @@ OFCondition DSRSpatialCoordinates3DValue::checkGraphicData(const DSRTypes::E_Gra
     OFCondition result = SR_EC_InvalidValue;
     // check graphic type and data
     if (graphicType == DSRTypes::GT3_invalid)
-        REPORT_WARNING("Invalid GraphicType for SCOORD3D content item")
+        REPORT_WARNING("Invalid Graphic Type for SCOORD3D content item")
     else if (graphicDataList.isEmpty())
-        REPORT_WARNING("No GraphicData for SCOORD3D content item")
+        REPORT_WARNING("No Graphic Data for SCOORD3D content item")
     else
     {
         const size_t count = graphicDataList.getNumberOfItems();
@@ -336,46 +336,46 @@ OFCondition DSRSpatialCoordinates3DValue::checkGraphicData(const DSRTypes::E_Gra
         {
             case DSRTypes::GT3_Point:
                 if (count > 1)
-                    REPORT_WARNING("GraphicData has too many entries, only a single entry expected")
+                    REPORT_WARNING("Graphic Data has too many entries, only a single entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT3_Multipoint:
                 if (count < 1)
-                    REPORT_WARNING("GraphicData has too few entries, at least one entry expected")
+                    REPORT_WARNING("Graphic Data has too few entries, at least one entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT3_Polyline:
                 if (count < 1)
-                    REPORT_WARNING("GraphicData has too few entries, at least one entry expected")
+                    REPORT_WARNING("Graphic Data has too few entries, at least one entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT3_Polygon:
                 if (count < 1)
-                    REPORT_WARNING("GraphicData has too few entries, at least one entry expected")
+                    REPORT_WARNING("Graphic Data has too few entries, at least one entry expected")
                 else
                 {
                     if (graphicDataList.getItem(1) != graphicDataList.getItem(count))
-                        REPORT_WARNING("First and last entry in GraphicData are not equal (POLYGON)")
+                        REPORT_WARNING("First and last entry in Graphic Data are not equal (POLYGON)")
                     result = EC_Normal;
                 }
                 break;
             case DSRTypes::GT3_Ellipse:
                 if (count < 4)
-                    REPORT_WARNING("GraphicData has too few entries, exactly four entries expected")
+                    REPORT_WARNING("Graphic Data has too few entries, exactly four entries expected")
                 else
                 {
                     if (count > 4)
-                        REPORT_WARNING("GraphicData has too many entries, exactly four entries expected")
+                        REPORT_WARNING("Graphic Data has too many entries, exactly four entries expected")
                     result = EC_Normal;
                 }
                 break;
             case DSRTypes::GT3_Ellipsoid:
                 if (count < 6)
-                    REPORT_WARNING("GraphicData has too few entries, exactly six entries expected")
+                    REPORT_WARNING("Graphic Data has too few entries, exactly six entries expected")
                 else
                 {
                     if (count > 6)
-                        REPORT_WARNING("GraphicData has too many entries, exactly six entries expected")
+                        REPORT_WARNING("Graphic Data has too many entries, exactly six entries expected")
                     result = EC_Normal;
                 }
                 break;
diff --git a/dcmsr/libsrc/dsrscogr.cc b/dcmsr/libsrc/dsrscogr.cc
index 585c4df..b79edef 100644
--- a/dcmsr/libsrc/dsrscogr.cc
+++ b/dcmsr/libsrc/dsrscogr.cc
@@ -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
@@ -26,14 +26,9 @@
 #include "dcmtk/dcmsr/dsrscogr.h"
 #include "dcmtk/ofstd/ofstd.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const DSRGraphicDataItem DSRListOfItems<DSRGraphicDataItem>::EmptyItem(0, 0);
+DCMTK_EXPLICIT_SPECIALIZATION
+const DSRGraphicDataItem DSRListOfItems<DSRGraphicDataItem>::EmptyItem(0, 0);
 
 
 DSRGraphicDataList::DSRGraphicDataList()
diff --git a/dcmsr/libsrc/dsrscovl.cc b/dcmsr/libsrc/dsrscovl.cc
index e41230a..0bc37e1 100644
--- a/dcmsr/libsrc/dsrscovl.cc
+++ b/dcmsr/libsrc/dsrscovl.cc
@@ -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
@@ -289,9 +289,9 @@ OFCondition DSRSpatialCoordinatesValue::checkGraphicData(const DSRTypes::E_Graph
     OFCondition result = SR_EC_InvalidValue;
     // check graphic type and data
     if (graphicType == DSRTypes::GT_invalid)
-        REPORT_WARNING("Invalid GraphicType for SCOORD content item")
+        REPORT_WARNING("Invalid Graphic Type for SCOORD content item")
     else if (graphicDataList.isEmpty())
-        REPORT_WARNING("No GraphicData for SCOORD content item")
+        REPORT_WARNING("No Graphic Data for SCOORD content item")
     else
     {
         const size_t count = graphicDataList.getNumberOfItems();
@@ -299,39 +299,39 @@ OFCondition DSRSpatialCoordinatesValue::checkGraphicData(const DSRTypes::E_Graph
         {
             case DSRTypes::GT_Point:
                 if (count > 1)
-                    REPORT_WARNING("GraphicData has too many entries, only a single entry expected")
+                    REPORT_WARNING("Graphic Data has too many entries, only a single entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT_Multipoint:
                 if (count < 1)
-                    REPORT_WARNING("GraphicData has too few entries, at least one entry expected")
+                    REPORT_WARNING("Graphic Data has too few entries, at least one entry expected")
                 result = EC_Normal;
                 break;
             case DSRTypes::GT_Polyline:
 /*
                 // not required any more according to CP-233
                 if (graphicDataList.getItem(1) != graphicDataList.getItem(count))
-                    REPORT_WARNING("First and last entry in GraphicData are not equal (POLYLINE)")
+                    REPORT_WARNING("First and last entry in Graphic Data are not equal (POLYLINE)")
 */
                 result = EC_Normal;
                 break;
             case DSRTypes::GT_Circle:
                 if (count < 2)
-                    REPORT_WARNING("GraphicData has too few entries, exactly two entries expected")
+                    REPORT_WARNING("Graphic Data has too few entries, exactly two entries expected")
                 else
                 {
                     if (count > 2)
-                        REPORT_WARNING("GraphicData has too many entries, exactly two entries expected")
+                        REPORT_WARNING("Graphic Data has too many entries, exactly two entries expected")
                     result = EC_Normal;
                 }
                 break;
             case DSRTypes::GT_Ellipse:
                 if (count < 4)
-                    REPORT_WARNING("GraphicData has too few entries, exactly four entries expected")
+                    REPORT_WARNING("Graphic Data has too few entries, exactly four entries expected")
                 else
                 {
                     if (count > 4)
-                        REPORT_WARNING("GraphicData has too many entries, exactly four entries expected")
+                        REPORT_WARNING("Graphic Data has too many entries, exactly four entries expected")
                     result = EC_Normal;
                 }
                 break;
diff --git a/dcmsr/libsrc/dsrsoprf.cc b/dcmsr/libsrc/dsrsoprf.cc
index 9bd223b..3b21aa1 100644
--- a/dcmsr/libsrc/dsrsoprf.cc
+++ b/dcmsr/libsrc/dsrsoprf.cc
@@ -1319,6 +1319,21 @@ const OFString &DSRSOPInstanceReferenceList::getSOPClassUID(OFString &stringValu
 }
 
 
+const OFString &DSRSOPInstanceReferenceList::getSOPClassName(OFString &stringValue,
+                                                             const OFString &defaultName) const
+{
+    OFString sopClassUID;
+    /* retrieve SOP class UID of current entry */
+    if (!getSOPClassUID(sopClassUID).empty())
+    {
+        /* lookup name associated with the SOP class UID */
+        stringValue = dcmFindNameOfUID(sopClassUID.c_str(), defaultName.c_str());
+    } else
+        stringValue.clear();
+    return stringValue;
+}
+
+
 const OFString &DSRSOPInstanceReferenceList::getRetrieveAETitle(OFString &stringValue) const
 {
     /* check whether current series is valid */
diff --git a/dcmsr/libsrc/dsrspecc.cc b/dcmsr/libsrc/dsrspecc.cc
index f2ec11f..5c5d771 100644
--- a/dcmsr/libsrc/dsrspecc.cc
+++ b/dcmsr/libsrc/dsrspecc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2010-2014, OFFIS e.V.
+ *  Copyright (C) 2010-2015, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRSpectaclePrescriptionReportConstraintChecker::isTemplateSupportRequire
 }
 
 
-const char *DSRSpectaclePrescriptionReportConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRSpectaclePrescriptionReportConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                           OFString &mappingResource) const
 {
-    return "2020";
+    templateIdentifier = "2020";
+    mappingResource = "DCMR";
+    return EC_Normal;
 }
 
 
diff --git a/dcmsr/libsrc/dsrstpl.cc b/dcmsr/libsrc/dsrstpl.cc
index 4dae619..16417f0 100644
--- a/dcmsr/libsrc/dsrstpl.cc
+++ b/dcmsr/libsrc/dsrstpl.cc
@@ -67,7 +67,9 @@ DSRDocumentSubTree *DSRSubTemplate::cloneTree() const
 
 void DSRSubTemplate::clear()
 {
+    /* call clear() method of base classes */
     DSRDocumentSubTree::clear();
+    DSRTemplateCommon::clear();
 }
 
 
diff --git a/dcmsr/libsrc/dsrtcodt.cc b/dcmsr/libsrc/dsrtcodt.cc
index c0eee4a..24faf45 100644
--- a/dcmsr/libsrc/dsrtcodt.cc
+++ b/dcmsr/libsrc/dsrtcodt.cc
@@ -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
@@ -25,14 +25,9 @@
 
 #include "dcmtk/dcmsr/dsrtcodt.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const OFString DSRListOfItems<OFString>::EmptyItem;
+DCMTK_EXPLICIT_SPECIALIZATION
+const OFString DSRListOfItems<OFString>::EmptyItem;
 
 
 DSRReferencedDateTimeList::DSRReferencedDateTimeList()
diff --git a/dcmsr/libsrc/dsrtcosp.cc b/dcmsr/libsrc/dsrtcosp.cc
index 85f31d1..970060b 100644
--- a/dcmsr/libsrc/dsrtcosp.cc
+++ b/dcmsr/libsrc/dsrtcosp.cc
@@ -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
@@ -28,14 +28,9 @@
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const Uint32 DSRListOfItems<Uint32>::EmptyItem = 0;
+DCMTK_EXPLICIT_SPECIALIZATION
+const Uint32 DSRListOfItems<Uint32>::EmptyItem = 0;
 
 
 DSRReferencedSamplePositionList::DSRReferencedSamplePositionList()
diff --git a/dcmsr/libsrc/dsrtcoto.cc b/dcmsr/libsrc/dsrtcoto.cc
index c5bf47c..e344336 100644
--- a/dcmsr/libsrc/dsrtcoto.cc
+++ b/dcmsr/libsrc/dsrtcoto.cc
@@ -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
@@ -29,14 +29,8 @@
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const Float64 DSRListOfItems<Float64>::EmptyItem = 0;
+DCMTK_EXPLICIT_SPECIALIZATION const Float64 DSRListOfItems<Float64>::EmptyItem = 0;
 
 
 DSRReferencedTimeOffsetList::DSRReferencedTimeOffsetList()
diff --git a/dcmsr/libsrc/dsrtcovl.cc b/dcmsr/libsrc/dsrtcovl.cc
index c49c0dd..e2c8c09 100644
--- a/dcmsr/libsrc/dsrtcovl.cc
+++ b/dcmsr/libsrc/dsrtcovl.cc
@@ -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
@@ -336,21 +336,21 @@ OFCondition DSRTemporalCoordinatesValue::checkData(const DSRTypes::E_TemporalRan
 {
     OFCondition result = EC_Normal;
     if (temporalRangeType == DSRTypes::TRT_invalid)
-        REPORT_WARNING("Invalid TemporalRangeType for TCOORD content item")
+        REPORT_WARNING("Invalid Temporal Range Type for TCOORD content item")
     const OFBool list1 = !samplePositionList.isEmpty();
     const OFBool list2 = !timeOffsetList.isEmpty();
     const OFBool list3 = !dateTimeList.isEmpty();
     if (list1 && list2 && list3)
-        REPORT_WARNING("ReferencedSamplePositions/TimeOffsets/DateTime present in TCOORD content item")
+        REPORT_WARNING("Referenced Sample Positions/Time Offsets/DateTime present in TCOORD content item")
     else if (list1 && list2)
-        REPORT_WARNING("ReferencedSamplePositions/TimeOffsets present in TCOORD content item")
+        REPORT_WARNING("Referenced Sample Positions/Time Offsets present in TCOORD content item")
     else if (list1 && list3)
-        REPORT_WARNING("ReferencedSamplePositions/DateTime present in TCOORD content item")
+        REPORT_WARNING("Referenced Sample Positions/DateTime present in TCOORD content item")
     else if (list2 && list3)
-        REPORT_WARNING("ReferencedTimeOffsets/DateTime present in TCOORD content item")
+        REPORT_WARNING("Referenced Time Offsets/DateTime present in TCOORD content item")
     else if (!list1 && !list2 && !list3)
     {
-        REPORT_WARNING("ReferencedSamplePositions/TimeOffsets/DateTime empty in TCOORD content item")
+        REPORT_WARNING("Referenced Sample Positions/Time Offsets/DateTime empty in TCOORD content item")
         /* invalid: all lists are empty (type 1C condition violated) */
         result = SR_EC_InvalidValue;
     }
diff --git a/dcmsr/libsrc/dsrtncsr.cc b/dcmsr/libsrc/dsrtncsr.cc
deleted file mode 100644
index 6649d76..0000000
--- a/dcmsr/libsrc/dsrtncsr.cc
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *
- *  Copyright (C) 2000-2014, 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: dcmsr
- *
- *  Author: Joerg Riesmeier
- *
- *  Purpose:
- *    classes: DSRTreeNodeCursor
- *
- */
-
-
-#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
-
-#include "dcmtk/dcmsr/dsrtncsr.h"
-
-
-// NB: the implementation of the template class has been moved to the header file
diff --git a/dcmsr/libsrc/dsrtpltn.cc b/dcmsr/libsrc/dsrtpltn.cc
new file mode 100644
index 0000000..6fe60fa
--- /dev/null
+++ b/dcmsr/libsrc/dsrtpltn.cc
@@ -0,0 +1,237 @@
+/*
+ *
+ *  Copyright (C) 2015-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: DSRIncludedTemplateTreeNode
+ *
+ */
+
+
+#include "dcmtk/config/osconfig.h"    /* make sure OS specific configuration is included first */
+
+#include "dcmtk/dcmsr/dsrtypes.h"
+#include "dcmtk/dcmsr/dsrtpltn.h"
+#include "dcmtk/dcmsr/dsrstpl.h"
+#include "dcmtk/dcmsr/dsrxmld.h"
+
+
+DSRIncludedTemplateTreeNode::DSRIncludedTemplateTreeNode(const DSRSharedSubTemplate &referencedTemplate,
+                                                         const E_RelationshipType defaultRelType)
+  : DSRDocumentTreeNode(defaultRelType, VT_includedTemplate),
+    ReferencedTemplate(referencedTemplate)
+{
+    if (ReferencedTemplate)
+    {
+        /* store template identification of the referenced template */
+        DSRDocumentTreeNode::setTemplateIdentification(ReferencedTemplate->getTemplateIdentifier(),
+                                                       ReferencedTemplate->getMappingResource(),
+                                                       ReferencedTemplate->getMappingResourceUID());
+    }
+}
+
+
+DSRIncludedTemplateTreeNode::DSRIncludedTemplateTreeNode(const DSRIncludedTemplateTreeNode &node)
+  : DSRDocumentTreeNode(node),
+    ReferencedTemplate(node.ReferencedTemplate)
+{
+}
+
+
+DSRIncludedTemplateTreeNode::~DSRIncludedTemplateTreeNode()
+{
+}
+
+
+DSRIncludedTemplateTreeNode *DSRIncludedTemplateTreeNode::clone() const
+{
+    return new DSRIncludedTemplateTreeNode(*this);
+}
+
+
+void DSRIncludedTemplateTreeNode::clear()
+{
+    DSRDocumentTreeNode::clear();
+    ReferencedTemplate.reset();
+}
+
+
+OFBool DSRIncludedTemplateTreeNode::isValid() const
+{
+    return DSRDocumentTreeNode::isValid() && hasValidValue();
+}
+
+
+OFBool DSRIncludedTemplateTreeNode::hasValidValue() const
+{
+    /* check whether the reference to the included template is valid */
+    return ReferencedTemplate ? OFTrue : OFFalse;
+}
+
+
+OFBool DSRIncludedTemplateTreeNode::isShort(const size_t /*flags*/) const
+{
+    return !hasValidValue();
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::print(STD_NAMESPACE ostream &stream,
+                                               const size_t flags) const
+{
+    stream << "# INCLUDE ";
+    /* check whether template identification is set */
+    if (hasTemplateIdentification())
+    {
+        OFString templateIdentifier, mappingResource;
+        getTemplateIdentification(templateIdentifier, mappingResource);
+        stream << "TID " << templateIdentifier << " (" << mappingResource << ")";
+    } else {
+        /* no details on the template available */
+        stream << "<unknown template>";
+    }
+    /* check whether default relationship type is specified */
+    if (getRelationshipType() != RT_unknown)
+        stream << " with default relationship type " << relationshipTypeToDefinedTerm(getRelationshipType());
+    /* print annotation (optional) */
+    if (hasAnnotation() && (flags & PF_printAnnotation))
+        stream << "  \"" << getAnnotation().getText() << "\"";
+    return EC_Normal;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::writeXML(STD_NAMESPACE ostream &stream,
+                                                  const size_t flags) const
+{
+    OFCondition result = EC_Normal;
+    /* write content of included template in XML format (if non-empty) */
+    if (hasValidValue() && !ReferencedTemplate->isEmpty())
+    {
+        OFString templateIdentifier, mappingResource;
+        /* output details on beginning of included template (if enabled) */
+        if (hasTemplateIdentification() && (flags & XF_addCommentsForIncludedTemplate))
+        {
+            getTemplateIdentification(templateIdentifier, mappingResource);
+            stream << "<!-- BEGIN: included template TID " << templateIdentifier << " (" << mappingResource << ") -->" << OFendl;
+        }
+        /* write content of referenced document subtree */
+        result = ReferencedTemplate->writeXML(stream, flags);
+        /* output details on end of included template (if available, see above) */
+        if (!templateIdentifier.empty() && !mappingResource.empty())
+            stream << "<!-- END: included template TID " << templateIdentifier << " (" << mappingResource << ") -->" << OFendl;
+    }
+    return result;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setValue(const DSRSharedSubTemplate &referencedTemplate)
+{
+    ReferencedTemplate = referencedTemplate;
+    /* currently, no checks are performed */
+    return EC_Normal;
+}
+
+
+// protected methods
+
+OFCondition DSRIncludedTemplateTreeNode::read(DcmItem & /*dataset*/,
+                                              const DSRIODConstraintChecker * /*constraintChecker*/,
+                                              const size_t /*flags*/)
+{
+    /* invalid: cannot read document with included templates */
+    return SR_EC_CannotProcessIncludedTemplates;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::write(DcmItem & /*dataset*/,
+                                               DcmStack * /*markedItems*/)
+{
+    /* invalid: cannot write document with included templates */
+    return SR_EC_CannotProcessIncludedTemplates;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::readXML(const DSRXMLDocument & /*doc*/,
+                                                 DSRXMLCursor /*cursor*/,
+                                                 const E_DocumentType /*documentType*/,
+                                                 const size_t /*flags*/)
+{
+    /* invalid: cannot read document with included templates */
+    return SR_EC_CannotProcessIncludedTemplates;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::renderHTML(STD_NAMESPACE ostream & /*docStream*/,
+                                                    STD_NAMESPACE ostream & /*annexStream*/,
+                                                    const size_t /*nestingLevel*/,
+                                                    size_t & /*annexNumber*/,
+                                                    const size_t /*flags*/) const
+{
+    /* invalid: cannot render document with included templates */
+    return SR_EC_CannotProcessIncludedTemplates;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setConceptName(const DSRCodedEntryValue & /*conceptName*/,
+                                                        const OFBool /*check*/)
+{
+    /* invalid: no concept name allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setObservationDateTime(const OFString & /*observationDateTime*/,
+                                                                const OFBool /*check*/)
+{
+    /* invalid: no observation date/time allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setObservationDateTime(const DcmElement & /*delem*/,
+                                                                const unsigned long /*pos*/,
+                                                                const OFBool /*check*/)
+{
+    /* invalid: no observation date/time allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setObservationDateTime(DcmItem & /*dataset*/,
+                                                                const DcmTagKey & /*tagKey*/,
+                                                                const unsigned long /*pos*/,
+                                                                const OFBool /*check*/)
+{
+    /* invalid: no observation date/time allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setObservationUID(const OFString & /*observationUID*/,
+                                                           const OFBool /*check*/)
+{
+    /* invalid: no observation unique identifier allowed */
+    return EC_IllegalCall;
+}
+
+
+OFCondition DSRIncludedTemplateTreeNode::setTemplateIdentification(const OFString & /*templateIdentifier*/,
+                                                                   const OFString & /*mappingResource*/,
+                                                                   const OFString & /*mappingResourceUID*/,
+                                                                   const OFBool /*check*/)
+{
+    /* invalid: no manual setting of template identification allowed */
+    return EC_IllegalCall;
+}
diff --git a/dcmsr/libsrc/dsrtypes.cc b/dcmsr/libsrc/dsrtypes.cc
index e68801e..1069848 100644
--- a/dcmsr/libsrc/dsrtypes.cc
+++ b/dcmsr/libsrc/dsrtypes.cc
@@ -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
@@ -54,6 +54,7 @@
 #include "dcmtk/dcmsr/dsrimpcc.h"
 #include "dcmtk/dcmsr/dsrc3dcc.h"
 #include "dcmtk/dcmsr/dsrrrdcc.h"
+#include "dcmtk/dcmsr/dsracqcc.h"
 
 #include "dcmtk/ofstd/ofstd.h"
 
@@ -121,6 +122,7 @@ 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;
 /* shortcuts */
 const size_t DSRTypes::XF_encodeEverythingAsAttribute    = DSRTypes::XF_codeComponentsAsAttribute |
                                                            DSRTypes::XF_relationshipTypeAsAttribute |
@@ -141,6 +143,7 @@ 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;
 /* shortcuts */
 const size_t DSRTypes::PF_printAllCodes                  = DSRTypes::PF_printConceptNameCodes;
 
@@ -286,6 +289,10 @@ makeOFConditionConst(SR_EC_NonExtensibleContextGroup,           OFM_dcmsr, 28, O
 makeOFConditionConst(SR_EC_CodedEntryNotInContextGroup,         OFM_dcmsr, 29, OF_error, "Coded Entry not in Context Group");
 makeOFConditionConst(SR_EC_CodedEntryInStandardContextGroup,    OFM_dcmsr, 30, OF_ok,    "Coded Entry in Context Group (Standard)");
 makeOFConditionConst(SR_EC_CodedEntryIsExtensionOfContextGroup, OFM_dcmsr, 31, OF_ok,    "Coded Entry in Context Group (Extension)");
+makeOFConditionConst(SR_EC_ValueSetConstraintViolated,          OFM_dcmsr, 32, OF_error, "Value Set Constraint violated");
+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"
@@ -308,7 +315,8 @@ static const S_DocumentTypeNameMap DocumentTypeNameMap[] =
     {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_ExtensibleSR,                        UID_ExtensibleSRStorage,                        OFTrue,  "SR", "Extensible SR"},
+    {DSRTypes::DT_AcquisitionContextSR,                UID_AcquisitionContextSRStorage,                OFTrue,  "SR", "Acquisition Context SR"}
 };
 
 
@@ -316,7 +324,7 @@ static const S_RelationshipTypeNameMap RelationshipTypeNameMap[] =
 {
     {DSRTypes::RT_invalid,       "",                "invalid relationship type"},
     {DSRTypes::RT_unknown,       "",                "unknown relationship type"},
-    {DSRTypes::RT_isRoot,        "",                ""},
+    {DSRTypes::RT_isRoot,        "",                "(is root)"},
     {DSRTypes::RT_contains,      "CONTAINS",        "contains"},
     {DSRTypes::RT_hasObsContext, "HAS OBS CONTEXT", "has obs context"},
     {DSRTypes::RT_hasAcqContext, "HAS ACQ CONTEXT", "has acq context"},
@@ -329,23 +337,24 @@ static const S_RelationshipTypeNameMap RelationshipTypeNameMap[] =
 
 static const S_ValueTypeNameMap ValueTypeNameMap[] =
 {
-    {DSRTypes::VT_invalid,     "",               "item",      "invalid/unknown value type"},
-    {DSRTypes::VT_Text,        "TEXT",           "text",      "Text"},
-    {DSRTypes::VT_Code,        "CODE",           "code",      "Code"},
-    {DSRTypes::VT_Num,         "NUM",            "num",       "Number"},
-    {DSRTypes::VT_DateTime,    "DATETIME",       "datetime",  "Date/Time"},
-    {DSRTypes::VT_Date,        "DATE",           "date",      "Date"},
-    {DSRTypes::VT_Time,        "TIME",           "time",      "Time"},
-    {DSRTypes::VT_UIDRef,      "UIDREF",         "uidref",    "UID Reference"},
-    {DSRTypes::VT_PName,       "PNAME",          "pname",     "Person Name"},
-    {DSRTypes::VT_SCoord,      "SCOORD",         "scoord",    "Spatial Coordinates"},
-    {DSRTypes::VT_SCoord3D,    "SCOORD3D",       "scoord3d",  "Spatial Coordinates (3D)"},
-    {DSRTypes::VT_TCoord,      "TCOORD",         "tcoord",    "Temporal Coordinates"},
-    {DSRTypes::VT_Composite,   "COMPOSITE",      "composite", "Composite Object"},
-    {DSRTypes::VT_Image,       "IMAGE",          "image",     "Image"},
-    {DSRTypes::VT_Waveform,    "WAVEFORM",       "waveform",  "Waveform"},
-    {DSRTypes::VT_Container,   "CONTAINER",      "container", "Container"},
-    {DSRTypes::VT_byReference, "(by-reference)", "reference", "(by-reference)"}
+    {DSRTypes::VT_invalid,          "",                "item",      "invalid/unknown value type"},
+    {DSRTypes::VT_Text,             "TEXT",            "text",      "Text"},
+    {DSRTypes::VT_Code,             "CODE",            "code",      "Code"},
+    {DSRTypes::VT_Num,              "NUM",             "num",       "Number"},
+    {DSRTypes::VT_DateTime,         "DATETIME",        "datetime",  "Date/Time"},
+    {DSRTypes::VT_Date,             "DATE",            "date",      "Date"},
+    {DSRTypes::VT_Time,             "TIME",            "time",      "Time"},
+    {DSRTypes::VT_UIDRef,           "UIDREF",          "uidref",    "UID Reference"},
+    {DSRTypes::VT_PName,            "PNAME",           "pname",     "Person Name"},
+    {DSRTypes::VT_SCoord,           "SCOORD",          "scoord",    "Spatial Coordinates"},
+    {DSRTypes::VT_SCoord3D,         "SCOORD3D",        "scoord3d",  "Spatial Coordinates (3D)"},
+    {DSRTypes::VT_TCoord,           "TCOORD",          "tcoord",    "Temporal Coordinates"},
+    {DSRTypes::VT_Composite,        "COMPOSITE",       "composite", "Composite Object"},
+    {DSRTypes::VT_Image,            "IMAGE",           "image",     "Image"},
+    {DSRTypes::VT_Waveform,         "WAVEFORM",        "waveform",  "Waveform"},
+    {DSRTypes::VT_Container,        "CONTAINER",       "container", "Container"},
+    {DSRTypes::VT_byReference,      "(by-reference)",  "reference", "(by-reference)"},
+    {DSRTypes::VT_includedTemplate, "(incl-template)", "template",  "(included template)"}
 };
 
 
@@ -431,21 +440,26 @@ static const S_VerificationFlagNameMap VerificationFlagNameMap[] =
 
 static const S_CharacterSetNameMap CharacterSetNameMap[] =
 {
-    // columns: enum, DICOM, HTML, XML (if "?" a warning is reported)
-    {DSRTypes::CS_invalid,  "",           "",           ""},
-    {DSRTypes::CS_ASCII,    "ISO_IR 6",   "",           "UTF-8"},   /* "ISO_IR 6" is only used for reading */
-    {DSRTypes::CS_Latin1,   "ISO_IR 100", "ISO-8859-1", "ISO-8859-1"},
-    {DSRTypes::CS_Latin2,   "ISO_IR 101", "ISO-8859-2", "ISO-8859-2"},
-    {DSRTypes::CS_Latin3,   "ISO_IR 109", "ISO-8859-3", "ISO-8859-3"},
-    {DSRTypes::CS_Latin4,   "ISO_IR 110", "ISO-8859-4", "ISO-8859-4"},
-    {DSRTypes::CS_Cyrillic, "ISO_IR 144", "ISO-8859-5", "ISO-8859-5"},
-    {DSRTypes::CS_Arabic,   "ISO_IR 127", "ISO-8859-6", "ISO-8859-6"},
-    {DSRTypes::CS_Greek,    "ISO_IR 126", "ISO-8859-7", "ISO-8859-7"},
-    {DSRTypes::CS_Hebrew,   "ISO_IR 138", "ISO-8859-8", "ISO-8859-8"},
-    {DSRTypes::CS_Latin5,   "ISO_IR 148", "ISO-8859-9", "ISO-8859-9"},
-    {DSRTypes::CS_Japanese, "ISO_IR 13",  "?",          "?"},  /* JIS_X0201 ? */
-    {DSRTypes::CS_Thai,     "ISO_IR 166", "?",          "?"},  /* TIS-620 ? */
-    {DSRTypes::CS_UTF8,     "ISO_IR 192", "UTF-8",      "UTF-8"}
+    // columns: enum, DICOM, HTML, XML (if "?" a warning is reported).
+    // This mapping is based on Table D-1 in DICOM PS 3.18 Annex D.
+    {DSRTypes::CS_invalid,        "",                               "",            ""},
+    {DSRTypes::CS_ASCII,          "ISO_IR 6",                       "",            "UTF-8"},   /* "ISO_IR 6" is only used for reading */
+    {DSRTypes::CS_Latin1,         "ISO_IR 100",                     "ISO-8859-1",  "ISO-8859-1"},
+    {DSRTypes::CS_Latin2,         "ISO_IR 101",                     "ISO-8859-2",  "ISO-8859-2"},
+    {DSRTypes::CS_Latin3,         "ISO_IR 109",                     "ISO-8859-3",  "ISO-8859-3"},
+    {DSRTypes::CS_Latin4,         "ISO_IR 110",                     "ISO-8859-4",  "ISO-8859-4"},
+    {DSRTypes::CS_Cyrillic,       "ISO_IR 144",                     "ISO-8859-5",  "ISO-8859-5"},
+    {DSRTypes::CS_Arabic,         "ISO_IR 127",                     "ISO-8859-6",  "ISO-8859-6"},
+    {DSRTypes::CS_Greek,          "ISO_IR 126",                     "ISO-8859-7",  "ISO-8859-7"},
+    {DSRTypes::CS_Hebrew,         "ISO_IR 138",                     "ISO-8859-8",  "ISO-8859-8"},
+    {DSRTypes::CS_Latin5,         "ISO_IR 148",                     "ISO-8859-9",  "ISO-8859-9"},
+    {DSRTypes::CS_Thai,           "ISO_IR 166",                     "TIS-620",     "TIS-620"},
+    {DSRTypes::CS_Japanese,       "ISO 2022 IR 13\\ISO 2022 IR 87", "ISO-2022-JP", "ISO-2022-JP"},
+    {DSRTypes::CS_Korean,         "ISO 2022 IR 6\\ISO 2022 IR 149", "ISO-2022-KR", "ISO-2022-KR"},
+    {DSRTypes::CS_ChineseISO,     "ISO 2022 IR 6\\ISO 2022 IR 58",  "ISO-2022-CN", "ISO-2022-CN"},
+    {DSRTypes::CS_ChineseGB18030, "GB18030",                        "GB18030",     "GB18030"},
+    {DSRTypes::CS_ChineseGBK,     "GBK",                            "GBK",         "GBK"},
+    {DSRTypes::CS_UTF8,           "ISO_IR 192",                     "UTF-8",       "UTF-8"}
 };
 
 
@@ -1421,6 +1435,9 @@ DSRIODConstraintChecker *DSRTypes::createIODConstraintChecker(const E_DocumentTy
         case DT_ExtensibleSR:
             /* not yet supported */
             break;
+        case DT_AcquisitionContextSR:
+            checker = new DSRAcquisitionContextConstraintChecker();
+            break;
         case DT_invalid:
             /* nothing to do */
             break;
@@ -1598,12 +1615,17 @@ OFBool DSRTypes::writeStringFromElementToXML(STD_NAMESPACE ostream &stream,
     {
         OFString tempString;
         stream << "<" << tagName << ">";
-        if (delem.getVR() == EVR_PN)        // special formatting for person names
+        /* special formatting for person names */
+        if (delem.getVR() == EVR_PN)
         {
             OFString xmlString;
+            /* use first element value only */
             stream << OFendl << dicomToXMLPersonName(getStringValueFromElement(delem, tempString), xmlString, writeEmptyValue) << OFendl;
-        } else
-            OFStandard::convertToMarkupStream(stream, getStringValueFromElement(delem, tempString), OFFalse /*convertNonASCII*/);
+        } else {
+            /* use all element values (1-n) */
+            getStringValueFromElement(delem, tempString, -1 /* all components */);
+            OFStandard::convertToMarkupStream(stream, tempString, OFFalse /*convertNonASCII*/);
+        }
         stream << "</" << tagName << ">" << OFendl;
         result = OFTrue;
     }
diff --git a/dcmsr/libsrc/dsrwavch.cc b/dcmsr/libsrc/dsrwavch.cc
index b8e9954..60b6507 100644
--- a/dcmsr/libsrc/dsrwavch.cc
+++ b/dcmsr/libsrc/dsrwavch.cc
@@ -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
@@ -29,14 +29,9 @@
 #define INCLUDE_CSTDIO
 #include "dcmtk/ofstd/ofstdinc.h"
 
-#ifdef HAVE_EXPLICIT_TEMPLATE_SPECIALIZATION
-#define EXPLICIT_SPECIALIZATION template<>
-#else
-#define EXPLICIT_SPECIALIZATION
-#endif
-
 /* declared in class DSRListOfItems<T> */
-EXPLICIT_SPECIALIZATION const DSRWaveformChannelItem DSRListOfItems<DSRWaveformChannelItem>::EmptyItem(0, 0);
+DCMTK_EXPLICIT_SPECIALIZATION
+const DSRWaveformChannelItem DSRListOfItems<DSRWaveformChannelItem>::EmptyItem(0, 0);
 
 
 DSRWaveformChannelList::DSRWaveformChannelList()
diff --git a/dcmsr/libsrc/dsrwavvl.cc b/dcmsr/libsrc/dsrwavvl.cc
index 508f0c6..4bad97d 100644
--- a/dcmsr/libsrc/dsrwavvl.cc
+++ b/dcmsr/libsrc/dsrwavvl.cc
@@ -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
@@ -245,7 +245,7 @@ OFCondition DSRWaveformReferenceValue::checkSOPClassUID(const OFString &sopClass
     OFCondition result = DSRCompositeReferenceValue::checkSOPClassUID(sopClassUID);
     if (result.good())
     {
-        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2014a) */
+        /* check for all valid/known SOP classes (according to DICOM PS 3.6-2015c) */
         if ((sopClassUID != UID_TwelveLeadECGWaveformStorage) &&
             (sopClassUID != UID_GeneralECGWaveformStorage) &&
             (sopClassUID != UID_AmbulatoryECGWaveformStorage) &&
diff --git a/dcmsr/libsrc/dsrxrdcc.cc b/dcmsr/libsrc/dsrxrdcc.cc
index 45837c5..e32945a 100644
--- a/dcmsr/libsrc/dsrxrdcc.cc
+++ b/dcmsr/libsrc/dsrxrdcc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2005-2014, OFFIS e.V.
+ *  Copyright (C) 2005-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -49,9 +49,12 @@ OFBool DSRXRayRadiationDoseSRConstraintChecker::isTemplateSupportRequired() cons
 }
 
 
-const char *DSRXRayRadiationDoseSRConstraintChecker::getRootTemplateIdentifier() const
+OFCondition DSRXRayRadiationDoseSRConstraintChecker::getRootTemplateIdentification(OFString &templateIdentifier,
+                                                                                   OFString &mappingResource) const
 {
-    return NULL;
+    templateIdentifier.clear();
+    mappingResource.clear();
+    return EC_Normal;
 }
 
 
@@ -113,7 +116,7 @@ OFBool DSRXRayRadiationDoseSRConstraintChecker::checkContentRelationship(const E
                      (targetValueType == VT_DateTime) || (targetValueType == VT_UIDRef)    || (targetValueType == VT_PName) ||
                      (targetValueType == VT_Image)    || (targetValueType == VT_Composite) || (targetValueType == VT_Container);
         }
-        /* row 7 of the table - introduced with CP 1076 */
+        /* row 7 of the table - introduced with CP-1076 */
         else if ((relationshipType == RT_hasProperties) && (sourceValueType == VT_PName))
         {
             result = (targetValueType == VT_Text) || (targetValueType == VT_Code) || (targetValueType == VT_DateTime) ||
diff --git a/dcmsr/tests/Makefile.dep b/dcmsr/tests/Makefile.dep
index 25e09a1..90a1413 100644
--- a/dcmsr/tests/Makefile.dep
+++ b/dcmsr/tests/Makefile.dep
@@ -42,6 +42,8 @@ mkreport.o: mkreport.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -110,11 +112,12 @@ mkreport.o: mkreport.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -124,7 +127,8 @@ mkreport.o: mkreport.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h
 tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -145,6 +149,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -187,6 +193,8 @@ tsrcmr.o: tsrcmr.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -211,7 +219,8 @@ tsrcmr.o: tsrcmr.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 \
- ../include/dcmtk/dcmsr/dsrnumvl.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrdoc.h ../include/dcmtk/dcmsr/dsrdoctr.h \
+ ../include/dcmtk/dcmsr/dsrdocst.h ../include/dcmtk/dcmsr/dsrtree.h \
  ../include/dcmtk/dcmsr/dsrtypes.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctk.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
@@ -281,42 +290,56 @@ tsrcmr.o: tsrcmr.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 \
- ../include/dcmtk/dcmsr/dsdefine.h \
- ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
- ../include/dcmtk/dcmsr/dsrnumtn.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrtree.h ../include/dcmtk/dcmsr/dsrtncsr.h \
+ ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/codes/dcm.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
+ ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
+ ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
+ ../include/dcmtk/dcmsr/dsrtlist.h ../include/dcmtk/dcmsr/dsrsc3vl.h \
+ ../include/dcmtk/dcmsr/dsrsc3gr.h ../include/dcmtk/dcmsr/dsrtcovl.h \
+ ../include/dcmtk/dcmsr/dsrtcodt.h ../include/dcmtk/dcmsr/dsrtcosp.h \
+ ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
+ ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
+ ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
+ ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
+ ../include/dcmtk/dcmsr/dsrnumtn.h ../include/dcmtk/dcmsr/codes/dcm.h \
+ ../include/dcmtk/dcmsr/codes/srt.h ../include/dcmtk/dcmsr/codes/ucum.h \
  ../include/dcmtk/dcmsr/cmr/init.h ../include/dcmtk/dcmsr/cmr/define.h \
  ../include/dcmtk/dcmsr/cmr/logger.h ../include/dcmtk/dcmsr/cmr/cid29e.h \
  ../include/dcmtk/dcmsr/cmr/cid29.h ../include/dcmtk/dcmsr/dsrctxgr.h \
  ../include/dcmtk/dcmsr/cmr/cid42.h ../include/dcmtk/dcmsr/cmr/cid244e.h \
- ../include/dcmtk/dcmsr/cmr/cid244.h \
+ ../include/dcmtk/dcmsr/cmr/cid244.h ../include/dcmtk/dcmsr/cmr/cid4020.h \
  ../include/dcmtk/dcmsr/cmr/cid4031e.h \
  ../include/dcmtk/dcmsr/cmr/cid4031.h \
+ ../include/dcmtk/dcmsr/cmr/cid7181.h \
  ../include/dcmtk/dcmsr/cmr/cid7445.h \
  ../include/dcmtk/dcmsr/cmr/cid10013e.h \
  ../include/dcmtk/dcmsr/cmr/cid10013.h \
  ../include/dcmtk/dcmsr/cmr/cid10033e.h \
  ../include/dcmtk/dcmsr/cmr/cid10033.h \
  ../include/dcmtk/dcmsr/cmr/tid1001.h ../include/dcmtk/dcmsr/dsrstpl.h \
- ../include/dcmtk/dcmsr/dsrdoctr.h ../include/dcmtk/dcmsr/dsrdocst.h \
- ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrscovl.h \
- ../include/dcmtk/dcmsr/dsrscogr.h ../include/dcmtk/dcmsr/dsrtlist.h \
- ../include/dcmtk/dcmsr/dsrsc3vl.h ../include/dcmtk/dcmsr/dsrsc3gr.h \
- ../include/dcmtk/dcmsr/dsrtcovl.h ../include/dcmtk/dcmsr/dsrtcodt.h \
- ../include/dcmtk/dcmsr/dsrtcosp.h ../include/dcmtk/dcmsr/dsrtcoto.h \
- ../include/dcmtk/dcmsr/dsrcomvl.h ../include/dcmtk/dcmsr/dsrimgvl.h \
- ../include/dcmtk/dcmsr/dsrimgfr.h ../include/dcmtk/dcmsr/dsrimgse.h \
- ../include/dcmtk/dcmsr/dsrwavvl.h ../include/dcmtk/dcmsr/dsrwavch.h \
- ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/cmr/cid7452.h \
+ ../include/dcmtk/dcmsr/cmr/cid7452.h \
  ../include/dcmtk/dcmsr/cmr/cid7453.h \
  ../include/dcmtk/dcmsr/cmr/tid1204.h \
  ../include/dcmtk/dcmsr/cmr/cid5000.h \
  ../include/dcmtk/dcmsr/cmr/cid5001.h \
+ ../include/dcmtk/dcmsr/cmr/tid1500.h \
+ ../include/dcmtk/dcmsr/cmr/tid1411.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvlu.h \
+ ../include/dcmtk/dcmsr/cmr/srnumvl.h \
  ../include/dcmtk/dcmsr/cmr/tid1600.h \
- ../include/dcmtk/dcmsr/cmr/srnumvl.h
+ ../include/dcmtk/dcmsr/cmr/cid4021.h ../include/dcmtk/dcmsr/cmr/cid100.h \
+ ../include/dcmtk/dcmsr/cmr/cid6147.h \
+ ../include/dcmtk/dcmsr/cmr/cid7021.h \
+ ../include/dcmtk/dcmsr/cmr/cid7464.h \
+ ../include/dcmtk/dcmsr/cmr/cid7469.h
 tsrcodvl.o: tsrcodvl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/oftest.h \
  ../../ofstd/include/dcmtk/ofstd/ofconapp.h \
@@ -335,6 +358,8 @@ tsrcodvl.o: tsrcodvl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -428,6 +453,7 @@ tsrcodvl.o: tsrcodvl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h
@@ -449,6 +475,8 @@ tsrdoc.o: tsrdoc.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -544,11 +572,12 @@ tsrdoc.o: tsrdoc.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -558,7 +587,8 @@ tsrdoc.o: tsrdoc.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h
 tsrdoctr.o: tsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -579,6 +609,8 @@ tsrdoctr.o: tsrdoctr.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -674,11 +706,12 @@ tsrdoctr.o: tsrdoctr.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -688,9 +721,11 @@ tsrdoctr.o: tsrdoctr.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.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
 tsrnumvl.o: tsrnumvl.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -711,6 +746,8 @@ tsrnumvl.o: tsrnumvl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -805,6 +842,7 @@ tsrnumvl.o: tsrnumvl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
@@ -827,6 +865,8 @@ tsrtpl.o: tsrtpl.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -922,11 +962,12 @@ tsrtpl.o: tsrtpl.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h ../include/dcmtk/dcmsr/dsrdoctn.h \
- ../include/dcmtk/dcmsr/dsrcodvl.h \
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h \
+ ../include/dcmtk/dcmsr/dsrdoctn.h ../include/dcmtk/dcmsr/dsrcodvl.h \
  ../../ofstd/include/dcmtk/ofstd/ofexbl.h \
  ../include/dcmtk/dcmsr/dsrcitem.h ../include/dcmtk/dcmsr/dsrnumvl.h \
  ../include/dcmtk/dcmsr/dsrscovl.h ../include/dcmtk/dcmsr/dsrscogr.h \
@@ -936,7 +977,8 @@ tsrtpl.o: tsrtpl.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/dcmsr/dsrtcoto.h ../include/dcmtk/dcmsr/dsrcomvl.h \
  ../include/dcmtk/dcmsr/dsrimgvl.h ../include/dcmtk/dcmsr/dsrimgfr.h \
  ../include/dcmtk/dcmsr/dsrimgse.h ../include/dcmtk/dcmsr/dsrwavvl.h \
- ../include/dcmtk/dcmsr/dsrwavch.h ../include/dcmtk/dcmsr/dsrrtpl.h \
+ ../include/dcmtk/dcmsr/dsrwavch.h \
+ ../../ofstd/include/dcmtk/ofstd/ofmem.h ../include/dcmtk/dcmsr/dsrrtpl.h \
  ../include/dcmtk/dcmsr/dsrctpl.h ../include/dcmtk/dcmsr/dsrsoprf.h \
  ../include/dcmtk/dcmsr/dsrrefin.h ../include/dcmtk/dcmsr/dsrcsidl.h \
  ../include/dcmtk/dcmsr/dsrstpl.h
@@ -958,6 +1000,8 @@ tsrtree.o: tsrtree.cc ../../config/include/dcmtk/config/osconfig.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 \
@@ -1051,7 +1095,8 @@ tsrtree.o: tsrtree.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 \
  ../include/dcmtk/dcmsr/dsdefine.h ../include/dcmtk/dcmsr/dsrtncsr.h \
  ../../ofstd/include/dcmtk/ofstd/ofstack.h \
- ../include/dcmtk/dcmsr/dsrtnant.h
+ ../include/dcmtk/dcmsr/dsrposcn.h ../include/dcmtk/dcmsr/dsrtnant.h
diff --git a/dcmsr/tests/mkreport.cc b/dcmsr/tests/mkreport.cc
index e672e53..b18703d 100644
--- a/dcmsr/tests/mkreport.cc
+++ b/dcmsr/tests/mkreport.cc
@@ -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
@@ -531,7 +531,7 @@ static void generate_02(DSRDocument *doc, OFString &studyUID_01)
     doc->getTree().getCurrentContentItem().setConceptName(DSRCodedEntryValue("CODE_03", OFFIS_CODING_SCHEME_DESIGNATOR, "Treatment"));
     doc->getTree().getCurrentContentItem().setStringValue("The plan of treatment is as follows: 4500 rad, 15 treatment sessions, using 100 kV radiation.\nThe reason for treatment, expected acute reaction, and remote possibility of complication was discussed with this patient at some length, and he accepted therapy as outlined.");
 
-    // add additional information on UCUM coding scheme (UID from CP 372)
+    // add additional information on UCUM coding scheme (UID from CP-372)
     doc->getCodingSchemeIdentification().addItem("UCUM");
     doc->getCodingSchemeIdentification().setCodingSchemeUID("2.16.840.1.113883.6.8");
     doc->getCodingSchemeIdentification().setCodingSchemeName("Unified Code for Units of Measure");
diff --git a/dcmsr/tests/tests.cc b/dcmsr/tests/tests.cc
index 465a514..5a8417a 100644
--- a/dcmsr/tests/tests.cc
+++ b/dcmsr/tests/tests.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2015, OFFIS e.V.
+ *  Copyright (C) 2012-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -28,6 +28,8 @@ OFTEST_REGISTER(dcmsr_addTreeNode_2);
 OFTEST_REGISTER(dcmsr_addTreeNode_3);
 OFTEST_REGISTER(dcmsr_addTreeNode_4);
 OFTEST_REGISTER(dcmsr_addTreeNode_5);
+OFTEST_REGISTER(dcmsr_addTreeNode_6);
+OFTEST_REGISTER(dcmsr_replaceTreeNode);
 OFTEST_REGISTER(dcmsr_getPosition);
 OFTEST_REGISTER(dcmsr_countChildNodes);
 OFTEST_REGISTER(dcmsr_treeWithoutRoot);
@@ -37,7 +39,8 @@ OFTEST_REGISTER(dcmsr_cloneSubTree_1);
 OFTEST_REGISTER(dcmsr_cloneSubTree_2);
 OFTEST_REGISTER(dcmsr_extractSubTree);
 OFTEST_REGISTER(dcmsr_gotoAnnotatedTreeNode);
-OFTEST_REGISTER(dcmsr_addContentItem);
+OFTEST_REGISTER(dcmsr_addContentItem_1);
+OFTEST_REGISTER(dcmsr_addContentItem_2);
 OFTEST_REGISTER(dcmsr_copyContentItem);
 OFTEST_REGISTER(dcmsr_gotoNamedNode);
 OFTEST_REGISTER(dcmsr_gotoAnnotatedNode);
@@ -58,6 +61,10 @@ OFTEST_REGISTER(dcmsr_setDocumentTree);
 OFTEST_REGISTER(dcmsr_rootTemplate);
 OFTEST_REGISTER(dcmsr_subTemplate_1);
 OFTEST_REGISTER(dcmsr_subTemplate_2);
+OFTEST_REGISTER(dcmsr_createExpandedTree);
+OFTEST_REGISTER(dcmsr_templateWithByReferenceRelationship_1);
+OFTEST_REGISTER(dcmsr_templateWithByReferenceRelationship_2);
+OFTEST_REGISTER(dcmsr_validCompleteOrEmptyCode);
 OFTEST_REGISTER(dcmsr_setCodeValueType);
 OFTEST_REGISTER(dcmsr_determineCodeValueType);
 OFTEST_REGISTER(dcmsr_writeCodeSequence);
@@ -73,8 +80,11 @@ OFTEST_REGISTER(dcmsr_CID10013e_CTAcquisitionType);
 OFTEST_REGISTER(dcmsr_CID10033e_CTReconstructionAlgorithm);
 OFTEST_REGISTER(dcmsr_TID1001_ObservationContext);
 OFTEST_REGISTER(dcmsr_TID1204_LanguageOfContentItemAndDescendants);
+OFTEST_REGISTER(dcmsr_TID1500_MeasurementReport);
 OFTEST_REGISTER(dcmsr_TID1600_ImageLibrary);
 OFTEST_REGISTER(dcmsr_CMR_SRNumericMeasurementValue);
+OFTEST_REGISTER(dcmsr_CMR_SRNumericMeasurementValueWithUnits_baselineGroup);
+OFTEST_REGISTER(dcmsr_CMR_SRNumericMeasurementValueWithUnits_definedGroup);
 /* the following should be the last test case */
 OFTEST_REGISTER(dcmsr_cleanupContentMappingResource);
 OFTEST_MAIN("dcmsr")
diff --git a/dcmsr/tests/tsrcmr.cc b/dcmsr/tests/tsrcmr.cc
index d64a5af..267ea3a 100644
--- a/dcmsr/tests/tsrcmr.cc
+++ b/dcmsr/tests/tsrcmr.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.
  *
  *  This software and supporting documentation are maintained by
@@ -25,22 +25,29 @@
 
 #include "dcmtk/ofstd/oftest.h"
 
+#include "dcmtk/dcmsr/dsrdoc.h"
 #include "dcmtk/dcmsr/dsrnumvl.h"
 #include "dcmtk/dcmsr/dsrnumtn.h"
 #include "dcmtk/dcmsr/codes/dcm.h"
+#include "dcmtk/dcmsr/codes/srt.h"
+#include "dcmtk/dcmsr/codes/ucum.h"
 #include "dcmtk/dcmsr/cmr/init.h"
 #include "dcmtk/dcmsr/cmr/logger.h"
 #include "dcmtk/dcmsr/cmr/cid29e.h"
 #include "dcmtk/dcmsr/cmr/cid42.h"
 #include "dcmtk/dcmsr/cmr/cid244e.h"
+#include "dcmtk/dcmsr/cmr/cid4020.h"
 #include "dcmtk/dcmsr/cmr/cid4031e.h"
+#include "dcmtk/dcmsr/cmr/cid7181.h"
 #include "dcmtk/dcmsr/cmr/cid7445.h"
 #include "dcmtk/dcmsr/cmr/cid10013e.h"
 #include "dcmtk/dcmsr/cmr/cid10033e.h"
 #include "dcmtk/dcmsr/cmr/tid1001.h"
 #include "dcmtk/dcmsr/cmr/tid1204.h"
+#include "dcmtk/dcmsr/cmr/tid1500.h"
 #include "dcmtk/dcmsr/cmr/tid1600.h"
 #include "dcmtk/dcmsr/cmr/srnumvl.h"
+#include "dcmtk/dcmsr/cmr/srnumvlu.h"
 
 
 OFTEST(dcmsr_CID29e_AcquisitionModality)
@@ -94,12 +101,12 @@ OFTEST(dcmsr_CID4031e_CommonAnatomicRegions)
     DSRCodedEntryValue codedEntry = ctxGroup;
     OFCHECK(ctxGroup.hasSelectedValue());
     OFCHECK(ctxGroup.getSelectedValue() == codedEntry);
-    OFCHECK_EQUAL(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("ABDOMEN").getCodeMeaning(), "Abdomen");
-    OFCHECK_EQUAL(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("KNEE").getCodeMeaning(), "Knee");
-    OFCHECK_EQUAL(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("ZYGOMA").getCodeMeaning(), "Zygoma");
+    OFCHECK_EQUAL(CMR_CID4031e::mapBodyPartExamined("ABDOMEN").getCodeMeaning(), "Abdomen");
+    OFCHECK_EQUAL(CMR_CID4031e::mapBodyPartExamined("KNEE").getCodeMeaning(), "Knee");
+    OFCHECK_EQUAL(CMR_CID4031e::mapBodyPartExamined("ZYGOMA").getCodeMeaning(), "Zygoma");
     /* invalid/unknown defined terms */
-    OFCHECK(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("XYZ").isEmpty());
-    OFCHECK(CID4031e_CommonAnatomicRegions::mapBodyPartExamined("").isEmpty());
+    OFCHECK(CMR_CID4031e::mapBodyPartExamined("XYZ").isEmpty());
+    OFCHECK(CMR_CID4031e::mapBodyPartExamined("").isEmpty());
     OFCHECK(ctxGroup.selectValue("XYZ").bad());
 }
 
@@ -109,24 +116,27 @@ OFTEST(dcmsr_CID7445_DeviceParticipatingRoles)
     CID7445_DeviceParticipatingRoles ctxGroup1;
     OFCHECK(!ctxGroup1.hasSelectedValue());
     OFCHECK(!ctxGroup1.hasCodedEntry(DSRBasicCodedEntry("0815", "99TEST", "Some test code")));
+    OFCHECK(!ctxGroup1.hasExtendedCodedEntries());
     /* add an extended code to the context group */
     OFCHECK(ctxGroup1.addCodedEntry(DSRBasicCodedEntry("0815", "99TEST", "Some test code")).good());
     OFCHECK(ctxGroup1.hasCodedEntry(DSRBasicCodedEntry("0815", "99TEST", "Some test code")));
     OFCHECK(ctxGroup1.findCodedEntry(CODE_DCM_Recording) == SR_EC_CodedEntryInStandardContextGroup);
     OFCHECK(ctxGroup1.findCodedEntry(DSRBasicCodedEntry("0815", "99TEST", "Some test code")) == SR_EC_CodedEntryIsExtensionOfContextGroup);
+    OFCHECK(ctxGroup1.hasExtendedCodedEntries());
     /* try again with a non-extensible context group */
     CID7445_DeviceParticipatingRoles ctxGroup2(DSRBasicCodedEntry("4711", "99TEST", "Some other test code"));
     ctxGroup2.setExtensible(OFFalse);
     OFCHECK(ctxGroup2.hasSelectedValue());
     OFCHECK(ctxGroup2.addCodedEntry(DSRBasicCodedEntry("4711", "99TEST", "Some other test code")).bad());
+    OFCHECK(!ctxGroup2.hasExtendedCodedEntries());
     /* check whether the currently selected code is valid */
     OFCHECK(ctxGroup2.checkSelectedValue(OFFalse /*definedContextGroup*/).good());
     OFCHECK(ctxGroup2.checkSelectedValue(OFTrue /*definedContextGroup*/).bad());
     /* select another value (by two different ways) */
     OFCHECK(ctxGroup2.selectValue(CODE_DCM_XRayReadingDevice).good());
-    OFCHECK(ctxGroup2.selectValue(CID7445_DeviceParticipatingRoles::IrradiatingDevice).good());
+    OFCHECK(ctxGroup2.selectValue(CMR_CID7445::IrradiatingDevice).good());
     /* and finally, check the static get() function */
-    DSRCodedEntryValue codeValue = CID7445_DeviceParticipatingRoles::getCodedEntry(CID7445_DeviceParticipatingRoles::Recording, OFTrue /*enhancedEncodingMode*/);
+    DSRCodedEntryValue codeValue = CMR_CID7445::getCodedEntry(CMR_CID7445::Recording, OFTrue /*enhancedEncodingMode*/);
     OFCHECK(codeValue == CODE_DCM_Recording);
     OFCHECK_EQUAL(codeValue.getContextIdentifier(), "7445");
     OFCHECK_EQUAL(codeValue.getMappingResource(), "DCMR");
@@ -135,20 +145,20 @@ OFTEST(dcmsr_CID7445_DeviceParticipatingRoles)
 
 OFTEST(dcmsr_CID10013e_CTAcquisitionType)
 {
-    OFCHECK(CID10013e_CTAcquisitionType::mapAcquisitionType("SEQUENCED") == CODE_DCM_SequencedAcquisition);
-    OFCHECK(CID10013e_CTAcquisitionType::mapAcquisitionType("CONSTANT_ANGLE") == CODE_DCM_ConstantAngleAcquisition);
-    OFCHECK(CID10013e_CTAcquisitionType::mapAcquisitionType("FREE") == CODE_DCM_FreeAcquisition);
+    OFCHECK(CMR_CID10013e::mapAcquisitionType("SEQUENCED") == CODE_DCM_SequencedAcquisition);
+    OFCHECK(CMR_CID10013e::mapAcquisitionType("CONSTANT_ANGLE") == CODE_DCM_ConstantAngleAcquisition);
+    OFCHECK(CMR_CID10013e::mapAcquisitionType("FREE") == CODE_DCM_FreeAcquisition);
     /* invalid/unknown defined terms */
-    OFCHECK(CID10013e_CTAcquisitionType::mapAcquisitionType("XYZ").isEmpty());
+    OFCHECK(CMR_CID10013e::mapAcquisitionType("XYZ").isEmpty());
 }
 
 
 OFTEST(dcmsr_CID10033e_CTReconstructionAlgorithm)
 {
-    OFCHECK(CID10033e_CTReconstructionAlgorithm::mapReconstructionAlgorithm("FILTER_BACK_PROJ") == CODE_DCM_FilteredBackProjection);
-    OFCHECK(CID10033e_CTReconstructionAlgorithm::mapReconstructionAlgorithm("ITERATIVE") == CODE_DCM_IterativeReconstruction);
+    OFCHECK(CMR_CID10033e::mapReconstructionAlgorithm("FILTER_BACK_PROJ") == CODE_DCM_FilteredBackProjection);
+    OFCHECK(CMR_CID10033e::mapReconstructionAlgorithm("ITERATIVE") == CODE_DCM_IterativeReconstruction);
     /* invalid/unknown defined terms */
-    OFCHECK(CID10033e_CTReconstructionAlgorithm::mapReconstructionAlgorithm("XYZ").isEmpty());
+    OFCHECK(CMR_CID10033e::mapReconstructionAlgorithm("XYZ").isEmpty());
 }
 
 
@@ -156,12 +166,16 @@ OFTEST(dcmsr_TID1001_ObservationContext)
 {
     TID1001_ObservationContext obsContext;
     OFList<CID7445_DeviceParticipatingRoles> procRoles;
-    procRoles.push_back(CID7445_DeviceParticipatingRoles::IrradiatingDevice);
-    procRoles.push_back(CID7445_DeviceParticipatingRoles::Recording);
+    procRoles.push_back(CMR_CID7445::IrradiatingDevice);
+    procRoles.push_back(CMR_CID7445::Recording);
+    /* check template identification */
+    OFCHECK(obsContext.compareTemplateIdentication("1001", "DCMR"));
+    /* empty template is not valid */
+    OFCHECK(!obsContext.isValid());
     /* add person and device observers */
-    OFCHECK(obsContext.addPersonObserver("Doe^John", "", CID7452_OrganizationalRoles::Physician, CID7453_PerformingRoles::Referring).good());
     OFCHECK(obsContext.addDeviceObserver("1.2.4.5.6.7.8.9.0").good());
-    OFCHECK(obsContext.addDeviceObserver("007", "Some Name", "Some Manufacturer", "Some Model Name", "", "", procRoles, OFFalse /*check*/).good());
+    OFCHECK(obsContext.addPersonObserver("Doe^John", "", CMR_CID7452::Physician, CMR_CID7453::Referring).good());
+    OFCHECK(obsContext.addDeviceObserver("007", "Some Name", "Some Manufacturer", "Some Model Name", "", "", procRoles, "AETITLE", OFFalse /*check*/).good());
     OFCHECK(obsContext.addPersonObserver("Doe^Jane", "Some Organization").good());
     /* check some additions that should fail */
     OFCHECK(obsContext.addPersonObserver("").bad());
@@ -169,7 +183,7 @@ OFTEST(dcmsr_TID1001_ObservationContext)
     OFCHECK(obsContext.addDeviceObserver("01").bad());
     /* check whether all nodes are present */
     OFCHECK(obsContext.isValid());
-    OFCHECK_EQUAL(obsContext.countNodes(), 16);
+    OFCHECK_EQUAL(obsContext.countNodes(), 17);
     /* check whether annotations are as expected */
     OFCHECK(obsContext.gotoAnnotatedNode("TID 1004 - Row 1") > 0);
     OFCHECK(obsContext.gotoNextAnnotatedNode("TID 1004 - Row 1") > 0);
@@ -189,6 +203,10 @@ OFTEST(dcmsr_TID1001_ObservationContext)
 OFTEST(dcmsr_TID1204_LanguageOfContentItemAndDescendants)
 {
     TID1204_LanguageOfContentItemAndDescendants lang;
+    /* check template identification */
+    OFCHECK(lang.compareTemplateIdentication("1204", "DCMR"));
+    /* empty template is not valid */
+    OFCHECK(!lang.isValid());
     /* add language */
     OFCHECK(lang.setLanguage(CID5000_Languages::German_DE).good());
     OFCHECK(lang.isValid());
@@ -200,10 +218,141 @@ OFTEST(dcmsr_TID1204_LanguageOfContentItemAndDescendants)
 }
 
 
+OFTEST(dcmsr_TID1500_MeasurementReport)
+{
+    TID1500_MeasurementReport report(CMR_CID7021::ImagingMeasurementReport);
+    DSRCodedEntryValue title;
+    /* check initial settings */
+    OFCHECK(!report.isValid());
+    OFCHECK(report.getDocumentTitle(title).good());
+    OFCHECK(title == CODE_DCM_ImagingMeasurementReport);
+    OFCHECK(report.compareTemplateIdentication("1500", "DCMR"));
+    /* create a new report */
+    OFCHECK(report.createNewMeasurementReport(CMR_CID7021::PETMeasurementReport).good());
+    OFCHECK(report.getDocumentTitle(title).good());
+    OFCHECK(title == CODE_DCM_PETMeasurementReport);
+    /* set the language */
+    OFCHECK(report.setLanguage(CID5000_Languages::English).good());
+    /* set details on the observation context */
+    OFCHECK(report.getObservationContext().addPersonObserver("Doe^Jane", "Some Organization").good());
+    /* create new image library (only needed after clear) */
+    OFCHECK(report.getImageLibrary().createNewImageLibrary().good());
+    /* set two values for "procedure reported" */
+    OFCHECK(!report.isValid());
+    OFCHECK(!report.hasProcedureReported());
+    OFCHECK(report.addProcedureReported(CMR_CID100::PETWholeBody).good());
+    OFCHECK(report.addProcedureReported(DSRCodedEntryValue("4711", "99TEST", "Some other test code")).good());
+    OFCHECK(report.hasProcedureReported());
+    OFCHECK(report.isValid());
+    /* some further checks */
+    OFCHECK(report.hasImagingMeasurements());
+    OFCHECK(report.hasVolumetricROIMeasurements());
+    OFCHECK(!report.hasQualitativeEvaluations());
+    OFCHECK(!report.hasImagingMeasurements(OFTrue /*checkChildren*/));
+    OFCHECK(!report.hasVolumetricROIMeasurements(OFTrue /*checkChildren*/));
+    OFCHECK(!report.hasQualitativeEvaluations(OFTrue /*checkChildren*/));
+    /* add two further volumetric ROI measurements */
+    OFCHECK(report.addVolumetricROIMeasurements().good());
+    OFCHECK(report.addVolumetricROIMeasurements().good());
+    OFCHECK(!report.hasVolumetricROIMeasurements(OFTrue /*checkChildren*/));
+    /* fill volumetric ROI measurements with data */
+    TID1500_MeasurementReport::TID1411_Measurements &measurements = report.getVolumetricROIMeasurements();
+    OFCHECK(!measurements.isValid());
+    OFCHECK(measurements.compareTemplateIdentication("1411", "DCMR"));
+    OFCHECK(measurements.setTrackingIdentifier("aorta reference region").good());
+    OFCHECK(measurements.setTrackingUniqueIdentifier("1.2.3.4.5").good());
+    OFCHECK(measurements.setTrackingIdentifier("some reference region").good());
+    OFCHECK(measurements.setActivitySession("1").good());
+    OFCHECK(measurements.setTimePoint("1.1").good());
+    OFCHECK(measurements.setSourceSeriesForSegmentation("6.7.8.9.0").good());
+    OFCHECK(measurements.setFinding(DSRBasicCodedEntry("0815", "99TEST", "Some test code")).good());
+    OFCHECK(!measurements.isValid());
+    /* test two ways of adding a referenced segment */
+    DSRImageReferenceValue segment(UID_SegmentationStorage, "1.0.2.0.3.0");
+    segment.getSegmentList().addItem(1);
+    DcmDataset dataset;
+    DcmItem *ditem = NULL;
+    OFCHECK(dataset.putAndInsertString(DCM_SOPClassUID, UID_SurfaceSegmentationStorage).good());
+    OFCHECK(dataset.putAndInsertString(DCM_SOPInstanceUID, "99.0").good());
+    OFCHECK(dataset.findOrCreateSequenceItem(DCM_SegmentSequence, ditem).good());
+    if (ditem != NULL)
+    {
+        OFCHECK(ditem->putAndInsertUint16(DCM_SegmentNumber, 1).good());
+        OFCHECK(ditem->putAndInsertString(DCM_TrackingID, "blabla").good());
+        OFCHECK(ditem->putAndInsertString(DCM_TrackingUID, "1.2.3").good());
+    }
+    OFCHECK(measurements.setReferencedSegment(segment).good());
+    OFCHECK(measurements.setReferencedSegment(DSRImageReferenceValue(UID_SegmentationStorage, "1.0")).bad());
+    OFCHECK(measurements.setReferencedSegment(dataset, 1).good());
+    dataset.clear();
+    OFCHECK(dataset.putAndInsertString(DCM_SOPClassUID, UID_RealWorldValueMappingStorage).good());
+    OFCHECK(dataset.putAndInsertString(DCM_SOPInstanceUID, "99.9").good());
+    OFCHECK(measurements.setRealWorldValueMap(DSRCompositeReferenceValue(UID_RealWorldValueMappingStorage, "2.0.3.0.4.0")).good());
+    OFCHECK(measurements.setRealWorldValueMap(DSRCompositeReferenceValue(UID_CTImageStorage, "2.0")).bad());
+    OFCHECK(measurements.setRealWorldValueMap(dataset).good());
+    OFCHECK(measurements.setFindingSite(CODE_SRT_AorticArch).good());
+    OFCHECK(measurements.setMeasurementMethod(DSRCodedEntryValue(CODE_DCM_SUVBodyWeightCalculationMethod)).good());
+    OFCHECK(!measurements.isValid());
+    /* add two measurement values */
+    const CMR_TID1411_in_TID1500::MeasurementValue numVal1("99", CMR_CID7181::StandardizedUptakeValueBodyWeight);
+    const CMR_TID1411_in_TID1500::MeasurementValue numVal2(CMR_CID42::MeasurementFailure);
+    OFCHECK(measurements.addMeasurement(CMR_CID7469::SUVbw, numVal1, CMR_CID6147(), CMR_CID7464::Mean).good());
+    OFCHECK(measurements.addMeasurement(CMR_CID7469::SUVbw, numVal2, DSRCodedEntryValue("0815", "99TEST", "Some test code"), CMR_CID7464::Mode).good());
+    OFCHECK(measurements.isValid());
+    /* now, add some qualitative evaluations */
+    const DSRCodedEntryValue code("1234", "99TEST", "not bad");
+    OFCHECK(report.addQualitativeEvaluation(DSRBasicCodedEntry("0815", "99TEST", "Some test code"), code).good());
+    OFCHECK(report.addQualitativeEvaluation(DSRBasicCodedEntry("4711", "99TEST", "Some other test code"), "very good").good());
+    /* some final checks */
+    OFCHECK(report.isValid());
+    OFCHECK(report.hasImagingMeasurements(OFTrue /*checkChildren*/));
+    OFCHECK(report.hasVolumetricROIMeasurements(OFTrue /*checkChildren*/));
+    OFCHECK(report.hasQualitativeEvaluations(OFTrue /*checkChildren*/));
+
+    /* check number of content items (expected) */
+    OFCHECK_EQUAL(report.getTree().countNodes(), 13);
+    OFCHECK_EQUAL(report.getTree().countNodes(OFTrue /*searchIntoSubTemplates*/), 34);
+    OFCHECK_EQUAL(report.getTree().countNodes(OFTrue /*searchIntoSubTemplates*/, OFFalse /*countIncludedTemplateNodes*/), 28);
+    /* create an expanded version of the tree */
+    DSRDocumentSubTree *tree = NULL;
+    OFCHECK(report.getTree().createExpandedSubTree(tree).good());
+    /* and check whether all content items are there */
+    if (tree != NULL)
+    {
+        OFCHECK_EQUAL(tree->countNodes(), 28);
+        OFCHECK_EQUAL(tree->countNodes(OFTrue /*searchIntoSubTemplates*/), 28);
+        OFCHECK_EQUAL(tree->countNodes(OFTrue /*searchIntoSubTemplates*/, OFFalse /*countIncludedTemplateNodes*/), 28);
+        delete tree;
+    } else
+        OFCHECK_FAIL("could create expanded tree");
+
+    /* try to insert the root template into a document */
+    DSRDocument doc;
+    OFCHECK(!doc.isValid());
+    OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_BasicTextSR);
+    OFCHECK(doc.setTreeFromRootTemplate(report, OFFalse /*expandTree*/).good());
+    OFCHECK(doc.isValid());
+    OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_EnhancedSR);
+    /* now, do the same with an expanded document tree */
+    OFCHECK(doc.setTreeFromRootTemplate(report, OFTrue  /*expandTree*/).good());
+    OFCHECK(doc.isValid());
+    OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_EnhancedSR);
+
+    /* output content of the tree (in debug mode only) */
+    if (DCM_dcmsrCmrLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+    {
+        report.print(COUT, DSRTypes::PF_printTemplateIdentification | DSRTypes::PF_printAllCodes | DSRTypes::PF_printSOPInstanceUID |
+                           DSRTypes::PF_printNodeID | DSRTypes::PF_printAnnotation | DSRTypes::PF_printLongSOPClassName);
+    }
+}
+
+
 OFTEST(dcmsr_TID1600_ImageLibrary)
 {
     TID1600_ImageLibrary library;
     DcmItem *item1, *item2;
+    /* check template identification */
+    OFCHECK(library.compareTemplateIdentication("1600", "DCMR"));
     /* create four image datasets */
     DcmDataset dataset1;
     OFCHECK(dataset1.putAndInsertString(DCM_SOPClassUID, UID_CTImageStorage).good());
@@ -263,26 +412,51 @@ OFTEST(dcmsr_TID1600_ImageLibrary)
             OFCHECK(DSRCodedEntryValue("4711b", "99TEST", "some even more strange modifier").writeSequenceItem(*item2, DCM_ViewModifierCodeSequence).good());
     }
     /* add two image groups */
+    OFCHECK(library.isValid());
+    OFCHECK(library.hasImageLibrary());
     OFCHECK(library.addImageGroup().good());
     OFCHECK(library.addImageEntry(dataset1).good());
     OFCHECK(library.addImageEntryDescriptors(dataset1).good());
     OFCHECK(library.addImageGroup().good());
     OFCHECK(library.addImageEntry(dataset2, TID1600_ImageLibrary::withAllDescriptors).good());
+    OFCHECK(library.setPETImageRadionuclide(CID4020_PETRadionuclide::_18_Fluorine).good());
+    OFCHECK(library.setPETImageRadiopharmaceuticalAgent(CID4021_PETRadiopharmaceutical::Fluorodeoxyglucose_F18).good());
+    OFCHECK(library.setPETImageRadiopharmaceuticalStartDateTime("20151212").good());
+    OFCHECK(library.setPETImageRadiopharmaceuticalVolume(DSRNumericMeasurementValue("99.9", CODE_UCUM_cm3)).good());
+    OFCHECK(library.setPETImageRadionuclideTotalDose(DSRNumericMeasurementValue("9999", CODE_UCUM_Bq)).good());
     OFCHECK(library.addImageEntry(dataset1, TID1600_ImageLibrary::withAllDescriptors).good());
+    OFCHECK(library.setPETImageRadionuclide(CID4020_PETRadionuclide::_18_Fluorine).bad());
     OFCHECK(library.addImageEntry(dataset3, TID1600_ImageLibrary::withoutDescriptors).good());
     OFCHECK(library.addImageEntry(dataset4, TID1600_ImageLibrary::withAllDescriptors).good());
     OFCHECK(library.addImageEntryDescriptors(dataset3).good());
+    /* check modality code of most recently added entry */
+    DSRCodedEntryValue modality;
+    OFCHECK(library.getImageEntryModality(modality).good());
+    OFCHECK(modality == CODE_DCM_DigitalRadiography);
     /* try to add another invocation of TID 1602 */
     OFCHECK(library.addImageEntryDescriptors(dataset4).bad());
     /* check number of expected content items */
-    OFCHECK_EQUAL(library.countNodes(), 58);
+    OFCHECK_EQUAL(library.countNodes(), 61);
 
     /* output content of the tree (in debug mode only) */
     if (DCM_dcmsrCmrLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
     {
         library.print(COUT, DSRTypes::PF_printTemplateIdentification | DSRTypes::PF_printAllCodes | DSRTypes::PF_printSOPInstanceUID |
-                            DSRTypes::PF_printNodeID | DSRTypes::PF_indicateEnhancedEncodingMode | DSRTypes::PF_printAnnotation);
+                            DSRTypes::PF_printNodeID | DSRTypes::PF_indicateEnhancedEncodingMode | DSRTypes::PF_printAnnotation |
+                            DSRTypes::PF_printLongSOPClassName);
     }
+
+    /* empty template is not valid */
+    library.clear();
+    OFCHECK(!library.isValid());
+    OFCHECK(!library.hasImageLibrary());
+    /* cannot add image group to empty template */
+    OFCHECK(library.addImageGroup().bad());
+    /* try again... */
+    OFCHECK(library.createNewImageLibrary().good());
+    OFCHECK(library.isValid());
+    OFCHECK(library.hasImageLibrary());
+    OFCHECK(library.addImageGroup().good());
 }
 
 
@@ -290,12 +464,14 @@ OFTEST(dcmsr_CMR_SRNumericMeasurementValue)
 {
     CMR_SRNumericMeasurementValue numValue;
     /* set coded entry from context group and check the value */
-    OFCHECK(numValue.setNumericValueQualifier(CID42_NumericValueQualifier(CID42_NumericValueQualifier::NotANumber)).good());
+    OFCHECK(numValue.setNumericValueQualifier(CID42_NumericValueQualifier(CMR_CID42::NotANumber, OFTrue /*enhancedEncodingMode*/)).good());
     OFCHECK(numValue.getNumericValueQualifier() == CODE_DCM_NotANumber);
+    OFCHECK(numValue.getNumericValueQualifier().usesEnhancedEncodingMode());
     OFCHECK(numValue.isValid());
     /* set coded entry from context group (using its type) and check the value */
-    OFCHECK(numValue.setNumericValueQualifier(CID42_NumericValueQualifier::ValueUnknown).good());
+    OFCHECK(numValue.setNumericValueQualifier(CMR_CID42::ValueUnknown).good());
     OFCHECK(numValue.getNumericValueQualifier() == CODE_DCM_ValueUnknown);
+    OFCHECK(!numValue.getNumericValueQualifier().usesEnhancedEncodingMode());
     OFCHECK(numValue.isValid());
     /* set numeric measurement value to tree node */
     DSRNumTreeNode numNode(DSRTypes::RT_hasProperties);
@@ -305,6 +481,55 @@ OFTEST(dcmsr_CMR_SRNumericMeasurementValue)
     OFCHECK(numValue.isValid());
     OFCHECK(numValue.setNumericValueQualifier(DSRBasicCodedEntry("0815", "99TEST", "Some test code"), OFFalse /*check*/).good());
     OFCHECK(!numValue.isValid());
+    /* check assignment operator */
+    numValue = DSRNumericMeasurementValue(CODE_DCM_NotANumber);
+    OFCHECK(numValue.isValid());
+}
+
+
+OFTEST(dcmsr_CMR_SRNumericMeasurementValueWithUnits_baselineGroup)
+{
+    /* start without a numeric value (but with a value qualifier) */
+    CMR_SRNumericMeasurementValueWithUnits<CMR_CID7181> numValue(CMR_CID42::NotANumber);
+    OFCHECK(numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    OFCHECK(numValue.getNumericValue().empty());
+    OFCHECK(numValue.getMeasurementUnit().isEmpty());
+    OFCHECK(!numValue.getNumericValueQualifier().isEmpty());
+    /* set numeric value and measurement unit (from given context group) */
+    OFCHECK(numValue.setValue("999", CMR_CID7181::Counts).good());
+    OFCHECK(!numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    OFCHECK_EQUAL(numValue.getNumericValue(), "999");
+    OFCHECK_EQUAL(numValue.getMeasurementUnit(), CMR_CID7181::getCodedEntry(CMR_CID7181::Counts));
+    /* set coded entry that is not part of the context group */
+    OFCHECK(numValue.setNumericValueQualifier(DSRBasicCodedEntry("0815", "99TEST", "Some test code"), OFTrue /*check*/).bad());
+}
+
+
+OFTEST(dcmsr_CMR_SRNumericMeasurementValueWithUnits_definedGroup)
+{
+    /* start with a numeric value that has an unknown measurement unit */
+    const DSRCodedEntryValue validUnit(CMR_CID7181::getCodedEntry(CMR_CID7181::Counts));
+    const DSRCodedEntryValue validQualifier(CMR_CID42::getCodedEntry(CMR_CID42::MeasurementFailure));
+    const DSRCodedEntryValue invalidUnit("0815", "99TEST", "Some test code");
+    const DSRCodedEntryValue invalidQualifier("4711", "99TEST", "Some other test code");
+    CMR_SRNumericMeasurementValueWithUnits<CMR_CID7181, OFTrue /*T_DefinedGroup*/> numValue("1.5", invalidUnit);
+    /* coded entry is not part of the defined context group (i.e. not set)*/
+    OFCHECK(numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    /* try with a valid (defined) measurement unit */
+    OFCHECK(numValue.setValue("1.5", CMR_CID7181::Counts).good());
+    OFCHECK(numValue.isValid());
+    /* try to disable the (extended) validity check */
+    OFCHECK(numValue.setValue("1.5", invalidUnit, invalidQualifier, OFFalse /*check*/).good());
+    OFCHECK(!numValue.isValid());
+    OFCHECK(numValue.isComplete());
+    OFCHECK_EQUAL(numValue.getMeasurementUnit(), invalidUnit);
+    /* finally, set the measurement unit and value qualifier manually */
+    OFCHECK(numValue.setMeasurementUnit(validUnit).good());
+    OFCHECK(numValue.setNumericValueQualifier(validQualifier).good());
+    OFCHECK(numValue.isValid());
 }
 
 
diff --git a/dcmsr/tests/tsrcodvl.cc b/dcmsr/tests/tsrcodvl.cc
index 038ee46..63919d9 100644
--- a/dcmsr/tests/tsrcodvl.cc
+++ b/dcmsr/tests/tsrcodvl.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.
  *
  *  This software and supporting documentation are maintained by
@@ -27,6 +27,29 @@
 #include "dcmtk/dcmsr/dsrcodvl.h"
 
 
+OFTEST(dcmsr_validCompleteOrEmptyCode)
+{
+    /* first, define some code constants (disable check if needed) */
+    const DSRCodedEntryValue code1("0815", "99TEST", "some test code");
+    const DSRCodedEntryValue code2("0816", "99TEST", "", DSRTypes::CVT_Short, OFFalse /*check*/);
+    const DSRCodedEntryValue code3("a little too long\\with VM>1", "99TEST", "some invalid test code", DSRTypes::CVT_Short, OFFalse /*check*/);
+    const DSRCodedEntryValue code4("", "", "");
+    /* then, perform some tests with these codes */
+    OFCHECK(code1.isValid());
+    OFCHECK(code1.isComplete());
+    OFCHECK(!code1.isEmpty());
+    OFCHECK(!code2.isValid());
+    OFCHECK(!code2.isComplete());
+    //OFCHECK(!code2.isEmpty());    // doesn't work because incomplete codes are never accepted
+    OFCHECK(!code3.isValid());
+    OFCHECK(code3.isComplete());
+    OFCHECK(!code3.isEmpty());
+    OFCHECK(!code4.isValid());
+    OFCHECK(!code4.isComplete());
+    OFCHECK(code4.isEmpty());
+}
+
+
 OFTEST(dcmsr_setCodeValueType)
 {
     /* first, try the standard case (short code value) */
@@ -95,6 +118,7 @@ OFTEST(dcmsr_compareCodedEntry)
     DSRCodedEntryValue codedEntry("121206", "DCM", "Distance");
     OFCHECK(codedEntry == DSRCodedEntryValue("121206", "DCM", "Wrong meaning"));
     OFCHECK(!(codedEntry == DSRCodedEntryValue("" /*empty*/, "DCM", "Distance")));
+    OFCHECK(codedEntry != DSRCodedEntryValue("" /*empty*/, "DCM", "Distance"));
 }
 
 
diff --git a/dcmsr/tests/tsrdoc.cc b/dcmsr/tests/tsrdoc.cc
index a631e12..cba3e69 100644
--- a/dcmsr/tests/tsrdoc.cc
+++ b/dcmsr/tests/tsrdoc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2014-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -63,7 +63,7 @@ OFTEST(dcmsr_changeDocumentType_2)
     /* and, try to change the document type */
     OFCHECK(doc.changeDocumentType(DSRTypes::DT_BasicTextSR).bad());
     OFCHECK(doc.changeDocumentType(DSRTypes::DT_EnhancedSR).bad());
-    OFCHECK(doc.changeDocumentType(DSRTypes::DT_ColonCadSR).bad());
+    OFCHECK(doc.changeDocumentType(DSRTypes::DT_XRayRadiationDoseSR).bad());
     OFCHECK(doc.changeDocumentType(DSRTypes::DT_Comprehensive3DSR).good());
     OFCHECK(doc.changeDocumentType(DSRTypes::DT_ComprehensiveSR).good());
 }
diff --git a/dcmsr/tests/tsrdoctr.cc b/dcmsr/tests/tsrdoctr.cc
index 8922693..911da11 100644
--- a/dcmsr/tests/tsrdoctr.cc
+++ b/dcmsr/tests/tsrdoctr.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2014-2015, J. Riesmeier, Oldenburg, Germany
+ *  Copyright (C) 2014-2016, J. Riesmeier, Oldenburg, Germany
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation are maintained by
@@ -26,11 +26,12 @@
 
 #include "dcmtk/ofstd/oftest.h"
 #include "dcmtk/dcmsr/dsrdoc.h"
+#include "dcmtk/dcmsr/dsrtpltn.h"
 #include "dcmtk/dcmsr/dsrnumtn.h"
 #include "dcmtk/dcmsr/dsrtextn.h"
 
 
-OFTEST(dcmsr_addContentItem)
+OFTEST(dcmsr_addContentItem_1)
 {
     /* first, create an SR document to get an empty SR tree */
     DSRDocument doc(DSRTypes::DT_ComprehensiveSR);
@@ -61,6 +62,16 @@ OFTEST(dcmsr_addContentItem)
 }
 
 
+OFTEST(dcmsr_addContentItem_2)
+{
+    /* first, create an empty document subtree */
+    DSRDocumentSubTree tree;
+    /* then, try to add some invalid content items */
+    OFCHECK(tree.addContentItem(DSRTypes::createDocumentTreeNode(DSRTypes::RT_hasProperties, DSRTypes::VT_byReference), DSRTypes::AM_afterCurrent, OFTrue /*deleteIfFail*/).bad());
+    OFCHECK(tree.addContentItem(new DSRIncludedTemplateTreeNode(DSRSharedSubTemplate(NULL), DSRTypes::RT_contains), DSRTypes::AM_afterCurrent, OFTrue /*deleteIfFail*/).bad());
+}
+
+
 OFTEST(dcmsr_copyContentItem)
 {
     /* first, create a new SR document */
diff --git a/dcmsr/tests/tsrnumvl.cc b/dcmsr/tests/tsrnumvl.cc
index fa42cb0..3df8266 100644
--- a/dcmsr/tests/tsrnumvl.cc
+++ b/dcmsr/tests/tsrnumvl.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.
  *
  *  This software and supporting documentation are maintained by
@@ -31,16 +31,32 @@
 OFTEST(dcmsr_setNumericMeasurementValue)
 {
     DSRNumericMeasurementValue numValue;
+    OFCHECK(numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    OFCHECK(!numValue.isComplete());
     /* set valid coded entry */
     OFCHECK(numValue.setValue("", DSRCodedEntryValue(), OFTrue /*check*/).good());
+    OFCHECK(numValue.isEmpty());
     OFCHECK(numValue.isValid());
-    OFCHECK(numValue.setValue("", DSRCodedEntryValue(), CODE_DCM_NotANumber, OFTrue /*check*/).good());
+    OFCHECK(!numValue.isComplete());
+    OFCHECK(numValue.setValue(CODE_DCM_NotANumber, OFTrue /*check*/).good());
+    OFCHECK(numValue.isEmpty());
     OFCHECK(numValue.isValid());
+    OFCHECK(numValue.isComplete());
     OFCHECK(numValue.setValue("1.5", DSRBasicCodedEntry("cm", "UCUM", "1.4", "centimeter"), OFTrue /*check*/).good());
+    OFCHECK(!numValue.isEmpty());
     OFCHECK(numValue.isValid());
+    OFCHECK(numValue.isComplete());
     OFCHECK(numValue.setValue("99999", DSRBasicCodedEntry("cm", "UCUM", "1.4", "centimeter"), CODE_DCM_ValueOutOfRange, OFTrue /*check*/).good());
+    OFCHECK(!numValue.isEmpty());
     OFCHECK(numValue.isValid());
-    /* set invalid coded entry */
+    OFCHECK(numValue.isComplete());
+    /* set invalid coded entry (should fail) */
     OFCHECK(numValue.setValue("1.5", DSRCodedEntryValue(), CODE_DCM_NotANumber, OFFalse /*check*/).bad());
     OFCHECK(numValue.setValue("", DSRBasicCodedEntry("0815", "99TEST", "Some test code"), CODE_DCM_NotANumber, OFFalse /*check*/).bad());
+    /* clear coded entry */
+    numValue.clear();
+    OFCHECK(numValue.isEmpty());
+    OFCHECK(numValue.isValid());
+    OFCHECK(!numValue.isComplete());
 }
diff --git a/dcmsr/tests/tsrtpl.cc b/dcmsr/tests/tsrtpl.cc
index 135b178..711fc7e 100644
--- a/dcmsr/tests/tsrtpl.cc
+++ b/dcmsr/tests/tsrtpl.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.
  *
  *  This software and supporting documentation are maintained by
@@ -25,11 +25,12 @@
 
 #include "dcmtk/ofstd/oftest.h"
 #include "dcmtk/dcmsr/dsrdoc.h"
+#include "dcmtk/dcmsr/dsrdocst.h"
 #include "dcmtk/dcmsr/dsrrtpl.h"
 #include "dcmtk/dcmsr/dsrstpl.h"
 
 
-/* minimal test class for root templates (Basic Diagnostic Imaging Report) */
+/* minimal test class for root template (Basic Diagnostic Imaging Report) */
 class SRTestTemplate2000
   : public DSRRootTemplate
 {
@@ -37,14 +38,14 @@ class SRTestTemplate2000
   public:
 
     SRTestTemplate2000()
-      : DSRRootTemplate(DSRTypes::DT_BasicTextSR, "2000", "DCMR", UID_DICOMContentMappingResource)
+      : DSRRootTemplate(DT_BasicTextSR, "2000", "DCMR", UID_DICOMContentMappingResource)
     {
         /* make sure that at least the root CONTAINER is there */
-        addContentItem(RT_isRoot, VT_Container);
+        OFCHECK(addContentItem(RT_isRoot, VT_Container) > 0);
     }
 };
 
-/* minimal test class for sub-templates (Person Observer Identifying Attributes) */
+/* minimal test class for sub-template (Person Observer Identifying Attributes) */
 class SRTestTemplate1003
   : public DSRSubTemplate
 {
@@ -56,11 +57,11 @@ class SRTestTemplate1003
     {
         setExtensible();
         /* make sure that at least the PNAME content item is there */
-        addContentItem(RT_unknown, VT_PName, DSRCodedEntryValue("121008", "DCM", "Person Observer Name"));
+        OFCHECK(addContentItem(RT_unknown, VT_PName, DSRCodedEntryValue("121008", "DCM", "Person Observer Name")).good());
     }
 };
 
-/* minimal test class for sub-templates (Planar ROI Measurements) */
+/* minimal test class for sub-template (Planar ROI Measurements) */
 class SRTestTemplate1410
   : public DSRSubTemplate
 {
@@ -72,7 +73,87 @@ class SRTestTemplate1410
     {
         setExtensible();
         /* make sure that at least the "root" CONTAINER is there */
-        addContentItem(RT_unknown, VT_Container, DSRCodedEntryValue("125007", "DCM", "Measurement Group"));
+        OFCHECK(addContentItem(RT_unknown, VT_Container, DSRCodedEntryValue("125007", "DCM", "Measurement Group")).good());
+        /* ... and two mandatory child nodes */
+        OFCHECK(addChildContentItem(RT_hasObsContext, VT_Text, DSRCodedEntryValue("112039", "DCM", "Tracking Identifier")).good());
+        OFCHECK(addContentItem(RT_hasObsContext, VT_UIDRef, DSRCodedEntryValue("112040", "DCM", "Tracking Unique Identifier")).good());
+    }
+};
+
+/* minimal test class for root template with included templates (Measurement Report) */
+class SRTestTemplate1500
+  : public DSRRootTemplate
+{
+
+  public:
+
+    SRTestTemplate1500()
+      : DSRRootTemplate(DT_EnhancedSR, "1500", "DCMR", UID_DICOMContentMappingResource)
+    {
+        /* make sure that at least the root CONTAINER is there */
+        OFCHECK(addContentItem(RT_isRoot, VT_Container, DSRCodedEntryValue("126000", "DCM", "Imaging Measurement Report")).good());
+        /* ... and include two sub-templates */
+        OFCHECK(includeTemplate(DSRSharedSubTemplate(new SRTestTemplate1003()), AM_belowCurrent, RT_hasObsContext).good());
+        OFCHECK(includeTemplate(DSRSharedSubTemplate(new SRTestTemplate1410()), AM_afterCurrent, RT_contains).good());
+    }
+};
+
+/* minimal test class for template with by-reference relationship (Measurement Group) */
+class SRTestTemplate1501
+  : public DSRSubTemplate
+{
+
+  public:
+
+    SRTestTemplate1501()
+      : DSRSubTemplate("1501", "DCMR", UID_DICOMContentMappingResource)
+    {
+        setExtensible();
+        /* make sure that at least the top-level CONTAINER is there */
+        OFCHECK(addContentItem(RT_contains, VT_Container, DSRCodedEntryValue("125007,", "DCM", "Measurement Group")).good());
+        /* ... and add two measurements, one referring to the other */
+        OFCHECK(addChildContentItem(RT_contains, VT_Num, DSRCodedEntryValue("12345", "99TEST", "Some Measurement")).good());
+        const size_t nodeID = getNodeID();
+        OFCHECK(addContentItem(RT_contains, VT_Num, DSRCodedEntryValue("09876", "99TEST", "Some other Measurement")).good());
+        OFCHECK(addByReferenceRelationship(RT_inferredFrom, nodeID) > 0);
+        /* update by-reference relationships (prepare for cloning) */
+        OFCHECK(updateByReferenceRelationships().good());
+    }
+};
+
+
+/* minimal test class for included sub-template with contained by-reference relationship */
+class SRTestTemplate1410with1501
+  : public DSRSubTemplate
+{
+
+  public:
+
+    SRTestTemplate1410with1501()
+      : DSRSubTemplate("1410", "DCMR")
+    {
+        setExtensible();
+        /* insert sub-template some content items */
+        OFCHECK(insertTemplate(SRTestTemplate1410(), AM_belowCurrent, RT_contains).good());
+        /* include sub-template with by-reference relationship */
+        OFCHECK(includeTemplate(DSRSharedSubTemplate(new SRTestTemplate1501()), AM_belowCurrent, RT_contains).good());
+    }
+};
+
+
+/* minimal test class for root template with the mandatory CONTAINER */
+class SRTestRootTemplate
+  : public DSRRootTemplate
+{
+
+  public:
+
+    SRTestRootTemplate()
+      : DSRRootTemplate(DT_ComprehensiveSR, "0815", "99TEST")
+    {
+        setExtensible();
+        /* make sure that at least the root CONTAINER is there */
+        OFCHECK(addContentItem(RT_isRoot, VT_Container, DSRCodedEntryValue("1234", "99TEST", "Some test code")).good());
     }
 };
 
@@ -94,14 +175,14 @@ OFTEST(dcmsr_rootTemplate)
     OFCHECK(templ.isRootTemplate());
     OFCHECK(!templ.isExtensible());
     /* replace the document tree with the content of the template */
-    OFCHECK(doc.setTreeFromRootTemplate(templ).good());
+    OFCHECK(doc.setTreeFromRootTemplate(templ, OFFalse /*expandTree*/).good());
     /* and perform some further checks */
     OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_BasicTextSR);
     OFCHECK_EQUAL(doc.getTree().countNodes(), 1);
-    OFString templID, mapResource;
-    OFCHECK(doc.getTree().getTemplateIdentification(templID, mapResource).good());
-    OFCHECK_EQUAL(templID, "2000");
-    OFCHECK_EQUAL(mapResource, "DCMR");
+    OFCHECK(doc.getTree().compareTemplateIdentification("2000", "DCMR"));
+    OFCHECK(doc.getTree().compareTemplateIdentification("2000", "DCMR", UID_DICOMContentMappingResource));
+    OFCHECK(!doc.getTree().compareTemplateIdentification("200", "DCMR"));
+    OFCHECK(!doc.getTree().compareTemplateIdentification("2000", "DCM"));
 }
 
 
@@ -118,7 +199,7 @@ OFTEST(dcmsr_subTemplate_1)
     OFCHECK_EQUAL(doc.getTree().countNodes(), 0);
     OFCHECK_EQUAL(tree.getDocumentType(), DSRTypes::DT_EnhancedSR);
     OFCHECK_EQUAL(tree.countNodes(), 0);
-    OFCHECK_EQUAL(templ.countNodes(), 1);
+    OFCHECK_EQUAL(templ.countNodes(), 3);
     OFCHECK_EQUAL(templ.getTemplateIdentifier(), "1410");
     OFCHECK_EQUAL(templ.getMappingResource(), "DCMR");
     OFCHECK_EQUAL(templ.getMappingResourceUID(), "");
@@ -130,11 +211,8 @@ OFTEST(dcmsr_subTemplate_1)
     OFCHECK(doc.setTree(tree).good());
     /* finally, perform some further checks */
     OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_EnhancedSR);
-    OFCHECK_EQUAL(doc.getTree().countNodes(), 1);
-    OFString templID, mapResource;
-    OFCHECK(doc.getTree().getTemplateIdentification(templID, mapResource).good());
-    OFCHECK_EQUAL(templID, "1410");
-    OFCHECK_EQUAL(mapResource, "DCMR");
+    OFCHECK_EQUAL(doc.getTree().countNodes(), 3);
+    OFCHECK(doc.getTree().compareTemplateIdentification("1410", "DCMR"));
 }
 
 
@@ -159,12 +237,74 @@ OFTEST(dcmsr_subTemplate_2)
     OFCHECK_EQUAL(templ1.countNodes(), 2);
     OFCHECK_EQUAL(templ2.countNodes(), 1);
     /* replace the document tree with the content of the template */
-    OFCHECK(doc.setTreeFromRootTemplate(templ1).good());
+    OFCHECK(doc.setTreeFromRootTemplate(templ1, OFFalse /*expandTree*/).good());
     /* and perform some further checks */
     OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_BasicTextSR);
     OFCHECK_EQUAL(doc.getTree().countNodes(), 2);
-    OFString templID, mapResource;
-    OFCHECK(doc.getTree().getTemplateIdentification(templID, mapResource).good());
-    OFCHECK_EQUAL(templID, "2000");
-    OFCHECK_EQUAL(mapResource, "DCMR");
+    OFCHECK(doc.getTree().compareTemplateIdentification("2000", "DCMR"));
+}
+
+
+OFTEST(dcmsr_createExpandedTree)
+{
+    /* first, create an empty SR document */
+    DSRDocument doc(DSRTypes::DT_ComprehensiveSR);
+    /* then, create an almost empty "Measurement Report" (TID 1500) */
+    SRTestTemplate1500 templ;
+    OFCHECK_EQUAL(templ.countNodes(), 3);
+    /* and set its content as the document tree (with expanded sub-templates) */
+    OFCHECK(doc.getTree().isEmpty());
+    OFCHECK(doc.setTreeFromRootTemplate(templ, OFTrue /*expandTree*/).good());
+    OFCHECK(doc.getTree().isExpandedDocumentTree());
+    OFCHECK_EQUAL(doc.getTree().countNodes(), 5);
+    /* do the same without expanding the (included) sub-templates */
+    OFCHECK(doc.setTreeFromRootTemplate(templ, OFFalse /*expandTree*/).good());
+    OFCHECK(!doc.getTree().isExpandedDocumentTree());
+    OFCHECK_EQUAL(doc.getTree().countNodes(), 3);
+    /* and perform some further checks */
+    OFCHECK_EQUAL(doc.getDocumentType(), DSRTypes::DT_EnhancedSR);
+    OFCHECK(doc.getTree().compareTemplateIdentification("1500", "DCMR"));
+}
+
+
+OFTEST(dcmsr_templateWithByReferenceRelationship_1)
+{
+    /* first, create an almost empty "Planar ROI Measurements" (TID 1410) */
+    SRTestTemplate1410 templ;
+    /* insert sub-template with by-reference relationship */
+    OFCHECK(templ.insertTemplate(SRTestTemplate1501(), DSRTypes::AM_afterCurrent, DSRTypes::RT_contains).good());
+    /* then, go to the source content item of the by-reference relationship */
+    OFCHECK(templ.gotoNamedNode(DSRCodedEntryValue("09876", "99TEST", "Some other Measurement")) > 0);
+    /* check whether the correct content item has been found */
+    OFCHECK(templ.getCurrentContentItem().getValueType() == DSRTypes::VT_Num);
+    /* and, finally, check whether the by-reference relationship is still valid */
+    OFCHECK(templ.gotoChild() > 0);
+    OFCHECK(templ.getCurrentContentItem().getValueType() == DSRTypes::VT_byReference);
+    OFCHECK(templ.getCurrentContentItem().getReferencedNodeID() > 0);
+
+    // tbd: by-reference relationships do not yet work correctly if contained
+    //      in an "included template" content item, i.e. in a nested subtree
+}
+
+
+OFTEST(dcmsr_templateWithByReferenceRelationship_2)
+{
+    DSRDocument doc;
+    /* first, create a sub-template with included sub-template */
+    SRTestTemplate1410with1501 subTempl;
+    OFCHECK_EQUAL(subTempl.countNodes(), 4);
+    OFCHECK_EQUAL(subTempl.countNodes(OFTrue /*searchIntoSubTemplates*/, OFFalse /*countIncludedTemplateNodes*/), 7);
+    /* then, create a root template with a CONTAINER content item */
+    SRTestRootTemplate rootTempl;
+    OFCHECK_EQUAL(rootTempl.countNodes(), 1);
+    /* and insert the sub-template into it */
+    OFCHECK(rootTempl.insertTemplate(subTempl).good());
+    OFCHECK_EQUAL(rootTempl.countNodes(), 5);
+    OFCHECK_EQUAL(rootTempl.countNodes(OFTrue /*searchIntoSubTemplates*/, OFFalse /*countIncludedTemplateNodes*/), 8);
+    /* finally, set its content as the document tree */
+    OFCHECK(doc.setTreeFromRootTemplate(rootTempl, OFTrue /*expandTree*/).good());
+    OFCHECK_EQUAL(doc.getTree().countNodes(), 8);
+
+    // tbd: by-reference relationships do not yet work correctly if contained
+    //      in an "included template" content item, i.e. in a nested subtree
 }
diff --git a/dcmsr/tests/tsrtree.cc b/dcmsr/tests/tsrtree.cc
index fc6dddc..ef861f6 100644
--- a/dcmsr/tests/tsrtree.cc
+++ b/dcmsr/tests/tsrtree.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2012-2015, OFFIS e.V.
+ *  Copyright (C) 2012-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -110,8 +110,8 @@ OFTEST(dcmsr_addTreeNode_2)
     /* and, insert the new tree (i.e. add its first node) into the other one */
     OFCHECK_EQUAL(tree.gotoNode(nodeID + 1), nodeID + 1);
     OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_afterCurrent), nodeID + 3);
-    /* check resulting tree */
     OFCHECK_EQUAL(tree.countNodes(), 6);
+    /* check resulting tree */
     OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 1);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 3);
@@ -142,7 +142,6 @@ OFTEST(dcmsr_addTreeNode_3)
     OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_beforeCurrent), nodeID + 3);
     OFCHECK_EQUAL(tree.countNodes(), 6);
     /* check resulting tree */
-    OFCHECK_EQUAL(tree.countNodes(), 6);
     OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 3);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 4);
@@ -173,7 +172,6 @@ OFTEST(dcmsr_addTreeNode_4)
     OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_belowCurrent), nodeID + 3);
     OFCHECK_EQUAL(tree.countNodes(), 6);
     /* check resulting tree */
-    OFCHECK_EQUAL(tree.countNodes(), 6);
     OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 1);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 2);
@@ -204,7 +202,6 @@ OFTEST(dcmsr_addTreeNode_5)
     OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_belowCurrentBeforeFirstChild), nodeID + 3);
     OFCHECK_EQUAL(tree.countNodes(), 6);
     /* check resulting tree */
-    OFCHECK_EQUAL(tree.countNodes(), 6);
     OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 3);
     OFCHECK_EQUAL(tree.iterate(), nodeID + 4);
@@ -214,6 +211,61 @@ OFTEST(dcmsr_addTreeNode_5)
 }
 
 
+OFTEST(dcmsr_addTreeNode_6)
+{
+    DSRTree<> tree;
+    const size_t nodeID = tree.getNextNodeID();
+    OFCHECK_EQUAL(tree.countNodes(), 0);
+    /* first, create a simple tree of 3 nodes and check the references */
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode()), nodeID + 0);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_belowCurrent), nodeID + 1);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 2);
+    OFCHECK_EQUAL(tree.countNodes(), 3);
+    /* then, create another tree with 3 node on the same level */
+    DSRTree<> newTree;
+    OFCHECK_EQUAL(newTree.addNode(new DSRTreeNode()), nodeID + 3);
+    OFCHECK_EQUAL(newTree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 4);
+    OFCHECK_EQUAL(newTree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 5);
+    OFCHECK_EQUAL(newTree.countNodes(), 3);
+    /* and, insert the new tree before the root node of the other one */
+    OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
+    OFCHECK_EQUAL(tree.addNode(newTree.getAndRemoveRootNode(), DSRTypes::AM_beforeCurrent), nodeID + 3);
+    OFCHECK_EQUAL(tree.countNodes(), 6);
+    /* check resulting tree (should have a new root node now) */
+    OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 3);
+}
+
+
+OFTEST(dcmsr_replaceTreeNode)
+{
+    DSRTree<> tree;
+    const size_t nodeID = tree.getNextNodeID();
+    OFCHECK_EQUAL(tree.countNodes(), 0);
+    /* first, create a simple tree of 6 nodes and check the references */
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode()), nodeID + 0);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_belowCurrent), nodeID + 1);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 2);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 3);
+    OFCHECK_EQUAL(tree.gotoPrevious(), nodeID + 2);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_belowCurrent), nodeID + 4);
+    OFCHECK_EQUAL(tree.addNode(new DSRTreeNode(), DSRTypes::AM_afterCurrent), nodeID + 5);
+    OFCHECK_EQUAL(tree.gotoPrevious(), nodeID + 4);
+    OFCHECK_EQUAL(tree.goUp(), nodeID + 2);
+    OFCHECK_EQUAL(tree.gotoPrevious(), nodeID + 1);
+    OFCHECK_EQUAL(tree.goUp(), nodeID + 0);
+    OFCHECK_EQUAL(tree.countNodes(), 6);
+    /* then, replace one of the nodes */
+    OFCHECK_EQUAL(tree.gotoNode(nodeID + 2), nodeID + 2);
+    OFCHECK_EQUAL(tree.replaceNode(new DSRTreeNode()), nodeID + 6);
+    /* a subtree of 3 nodes has been replaced by 1 node */
+    OFCHECK_EQUAL(tree.countNodes(), 4);
+    /* finally, replace the root node */
+    OFCHECK_EQUAL(tree.gotoRoot(), nodeID + 0);
+    OFCHECK_EQUAL(tree.replaceNode(new DSRTreeNode()), nodeID + 7);
+    OFCHECK_EQUAL(tree.countNodes(), 1);
+}
+
+
 OFTEST(dcmsr_getPosition)
 {
     DSRTree<> tree;
@@ -503,9 +555,8 @@ OFTEST(dcmsr_gotoAnnotatedTreeNode)
     OFCHECK_EQUAL(tree.gotoNode(DSRTreeNodeAnnotation("bastard")), 0 /* not found */);
     OFCHECK_EQUAL(tree.gotoNode(DSRTreeNodeAnnotation("first child")), nodeID + 1);
     /* clear annotation of current node and try again */
-    DSRTreeNode *node = tree.getNode();
-    if (node!= NULL)
-        node->clearAnnotation();
+    if (tree.isValid())
+        tree.getNode()->clearAnnotation();
     else
         OFCHECK_FAIL("could not get current node");
     OFCHECK_EQUAL(tree.gotoNode(DSRTreeNodeAnnotation("first child")), 0 /* not found */);
diff --git a/dcmtls/libsrc/Makefile.dep b/dcmtls/libsrc/Makefile.dep
index b48ea4c..c75bd80 100644
--- a/dcmtls/libsrc/Makefile.dep
+++ b/dcmtls/libsrc/Makefile.dep
@@ -41,6 +41,8 @@ tlslayer.o: tlslayer.cc ../../config/include/dcmtk/config/osconfig.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/dcmtls/tlstrans.h \
  ../../dcmnet/include/dcmtk/dcmnet/dcmtrans.h \
  ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
@@ -93,6 +95,8 @@ tlsscu.o: tlsscu.cc ../../config/include/dcmtk/config/osconfig.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/dcdefine.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcswap.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
@@ -161,6 +165,7 @@ tlsscu.o: tlsscu.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 \
  ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
  ../../ofstd/include/dcmtk/ofstd/ofbmanip.h \
@@ -231,4 +236,30 @@ tlstrans.o: tlstrans.cc ../../config/include/dcmtk/config/osconfig.h \
  ../../ofstd/include/dcmtk/ofstd/ofstd.h \
  ../../ofstd/include/dcmtk/ofstd/oftraits.h \
  ../../ofstd/include/dcmtk/ofstd/ofcond.h \
- ../../dcmnet/include/dcmtk/dcmnet/dcompat.h
+ ../../ofstd/include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dcompat.h \
+ ../../dcmnet/include/dcmtk/dcmnet/diutil.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dicom.h \
+ ../../dcmnet/include/dcmtk/dcmnet/cond.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcerror.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcdefine.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dctypes.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcuid.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 \
+ ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcstack.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dclist.h \
+ ../../dcmdata/include/dcmtk/dcmdata/dcpcache.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dimse.h \
+ ../../dcmnet/include/dcmtk/dcmnet/lst.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dul.h \
+ ../../dcmnet/include/dcmtk/dcmnet/extneg.h \
+ ../../dcmnet/include/dcmtk/dcmnet/dcuserid.h \
+ ../../dcmnet/include/dcmtk/dcmnet/assoc.h
diff --git a/dcmtls/libsrc/tlstrans.cc b/dcmtls/libsrc/tlstrans.cc
index a015bce..10f2803 100644
--- a/dcmtls/libsrc/tlstrans.cc
+++ b/dcmtls/libsrc/tlstrans.cc
@@ -57,6 +57,7 @@ END_EXTERN_C
 #include "dcmtk/dcmtls/tlstrans.h"
 #include "dcmtk/dcmtls/tlslayer.h"
 #include "dcmtk/dcmnet/dcompat.h"    /* to make sure we have a select prototype */
+#include "dcmtk/dcmnet/diutil.h"
 
 
 DcmTLSConnection::DcmTLSConnection(int openSocket, SSL *newTLSConnection)
@@ -273,6 +274,10 @@ OFBool DcmTLSConnection::networkDataAvailable(int timeout)
 #else
   nfound = select(getSocket() + 1, &fdset, NULL, NULL, &t);
 #endif
+  if (DCM_dcmnetLogger.isEnabledFor(OFLogger::DEBUG_LOG_LEVEL))
+  {
+    DU_logSelectResult(nfound);
+  }
   if (nfound <= 0) return OFFalse;
   else
   {
diff --git a/dcmwlm/apps/Makefile.dep b/dcmwlm/apps/Makefile.dep
index e72949e..b2ceb34 100644
--- a/dcmwlm/apps/Makefile.dep
+++ b/dcmwlm/apps/Makefile.dep
@@ -45,6 +45,8 @@ wlcefs.o: wlcefs.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -124,6 +126,8 @@ wlmscpfs.o: wlmscpfs.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
diff --git a/dcmwlm/libsrc/Makefile.dep b/dcmwlm/libsrc/Makefile.dep
index 44b7563..7675948 100644
--- a/dcmwlm/libsrc/Makefile.dep
+++ b/dcmwlm/libsrc/Makefile.dep
@@ -45,6 +45,8 @@ wlds.o: wlds.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -126,6 +128,8 @@ wldsfs.o: wldsfs.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
@@ -198,6 +202,8 @@ wlfsim.o: wlfsim.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcdatset.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcitem.h \
@@ -273,6 +279,7 @@ wlfsim.o: wlfsim.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 \
  ../include/dcmtk/dcmwlm/wlfsim.h
 wlmactmg.o: wlmactmg.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -322,6 +329,8 @@ wlmactmg.o: wlmactmg.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../include/dcmtk/dcmwlm/wltypdef.h \
  ../../dcmdata/include/dcmtk/dcmdata/dctagkey.h \
diff --git a/dcmwlm/tests/Makefile.dep b/dcmwlm/tests/Makefile.dep
index 0d849bc..fefa231 100644
--- a/dcmwlm/tests/Makefile.dep
+++ b/dcmwlm/tests/Makefile.dep
@@ -45,6 +45,8 @@ wltest.o: wltest.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/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../../dcmdata/include/dcmtk/dcmdata/dcuid.h \
  ../../dcmnet/include/dcmtk/dcmnet/dul.h \
  ../../ofstd/include/dcmtk/ofstd/ofglobal.h \
diff --git a/docs/CHANGES.361 b/docs/CHANGES.361
index 4160433..3655c12 100644
--- a/docs/CHANGES.361
+++ b/docs/CHANGES.361
@@ -1,6 +1,2779 @@
 
 Changes between releases are documented here.
 
+**** Changes from 2016.02.16 (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: dcmiod/libsrc/Makefile.dep
+           dcmpstat/libsrc/Makefile.dep
+           dcmsr/apps/Makefile.dep
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/Makefile.dep
+
+**** Changes from 2016.02.15 (schlamelcher)
+
+- Added 'arith.h' to the list of installed files.
+  Affects: CMakeLists.txt
+           config/Makefile.in
+
+**** Changes from 2016.02.11 (riesmeier)
+
+- Updated documentation of setSpecificCharacterSet():
+  Updated API documentation of method setSpecificCharacterSet(), e.g. made
+  clear that multiple values are allowed and invalid values do not always
+  result in an error.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/libsrc/dsrdoc.cc
+
+- Enhanced description of "charset" parameter:
+  Enhanced description of "charset" parameter of the static function
+  checkStringValue(). Explain that only ASCII and Latin-1 are checked.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcbytstr.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
+
+**** Changes from 2016.02.11 (onken)
+
+- Fixed use of checkStringValue():
+  For some VR classes (DcmLongText, DcmShortText, DcmUnlimitedText) the method
+  checkStringValue() expects the character set as the second parameter and not
+  the VM as it is the case for most other VR classes. The related calls in
+  dcmiod, dcmfg and dcmseg did not respect this deviating API, thus requiring
+  the given fix which disables the value checking.
+  Affects: dcmfg/include/dcmtk/dcmfg/fgderimg.h
+           dcmfg/include/dcmtk/dcmfg/fgfracon.h
+           dcmfg/libsrc/fgderimg.cc
+           dcmfg/libsrc/fgfracon.cc
+           dcmiod/include/dcmtk/dcmiod/iodmacro.h
+           dcmiod/include/dcmtk/dcmiod/modequipment.h
+           dcmiod/libsrc/iodmacro.cc
+           dcmiod/libsrc/modequipment.cc
+           dcmiod/libsrc/modgeneralimage.cc
+           dcmseg/include/dcmtk/dcmseg/segment.h
+           dcmseg/include/dcmtk/dcmseg/segtypes.h
+           dcmseg/libsrc/segtypes.cc
+
+- Added UID validity checking.
+  Affects: dcmseg/libsrc/segment.cc
+
+**** Changes from 2016.02.09 (riesmeier)
+
+- Added prefix "DCMTK_" to public macro:
+  Added prefix "DCMTK_" to public macro "EXPLICIT_SPECIALIZATION", which is
+  used for explicit template specialization. This name change should avoid
+  possible conflicts. Also moved the macro definition in the "dcmsr" module
+  to a header file and introduced protection against double definition.
+  Affects: dcmimgle/include/dcmtk/dcmimgle/dipxrept.h
+           dcmsr/include/dcmtk/dcmsr/dsdefine.h
+           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
+
+**** Changes from 2016.02.09 (eichelberg)
+
+- Fixed uninitialized struct in libcharls decoder:
+  Fixed unitialized struct in libcharls decoder that sometimes caused
+  the decoder to refuse correctly compressed bitstreams.
+  Thanks to Bruno Milutin <bmilutin at digithurst.de> for the bug report and fix.
+  Affects: dcmjpls/libcharls/header.cc
+
+**** Changes from 2016.02.08 (riesmeier)
+
+- Added comment on missing conditional attribute:
+  Added comment that the conditional attribute Pixel Origin Interpretation
+  (0048,0301) is not yet supported by the DSRSpatialCoordinatesValue class.
+  This attribute is required if the referenced SOP instance is a VL Whole
+  Slide Microscopy Image.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrscovl.h
+
+**** Changes from 2016.02.08 (onken)
+
+- Added support for Correction Proposal CP-1496:
+  Added Tracking ID and Tracking UID to Segmentation segments in order to allow
+  tracking of lesions or other observations over time. This change was introduced
+  in CP-1496.
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Affects: dcmseg/include/dcmtk/dcmseg/segment.h
+           dcmseg/libsrc/segment.cc
+
+**** Changes from 2016.02.08 (riesmeier)
+
+- Fixed warnings when compiled without libxml:
+  Fixed various warnings on unused variables when compiled without libxml.
+  These warnings were reported by gcc 4.8.4 with additional flag "-Wextra".
+  Affects: dcmdata/apps/dcmdump.cc
+           dcmsr/apps/dsr2html.cc
+           dcmsr/apps/dsrdump.cc
+           ofstd/libsrc/ofchrenc.cc
+
+**** Changes from 2016.02.07 (onken)
+
+- Fixed compiler warnings about unused parameters:
+  Fixed compiler warnings about unused method parameters by adding either dummy
+  uses, removing them from the parameter list (if possible, i.e. if not
+  overwriting a derived function) or adding the corresponding checks.
+  Also removed bonus functions which have still been marked as TODO.
+  Added:   dcmseg/apps/CMakeLists.txt
+  Affects: dcmfg/include/dcmtk/dcmfg/fgfracon.h
+           dcmfg/include/dcmtk/dcmfg/fgframevoilut.h
+           dcmfg/include/dcmtk/dcmfg/fgpixmsr.h
+           dcmfg/include/dcmtk/dcmfg/fgplanposvol.h
+           dcmfg/include/dcmtk/dcmfg/fgrealworldvaluemapping.h
+           dcmfg/libsrc/fgfracon.cc
+           dcmfg/libsrc/fgframevoilut.cc
+           dcmfg/libsrc/fgimagedatatype.cc
+           dcmfg/libsrc/fgpixmsr.cc
+           dcmfg/libsrc/fgplanposvol.cc
+           dcmfg/libsrc/fgrealworldvaluemapping.cc
+           dcmfg/libsrc/fgusimagedescription.cc
+           dcmiod/include/dcmtk/dcmiod/modenhusimage.h
+           dcmiod/include/dcmtk/dcmiod/modgeneralseries.h
+           dcmiod/include/dcmtk/dcmiod/modimagepixel.h
+           dcmiod/include/dcmtk/dcmiod/modmultiframedimension.h
+           dcmiod/include/dcmtk/dcmiod/modsynchronisation.h
+           dcmiod/libsrc/iodmacro.cc
+           dcmiod/libsrc/modenhusimage.cc
+           dcmiod/libsrc/modenhusseries.cc
+           dcmiod/libsrc/modgeneralseries.cc
+           dcmiod/libsrc/modimagepixel.cc
+           dcmiod/libsrc/modmultiframedimension.cc
+           dcmiod/libsrc/modsynchronization.cc
+           dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/libsrc/segdoc.cc
+
+- Add Referenced Performed Procedure Step Sequence.
+  Affects: dcmiod/include/dcmtk/dcmiod/modgeneralseries.h
+           dcmiod/libsrc/modgeneralseries.cc
+
+- Removed broken, unused, doublette method.
+  Affects: dcmnet/include/dcmtk/dcmnet/dccftsmp.h
+           dcmnet/libsrc/dccftsmp.cc
+
+- Allow access to Referenced PPS.
+  Affects: dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/libsrc/segdoc.cc
+
+- Use position parameter.
+  Affects: dcmseg/libsrc/segment.cc
+
+**** Changes from 2016.02.05 (riesmeier)
+
+- Fixed various warnings reported by "gcc -Wextra":
+  Fixed various warnings on unused variables reported by gcc 4.8.4 with
+  additional flag "-Wextra".
+  Affects: dcmnet/libsrc/dstorscu.cc
+           dcmnet/libsrc/scp.cc
+           dcmrt/include/dcmtk/dcmrt/drmimage.h
+           dcmrt/libsrc/drtmas.cc
+           ofstd/libsrc/ofcmdln.cc
+           ofstd/libsrc/offile.cc
+           ofstd/libsrc/ofuuid.cc
+           ofstd/libsrc/ofxml.cc
+
+- Restructured print() output of included templates:
+  Removed printTemplate() method from DSRIncludedTemplateTreeNode since it is
+  not needed any longer. Also fixed numbering of content items in included
+  subtree (now depends on certain print flag).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Overwrite isShort() in DSRIncludedTemplateTreeNode:
+  Overwrite isShort() method in class DSRIncludedTemplateTreeNode. Since the
+  base class DSRDocumentTreeNode always returns OFTrue, it makes sense to
+  check the content in the derived tree node class. Of course, rendering a
+  document tree with "included templates" is currently not supported, so the
+  isShort() method is probably never really used in this context.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrtpltn.cc
+
+- By default, convert wide char encoding to UTF-8:
+  Changed default value of parameter "convert" for both the constructor and
+  the set() method of the OFFilename class, which expects a "wchar_t *", from
+  "OFFalse" to "OFTrue". That means, a character string that is passed with
+  Windows UTF-16 encoding will be converted to UTF-8 (char *) encoding. This
+  change of the default behavior makes sense since e.g. the output of an
+  OFFilename instance to the logger always happens with UTF-8 encoding.
+  Affects: ofstd/include/dcmtk/ofstd/offile.h
+
+- Fixed documentation of convertToWideCharString():
+  Fixed documentation of parameter "toString" of convertToWideCharString():
+  the value of this result variable might only be NULL if memory is exhausted.
+  Affects: ofstd/include/dcmtk/ofstd/ofchrenc.h
+
+**** Changes from 2016.02.04 (riesmeier)
+
+- Changed print() output of included SR templates:
+  Slightly changed the output of the print() method for "included template"
+  tree nodes: The line indentation and output of the position counter is now
+  also shown for this "internal" node (and not only for the included subtree);
+  the position counter is increased by 1 as it is true for all other tree
+  nodes, which makes it easier and more consistent when determining the target
+  of by-reference relationships. However, there is still some work to do...
+  Also, the separate line for the included SR template (starting with the text
+  "# INCLUDE ...") is now printed by default. Therefore, the name of the print
+  flag changed from PF_printXXX to PF_hideXXX.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtypes.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Further enhanced checkSubTreeConstraints():
+  Added initial support for "included templates" to checkSubTreeConstraints().
+  At least, subtrees with included SR templates are not rejected any longer.
+  However, since no further checks are performed, a message is reported to the
+  trace logger.
+  Also added a new test case in order to check whether "included templates" are
+  really accepted when inserting a sub-template into a root template (with an
+  appropriate IOD constraint checker enabled).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtpl.cc
+
+- Improved check for valid reference to SR template:
+  Improved check for a valid reference (shared pointer) to the included SR
+  template that is managed by this document tree node class.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrtpltn.cc
+
+- Enhanced documentation of constructor:
+  Added a comment to the constructor that the template identification is also
+  set if available from the referenced SR template.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+
+- Made all canXXX() methods constant:
+  Made methods canAddContentItem(), canAddByReferenceRelationship() and
+  canInsertSubTree() constant since they do not modify the object.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+**** Changes from 2016.02.03 (riesmeier)
+
+- Minor fixes to module page of "dcmsr".
+  Affects: dcmsr/docs/dcmsr.dox
+
+**** Changes from 2016.02.02 (riesmeier)
+
+- Use addContentItem() for by-value relations only:
+  Made clear that addContentItem() should be used for by-value relationships
+  only. This is now also checked and a new test case makes sure that it works.
+  Furthermore, do not accept the internal value type VT_includedTemplate for
+  this method. All this is checked by the helper method canAddContentItem().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrdoctr.cc
+
+- Reintroduced further methods from base class:
+  Added various hasXXX() methods and countChildNodes() from the base classes
+  to the derived template classes. All these methods are "constant", i.e. they
+  do not change the object.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+
+**** Changes from 2016.02.01 (riesmeier)
+
+- Enhanced support for by-reference relationships:
+  Further enhanced support for by-reference relationships, e.g. by restoring
+  these type of relationships on a clone of the document (sub)tree. Also report
+  details to the debug logger if adding a by-reference relationship fails (for
+  some reason). Finally, added an initial version of a new test case that should
+  make sure that by-reference relationships work with "included templates".
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtpl.cc
+
+- Added more iterator methods to template classes:
+  Added more of the iterator methods from the base classes to the derived
+  template classes, e.g. gotoRoot(), gotoChild(), gotoNext() or iterate().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+
+- Declared getParentNode() method "const":
+  Now that OFStack::top() exists in a "const" version, there is not reason
+  anymore not to declare the getParentNode() method "const". So just do it.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+- Added "const" version of OFStack::top():
+  Added "const" version of top() method to OFStack class as it is defined
+  for the standard (STL) class std::stack. Also fixed various documentation
+  related issues.
+  Affects: ofstd/include/dcmtk/ofstd/ofstack.h
+
+- Removed unneeded type definitions for Windows:
+  Removed unneeded type definitions introduced for calling functions from the
+  "SNMP Utility Library" (snmpapi.dll) on the Windows operating system.
+  Affects: dcmdata/libsrc/dcuid.cc
+
+- Fixed issue with getMACAddress() on Windows 8++:
+  Fixed issue with getMACAddress() on some Windows 8 (and newer) systems.
+  Removed unneeded call to SnmpExtensionQuery() that caused a crash on such
+  systems.
+  Thanks to forum user "andreasb" for the report and suggested fix, and to
+  forum user "Rich in Soquel" for confirming that this fix also solves an
+  issue on Windows 10.
+  Closes DCMTK Bug #594 (hopefully)
+  Affects: dcmdata/libsrc/dcuid.cc
+
+**** Changes from 2016.01.30 (riesmeier)
+
+- Extracted expandIncludedTemplates() method:
+  Extracted code from createExpandedSubTree() for the new protected method
+  expandIncludedTemplates(). This new method might be used in the future for
+  expanding the current (sub)tree, i.e. without creating a new one.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Never accept by-reference relations to templates:
+  Never accept by-reference relationships to internal "included template"
+  content items. This check might be useful for future SR templates that
+  are implemented as part of the "dcmsr/cmr" submodule.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+**** Changes from 2016.01.29 (riesmeier)
+
+- Overwrite print() method in document tree class:
+  Overwrite print() method from base class (DSRDocumentSubTree) in document
+  tree class in order to hide additional parameter(s) on the main API level.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Further enhanced support for included templates:
+  Enhanced support for included (non-expanded) templates in print() method of
+  document (sub)tree class. Now, the position counter of nested content items
+  also works correctly for these "virtual" content items (i.e. with included
+  subtrees). Also the complexity of the print() method code could be reduced.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+           dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Extracted position counter from cursor class:
+  Extracted a new DSRPositionCounter class from the existing DSRTreeNodeCursor
+  class. This will allow for enhancing the print() method of the document (sub)
+  tree class, especially with regard to the support of included templates.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/dsrposcn.h
+           dcmsr/libsrc/dsrposcn.cc
+  Affects: dcmsr/apps/Makefile.dep
+           dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+           dcmsr/include/dcmtk/dcmsr/dsrtree.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+           dcmsr/tests/Makefile.dep
+
+- Declared some very simple methods "inline".
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+           dcmsr/include/dcmtk/dcmsr/dsrtree.h
+
+- Use consistent spelling of the word "data set":
+  Made sure that the spelling of the word "data set" is consistent (i.e. not
+  "dataset") at least for the log messages of the main DICOM parser classes.
+  Also fixed typos if encountered.
+  Affects: dcmdata/apps/dcm2xml.cc
+           dcmdata/libsrc/dcdatset.cc
+           dcmdata/libsrc/dcddirif.cc
+           dcmdata/libsrc/dcelem.cc
+           dcmdata/libsrc/dcfilefo.cc
+           dcmdata/libsrc/dcitem.cc
+
+- Added a warning on invalid attribute tags:
+  Added a warning message on invalid DICOM elements in a dataset or item,
+  i.e. elements with an attribute tag of the group 0x0000 to 0x0003, 0x0005,
+  0x0007 or 0xFFFF. Now, for both file meta information header and dataset
+  a warning is reported.
+  Thanks to Mathieu Malaterre <mathieu.malaterre at gmail.com> for the original
+  reports and a sample DICOM file.
+  Affects: dcmdata/libsrc/dcitem.cc
+
+**** Changes from 2016.01.27 (riesmeier)
+
+- Fixed issue with addPersonObserver() in TID 1001:
+  Fixed issue when calling addPersonObserver() in TID1001_ObservationContext
+  for the first time _after_ addDeviceObserver() has already been called.
+  According to the SR template specification, the person observers always have
+  to be stored at the beginning of the subtree of the SR template, i.e. the
+  root node changes in such a case. Modified the test case accordingly.
+  Also see previous commit that fixes an issue on the basic tree class.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libcmr/tid1001.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Fixed issue in addNode() of basic tree class:
+  Fixed issue in addNode() method of basic tree class, which occurred when
+  adding a node or subtree before the root node of the current tree. Added
+  new test case in order to make sure that this never happens again.
+  This issue has been found when adding a "Device Observer" before a "Person
+  Observer" in TID 1001 (Observation Context). Also see next commit.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtree.h
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtree.cc
+
+- Added another test for invalid unique identifiers.
+  Affects: dcmdata/tests/tchval.cc
+
+**** Changes from 2016.01.26 (riesmeier)
+
+- Updated Makefile dependencies.
+  Affects: dcmdata/apps/Makefile.dep
+           dcmdata/libsrc/Makefile.dep
+           dcmdata/tests/Makefile.dep
+           dcmfg/libsrc/Makefile.dep
+           dcmimage/apps/Makefile.dep
+           dcmimgle/apps/Makefile.dep
+           dcmimgle/libsrc/Makefile.dep
+           dcmiod/libsrc/Makefile.dep
+           dcmiod/tests/Makefile.dep
+           dcmjpeg/apps/Makefile.dep
+           dcmjpls/apps/Makefile.dep
+           dcmnet/apps/Makefile.dep
+           dcmnet/libsrc/Makefile.dep
+           dcmnet/tests/Makefile.dep
+           dcmpstat/apps/Makefile.dep
+           dcmpstat/libsrc/Makefile.dep
+           dcmpstat/tests/Makefile.dep
+           dcmrt/apps/Makefile.dep
+           dcmrt/libsrc/Makefile.dep
+           dcmrt/tests/Makefile.dep
+           dcmseg/libsrc/Makefile.dep
+           dcmseg/tests/Makefile.dep
+           dcmsign/apps/Makefile.dep
+           dcmtls/libsrc/Makefile.dep
+           dcmwlm/libsrc/Makefile.dep
+           ofstd/libsrc/Makefile.dep
+
+- Further enhanced example on included templates:
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/docs/dcmsr.dox
+
+- Added more header files to Doxygen documentation:
+  Added header files with global definitions (in this case, transfer syntaxes
+  and value representations) to the list of files that are processed by Doxygen.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/include/dcmtk/dcmdata/dcxfer.h
+
+- Added new output flag for writeXML():
+  Added new output flag XF_addCommentsForIncludedTemplate for writeXML(), which
+  allows for identifying the beginning and the end of included (non-expanded)
+  templates by means of corresponding XML comments. This might be useful for
+  debugging purposes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrtpltn.cc
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added support for new Media Application Profiles:
+  Added support for new Media Storage Application Profiles that were
+  introduced with Supplement 180 (MPEG-4 AVC/H.264 Transfer Syntax):
+  General Purpose BD Interchange with MPEG-4 AVC/H.264 HiP at Level4.2
+  for 2D video, for 3D video and stereo (STD-GEN-BD-MPEG4-HPLV42-2D,
+  STD-GEN-BD-MPEG4-HPLV42-3D, STD-GEN-BD-MPEG4-SHPLV42).
+  Closes DCMTK Conformance #641 and #643.
+  Affects: dcmdata/apps/dcmgpdir.cc
+           dcmdata/include/dcmtk/dcmdata/dcddirif.h
+           dcmdata/libsrc/dcddirif.cc
+           dcmjpeg/docs/dcmmkdir.man
+
+- Added support for Direcory Record Type "TRACT":
+  Added support for new Directory Record Type "TRACT", which has been
+  introduced with Supplement 181 (Tractography Results Storage SOP Class).
+  Closes DCMTK Conformance #664.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcddirif.h
+           dcmdata/include/dcmtk/dcmdata/dcdirrec.h
+           dcmdata/libsrc/dcddirif.cc
+           dcmdata/libsrc/dcdirrec.cc
+
+- Fixed copying of tracking information (TID 1411):
+  Fixed copying of tracking information from a referenced segmentation object:
+  According to CP-1496 the Tracking ID and Tracking UID are stored in an item
+  in the Segment Sequence, so further code is needed to find the appropriate
+  item. Also adapted the test case accordingly.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
+           dcmsr/libcmr/tid1411.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added new variant of setRealWorldValueMap():
+  Added new variant of adding/setting a real world value map to the template
+  (TID 1411 - Row 14). SOP Class UID and SOP Instance UID are copied from a
+  given DICOM dataset (similar to setReferencedSegment() which has been added
+  by the previous commit).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
+           dcmsr/libcmr/tid1411.cc
+           dcmsr/tests/tsrcmr.cc
+
+**** Changes from 2016.01.25 (riesmeier)
+
+- Added new variant of setReferencedSegment():
+  Added new variant of adding/setting a referenced segment to the template
+  (TID 1411 - Row 7). According to CP-1494 the Tracking ID and Tracking UID
+  should be consistent with the corresponding element values of the referenced
+  DICOM dataset (if present).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
+           dcmsr/libcmr/tid1411.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Fixed references to DICOM Correct Items (CP-xxx).
+  Affects: dcmsr/libcmr/tid1600.cc
+           dcmsr/libsrc/dsrbascc.cc
+           dcmsr/libsrc/dsrcomcc.cc
+           dcmsr/libsrc/dsrenhcc.cc
+           dcmsr/libsrc/dsrxrdcc.cc
+           dcmsr/tests/mkreport.cc
+
+- Added support for "Station AE Title" to TID 1004:
+  Added support for new optional content item "Station AE Title" to TID 1004
+  (Device Observer Identifying Attributes). Also added required code definition
+  to "DCM" coding scheme. These changes were introduced with CP-1516.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h
+           dcmsr/include/dcmtk/dcmsr/codes/dcm.h
+           dcmsr/libcmr/tid1001.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added support for recently approved CPs:
+  Added support for CP-1460, CP-1496, CP-1499, CP-1504 and CP-1516 to the
+  data dictionary. These CPs were approved during last weeks WG-06 meeting.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Changed handling of "Qualitative Evaluations":
+  Slightly changed handling of "Qualitative Evaluations" (TID 1500 - Row 12
+  to 14). Previously, the CONTAINER in Row 12 was always created. Now, it is
+  only added if qualitative evaluations are present. This change follows the
+  clarification made in the upcoming CP-1579.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added comments on what's "to be done" (tbd).
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Added new method getSOPClassName():
+  Added new convenience method getSOPClassName() that allows for retrieving
+  the name that is associated with the SOP class UID (if any).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcomvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrsoprf.h
+           dcmsr/libsrc/dsrcomvl.cc
+           dcmsr/libsrc/dsrsoprf.cc
+
+- Added example for using SR templates:
+  Added simple example (based on TID 1500) that shows how to use SR templates.
+  Also revised the first example in order to demonstrate some enhancements
+  that were made on the DICOM SR API during the last couple of months.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/docs/dcmsr.dox
+
+- Added support of TID 1411 to TID 1500:
+  Added support of TID 1411 (Volumetric ROI Measurements) and included
+  templates to TID 1500 (Measurement Report). Now, the implementation of
+  class TID1500_MeasurementReport is complete in terms of what is required
+  by the DICOM standard and what is needed for QIICR's "Measurements SR"
+  converter. Also completed corresponding test case for TID 1500.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tsrcmr.cc
+
+- Added support for TID 1411 and included templates:
+  Added initial support for TID 1411 (Volumetric ROI Measurements) and
+  included templates TID 1502 and TID 1419. This is the first generic SR
+  template that has been implemented for this toolkit, i.e. it has SR
+  template parameters that are directly mapped to C++ template types.
+  Current support for TID 1411 is focussed on the use within TID 1500
+  (Measurement Report), which will be added by the next commit.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/cmr/tid1411.h
+           dcmsr/libcmr/tid1411.cc
+  Affects: dcmsr/apps/Makefile.dep
+           dcmsr/libcmr/CMakeLists.txt
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/Makefile.in
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/tests/Makefile.dep
+
+- Changed default value of "expandTree" parameter:
+  The default value of the "expandTree" parameter of the
+  DSRDocument::setTreeFromRootTemplate() method changed from OFFalse to OFTrue.
+  This is because some output methods like write() or renderHTML() do not yet
+  work on document trees that contain "included template" nodes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/tests/tsrtpl.cc
+
+- Added method that returns the position counter:
+  Added method that returns the value of the position counter on the current
+  level, i.e. 1 for the first child, 2 for the second child, and so on.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+- Slightly changed name of some UCUM codes:
+  The name of some UCUM (Unified Code for Units of Measure) code definitions
+  changed due to a slighly revised algorithm that generates these names
+  automatically from the official code meaning (see DICOM PS 3.16). Some code
+  names (like e.g. for "cm" or "s") now start with a lower case letter, which
+  is more intuitive.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/include/dcmtk/dcmsr/codes/ucum.h
+           dcmsr/libcmr/tid1600.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added further SRT codes needed for QIICR:
+  Added further SNOMED-RT (RT) codes that are needed for the "Measurements SR"
+  converter of the QIICR (Quantitative Image Informatics for Cancer Research)
+  project.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/codes/srt.h
+
+**** Changes from 2016.01.22 (riesmeier)
+
+- Removed renderHTML() function from subtree class:
+  Removed renderHTML() functionality from subtree and SR template classes
+  since rendering parts of an SR document in HTML format doesn't make much
+  sense. Also rendering document trees that contain included (non-expanded)
+  templates isn't supported yet. This might change in the future.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Removed write() functionality from subtree class:
+  Removed write() functionality from subtree and SR template classes since
+  writing valid DICOM SR objects does not work (yet) on this level. Also
+  writing of document trees that contain included (non-expanded) templates
+  isn't supported yet. This might change in the future.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrdoctr.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+**** Changes from 2016.01.22 (onken)
+
+- Renamed method name for consistency.
+  Affects: dcmiod/include/dcmtk/dcmiod/cielabutil.h
+           dcmiod/libsrc/cielabutil.cc
+           dcmiod/tests/tcielabutil.cc
+
+**** Changes from 2016.01.22 (riesmeier)
+
+- Minor fixes to API documentation.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+
+- Moved renderHTML() to DSRDocumentSubTree:
+  Moved second variant of the renderHTML() method, i.e. the one with less
+  parameters, from class DSRDocumentTree to DSRDocumentSubTree. By doing so,
+  the same method call can be used for both root and non-root templates.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Added check for included templates to renderHTML():
+  Added check for included (non-expanded) templates to renderHTML() method.
+  In such a case, a new error code SR_EC_CannotProcessIncludedTemplates is
+  returned. Rendering these kind of documents is something that might be
+  supported in the future.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+           dcmsr/libsrc/dsrtypes.cc
+
+- Fixed issue with renderHTML() for document subtree:
+  Fixed an issue when using renderHTML() for a document subtree that does not
+  have a single root node, e.g. for a sub-template like TID 1001 (Observation
+  Context).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Fixed wrong output of node ID in print():
+  Fixed wrong output of node ID for "included templates" in print() method.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Fixed issue with writeXML() for document subtree:
+  Fixed an issue when using writeXML() for a document subtree that does not
+  have a single root node, e.g. for an included sub-template like TID 1001
+  (Observation Context).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Used hasTemplateIdentification() method more often.
+  Affects: dcmsr/libsrc/dsrdoctn.cc
+
+**** Changes from 2016.01.21 (riesmeier)
+
+- Fixed minor issues with Doxygen documentation:
+  Also fixed some typos and made source code formatting more consistent.
+  Affects: dcmdata/apps/mdfdsman.h
+           dcmdata/include/dcmtk/dcmdata/dcmetinf.h
+           dcmdata/include/dcmtk/dcmdata/dcvrulup.h
+           dcmnet/include/dcmtk/dcmnet/dccftsmp.h
+           ofstd/include/dcmtk/ofstd/ofcmdln.h
+           ofstd/include/dcmtk/ofstd/oftempf.h
+
+- Added isComplete() to composite reference class:
+  Added new method isComplete() to DSRCompositeReferenceValue, which checks
+  whether the mandatory components are present (non-empty). This is a more
+  basic check than isValid(). However, it is not the counterpart of isEmpty().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcomvl.h
+           dcmsr/libsrc/dsrcomvl.cc
+
+- Added support for new UID from Supplement 181:
+  Added support for new Storage SOP Class UID from Supplement 181
+  (Tractography Results Storage SOP Class).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmnet/etc/storescu.cfg
+           dcmqrdb/docs/dcmqrscp.man
+
+- Added test for recently introduced VR "Other Long".
+  Added:   dcmdata/tests/tvrol.cc
+  Affects: dcmdata/tests/CMakeLists.txt
+           dcmdata/tests/Makefile.dep
+           dcmdata/tests/Makefile.in
+           dcmdata/tests/tests.cc
+
+- Added support for Supplement 181 to dictionary:
+  Added support for the final text version of Supplement 181 (Tractography
+  Results Storage SOP Class) to the data dictionary.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Added helper function putAndInsertUint32Array():
+  Added helper function putAndInsertUint32Array() that can be used for both
+  Unsigned Long (UL) and Other Long (OL) elements.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/libsrc/dcitem.cc
+
+- Added support for new value representation "OL":
+  Added support for new value representation "Other Long" (OL) that has been
+  introduced only recently with Supplement 181 (Tractography Results Storage
+  SOP Class).
+  Closes DCMTK Conformance #664 (partially).
+  Added:   dcmdata/include/dcmtk/dcmdata/dcvrol.h
+           dcmdata/libsrc/dcvrol.cc
+  Affects: dcmdata/apps/dump2dcm.cc
+           dcmdata/docs/dump2dcm.man
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/include/dcmtk/dcmdata/dctk.h
+           dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/include/dcmtk/dcmdata/dcvrul.h
+           dcmdata/libsrc/CMakeLists.txt
+           dcmdata/libsrc/Makefile.dep
+           dcmdata/libsrc/Makefile.in
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcvr.cc
+           dcmdata/libsrc/dcvrul.cc
+           dcmdata/tests/telemlen.cc
+           dcmdata/tests/tests.cc
+
+- Made use of isAffectedBySpecificCharacterSet():
+  Use isAffectedBySpecificCharacterSet() instead of checking the VRs that
+  are affected by the specific character set manually. This should make sure
+  that new VRs are not forgotten (like in this case "UC").
+  Affects: dcmdata/apps/xml2dcm.cc
+
+- Changed name of dcmEnableXXX global variables:
+  Changed name of global variable dcmEnableOtherFloatStringVRGeneration and
+  dcmEnableOtherDoubleStringVRGeneration: removed the term "String" from the
+  names. This change should be harmless since most people will probably use
+  the global function dcmEnable/DisableGenerationOfNewVRs() - if at all.
+  Also see commit 280638e.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/libsrc/dcvr.cc
+
+- Removed unneeded includes and fixed comments.
+  Affects: dcmdata/libsrc/dcvrfl.cc
+           dcmdata/libsrc/dcvrod.cc
+           dcmdata/libsrc/dcvrof.cc
+
+- Fixed wrong use of getVM() in print() method:
+  Since the derived class DcmOtherDouble always has a value multiplicity of 1
+  getVM() cannot be used to determine the number of values stored. So, use
+  the length field instead (as in other similar cases).
+  Affects: dcmdata/libsrc/dcvrfd.cc
+
+**** Changes from 2016.01.21 (onken)
+
+- FormatMessage() instead of hand-crafted switch():
+  Use FormatMessage() in order to get an error code description instead of
+  enumerating all string values in a switch() statement. Made Unix strerror()
+  call thread-safe by using OFStandard version. Fixed typo.
+  Affects: dcmnet/libsrc/diutil.cc
+
+**** Changes from 2016.01.20 (riesmeier)
+
+- Enhanced API documentation:
+  Slightly enhanced API documentation on class DSRTreeNodeCursor.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+- Removed empty source file for DSRTreeNodeCursor:
+  Removed empty source file for the DSRTreeNodeCursor class. The
+  implementation of the template class has been moved to the header file
+  with commit 6171318. Some linkers complained about the empty file.
+  Removed: dcmsr/libsrc/dsrtncsr.cc
+  Affects: dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+
+- Moved some print() code from node to tree class:
+  Moved some code from the print() method of the DSRIncludedTemplateTreeNode
+  class to the print() method of the DSRDocumentSubTree class.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Added method to compare template identification:
+  Added method to the document subtree, tree node and SR template classes that
+  allows for an easier comparison of the template identification.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
+           dcmsr/libsrc/dsrctpl.cc
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/tests/tsrcmr.cc
+           dcmsr/tests/tsrtpl.cc
+
+- Added further SRT codes needed for TID 1500:
+  Added further SNOMED-RT codes that are needed for TID 1500 (Measurement
+  Report) and included sub-templates.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/codes/srt.h
+
+- Modified readable name of internal types:
+  Slightly changed readable name of internal relationship type RT_isRoot and
+  internal value type VT_includedTemplate. This might be useful for debugging
+  purposes.
+  Affects: dcmsr/libsrc/dsrtypes.cc
+
+- Fixed issue with definition of E_ValueType:
+  When the new (internal) value type VT_includedTemplate was introduced,
+  the indicator for the last entry in the enum (VT_last) has not been
+  updated. This impacted the various valueTypeToXXX() helper functions.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+
+**** Changes from 2016.01.20 (onken)
+
+- Removed accidentially checked-in test code.
+  Affects: dcmnet/apps/dcmrecv.cc
+
+- Better logging of select() on network:
+  When waiting for network data using select() it has not been distinguishable
+  whether a regular timeout occurred or if another error (such as an interrupt)
+  interrupted the call. Now, debug output is written in order to make it easier
+  to see what exactly happened (especially in case of errors).
+  Thanks to forum user michael12345 for the report.
+  Affects: dcmnet/apps/dcmrecv.cc
+           dcmnet/include/dcmtk/dcmnet/diutil.h
+           dcmnet/libsrc/assoc.cc
+           dcmnet/libsrc/dcmtrans.cc
+           dcmnet/libsrc/diutil.cc
+           dcmnet/libsrc/dul.cc
+           dcmnet/libsrc/dulextra.cc
+           dcmnet/libsrc/dulfsm.cc
+           dcmpstat/tests/msgserv.cc
+           dcmtls/libsrc/tlstrans.cc
+
+**** Changes from 2016.01.19 (riesmeier)
+
+- Do no treat empty included template as error:
+  Made sure that an empty included template is not treated as an error in the
+  various output methods like writeXML() or renderHTML(). Instead, EC_Normal
+  is returned (see API documentation).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Output numeric value qualifier in print():
+  Added output of optional numeric value qualifier in print() method if the
+  numeric measurement value is empty.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrnumvl.cc
+
+**** Changes from 2016.01.19 (onken)
+
+- Avoid warning if size_t mismatches unsigned long.
+  Affects: dcmiod/include/dcmtk/dcmiod/iodutil.h
+
+- Avoid warning when initialzing srand():
+  Some systems report a warning when using time_t to initialize srand().
+  A cast was added which should be safe since we are not interested into
+  the exact number time() returns but in a "random" initialization value.
+  Affects: dcmiod/tests/tcielabutil.cc
+
+- Fixed #define for including time.h.
+  Affects: dcmiod/tests/tcielabutil.cc
+
+**** Changes from 2016.01.19 (riesmeier)
+
+- Enhanced error checking of writeXML() method:
+  Enhanced error checking of writeXML() method, i.e. made sure that errors
+  caused by nested elements are actually reported to the caller. This also
+  required a minor change in the "dcm2xml" command line tool.
+  Affects: dcmdata/apps/dcm2xml.cc
+           dcmdata/libsrc/dcdatset.cc
+           dcmdata/libsrc/dcdirrec.cc
+           dcmdata/libsrc/dcfilefo.cc
+           dcmdata/libsrc/dcitem.cc
+           dcmdata/libsrc/dcmetinf.cc
+           dcmdata/libsrc/dcsequen.cc
+
+- Used more specific conditions than EC_IllegalCall:
+  Used more specific condition codes than EC_IllegalCall when there is an
+  issue with the character set options or the character set encoding of the
+  DICOM dataset.
+  Affects: dcmdata/apps/dcm2xml.cc
+
+**** Changes from 2016.01.18 (onken)
+
+- Added missing shared library export macro.
+  Affects: dcmiod/include/dcmtk/dcmiod/cielabutil.h
+
+**** Changes from 2016.01.18 (riesmeier)
+
+- Added class CMR_SRNumericMeasurementValueWithUnits:
+  Introduced derived template class CMR_SRNumericMeasurementValueWithUnits
+  that allows for checking the measurement unit based on a given context group
+  (baseline or defined group). Also added new test cases for this purpose.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/cmr/srnumvlu.h
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrctxgr.h
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Defined short names for CID and TID classes:
+  Defined short names for context group (CID) and template (TID) classes
+  as an alternative to the existing long names. The nomenclature of these
+  type definitions is: CMR_CIDnnn (with "nnn" being the numeric identifier
+  of the context group) or CMR_TIDnnn (with "nnn" being the numeric ID of
+  the SR template), respectively.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/cid100.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10013.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10013e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10033.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid10033e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid11.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid244.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid244e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid29.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid29e.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/cid4031e.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid42.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7021.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7453.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1001.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/tests/tsrcmr.cc
+
+**** Changes from 2016.01.18 (onken)
+
+- Utilities for conversion between CIELab and RGB.
+  Added:   dcmiod/include/dcmtk/dcmiod/cielabutil.h
+           dcmiod/libsrc/cielabutil.cc
+           dcmiod/tests/CMakeLists.txt
+           dcmiod/tests/Makefile.dep
+           dcmiod/tests/tcielabutil.cc
+           dcmiod/tests/tests.cc
+  Affects: COPYRIGHT
+           dcmiod/CMakeLists.txt
+           dcmiod/Makefile.in
+           dcmiod/libsrc/CMakeLists.txt
+           dcmiod/libsrc/Makefile.dep
+           dcmiod/libsrc/Makefile.in
+           dcmiod/tests/Makefile.in
+
+**** Changes from 2016.01.15 (riesmeier)
+
+- Overwrite setValue() methods from base class:
+  Added setValue() methods that expect a CID42_NumericValueQualifier instance
+  for the "valueQualifier" parameter instead of a simple DSRCodedEntryValue.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+           dcmsr/libcmr/srnumvl.cc
+
+- Avoid output of pixel items in Native DICOM Model:
+  Added check for Native DICOM Model in writeXML() method of class DcmPixelItem
+  and return an error since output in this format is not supported.
+  Affects: dcmdata/libsrc/dcpxitem.cc
+
+**** Changes from 2016.01.14 (riesmeier)
+
+- Fixed memory leak reported by valgrind:
+  Fixed memory leak ("still reachable blocks" at program exit) that was reported
+  by valgrind in CMR_ContentMappingResource::cleanupAllContextGroups(). Instead
+  of cleanup() the initialize() function was called for the CID 7469 class.
+  Affects: dcmsr/libcmr/init.cc
+
+- Used CMR_SRNumericMeasurementValue more often:
+  Replaced type of numeric value parameters in public API from class
+  DSRNumericMeasurementValue by derived class CMR_SRNumericMeasurementValue
+  which provides additional checks, e.g. on the code used for the optional
+  value qualifier (CID 42).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/tid1600.cc
+           dcmsr/tests/Makefile.dep
+
+- Enhanced class CMR_SRNumericMeasurementValue:
+  Enhanced implementation of derived class CMR_SRNumericMeasurementValue:
+  added further constructor for "value qualifier" and copy constructor for
+  DSRNumericMeasurementValue, changed parameters of setNumericValueQualifier()
+  and added new tests.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+           dcmsr/libcmr/srnumvl.cc
+           dcmsr/tests/tsrcmr.cc
+
+**** Changes from 2016.01.13 (riesmeier)
+
+- Added support for recently added Context Groups:
+  Added support for recently added Context Group CID 6147, 7181, 7464 and 7469.
+  These groups were still missing in the global initialize/cleanup() methods.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/init.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/init.cc
+
+- Added more header files to Doxygen documentation:
+  Added header files with global definitions (in this case, error constants)
+  to the list of files that are processed by Doxygen.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+
+- Made sure file is processed by Doxygen:
+  Made sure that the header file is processed by Doxygen since it contains
+  some interesting (and also documented) global variables/settings. Fixed
+  a couple of typos and other minor issues related to the documentation.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcobject.h
+
+- Replaced call of isValid() by isComplete():
+  Replaced call of DSRCodedEntryValue::isValid() by the recently introduced
+  isComplete() method where appropriate. Also fixed a couple of wrong calls of
+  addChildContentItem() instead of addContentItem(), which makes no difference
+  for an empty document tree anyway.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libcmr/tid1500.cc
+           dcmsr/libcmr/tid1600.cc
+
+- Always pass "check" parameter to addContentItem().
+  Affects: dcmsr/libcmr/tid1001.cc
+           dcmsr/libcmr/tid1204.cc
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/libcmr/tid1600.cc
+
+- Flag for default creation of empty image library:
+  Added optional flag to the constructor that allows for disabling the default
+  creation of an empty image library. This approach is now consistent with the
+  upcoming class for TID 1411 (Volumetric ROI Measurements).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/libcmr/tid1600.cc
+
+- Allowed read-only access to frame/segment list:
+  Added const variants of getFrame/SegmentList(), e.g. in order to check the
+  number of items stored in the list.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrimgvl.h
+
+- Enhanced check on Segmentation objects:
+  Enhanced check on DICOM Segmentation objects that are referenced by an
+  instance of DSRImageReferenceValue. On the one hand, the list of known
+  Storage SOP Classes has been updated for the latest edition of the
+  DICOM standard (2015c); the Surface Segmentation object was missing.
+  On the other hand, the list of referenced segment numbers is only allowed
+  for Segmentation objects, which is now also checked.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrimgvl.h
+           dcmsr/libsrc/dsrimgvl.cc
+
+- Added further constructor and setValue() method:
+  Added another constructor and setValue() method which accept a coded entry
+  representing the numeric value qualifier, i.e. the reason why the numeric
+  value and measurement unit are absent.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrnumvl.cc
+           dcmsr/tests/tsrnumvl.cc
+
+- Added method isComplete() to numeric value class:
+  Added new method isComplete() to DSRNumericMeasurementValue, which checks
+  whether the mandatory components are present (and complete). This is a much
+  more basic check than isValid() provides. However, it is not the counterpart
+  of isEmpty().
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrnumvl.cc
+           dcmsr/tests/tsrnumvl.cc
+
+- Checked standard for defined Waveform objects:
+  Checked current edition of the DICOM standard (2015c) for the list of
+  defined Waveform objects and updated the documentation accordingly.
+  Since the last check (DICOM 2014a), no new SOP Classes were added.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrwavvl.h
+           dcmsr/libsrc/dsrwavvl.cc
+
+- Minor fixes to API documentation.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+
+- Harmonized log output of DICOM attribute names:
+  Don't mix keywords (CamelCase) with attribute names anymore. Always use the
+  official attribute names in log messages, i.e. with space characters. Of
+  course, this only applies to manually written messages. In case the name
+  is derived automatically from the attribute tag, the official keyword from
+  the DICOM data dictionary (PS 3.6) is used.
+  Affects: dcmsr/libsrc/dsrcodvl.cc
+           dcmsr/libsrc/dsrcsidl.cc
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrdoctr.cc
+           dcmsr/libsrc/dsrimgvl.cc
+           dcmsr/libsrc/dsrsc3vl.cc
+           dcmsr/libsrc/dsrscovl.cc
+           dcmsr/libsrc/dsrtcovl.cc
+
+- Added initial version of NCIt code definitions:
+  Added initial version of the NCI Thesaurus (Coding Scheme "NCIt") code
+  definitions as used/defined by the DICOM standard.
+  The code definitions are generated semi-automatically from the machine-readable
+  DocBook/XML version of DICOM PS 3.16 (DICOM Content Mapping Resource). That
+  means that the definitions will be updated from time to time as the standard
+  evolves. However, please be warned that the names of the constants/defines
+  might change in the future (hopefully, there will be official keywords in the
+  standard like they are for the DICOM attribute tags in PS 3.6).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/codes/ncit.h
+
+**** Changes from 2016.01.12 (riesmeier)
+
+- Allowed public access to referenced template:
+  Allowed public access (get and set method) to the referenced template that
+  is managed by the class DSRIncludedTemplateTreeNode. That way, there is no
+  need any more for the inelegant "friend" declaration. Also the API is now
+  more consistent with other "node" classes, even though this class is used
+  only for internal purposes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Fixed minor issues when using C++11 STL:
+  Fixed minor issues when compiling with gcc 4.8.4 and C++11 STL enabled.
+  In C++11 mode, some implicit type conversions do not seem to work, so
+  make them more explicit.
+  Affects: dcmsr/libsrc/dsrtpltn.cc
+           dcmsr/tests/tsrtpl.cc
+
+**** Changes from 2016.01.11 (onken)
+
+- Fixed DCMTK C++11 STL-enabled build:
+  Missing include led to failures since std::cout could not be found any more.
+  Affects: ofstd/libsrc/ofmath.cc
+
+**** Changes from 2016.01.11 (riesmeier)
+
+- Fixed another issue with createExpandedSubTree():
+  When an empty "included template" content item was processed, i.e. removed
+  from the resulting document tree, the next content item was skipped by
+  mistake. This was detected when enhancing a test case for the upcoming
+  support of TID 1411 (which is included in TID 1500 - Row 8).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/libsrc/dsrdocst.cc
+
+- Avoid checking the pointer returned by getNode():
+  Avoid checking the pointer returned by getNode() method if it is clear that
+  it cannot be NULL, e.g. because the internal cursor has already been checked
+  for validity or a previous call of an iteration method returned a non-zero
+  value.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtree.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrdoctr.cc
+           dcmsr/tests/tsrtree.cc
+
+- Enhanced derived implementation of countNodes():
+  Enhanced implementation of countNodes() in derived document tree classes by
+  providing two optional flags that allow for specifying how to count
+  and process "included templates", e.g. whether the content of included (but
+  not expanded) sub-templates is counted like a normal subtree with all of its
+  nodes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Added new method isCursorValid():
+  Added method that checks whether the internal cursor of a document tree,
+  which points to the current content item, is valid. This new method is also
+  available to the derived SR template classes.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/libsrc/dsrdocst.cc
+
+**** Changes from 2016.01.10 (onken)
+
+- Fixed typo in error message.
+  Affects: dcmfg/libsrc/fginterface.cc
+
+- Fixed bug when packaging binary segmentations:
+  Segmentations bits are filled into the byte from right to left, i.e. starting
+  from the least significant bit of the first byte to the most significant bit
+  of the last byte in the Pixel Data element. The old implementation filled the
+  bytes in the correct order, however, the bits have been filled in from the
+  wrong order. This was discovered since another implementation was available for
+  interoperability testing.
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Affects: dcmseg/libsrc/segutils.cc
+
+- Fixed comment.
+  Affects: dcmseg/libsrc/segdoc.cc
+
+**** Changes from 2016.01.08 (riesmeier)
+
+- Updated Makefile dependencies.
+  Affects: dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/Makefile.dep
+
+- Fixed issue expanding empty included template:
+  Fixed an issue that occurred when trying to expand a document tree that
+  contains an empty included template. This resulted in an error status
+  returned by DSRDocumentSubTree::createExpandedSubTree().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Added support for CID 6147, 7181, 7464 and 7469:
+  Added support for Context Group CID 6147 (Response Criteria), CID 7181
+  (Abstract Multi-dimensional Image Model Component Units), CID 7464 (General
+  Region of Interest Measurement Modifiers) and 7469 (Generic Intensity and
+  Size Measurements), which will be needed for using the upcoming template
+  class of TID 1411 (Volumetric ROI Measurements) within TID 1500 (Measurement
+  Report). As always, all these new files were generated automatically.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/cmr/cid6147.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7181.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7464.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7469.h
+           dcmsr/libcmr/cid6147.cc
+           dcmsr/libcmr/cid7181.cc
+           dcmsr/libcmr/cid7464.cc
+           dcmsr/libcmr/cid7469.cc
+  Affects: dcmsr/libcmr/CMakeLists.txt
+           dcmsr/libcmr/Makefile.in
+
+- Regenerated context groups with new script version:
+  Regenerated all context group header and source files with a new version
+  of the XSLT script. There was only a single change in the name of an enum.
+  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/cid7021.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7445.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7452.h
+           dcmsr/include/dcmtk/dcmsr/cmr/cid7453.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/cid7021.cc
+           dcmsr/libcmr/cid7445.cc
+           dcmsr/libcmr/cid7452.cc
+           dcmsr/libcmr/cid7453.cc
+
+- Fixed imprecise documentation of parameter:
+  Distinguish more clearly between "numeric value" and "measurements".
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/srnumvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrnumvl.cc
+
+**** Changes from 2016.01.07 (riesmeier)
+
+- Fixed minor Doxygen-related issues:
+  Also updated the copyright date (where appropriate).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdoctn.cc
+
+- Added new method hasExtendedCodedEntries():
+  Added new method hasExtendedCodedEntries() to the context group base
+  class, which allows for checking whether the group has any extended,
+  i.e. non-standard coded entries. Also changed two virtual functions
+  to "inline" (as it was intended).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrctxgr.h
+           dcmsr/libsrc/dsrctxgr.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Introduced new printExtended() method:
+  Extracted output of extended information on a content item from the general
+  print() method of the DSRDocumentSubTree class and moved this code to the
+  new printExtended() method of the DSRDocumentTreeNode class. In other words,
+  the resulting output is the same but the internal structure is now clearer.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoctn.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+
+- Fixed wrong call of gotoLastEntryFromNodeList():
+  Replaced wrong call of gotoLastEntryFromNodeList() by gotoEntryFromNodeList().
+  In practice, this should make no difference but now the correct function is
+  called.
+  Affects: dcmsr/libcmr/tid1500.cc
+
+**** Changes from 2016.01.06 (riesmeier)
+
+- Added full support for qualitative evaluations:
+  Added full support for qualitative evaluations (TID 1500 - Row 13 and 14),
+  e.g. for categorial observations that are related to the entire subject of
+  the report rather than specific measurement groups (DICOM PS 3.16).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Added new method isComplete() to coded entry class:
+  Added new method isComplete() to DSRCodedEntryValue, which checks whether
+  the three mandatory components of a code are non-empty. This is a much more
+  basic check than isValid() provides.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+           dcmsr/libsrc/dsrcodvl.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrcodvl.cc
+
+- Added new condition constant and fixed memory leak:
+  Introduced new condition constant that is used when no image library entry
+  descriptors have been added (i.e. copied from a given dataset). Also fixed
+  a possible memory leak that could occur in such a case.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/libcmr/tid1600.cc
+
+- Added new parameter to gotoLastEntryFromNodeList():
+  Added optional parameter "firstPos" to gotoLastEntryFromNodeList(), which
+  allows for stopping the search process at a particular node list entry.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/libsrc/dsrctpl.cc
+
+- Added optional "check" parameter to addContentItem:
+  Added optional "check" parameter to convenience methods addContentItem()
+  and addChildContentItem().
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Enhanced hasXXX() by adding an optional parameter:
+  Enhanced hasImagingMeasurements() and hasQualitativeEvaluations() by adding
+  an optional parameter that allows for checking whether the respective content
+  item has any children (i.e. real content). Since the child nodes are optional
+  the default is not to check for children.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/libsrc/dsrctpl.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Slightly reworked use of xxx_RESULT helper macros:
+  Introduced new helper macros GOOD_RESULT and BAD_RESULT. Replaced helper
+  macro DELETE_ERROR by an appropriate use of the new macro BAD_RESULT.
+  In general, used the helper macros more often in order to increase the
+  readability of the source code.
+  Affects: dcmsr/libcmr/tid1001.cc
+           dcmsr/libcmr/tid1204.cc
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/libcmr/tid1600.cc
+
+- Changed variable name for reasons of consistency.
+  Affects: dcmsr/libcmr/srnumvl.cc
+
+- Added preliminary support for TID 1500 - Row 12:
+  Added preliminary support for the conditional CONTAINER content item
+  "Qualitative Evaluations" (TID 1500 - Row 12), which seems to be required
+  according to the condition given in the template definition table. Support
+  for the child content items (CODE and TEXT) will follow in a separate commit.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/tid1500.cc
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tsrcmr.cc
+
+- Added initial version of UMLS code definitions:
+  Added initial version of Unified Medical Language System (Coding Scheme
+  "UMLS") code definitions as used/defined by the DICOM standard.
+  The code definitions are generated automatically from the machine-readable
+  DocBook/XML version of DICOM PS 3.16 (DICOM Content Mapping Resource). That
+  means that the definitions will be updated from time to time as the standard
+  evolves. However, please be warned that the names of the constants/defines
+  might change in the future (hopefully, there will be official keywords in the
+  standard like they are for the DICOM attribute tags in PS 3.6).
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/codes/umls.h
+
+**** Changes from 2016.01.05 (riesmeier)
+
+- Added links to implemented SR templates:
+  Added links to the currently implemented SR templates to the Doxygen
+  documentation of the "dcmsr" module.
+  Affects: dcmsr/docs/dcmsr.dox
+
+- Added 1st version of TID 1500 (Measurement Report):
+  Added first version of TID 1500 (Measurement Report) and included templates.
+  The focus of this initial commit was on the general structure of this SR
+  template and the mandatory content items and included templates (TID 1204,
+  1001, 1600). There is also a new test case that demonstrates how to use the
+  new TID1500_MeasurementReport class. Further enhancements will follow.
+  Acknowledgement: This work and also the previous commits on the "dcmsr"
+  module have been supported in part by the "QIICR" project. See CREDITS file
+  for details.
+  Added:   dcmsr/include/dcmtk/dcmsr/cmr/tid1500.h
+           dcmsr/libcmr/tid1500.cc
+  Affects: dcmsr/libcmr/CMakeLists.txt
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/Makefile.in
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrcmr.cc
+
+- Used another document type for a test case:
+  Used another document type for the test case "dcmsr_changeDocumentType_2" in
+  order to avoid a warning message that the template identification is not set.
+  Affects: dcmsr/tests/tsrdoc.cc
+
+- Added further output methods to template classes:
+  Added write(), writeXML() and renderHTML() method to template-related classes.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrtpltn.cc
+
+- Moved further output methods to subtree class:
+  Moved write(), writeXML() and renderHTML() method from document tree to
+  subtree class. This is a preparatory step that will be completed with the
+  next commit.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Print the annotation text for included templates:
+  As for all other types of content items, the optional annotation text is now
+  also printed for the internal "included template" type.
+  Affects: dcmsr/libsrc/dsrtpltn.cc
+
+- Call clear() method of both base classes:
+  Made sure that the clear() method of both base classes is called, i.e. also
+  DSRTemplateCommon::clear() which clears the internally managed node list.
+  Affects: dcmsr/libsrc/dsrrtpl.cc
+
+- Avoid calling getSelectedValue() explicitly.
+  Affects: dcmsr/libcmr/tid1001.cc
+           dcmsr/libcmr/tid1204.cc
+
+- Enhanced reserveEntriesInNodeList():
+  Added optional parameter to reserveEntriesInNodeList() that allows for
+  initializing the entries of the node list with a value of 0.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/libsrc/dsrctpl.cc
+
+- Fixed minor inconsistencies in comments.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1204.h
+           dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+
+- Updated copyright dates.
+  Affects: COPYRIGHT
+
+**** Changes from 2015.12.30 (riesmeier)
+
+- Added support for expanding a document tree:
+  Added support for expanding a document tree, i.e. to replace all included
+  templates by their content (i.e. the subtree that is managed by the class).
+  Also added a new test case that uses (and checks) this new feature.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtpl.cc
+
+- Added support for including templates into a tree:
+  Added support for including - not inserting - templates into a document tree
+  or subtree. That means, the template-specific API is still available to the
+  user even though the tree structure that is managed by the template class
+  has been "inserted" into a (sub)tree. In order to achieve this, a new value
+  type (internal) has been added: VT_includedTemplate. Further related changes
+  will follow.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Added:   dcmsr/include/dcmtk/dcmsr/dsrtpltn.h
+           dcmsr/libsrc/dsrtpltn.cc
+  Affects: dcmsr/apps/Makefile.dep
+           dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrtypes.cc
+           dcmsr/tests/Makefile.dep
+
+- Included 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).
+  Also fixed some typos and Doxygen related issues.
+  Affects: ofstd/include/dcmtk/ofstd/ofstd.h
+
+**** Changes from 2015.12.28 (riesmeier)
+
+- Added support for replacing a node in a tree:
+  Added support for replacing the current node (and all of its child nodes)
+  of a tree by a given node (which might be the root of a subtree). This new
+  feature is needed for the upcoming enhanced SR template support.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrtree.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/tests/tests.cc
+           dcmsr/tests/tsrtree.cc
+
+- Added mapping resource to IOD constraint checker:
+  Replaced getRootTemplateIdentifier() by getRootTemplateIdentification()
+  which returns the mapping resource in addition to the identifier of the
+  root template (if any). Before, the DICOM Content Mapping Resource (DCMR)
+  was implicitly assumed when calling the getRootTemplateIdentifier() method.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsracqcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrbascc.h
+           dcmsr/include/dcmtk/dcmsr/dsrc3dcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrchecc.h
+           dcmsr/include/dcmtk/dcmsr/dsrcolcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrcomcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrenhcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrimpcc.h
+           dcmsr/include/dcmtk/dcmsr/dsriodcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrkeycc.h
+           dcmsr/include/dcmtk/dcmsr/dsrmaccc.h
+           dcmsr/include/dcmtk/dcmsr/dsrmamcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrprocc.h
+           dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrspecc.h
+           dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h
+           dcmsr/libsrc/dsracqcc.cc
+           dcmsr/libsrc/dsrbascc.cc
+           dcmsr/libsrc/dsrc3dcc.cc
+           dcmsr/libsrc/dsrchecc.cc
+           dcmsr/libsrc/dsrcolcc.cc
+           dcmsr/libsrc/dsrcomcc.cc
+           dcmsr/libsrc/dsrdoctn.cc
+           dcmsr/libsrc/dsrdoctr.cc
+           dcmsr/libsrc/dsrenhcc.cc
+           dcmsr/libsrc/dsrimpcc.cc
+           dcmsr/libsrc/dsrkeycc.cc
+           dcmsr/libsrc/dsrmaccc.cc
+           dcmsr/libsrc/dsrmamcc.cc
+           dcmsr/libsrc/dsrprocc.cc
+           dcmsr/libsrc/dsrrrdcc.cc
+           dcmsr/libsrc/dsrspecc.cc
+           dcmsr/libsrc/dsrxrdcc.cc
+
+**** Changes from 2015.12.21 (riesmeier)
+
+- Added "inline" specifier to isRootTemplate().
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrrtpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+
+- Use "const" specifier for pointer parameters:
+  Use "const" specifier for pointer parameters (where appropriate).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/include/dcmtk/dcmsr/dsrdoctr.h
+           dcmsr/libsrc/dsrdocst.cc
+           dcmsr/libsrc/dsrdoctr.cc
+
+- Fixed wrong use of gotoXXX() function call:
+  Replaced call of gotoLastEntryFromNodeList() by gotoEntryFromNodeList().
+  This change should make no difference since the method where this function
+  is called always checks whether the requested entry exists in the list of
+  node IDs.
+  Affects: dcmsr/libcmr/tid1600.cc
+
+- Added explicit type cast to avoid warnings:
+  Added explicit type cast in order to avoid compiler warnings reported by
+  gcc 4.8.4 with additional flags.
+  Affects: dcmimgle/include/dcmtk/dcmimgle/dibaslut.h
+           dcmimgle/include/dcmtk/dcmimgle/diovpln.h
+           dcmrt/libsrc/drmdose.cc
+
+**** Changes from 2015.12.18 (onken)
+
+- Disable Visual Studios min()/max() macros:
+  The DCMTK version of min() and max() defined in oflimits.h n conflicts with the
+  Visual Studio versions that are pre-defined in Windows. Thus, they are now
+  disabled in a Visual Studio build.
+  Affects: CMake/osconfig.h.in
+
+- Added missing DLL export macro to OFMath class.
+  Affects: ofstd/include/dcmtk/ofstd/ofmath.h
+
+**** Changes from 2015.12.17 (onken)
+
+- Always use isnan() and isinf() from OFMath.
+  Affects: ofstd/libsrc/ofstd.cc
+
+- Removed superfluous DLL export macro:
+  Renoved DLL export macro from static inline functions causing compiler errors
+  in shared builds.
+  Affects: ofstd/include/dcmtk/ofstd/ofstd.h
+
+**** Changes from 2015.12.16 (onken)
+
+- Regenerated dependencies for autoconf.
+  Affects: dcmdata/apps/Makefile.dep
+           dcmdata/libi2d/Makefile.dep
+           dcmdata/libsrc/Makefile.dep
+           dcmdata/tests/Makefile.dep
+           dcmfg/libsrc/Makefile.dep
+           dcmimage/apps/Makefile.dep
+           dcmimage/libsrc/Makefile.dep
+           dcmimgle/apps/Makefile.dep
+           dcmimgle/libsrc/Makefile.dep
+           dcmiod/libsrc/Makefile.dep
+           dcmjpeg/apps/Makefile.dep
+           dcmjpeg/libsrc/Makefile.dep
+           dcmjpls/apps/Makefile.dep
+           dcmjpls/libcharls/Makefile.dep
+           dcmjpls/libsrc/Makefile.dep
+           dcmnet/apps/Makefile.dep
+           dcmnet/libsrc/Makefile.dep
+           dcmnet/tests/Makefile.dep
+           dcmpstat/apps/Makefile.dep
+           dcmpstat/libsrc/Makefile.dep
+           dcmpstat/tests/Makefile.dep
+           dcmqrdb/apps/Makefile.dep
+           dcmqrdb/libsrc/Makefile.dep
+           dcmrt/apps/Makefile.dep
+           dcmrt/libsrc/Makefile.dep
+           dcmrt/tests/Makefile.dep
+           dcmseg/libsrc/Makefile.dep
+           dcmseg/tests/Makefile.dep
+           dcmsign/apps/Makefile.dep
+           dcmsign/libsrc/Makefile.dep
+           dcmsr/apps/Makefile.dep
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/tests/Makefile.dep
+           dcmtls/libsrc/Makefile.dep
+           dcmwlm/apps/Makefile.dep
+           dcmwlm/libsrc/Makefile.dep
+           dcmwlm/tests/Makefile.dep
+           oflog/libsrc/Makefile.dep
+           ofstd/libsrc/Makefile.dep
+           ofstd/tests/Makefile.dep
+           ofstd/tests/taddsub.cc
+
+- Moved math functions from OFStandard to OFMath:
+  Commit 1b6bb7 added oflimit.h dependency to ofstd.h in order to implement some
+  new methods in OFStandard. However, oflimits.h relies on arith.h which is
+  created very early by arith.cc in a special build step. However, arith.cc
+  already relies on ofstd.h so a circular dependency was created. This has been
+  fixed by moving those functions (isnan and isinf) into an new class "OFMath"
+  which is declared in a separate header file ofmath.h. Before, ofstd.h defined
+  the functions and ofmath.cc already implemented them as part of OFStandard.
+  Thus the methods also moved from class OFStandard to OFMath.
+  Added:   ofstd/include/dcmtk/ofstd/ofmath.h
+  Affects: config/arith.cc
+           ofstd/include/dcmtk/ofstd/ofstd.h
+           ofstd/libsrc/ofmath.cc
+           ofstd/libsrc/ofstd.cc
+           ofstd/tests/tlimits.cc
+
+**** Changes from 2015.12.15 (riesmeier)
+
+- Further enhanced implementation of TID 1600:
+  Further enhanced implementation of TID 1600 (Image Library), e.g. since this
+  template is extensible, the structure of content items might deviate from
+  the definition in DICOM PS 3.16 (Content Mapping Resource). Also there is
+  now a way of recreating the root content item of this template after the
+  clear() method has been called.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/include/dcmtk/dcmsr/dsrctpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrstpl.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libcmr/tid1600.cc
+           dcmsr/libsrc/dsrctpl.cc
+           dcmsr/libsrc/dsrstpl.cc
+           dcmsr/libsrc/dsrtypes.cc
+           dcmsr/tests/tsrcmr.cc
+
+**** Changes from 2015.12.14 (onken)
+
+- Fixed possible underflows and overflows:
+  At several places in the code a wrong length of ACSE data structures received
+  over the network can cause overflows or underflows when processing those
+  data structures. Related checks have been added at various places in order
+  to prevent such (possible) attacks.
+  Thanks to Kevin Basista for the report.
+  Added:   ofstd/tests/taddsub.cc
+  Affects: dcmnet/libsrc/dulparse.cc
+           ofstd/include/dcmtk/ofstd/ofstd.h
+           ofstd/tests/tests.cc
+           ofstd/tests/tofstd.cc
+
+- Fixed issues with binary segmentations:
+  Fixed memory leak when creating binary segmentations as well as possible write
+  to non-initialized memory. Also fixed extraction of binary segmentation frames
+  for some objects. Fixed typo.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmseg/libsrc/segdoc.cc
+
+- Simpler API to extract binary segmentation frame:
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Affects: dcmseg/include/dcmtk/dcmseg/segutils.h
+           dcmseg/libsrc/segutils.cc
+
+**** Changes from 2015.12.11 (riesmeier)
+
+- Added set() methods for various template rows:
+  Added new methods that allow for setting various modality-specific content
+  items manually. At the moment, only some content items for TID 1607 (Image
+  Library Entry Descriptors for PET) are supported. Further items will follow.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/cmr/tid1600.h
+           dcmsr/libcmr/Makefile.dep
+           dcmsr/libcmr/tid1600.cc
+           dcmsr/tests/Makefile.dep
+           dcmsr/tests/tsrcmr.cc
+
+- Added new condition constant for template errors:
+  Added new condition constant that can be used if the "Value Set Constraint"
+  of a particular SR template row is violated.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added new function gotoNamedChildNode():
+  Added new helper function gotoNamedChildNode() which sets the internal cursor
+  of the document (sub)tree to a named node starting from the first children of
+  the current node. This avoid calling multiple other functions and checking of
+  return values.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+           dcmsr/libsrc/dsrdocst.cc
+
+- Added output stream operators:
+  Added output stream operator<<() to class DSRCodedEntryValue and
+  DSRNumericMeasurementValue. Internally, the print() method is used.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+           dcmsr/include/dcmtk/dcmsr/dsrnumvl.h
+           dcmsr/libsrc/dsrcodvl.cc
+           dcmsr/libsrc/dsrnumvl.cc
+
+- Added comparison operator "not equal":
+  Added implementation of comparison operator!=() to class DSRCodedEntryValue.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrcodvl.h
+           dcmsr/libsrc/dsrcodvl.cc
+           dcmsr/tests/tsrcodvl.cc
+
+- Added new functions getCursor() and setCursor():
+  Added new protected helper functions getCursor() and setCursor(), which can
+  be used to store and reset a particular cursor position within a derived
+  class (e.g. one of the SR template classes). This is much more efficient
+  than iterating over the tree and searching for a particular node ID.
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+- Added new functions gotoParent() and gotoChild():
+  Added new helper functions gotoParent() and gotoChild() to the basic tree
+  node cursor class. The functionality is identical to goUp() and goDown().
+  Acknowledgement: This work has been supported in part by the "QIICR" project.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtncsr.h
+
+**** Changes from 2015.12.08 (onken)
+
+- Fixed typo in configure step also in configure.in.
+  Affects: config/configure
+           config/configure.in
+
+- Fixed decsription of configure option and typo:
+  Fixed escription of internal dictionary option and removed a superfluous line
+  leading to a (non-critical) error when executing config/configure.
+  Affects: config/configure
+           config/configure.in
+           config/include/dcmtk/config/osconfig.h.in
+
+- Fixed issue with some binary segmentations:
+  Some binary segmentation objects, whose number of pixels are not dividable by
+  8, could not be correctly read or written since the standard requires to not
+  have any unused bits between the frames when encoding them in the Pixel Data
+  element. The corresponding routines have been re-written to reflect this
+  requirement. Thanks to Andrey Fedorov <andrey.fedorov at gmail.com> and David
+  Flade <fladedavid at gmail.com> for the report.
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Added:   dcmseg/tests/CMakeLists.txt
+           dcmseg/tests/Makefile.dep
+           dcmseg/tests/tests.cc
+           dcmseg/tests/tutils.cc
+  Affects: dcmseg/CMakeLists.txt
+           dcmseg/Makefile.in
+           dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/include/dcmtk/dcmseg/segtypes.h
+           dcmseg/include/dcmtk/dcmseg/segutils.h
+           dcmseg/libsrc/segdoc.cc
+           dcmseg/libsrc/segtypes.cc
+           dcmseg/libsrc/segutils.cc
+           dcmseg/tests/Makefile.in
+
+**** Changes from 2015.12.07 (riesmeier)
+
+- Updated "dcmrt" classes based on DICOM 2015c:
+  Updated automatically generated IOD and sequence C++ classes for the various
+  RT objects based on the current edition of the DICOM standard (2015c).
+  Added:   dcmrt/include/dcmtk/dcmrt/seq/drtbss.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtcpis.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtdias.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtpdecs.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtqds.h
+           dcmrt/include/dcmtk/dcmrt/seq/drtwrsrs.h
+           dcmrt/libsrc/drtbss.cc
+           dcmrt/libsrc/drtcpis.cc
+           dcmrt/libsrc/drtdias.cc
+           dcmrt/libsrc/drtecs.cc
+           dcmrt/libsrc/drtpdecs.cc
+           dcmrt/libsrc/drtqds.cc
+           dcmrt/libsrc/drtwrsrs.cc
+  Affects: COPYRIGHT
+           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/drtarics.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/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/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/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/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/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/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/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/drtarics.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/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/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/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/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/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/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/drtws.cc
+           dcmrt/libsrc/drtxrs.cc
+           dcmrt/tests/Makefile.dep
+
+- Handle EINTR raised by connect() or select():
+  The EINTR error (system call was interrupted by a signal that was caught)
+  might also be raised by a call of connect() or select(), which was not yet
+  handled appropriately.
+  Thanks to Thomas Sondergaard <thomas.sondergaard at karoshealth.com> and
+  Alexander Karaivanov <alexander.karaivanov at karoshealth.com> for the report
+  and suggested fix.
+  Affects: dcmnet/libsrc/dulfsm.cc
+
+- Check return value of listen() for errors:
+  Introduced check of return value of listen() call in order to detect e.g.
+  when listening on a certain port that is already in use (EADDRINUSE).
+  This kind of error has been reported for various Linux distributions,
+  e.g. RHEL5.3 and CentOS 7.
+  Thanks to Thomas Sondergaard <thomas.sondergaard at karoshealth.com> and
+  Alexander Karaivanov <alexander.karaivanov at karoshealth.com> for the report
+  and suggested fix.
+  Affects: dcmnet/libsrc/dul.cc
+
+- Fixed numerous typos.
+  Affects: dcmnet/libsrc/dul.cc
+           dcmnet/libsrc/dulfsm.cc
+
+**** Changes from 2015.12.04 (riesmeier)
+
+- Added comment on optional elements to be supported:
+  Added comment on optional data elements to be supported in the future.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+
+- Fixed wrong cardinality check on type 2 sequence:
+  Fixed wrong cardinality check on type 2 element Performed Procedure Code
+  Sequence (0040,A372). The DICOM standard says: "Zero or more Items shall
+  be included in this Sequence."
+  Affects: dcmsr/libsrc/dsrdoc.cc
+
+**** Changes from 2015.12.01 (riesmeier)
+
+- Updated documentation on recently added VR "UC":
+  Updated documentation regarding the value representation (VR) "Unlimited
+  Characters" (UC), which was missing at various places, especially when
+  listing the VRs that are affected by Specific Character Set (0008,0005).
+  Affects: dcmdata/apps/dcm2xml.cc
+           dcmdata/docs/dcm2xml.man
+           dcmdata/include/dcmtk/dcmdata/dcbytstr.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/include/dcmtk/dcmdata/dcsequen.h
+           dcmsr/apps/dsr2html.cc
+           dcmsr/apps/dsr2xml.cc
+           dcmsr/docs/dsr2html.man
+           dcmsr/docs/dsr2xml.man
+
+**** Changes from 2015.11.25 (onken)
+
+- Replaced type "bool" through "OFBool":
+  Some occurrences of bool have been checked in by one of the last commits
+  (72538a3). Since bool is not used in DCMTK so far (except for code integrated
+  from external sources), it was replaced by the DCMTK-specific OFBool type.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcelem.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+
+**** Changes from 2015.11.18 (onken)
+
+- Add operators "<", "<=", ">" and ">=" for dcmdata:
+  Added operators "<", "<=", ">" and ">=" for DcmElement and DcmItem classes in
+  dcmdata in order to allow comparison of elements or items (i.e. lists of
+  elements). The operators use the compare() functions introduced several weeks
+  ago. Also fixed doxygen documentation issue.
+  Acknowledgement: This work has been supported by the "QIICR" project.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcelem.h
+           dcmdata/include/dcmtk/dcmdata/dcitem.h
+           dcmdata/tests/tvrcomp.cc
+
+**** Changes from 2015.11.17 (riesmeier)
+
+- Added text on IOD-specific template constraints:
+  Added text from DICOM PS 3.3 on template constraints to SR IOD checker
+  classes. This might be helpful when certain templates are referenced.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrchecc.h
+           dcmsr/include/dcmtk/dcmsr/dsrcolcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrimpcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrkeycc.h
+           dcmsr/include/dcmtk/dcmsr/dsrmaccc.h
+           dcmsr/include/dcmtk/dcmsr/dsrmamcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrprocc.h
+           dcmsr/include/dcmtk/dcmsr/dsrrrdcc.h
+           dcmsr/include/dcmtk/dcmsr/dsrspecc.h
+           dcmsr/include/dcmtk/dcmsr/dsrxrdcc.h
+
+- Fixed incorrect constraint for root template:
+  According to DICOM PS 3.3, the root template TID 3001 "may be" used for the
+  Procedure Log IOD but it is not required (i.e. no constraint).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrprocc.h
+           dcmsr/libsrc/dsrprocc.cc
+
+- Fixed typos and updated references in comments.
+  Affects: dcmsr/libsrc/dsrc3dcc.cc
+           dcmsr/libsrc/dsrcomcc.cc
+           dcmsr/libsrc/dsrimpcc.cc
+
+- Check Acquisition Context SR contstraints:
+  Added support for checking the relationship content constraints of the
+  recently added Acquisition Context SR IOD (Supplement 187).
+  Added:   dcmsr/include/dcmtk/dcmsr/dsracqcc.h
+           dcmsr/libsrc/dsracqcc.cc
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/CMakeLists.txt
+           dcmsr/libsrc/Makefile.dep
+           dcmsr/libsrc/Makefile.in
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added minimal support for Supplement 187:
+  Added minimal support for the recently approved Supplement 187 (Preclinical
+  Small Animal Imaging Acquisition Context), i.e. added new Storage SOP Class
+  to "dcmdata", "dcmnet" and "dcmqrdb". Also added new SR document type to
+  "dcmsr". Full support for this new Structured Rreporting IOD will follow in
+  a future commit.
+  The official status of this Supplement is "Draft Final Text - Waiting for
+  Codes" (WC), i.e. the document is final but some machine-readable codes are
+  still missing.
+  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
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrtypes.cc
+
+- Added DICOMDIR support for Supplement 184:
+  Added support for new Storage SOP Class from Supplement 184 (Brachytherapy
+  Delivery Instruction) to DICOMDIR generation code.
+  Also fixed a minor issue with the "RT Beams Delivery Instruction Storage"
+  SOP Class in this context.
+  Affects: dcmdata/libsrc/dcddirif.cc
+
+**** Changes from 2015.11.16 (riesmeier)
+
+- Added support for new UID from Supplement 184:
+  Added support for new Storage SOP Class UID from Supplement 184
+  (Brachytherapy Delivery Instruction).
+  Affects: dcmdata/include/dcmtk/dcmdata/dcuid.h
+           dcmdata/libsrc/dcuid.cc
+           dcmnet/docs/storescp.man
+           dcmnet/etc/storescp.cfg
+           dcmnet/etc/storescu.cfg
+           dcmqrdb/docs/dcmqrscp.man
+
+- Added support for recently approved CPs:
+  Added support for CP-1364, CP-1431, CP-1432, CP-1457, CP-1478 (WC) and
+  CP-1487 to the data dictionary.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+- Added support for Supplement 184 to dictionary:
+  Added support for the final text version of Supplement 184 (Brachytherapy
+  Delivery Instruction) to the data dictionary.
+  Affects: dcmdata/data/dicom.dic
+           dcmdata/include/dcmtk/dcmdata/dcdeftag.h
+           dcmdata/libsrc/dcdictbi.cc
+
+**** Changes from 2015.11.16 (onken)
+
+- Use tag constants for better readability.
+  Affects: dcmdata/tests/tvrcomp.cc
+
+- Print warning when overwriting an existing file:
+  Make sure that movescu and getscu print out a warning when storing a received
+  file using a filename that is already taken by an existing file. This resulting
+  behaviour (warning and overwriting the old file) is now consistent with
+  storescp.
+  Affects: dcmnet/apps/movescu.cc
+           dcmnet/libsrc/scu.cc
+
+**** Changes from 2015.11.13 (riesmeier)
+
+- Added support for further Asian character sets:
+  Added support for further Asian character sets, e.g. Thai, Japanese, Korean
+  and Chinese (including ISO 2022 code extensions). The character set mapping
+  that is used for HTML/XHTML and XML format is based on Table D-1 in DICOM PS
+  3.18 Annex D (current version from Supplement 174 - RESTful Rendering).
+  Affects: dcmsr/docs/dsr2html.man
+           dcmsr/docs/dsr2xml.man
+           dcmsr/docs/xml2dsr.man
+           dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/include/dcmtk/dcmsr/dsrtypes.h
+           dcmsr/libsrc/dsrdoc.cc
+           dcmsr/libsrc/dsrtypes.cc
+
+- Changed checking of unsupported character sets:
+  Changed the way unsupported character sets, which are specified by option
+  --charset-assume, are checked. This will facilitate the addition of new
+  character sets (in the future).
+  Affects: dcmsr/apps/dsr2html.cc
+           dcmsr/apps/dsr2xml.cc
+
+- Support multiple values for SpecificCharacterSet:
+  Added support for multiple values being used for Specific Character Set
+  (0008,0005). This will allow for specifying ISO 2022 based character sets
+  as needed for Japanese, Korean and Chinese (i.e. code extensions).
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdoc.h
+           dcmsr/libsrc/dsrdoc.cc
+
+- Fixed "Type of modification" field:
+  Fixed value of "Type of modification" field for recently added macro
+  ENABLE_BUILTIN_DICTIONARY. Now it is consistent with other similar macros.
+  Affects: config/docs/macros.txt
+
+**** Changes from 2015.11.13 (onken)
+
+- Renamed some handle...() methods for consisteny:
+  The handle...() methods for FIND, MOVE and ACTION only receive the
+  corresponding message but do not handle them further (e.g. they do not send
+  a response). Thus the methods have been renamed to "receive...()" following
+  the scheme already used for the STORE message before.
+  Thanks to Ing-Long Eric Kuo <draconpern at hotmail.com> for the report.
+  Affects: dcmnet/include/dcmtk/dcmnet/scp.h
+           dcmnet/libsrc/scp.cc
+
+**** Changes from 2015.11.12 (riesmeier)
+
+- Report an error on missing "Rows" or "Columns":
+  Output a more specific error message to the logger if the mandatory attribute
+  Rows (0028,0010) and/or Columns (0028,0011) is missing.
+  Affects: dcmimgle/libsrc/diimage.cc
+
+**** Changes from 2015.11.09 (riesmeier)
+
+- Enhanced documentation on option --charset-assume:
+  Made it more explicit that the old terms (latin-1, greek, etc.) are still
+  supported for option --charset-assume (for reasons of backward compatibility).
+  Affects: dcmdata/docs/dcm2xml.man
+           dcmsr/docs/dsr2html.man
+           dcmsr/docs/dsr2xml.man
+
+**** Changes from 2015.11.03 (onken)
+
+- Fixed further possible issues with Segment Number.
+  Affects: dcmseg/include/dcmtk/dcmseg/segdoc.h
+           dcmseg/include/dcmtk/dcmseg/segment.h
+           dcmseg/libsrc/segdoc.cc
+           dcmseg/libsrc/segment.cc
+
+**** Changes from 2015.11.03 (eichelberg)
+
+- Fixed dcmdata_VRCompare test:
+  Fixed dcmdata_VRCompare unit test to catch a regression of the bug
+  in DcmItem::compare() fixed earlier today.
+  Affects: dcmdata/tests/tvrcomp.cc
+
+- Fixed bug in DcmItem::compare():
+  Fixed bug in DcmItem::compare() leading to incorrect comparison results.
+  Thanks to Robert Habrich <habrich at image-systems.biz> for the bug report and patch.
+  Affects: dcmdata/libsrc/dcitem.cc
+
+**** Changes from 2015.11.03 (onken)
+
+- Fixed segment access via Segment Number:
+  Fixed segment access via Segment Number which now assumes that the first
+  Segment Number is not 0 as in the underlying vector, but starts with 1.
+  Thanks to Andrey Fedorov <andrey.fedorov at gmail.com> for the report.
+  Affects: dcmseg/libsrc/segdoc.cc
+
+**** Changes from 2015.10.09 (riesmeier)
+
+- Check further dependence of command line options:
+  Made sure that option --attr-template-id is only used together with option
+  --write-template-id, i.e. check the same dependence as for option
+  --template-envelope. This is because --attr-template-id would have no effect
+  otherwise, which might be unexpected to the user.
+  Affects: dcmsr/apps/dsr2xml.cc
+
+**** Changes from 2015.10.08 (riesmeier)
+
+- Added guard to fix issue with llvm-gcc-4.2:
+  Added guard to fix linker error with llvm-gcc-4.2 on Mac OS X. This guard
+  checks for the use of a Clang compiler, which requires explicit template
+  instantiation (see commit a3dc5b5) while other compilers do not.
+  Thanks to Bill Lorensen <bill.lorensen at gmail.com> for the report and
+  Jean-Christophe Fillion-Robin <jchris.fillionr at kitware.com> for the patch.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+
+**** Changes from 2015.10.08 (onken)
+
+- Fixed error message.
+  Affects: dcmiod/libsrc/iodutil.cc
+
+**** Changes from 2015.10.01 (riesmeier)
+
+- Fixed issue with Clang 3.0/3.1 on Mac OS X:
+  Fixed linker error with Clang 3.0/3.1 on Mac OS X with support for "shared
+  libs" enabled. These older versions seem to require explicit instantiation
+  of the template class DSRTree<DSRDocumentTreeNode>, which serves as the
+  base class of DSRDocumentSubTree.
+  Thanks to Jean-Christophe Fillion-Robin <jchris.fillionr at kitware.com> for
+  the patch.
+  Affects: dcmsr/include/dcmtk/dcmsr/dsrdocst.h
+
+**** Changes from 2015.09.25 (riesmeier)
+
+- Updated comments for TID 1607:
+  Updated comments for TID 1607 (Image Library Entry Descriptors for PET)
+  based on feedback and a proposed CP from David Clunie.
+  Affects: dcmsr/libcmr/tid1600.cc
+
+- Fixed code meaning for UCUM code "deg":
+  Fixed code meaning for UCUM code "deg" (based on a proposed CP from David
+  Clunie, editor of the DICOM standard).
+  Affects: dcmsr/include/dcmtk/dcmsr/codes/ucum.h
+
+- Made static method checkSOPInstance() virtual:
+  Made static method checkSOPInstance() virtual so derived classes can
+  overwrite (specialize) it. Also added a comment explaining this.
+  Affects: dcmnet/include/dcmtk/dcmnet/dstorscu.h
+
+- Fixed possible memory leak:
+  Made sure that all locally allocated memory is freed before returning from
+  a method with an error status. This possible memory leak was found in
+  DcmSCU::sendSTORERequest().
+  Affects: dcmnet/libsrc/scu.cc
+
+- Report an error if DICOM file cannot be loaded:
+  Report an error to the log output if a SOP instance to be sent (i.e. which
+  is part of the transfer list) cannot be loaded from the referenced DICOM file.
+  Affects: dcmnet/libsrc/dstorscu.cc
+
+- Changed API to use OFFilename instead of OFString:
+  Changed type of parameter of some methods that take a filename to use an
+  instance of OFFilename instead of OFString. This allows for passing also
+  a wide character string (on Windows) as well as a C string.
+  This is an onging process, so further API changes may follow.
+  Affects: dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+           dcmdata/libsrc/dcdatutl.cc
+           dcmnet/include/dcmtk/dcmnet/dstorscu.h
+           dcmnet/include/dcmtk/dcmnet/scu.h
+           dcmnet/libsrc/dstorscu.cc
+           dcmnet/libsrc/scu.cc
+
+- Fixed incorrect header and comments:
+  The helper functions were extracted from the DcmStoragesSCU class, so the
+  copyright header and comments were not correct. Also the name of the DCMTK
+  module was incorrect (it is "dcmdata" and not "dcmiod").
+  Affects: dcmdata/include/dcmtk/dcmdata/dcdatutl.h
+           dcmdata/libsrc/dcdatutl.cc
+
+- Fixed automatically generated CHANGES entry.
+  Affects: docs/CHANGES.361
+
+- Removed suffix "String" from "Other..." VRs:
+  Supplement 181 (Tractography Results Storage SOP Class) introduces a new
+  value representation (VR) "Other Long" (OL) and, thereby, removes the suffix
+  "String" from all "Other..." (Ox) VRs.
+  See DCMTK's issue tracker: Conformance #664
+  Affects: dcmdata/include/dcmtk/dcmdata/dcvr.h
+           dcmdata/include/dcmtk/dcmdata/dcvrobow.h
+           dcmdata/include/dcmtk/dcmdata/dcvrod.h
+           dcmdata/include/dcmtk/dcmdata/dcvrof.h
+
+- Updated latest tested CMake version:
+  Updated information on latest CMake version that has been tested to "3.3.2".
+  Affects: CMake/dcmtkPrepare.cmake
+
 **** Changes from 2015.09.24 (schlamelcher)
 
 - Updated CHANGES.361 for new development snapshot.
@@ -1184,7 +3957,7 @@ Changes between releases are documented here.
            dcmsr/tests/tests.cc
            dcmsr/tests/tsrtree.cc
 
-- Added method to look up a context group entr:
+- Added method to look up a context group entry:
   Added method that can be used to look up a coded entry from a context group.
   This method, therefore, allows for retrieving the "official" code meaning or
   for automatically setting the "enhanced encoding mode".
diff --git a/doxygen/htmldocs.cfg b/doxygen/htmldocs.cfg
index 9548c55..7a25292 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@ 20150924"
+PROJECT_NUMBER         = "Version @DCMTK_VERSION@ 20160216"
 
 # 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.cfg b/doxygen/manpages.cfg
index c2c77db..5c27adf 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@ 20150924"
+PROJECT_NUMBER         = "@DCMTK_VERSION@ 20160216"
 
 # 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/dcm2pdf.1 b/doxygen/manpages/man1/dcm2pdf.1
index 759d9a5..d279fe5 100644
--- a/doxygen/manpages/man1/dcm2pdf.1
+++ b/doxygen/manpages/man1/dcm2pdf.1
@@ -1,4 +1,4 @@
-.TH "dcm2pdf" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2pdf" 1 "Tue Feb 16 2016" "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 a0e34ed..7487f8c 100644
--- a/doxygen/manpages/man1/dcm2pnm.1
+++ b/doxygen/manpages/man1/dcm2pnm.1
@@ -1,4 +1,4 @@
-.TH "dcm2pnm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2pnm" 1 "Tue Feb 16 2016" "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 11d60e6..e1e151e 100644
--- a/doxygen/manpages/man1/dcm2xml.1
+++ b/doxygen/manpages/man1/dcm2xml.1
@@ -1,4 +1,4 @@
-.TH "dcm2xml" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcm2xml" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcm2xml \- Convert DICOM file and data set to XML
@@ -111,7 +111,7 @@ specific character set:
 
   +Cc   --charset-check-all
           check all data elements with string values
-          (default: only PN, LO, LT, SH, ST and UT)
+          (default: only PN, LO, LT, SH, ST, UC and UT)
 
           # this option is only used for the mapping to an appropriate
           # XML character encoding, but not for the conversion to UTF-8
@@ -255,7 +255,7 @@ Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
 .fi
 .PP
 .PP
-If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&.
+If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&. For reasons of backward compatibility with previous versions of this tool, the following terms are also supported and mapped automatically to the associated DICOM defined terms: latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew\&.
 .PP
 Multiple character sets using code extension techniques are not supported\&. If needed, option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the conversion to XML format\&. This is also useful for DICOMDIR files where each directory record can have a different character set\&.
 .SH "LOGGING"
@@ -283,4 +283,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-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2002-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmcjpeg.1 b/doxygen/manpages/man1/dcmcjpeg.1
index 4a4a46c..809a163 100644
--- a/doxygen/manpages/man1/dcmcjpeg.1
+++ b/doxygen/manpages/man1/dcmcjpeg.1
@@ -1,4 +1,4 @@
-.TH "dcmcjpeg" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcjpeg" 1 "Tue Feb 16 2016" "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 66d9a23..0b20102 100644
--- a/doxygen/manpages/man1/dcmcjpls.1
+++ b/doxygen/manpages/man1/dcmcjpls.1
@@ -1,4 +1,4 @@
-.TH "dcmcjpls" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcjpls" 1 "Tue Feb 16 2016" "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 593213a..040fb5e 100644
--- a/doxygen/manpages/man1/dcmconv.1
+++ b/doxygen/manpages/man1/dcmconv.1
@@ -1,4 +1,4 @@
-.TH "dcmconv" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmconv" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmconv \- Convert DICOM file encoding
diff --git a/doxygen/manpages/man1/dcmcrle.1 b/doxygen/manpages/man1/dcmcrle.1
index 534aaf2..0ee0273 100644
--- a/doxygen/manpages/man1/dcmcrle.1
+++ b/doxygen/manpages/man1/dcmcrle.1
@@ -1,4 +1,4 @@
-.TH "dcmcrle" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmcrle" 1 "Tue Feb 16 2016" "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 2c8c9c4..efa5999 100644
--- a/doxygen/manpages/man1/dcmdjpeg.1
+++ b/doxygen/manpages/man1/dcmdjpeg.1
@@ -1,4 +1,4 @@
-.TH "dcmdjpeg" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdjpeg" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdjpeg \- Decode JPEG-compressed DICOM file
diff --git a/doxygen/manpages/man1/dcmdjpls.1 b/doxygen/manpages/man1/dcmdjpls.1
index 15ef16a..15e302c 100644
--- a/doxygen/manpages/man1/dcmdjpls.1
+++ b/doxygen/manpages/man1/dcmdjpls.1
@@ -1,4 +1,4 @@
-.TH "dcmdjpls" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdjpls" 1 "Tue Feb 16 2016" "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 bb067b0..8961cd8 100644
--- a/doxygen/manpages/man1/dcmdrle.1
+++ b/doxygen/manpages/man1/dcmdrle.1
@@ -1,4 +1,4 @@
-.TH "dcmdrle" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdrle" 1 "Tue Feb 16 2016" "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 560d75f..089e862 100644
--- a/doxygen/manpages/man1/dcmdspfn.1
+++ b/doxygen/manpages/man1/dcmdspfn.1
@@ -1,4 +1,4 @@
-.TH "dcmdspfn" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdspfn" 1 "Tue Feb 16 2016" "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 242d3f4..993d9b0 100644
--- a/doxygen/manpages/man1/dcmdump.1
+++ b/doxygen/manpages/man1/dcmdump.1
@@ -1,4 +1,4 @@
-.TH "dcmdump" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmdump" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmdump \- Dump DICOM file and data set
diff --git a/doxygen/manpages/man1/dcmftest.1 b/doxygen/manpages/man1/dcmftest.1
index 4744b9b..80fcf98 100644
--- a/doxygen/manpages/man1/dcmftest.1
+++ b/doxygen/manpages/man1/dcmftest.1
@@ -1,4 +1,4 @@
-.TH "dcmftest" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmftest" 1 "Tue Feb 16 2016" "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 881f3ba..99af680 100644
--- a/doxygen/manpages/man1/dcmgpdir.1
+++ b/doxygen/manpages/man1/dcmgpdir.1
@@ -1,4 +1,4 @@
-.TH "dcmgpdir" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmgpdir" 1 "Tue Feb 16 2016" "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 975ed44..0e7d63d 100644
--- a/doxygen/manpages/man1/dcmj2pnm.1
+++ b/doxygen/manpages/man1/dcmj2pnm.1
@@ -1,4 +1,4 @@
-.TH "dcmj2pnm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmj2pnm" 1 "Tue Feb 16 2016" "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 caa7255..5d4b858 100644
--- a/doxygen/manpages/man1/dcml2pnm.1
+++ b/doxygen/manpages/man1/dcml2pnm.1
@@ -1,4 +1,4 @@
-.TH "dcml2pnm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcml2pnm" 1 "Tue Feb 16 2016" "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 990d3f4..ea31cd5 100644
--- a/doxygen/manpages/man1/dcmmkcrv.1
+++ b/doxygen/manpages/man1/dcmmkcrv.1
@@ -1,4 +1,4 @@
-.TH "dcmmkcrv" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmkcrv" 1 "Tue Feb 16 2016" "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 b94f602..48ce603 100644
--- a/doxygen/manpages/man1/dcmmkdir.1
+++ b/doxygen/manpages/man1/dcmmkdir.1
@@ -1,4 +1,4 @@
-.TH "dcmmkdir" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmkdir" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmmkdir \- Create a DICOMDIR file
@@ -38,6 +38,12 @@ General Purpose BD Interchange with MPEG-4 AVC/H\&.264 HiP at Level4\&.1 (STD-GEN-B
 .IP "\(bu" 2
 General Purpose BD Interchange with MPEG-4 AVC/H\&.264 BD-Compatible HiP at Level4\&.1 (STD-GEN-BD-MPEG4-HPLV41BD)
 .IP "\(bu" 2
+General Purpose BD Interchange with MPEG-4 AVC/H\&.264 HiP at Level4\&.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+.IP "\(bu" 2
+General Purpose BD Interchange with MPEG-4 AVC/H\&.264 HiP at Level4\&.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+.IP "\(bu" 2
+General Purpose BD Interchange with MPEG-4 AVC/H\&.264 Stereo HiP at Level4\&.2 (STD-GEN-BD-MPEG4-SHPLV42)
+.IP "\(bu" 2
 General Purpose USB and Flash Memory Interchange with JPEG (STD-GEN-USB/MMC/CF/SD-JPEG)
 .IP "\(bu" 2
 General Purpose USB and Flash Memory Interchange with JPEG 2000 (STD-GEN-USB/MMC/CF/SD-J2K)
@@ -264,6 +270,18 @@ profiles:
           General Purpose BD Interchange with MPEG-4 AVC/H.264
           BD-Compatible HiP at Level4.1 (STD-GEN-BD-MPEG4-HPLV41BD)
 
+        --general-bd-mpeg4-hp2d
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          HiP at Level4.2 for 2D video (STD-GEN-BD-MPEG4-HPLV42-2D)
+
+        --general-bd-mpeg4-hp3d
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          HiP at Level4.2 for 3D video (STD-GEN-BD-MPEG4-HPLV42-3D)
+
+        --general-bd-mpeg4-hpst
+          General Purpose BD Interchange with MPEG-4 AVC/H.264
+          Stereo HiP at Level4.2 (STD-GEN-BD-MPEG4-SHPLV42)
+
   -Pfl  --usb-and-flash-jpeg
           General Purpose USB/Flash Memory Interchange with JPEG
           (STD-GEN-USB/MMC/CF/SD-JPEG)
@@ -409,4 +427,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmgpdir\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/dcmmklut.1 b/doxygen/manpages/man1/dcmmklut.1
index 54a1ecb..6c924c9 100644
--- a/doxygen/manpages/man1/dcmmklut.1
+++ b/doxygen/manpages/man1/dcmmklut.1
@@ -1,4 +1,4 @@
-.TH "dcmmklut" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmmklut" 1 "Tue Feb 16 2016" "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 f410592..83ddb87 100644
--- a/doxygen/manpages/man1/dcmodify.1
+++ b/doxygen/manpages/man1/dcmodify.1
@@ -1,4 +1,4 @@
-.TH "dcmodify" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmodify" 1 "Tue Feb 16 2016" "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 508ea66..9bb105b 100644
--- a/doxygen/manpages/man1/dcmp2pgm.1
+++ b/doxygen/manpages/man1/dcmp2pgm.1
@@ -1,4 +1,4 @@
-.TH "dcmp2pgm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmp2pgm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmp2pgm \- Read DICOM image and presentation state and render bitmap
diff --git a/doxygen/manpages/man1/dcmprscp.1 b/doxygen/manpages/man1/dcmprscp.1
index 5266604..0fa6433 100644
--- a/doxygen/manpages/man1/dcmprscp.1
+++ b/doxygen/manpages/man1/dcmprscp.1
@@ -1,4 +1,4 @@
-.TH "dcmprscp" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmprscp" 1 "Tue Feb 16 2016" "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 eb37199..2606621 100644
--- a/doxygen/manpages/man1/dcmprscu.1
+++ b/doxygen/manpages/man1/dcmprscu.1
@@ -1,4 +1,4 @@
-.TH "dcmprscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmprscu" 1 "Tue Feb 16 2016" "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 081f6c1..0c4ac68 100644
--- a/doxygen/manpages/man1/dcmpschk.1
+++ b/doxygen/manpages/man1/dcmpschk.1
@@ -1,4 +1,4 @@
-.TH "dcmpschk" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpschk" 1 "Tue Feb 16 2016" "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 8ac76de..09a9e95 100644
--- a/doxygen/manpages/man1/dcmpsmk.1
+++ b/doxygen/manpages/man1/dcmpsmk.1
@@ -1,4 +1,4 @@
-.TH "dcmpsmk" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsmk" 1 "Tue Feb 16 2016" "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 0453c82..58e896a 100644
--- a/doxygen/manpages/man1/dcmpsprt.1
+++ b/doxygen/manpages/man1/dcmpsprt.1
@@ -1,4 +1,4 @@
-.TH "dcmpsprt" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsprt" 1 "Tue Feb 16 2016" "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 55089aa..91bf59a 100644
--- a/doxygen/manpages/man1/dcmpsrcv.1
+++ b/doxygen/manpages/man1/dcmpsrcv.1
@@ -1,4 +1,4 @@
-.TH "dcmpsrcv" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpsrcv" 1 "Tue Feb 16 2016" "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 6b5e10e..4fed6c0 100644
--- a/doxygen/manpages/man1/dcmpssnd.1
+++ b/doxygen/manpages/man1/dcmpssnd.1
@@ -1,4 +1,4 @@
-.TH "dcmpssnd" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmpssnd" 1 "Tue Feb 16 2016" "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 228ab82..d12d087 100644
--- a/doxygen/manpages/man1/dcmqridx.1
+++ b/doxygen/manpages/man1/dcmqridx.1
@@ -1,4 +1,4 @@
-.TH "dcmqridx" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqridx" 1 "Tue Feb 16 2016" "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 e032f73..4f5e82c 100644
--- a/doxygen/manpages/man1/dcmqrscp.1
+++ b/doxygen/manpages/man1/dcmqrscp.1
@@ -1,4 +1,4 @@
-.TH "dcmqrscp" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqrscp" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmqrscp \- DICOM image archive (central test node)
@@ -682,6 +682,7 @@ SpatialFiducialsStorage                              1.2.840.10008.5.1.4.1.1.66.
 DeformableSpatialRegistrationStorage                 1.2.840.10008.5.1.4.1.1.66.3
 SegmentationStorage                                  1.2.840.10008.5.1.4.1.1.66.4
 SurfaceSegmentationStorage                           1.2.840.10008.5.1.4.1.1.66.5
+TractographyResultsStorage                           1.2.840.10008.5.1.4.1.1.66.6
 RealWorldValueMappingStorage                         1.2.840.10008.5.1.4.1.1.67
 SurfaceScanMeshStorage                               1.2.840.10008.5.1.4.1.1.68.1
 SurfaceScanPointCloudStorage                         1.2.840.10008.5.1.4.1.1.68.2
@@ -730,6 +731,7 @@ XRayRadiationDoseSRStorage                           1.2.840.10008.5.1.4.1.1.88.
 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
 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
@@ -754,6 +756,7 @@ DICONDE_EddyCurrentImageStorage                      1.2.840.10008.5.1.4.1.1.601
 DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601.2
 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
@@ -893,4 +896,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-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1993-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dcmqrti.1 b/doxygen/manpages/man1/dcmqrti.1
index 690d73b..4bd72db 100644
--- a/doxygen/manpages/man1/dcmqrti.1
+++ b/doxygen/manpages/man1/dcmqrti.1
@@ -1,4 +1,4 @@
-.TH "dcmqrti" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmqrti" 1 "Tue Feb 16 2016" "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 2b87fb9..6d51f32 100644
--- a/doxygen/manpages/man1/dcmquant.1
+++ b/doxygen/manpages/man1/dcmquant.1
@@ -1,4 +1,4 @@
-.TH "dcmquant" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmquant" 1 "Tue Feb 16 2016" "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 d772b49..988cd3d 100644
--- a/doxygen/manpages/man1/dcmrecv.1
+++ b/doxygen/manpages/man1/dcmrecv.1
@@ -1,4 +1,4 @@
-.TH "dcmrecv" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmrecv" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmrecv \- Simple DICOM storage SCP (receiver)
diff --git a/doxygen/manpages/man1/dcmscale.1 b/doxygen/manpages/man1/dcmscale.1
index 81d6f40..f98bf47 100644
--- a/doxygen/manpages/man1/dcmscale.1
+++ b/doxygen/manpages/man1/dcmscale.1
@@ -1,4 +1,4 @@
-.TH "dcmscale" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmscale" 1 "Tue Feb 16 2016" "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 659cb65..ddedf38 100644
--- a/doxygen/manpages/man1/dcmsend.1
+++ b/doxygen/manpages/man1/dcmsend.1
@@ -1,4 +1,4 @@
-.TH "dcmsend" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmsend" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dcmsend \- Simple DICOM storage SCU (sender)
diff --git a/doxygen/manpages/man1/dcmsign.1 b/doxygen/manpages/man1/dcmsign.1
index a439c39..d69b5da 100644
--- a/doxygen/manpages/man1/dcmsign.1
+++ b/doxygen/manpages/man1/dcmsign.1
@@ -1,4 +1,4 @@
-.TH "dcmsign" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcmsign" 1 "Tue Feb 16 2016" "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 1542bbd..0deba9a 100644
--- a/doxygen/manpages/man1/dcod2lum.1
+++ b/doxygen/manpages/man1/dcod2lum.1
@@ -1,4 +1,4 @@
-.TH "dcod2lum" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dcod2lum" 1 "Tue Feb 16 2016" "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 3a67e66..14c2bb9 100644
--- a/doxygen/manpages/man1/dconvlum.1
+++ b/doxygen/manpages/man1/dconvlum.1
@@ -1,4 +1,4 @@
-.TH "dconvlum" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dconvlum" 1 "Tue Feb 16 2016" "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 3a72d36..651fec4 100644
--- a/doxygen/manpages/man1/drtdump.1
+++ b/doxygen/manpages/man1/drtdump.1
@@ -1,4 +1,4 @@
-.TH "drtdump" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "drtdump" 1 "Tue Feb 16 2016" "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 70d4736..983d00b 100644
--- a/doxygen/manpages/man1/dsr2html.1
+++ b/doxygen/manpages/man1/dsr2html.1
@@ -1,4 +1,4 @@
-.TH "dsr2html" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsr2html" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsr2html \- Render DICOM SR file and data set to HTML/XHTML
@@ -127,7 +127,7 @@ specific character set:
 
        --charset-check-all
          check all data elements with string values
-         (default: only PN, LO, LT, SH, ST and UT)
+         (default: only PN, LO, LT, SH, ST, UC and UT)
 
          # this option is only used for the mapping to an appropriate
          # HTML/XHTML character encoding, but not for the conversion
@@ -245,23 +245,29 @@ The HTML/XHTML encoding is determined automatically from the DICOM attribute (00
 .PP
 .PP
 .nf
-ASCII         (ISO_IR 6)    =>  (none)
-UTF-8         "ISO_IR 192"  =>  "UTF-8"
-ISO Latin 1   "ISO_IR 100"  =>  "ISO-8859-1"
-ISO Latin 2   "ISO_IR 101"  =>  "ISO-8859-2"
-ISO Latin 3   "ISO_IR 109"  =>  "ISO-8859-3"
-ISO Latin 4   "ISO_IR 110"  =>  "ISO-8859-4"
-ISO Latin 5   "ISO_IR 148"  =>  "ISO-8859-9"
-Cyrillic      "ISO_IR 144"  =>  "ISO-8859-5"
-Arabic        "ISO_IR 127"  =>  "ISO-8859-6"
-Greek         "ISO_IR 126"  =>  "ISO-8859-7"
-Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
+ASCII         (ISO_IR 6)                       =>  (none)
+UTF-8         "ISO_IR 192"                     =>  "UTF-8"
+ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
+ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
+ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
+ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
+ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
+Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
+Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
+Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
+Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
+Thai          "ISO_IR 166"                     =>  "TIS-620"
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
+Chinese       "GB18030"                        =>  "GB18030"
+Chinese       "GBK"                            =>  "GBK"
 .fi
 .PP
 .PP
-If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&.
+If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&. For reasons of backward compatibility with previous versions of this tool, the following terms are also supported and mapped automatically to the associated DICOM defined terms: latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew\&.
 .PP
-Multiple character sets are not supported (only the first attribute value is mapped in case of value multiplicity)\&. If needed, option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the rendering to HTML/XHTML format\&.
+Option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the rendering to HTML/XHTML format\&.
 .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 [...]
@@ -287,4 +293,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmconv\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2000-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2000-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dsr2xml.1 b/doxygen/manpages/man1/dsr2xml.1
index 70256a3..33f52d3 100644
--- a/doxygen/manpages/man1/dsr2xml.1
+++ b/doxygen/manpages/man1/dsr2xml.1
@@ -1,4 +1,4 @@
-.TH "dsr2xml" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsr2xml" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsr2xml \- Convert DICOM SR file and data set to XML
@@ -122,7 +122,7 @@ specific character set:
 
   +Cc  --charset-check-all
          check all data elements with string values
-         (default: only PN, LO, LT, SH, ST and UT)
+         (default: only PN, LO, LT, SH, ST, UC and UT)
 
          # this option is only used for the mapping to an appropriate
          # XML character encoding, but not for the conversion to UTF-8
@@ -211,23 +211,29 @@ The XML encoding is determined automatically from the DICOM attribute (0008,0005
 .PP
 .PP
 .nf
-ASCII         (ISO_IR 6)    =>  "UTF-8"
-UTF-8         "ISO_IR 192"  =>  "UTF-8"
-ISO Latin 1   "ISO_IR 100"  =>  "ISO-8859-1"
-ISO Latin 2   "ISO_IR 101"  =>  "ISO-8859-2"
-ISO Latin 3   "ISO_IR 109"  =>  "ISO-8859-3"
-ISO Latin 4   "ISO_IR 110"  =>  "ISO-8859-4"
-ISO Latin 5   "ISO_IR 148"  =>  "ISO-8859-9"
-Cyrillic      "ISO_IR 144"  =>  "ISO-8859-5"
-Arabic        "ISO_IR 127"  =>  "ISO-8859-6"
-Greek         "ISO_IR 126"  =>  "ISO-8859-7"
-Hebrew        "ISO_IR 138"  =>  "ISO-8859-8"
+ASCII         (ISO_IR 6)                       =>  "UTF-8"
+UTF-8         "ISO_IR 192"                     =>  "UTF-8"
+ISO Latin 1   "ISO_IR 100"                     =>  "ISO-8859-1"
+ISO Latin 2   "ISO_IR 101"                     =>  "ISO-8859-2"
+ISO Latin 3   "ISO_IR 109"                     =>  "ISO-8859-3"
+ISO Latin 4   "ISO_IR 110"                     =>  "ISO-8859-4"
+ISO Latin 5   "ISO_IR 148"                     =>  "ISO-8859-9"
+Cyrillic      "ISO_IR 144"                     =>  "ISO-8859-5"
+Arabic        "ISO_IR 127"                     =>  "ISO-8859-6"
+Greek         "ISO_IR 126"                     =>  "ISO-8859-7"
+Hebrew        "ISO_IR 138"                     =>  "ISO-8859-8"
+Thai          "ISO_IR 166"                     =>  "TIS-620"
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  =>  "ISO-2022-JP"
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  =>  "ISO-2022-KR"
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   =>  "ISO-2022-CN"
+Chinese       "GB18030"                        =>  "GB18030"
+Chinese       "GBK"                            =>  "GBK"
 .fi
 .PP
 .PP
-If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&.
+If this DICOM attribute is missing in the input file, although needed, option \fI--charset-assume\fP can be used to specify an appropriate character set manually (using one of the DICOM defined terms)\&. For reasons of backward compatibility with previous versions of this tool, the following terms are also supported and mapped automatically to the associated DICOM defined terms: latin-1, latin-2, latin-3, latin-4, latin-5, cyrillic, arabic, greek, hebrew\&.
 .PP
-Multiple character sets are not supported (only the first attribute value is mapped in case of value multiplicity)\&. If needed, option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the conversion to XML format\&.
+Option \fI--convert-to-utf8\fP can be used to convert the DICOM file or data set to UTF-8 encoding prior to the conversion to XML format\&.
 .SS "ERROR HANDLING"
 Please be careful with the processing options \fI--unknown-relationship\fP, \fI--invalid-item-value\fP, \fI--ignore-constraints\fP, \fI--ignore-item-errors\fP and \fI--skip-invalid-items\fP since they disable certain validation checks on the DICOM SR input file and, therefore, might result in non-standard conformant output\&. However, there might be reasons for using one or more of these options, e\&.g\&. in order to read and process an incorrectly encoded SR document\&.
 .SS "Limitations"
@@ -257,4 +263,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-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2000-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/dsrdump.1 b/doxygen/manpages/man1/dsrdump.1
index 6edf175..93cae05 100644
--- a/doxygen/manpages/man1/dsrdump.1
+++ b/doxygen/manpages/man1/dsrdump.1
@@ -1,4 +1,4 @@
-.TH "dsrdump" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dsrdump" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dsrdump \- Dump DICOM SR file and data set
diff --git a/doxygen/manpages/man1/dump2dcm.1 b/doxygen/manpages/man1/dump2dcm.1
index 63d0f91..0e5ad42 100644
--- a/doxygen/manpages/man1/dump2dcm.1
+++ b/doxygen/manpages/man1/dump2dcm.1
@@ -1,4 +1,4 @@
-.TH "dump2dcm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "dump2dcm" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 dump2dcm \- Convert ASCII dump to DICOM file
@@ -195,8 +195,8 @@ VR:    Value Representation must be written as 2 characters as in
        between the two characters.  If the VR can be determined from
        the tag, this part of a line is optional.
 Value: There are several rules for writing values:
-       1. US, SS, SL, UL, FD, FL are written as decimal strings that
-          can be read by scanf().
+       1. US, SS, SL, UL, FD, FL, OD, OF and OL are written as decimal
+          strings that can be read by scanf().
        2. AT is written as '(gggg,eeee)' with additional spaces
           stripped off automatically and gggg and eeee being decimal
           strings that can be read by scanf().
@@ -263,4 +263,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdcmdump\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1996-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1996-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/echoscu.1 b/doxygen/manpages/man1/echoscu.1
index b7a6aac..a9e22ae 100644
--- a/doxygen/manpages/man1/echoscu.1
+++ b/doxygen/manpages/man1/echoscu.1
@@ -1,4 +1,4 @@
-.TH "echoscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "echoscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 echoscu \- DICOM verification (C-ECHO) SCU
diff --git a/doxygen/manpages/man1/findscu.1 b/doxygen/manpages/man1/findscu.1
index bf79e27..de9366e 100644
--- a/doxygen/manpages/man1/findscu.1
+++ b/doxygen/manpages/man1/findscu.1
@@ -1,4 +1,4 @@
-.TH "findscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "findscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 findscu \- DICOM query (C-FIND) SCU
diff --git a/doxygen/manpages/man1/getscu.1 b/doxygen/manpages/man1/getscu.1
index 25aa76f..5fe58e4 100644
--- a/doxygen/manpages/man1/getscu.1
+++ b/doxygen/manpages/man1/getscu.1
@@ -1,4 +1,4 @@
-.TH "getscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "getscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 getscu \- DICOM retrieve (C-GET) SCU
diff --git a/doxygen/manpages/man1/img2dcm.1 b/doxygen/manpages/man1/img2dcm.1
index e5e196f..3381c25 100644
--- a/doxygen/manpages/man1/img2dcm.1
+++ b/doxygen/manpages/man1/img2dcm.1
@@ -1,4 +1,4 @@
-.TH "img2dcm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "img2dcm" 1 "Tue Feb 16 2016" "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 538aaca..d70d7b3 100644
--- a/doxygen/manpages/man1/movescu.1
+++ b/doxygen/manpages/man1/movescu.1
@@ -1,4 +1,4 @@
-.TH "movescu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "movescu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 movescu \- DICOM retrieve (C-MOVE) SCU
diff --git a/doxygen/manpages/man1/pdf2dcm.1 b/doxygen/manpages/man1/pdf2dcm.1
index c991809..4681de1 100644
--- a/doxygen/manpages/man1/pdf2dcm.1
+++ b/doxygen/manpages/man1/pdf2dcm.1
@@ -1,4 +1,4 @@
-.TH "pdf2dcm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "pdf2dcm" 1 "Tue Feb 16 2016" "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 9a918f8..19667d9 100644
--- a/doxygen/manpages/man1/storescp.1
+++ b/doxygen/manpages/man1/storescp.1
@@ -1,4 +1,4 @@
-.TH "storescp" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "storescp" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 storescp \- DICOM storage (C-STORE) SCP
@@ -544,6 +544,7 @@ SpatialFiducialsStorage                              1.2.840.10008.5.1.4.1.1.66.
 DeformableSpatialRegistrationStorage                 1.2.840.10008.5.1.4.1.1.66.3
 SegmentationStorage                                  1.2.840.10008.5.1.4.1.1.66.4
 SurfaceSegmentationStorage                           1.2.840.10008.5.1.4.1.1.66.5
+TractographyResultsStorage                           1.2.840.10008.5.1.4.1.1.66.6
 RealWorldValueMappingStorage                         1.2.840.10008.5.1.4.1.1.67
 SurfaceScanMeshStorage                               1.2.840.10008.5.1.4.1.1.68.1
 SurfaceScanPointCloudStorage                         1.2.840.10008.5.1.4.1.1.68.2
@@ -592,6 +593,7 @@ XRayRadiationDoseSRStorage                           1.2.840.10008.5.1.4.1.1.88.
 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
 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
@@ -616,6 +618,7 @@ DICONDE_EddyCurrentImageStorage                      1.2.840.10008.5.1.4.1.1.601
 DICONDE_EddyCurrentMultiframeImageStorage            1.2.840.10008.5.1.4.1.1.601.2
 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
@@ -705,4 +708,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBstorescu\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 1996-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 1996-2016 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/doxygen/manpages/man1/storescu.1 b/doxygen/manpages/man1/storescu.1
index b6ec627..8e93d36 100644
--- a/doxygen/manpages/man1/storescu.1
+++ b/doxygen/manpages/man1/storescu.1
@@ -1,4 +1,4 @@
-.TH "storescu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "storescu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 storescu \- DICOM storage (C-STORE) SCU
diff --git a/doxygen/manpages/man1/termscu.1 b/doxygen/manpages/man1/termscu.1
index ac0e7dd..e54e54a 100644
--- a/doxygen/manpages/man1/termscu.1
+++ b/doxygen/manpages/man1/termscu.1
@@ -1,4 +1,4 @@
-.TH "termscu" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "termscu" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 termscu \- DICOM termination SCU
diff --git a/doxygen/manpages/man1/wlmscpfs.1 b/doxygen/manpages/man1/wlmscpfs.1
index 79acee4..96fed18 100644
--- a/doxygen/manpages/man1/wlmscpfs.1
+++ b/doxygen/manpages/man1/wlmscpfs.1
@@ -1,4 +1,4 @@
-.TH "wlmscpfs" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "wlmscpfs" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 wlmscpfs \- DICOM Basic Worklist Management SCP (based on data files)
diff --git a/doxygen/manpages/man1/xml2dcm.1 b/doxygen/manpages/man1/xml2dcm.1
index b77b8e6..70f905c 100644
--- a/doxygen/manpages/man1/xml2dcm.1
+++ b/doxygen/manpages/man1/xml2dcm.1
@@ -1,4 +1,4 @@
-.TH "xml2dcm" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "xml2dcm" 1 "Tue Feb 16 2016" "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 cc6e4ce..b44ab9f 100644
--- a/doxygen/manpages/man1/xml2dsr.1
+++ b/doxygen/manpages/man1/xml2dsr.1
@@ -1,4 +1,4 @@
-.TH "xml2dsr" 1 "Thu Sep 24 2015" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
+.TH "xml2dsr" 1 "Tue Feb 16 2016" "Version 3.6.1" "OFFIS DCMTK" \" -*- nroff -*-
 .nh
 .SH NAME
 xml2dsr \- Convert DICOM SR file and data set to XML
@@ -204,10 +204,14 @@ Cyrillic      "ISO_IR 144"  (ISO-8859-5)
 Arabic        "ISO_IR 127"  (ISO-8859-6)
 Greek         "ISO_IR 126"  (ISO-8859-7)
 Hebrew        "ISO_IR 138"  (ISO-8859-8)
+Thai          "ISO_IR 166"  (TIS-620)
+Japanese      "ISO 2022 IR 13\ISO 2022 IR 87"  (ISO-2022-JP)
+Korean        "ISO 2022 IR 6\ISO 2022 IR 149"  (ISO-2022-KR)
+Chinese       "ISO 2022 IR 6\ISO 2022 IR 58"   (ISO-2022-CN)
+Chinese       "GB18030"     (GB18030)
+Chinese       "GBK"         (GBK)
 .fi
 .PP
-.PP
-Multiple character sets are not supported (only the first value of the 'Specific Character Set' is used for the character encoding in case of value multiplicity)\&.
 .SS "Compression"
 If libxml is compiled with zlib support, the input file (\fIxmlfile-in\fP) can also be compressed with ZIP, which usually results in much smaller files\&. See output of option \fI--version\fP in order to check whether zlib support is available\&.
 .SS "Limitations"
@@ -239,4 +243,4 @@ The default behavior should be preferred and the \fIDCMDICTPATH\fP environment v
 \fBdsr2xml\fP(1)
 .SH "COPYRIGHT"
 .PP
-Copyright (C) 2003-2014 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
+Copyright (C) 2003-2015 by OFFIS e\&.V\&., Escherweg 2, 26121 Oldenburg, Germany\&.
diff --git a/oflog/libsrc/Makefile.dep b/oflog/libsrc/Makefile.dep
index da89a87..79ae7ff 100644
--- a/oflog/libsrc/Makefile.dep
+++ b/oflog/libsrc/Makefile.dep
@@ -929,6 +929,8 @@ oflog.o: oflog.cc ../../config/include/dcmtk/config/osconfig.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 \
  ../../ofstd/include/dcmtk/ofstd/ofdate.h \
  ../../ofstd/include/dcmtk/ofstd/oftime.h ../include/dcmtk/oflog/oflog.h \
  ../include/dcmtk/oflog/logger.h ../include/dcmtk/oflog/config.h \
@@ -1281,6 +1283,8 @@ strhelp.o: strhelp.cc ../include/dcmtk/oflog/helpers/strhelp.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/oflog/internal/internal.h ../include/dcmtk/oflog/ndc.h \
  ../include/dcmtk/oflog/mdc.h ../../ofstd/include/dcmtk/ofstd/ofmap.h \
  ../../ofstd/include/dcmtk/ofstd/ofutil.h \
diff --git a/ofstd/include/dcmtk/ofstd/ofchrenc.h b/ofstd/include/dcmtk/ofstd/ofchrenc.h
index 453f149..dbf1807 100644
--- a/ofstd/include/dcmtk/ofstd/ofchrenc.h
+++ b/ofstd/include/dcmtk/ofstd/ofchrenc.h
@@ -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
@@ -217,9 +217,10 @@ class DCMTK_OFSTD_EXPORT OFCharacterEncoding
      *                      encoding specified by 'codePage')
      *  @param  toString    reference to variable in which the pointer to the
      *                      converted string (using the UTF-16 character
-     *                      encoding) is stored.  Might be NULL in case of
-     *                      error.  Please note that the buffer is created
-     *                      with new[] and has to be deleted by the caller.
+     *                      encoding) is stored.  Might only be NULL if memory
+     *                      is exhausted.  Please note that the buffer is
+     *                      created with new[] and has to be deleted by the
+     *                      caller.
      *  @param  toLength    number of converted characters, i.e.\ length of
      *                      'toString'
      *  @param  codePage    identifier of the code page to be used for the
@@ -246,9 +247,10 @@ class DCMTK_OFSTD_EXPORT OFCharacterEncoding
      *                      without the trailing NULL byte)
      *  @param  toString    reference to variable in which the pointer to the
      *                      converted string (using the UTF-16 character
-     *                      encoding) is stored.  Might be NULL in case of
-     *                      error.  Please note that the buffer is created
-     *                      with new[] and has to be deleted by the caller.
+     *                      encoding) is stored.  Might only be NULL if memory
+     *                      is exhausted.  Please note that the buffer is
+     *                      created with new[] and has to be deleted by the
+     *                      caller.
      *  @param  toLength    number of converted characters, i.e.\ length of
      *                      'toString'
      *  @param  codePage    identifier of the code page to be used for the
diff --git a/ofstd/include/dcmtk/ofstd/ofcmdln.h b/ofstd/include/dcmtk/ofstd/ofcmdln.h
index b9fbfae..af92ba7 100644
--- a/ofstd/include/dcmtk/ofstd/ofcmdln.h
+++ b/ofstd/include/dcmtk/ofstd/ofcmdln.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
@@ -204,7 +204,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
         PVS_Overflow
     };
 
-    /** mode for findOption method
+    /** mode for findOption() method
      */
     enum E_FindOptionMode
     {
@@ -264,7 +264,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  optDescr    description of command line option (use '\\n' for line break)
      *  @param  flags       optional flags (see AF_xxx below)
      *
-     ** @return OFTrue if succesfully added
+     ** @return OFTrue if successfully added
      */
     OFBool addOption(const char *longOpt,
                      const char *shortOpt,
@@ -281,7 +281,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  optDescr  description of command line option (use '\\n' for line break)
      *  @param  flags     optional flags (see AF_xxx below)
      *
-     ** @return OFTrue if succesfully added
+     ** @return OFTrue if successfully added
      */
     OFBool addOption(const char *longOpt,
                      const char *shortOpt,
@@ -297,7 +297,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  optDescr    description of command line option (use '\\n' for line break)
      *  @param  flags       optional flags (see AF_xxx below)
      *
-     ** @return OFTrue if succesfully added
+     ** @return OFTrue if successfully added
      */
     OFBool addOption(const char *longOpt,
                      const int valueCount,
@@ -312,7 +312,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  optDescr  description of command line option (use '\\n' for line break)
      *  @param  flags     optional flags (see AF_xxx below)
      *
-     ** @return OFTrue if succesfully added
+     ** @return OFTrue if successfully added
      */
     OFBool addOption(const char *longOpt,
                      const char *optDescr,
@@ -485,7 +485,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFCmdSignedInt &value);
@@ -497,7 +498,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMin(const int pos,
                                            OFCmdSignedInt &value,
@@ -509,9 +511,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMinMax(const int pos,
                                               OFCmdSignedInt &value,
@@ -525,7 +528,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFCmdUnsignedInt &value);
@@ -539,7 +543,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMin(const int pos,
                                            OFCmdUnsignedInt &value,
@@ -553,9 +558,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMinMax(const int pos,
                                               OFCmdUnsignedInt &value,
@@ -567,7 +573,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFCmdFloat &value);
@@ -579,7 +586,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMin(const int pos,
                                            OFCmdFloat &value,
@@ -591,9 +599,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParamAndCheckMinMax(const int pos,
                                               OFCmdFloat &value,
@@ -605,7 +614,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 const char *&value);
@@ -615,19 +625,21 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      ** @param  pos    position of parameter (1..n)
      *  @param  value  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFCmdString &value);
 
     /** gets value of specified parameter as an instance of OFFilename.
-     *  Please note that on Windows systems the returned filename might also contain a wide character
-     *  version (UTF-16) as an alternative representation.  See getWideCharMode().
+     *  Please note that on Windows systems the returned filename might also contain a wide
+     *  character version (UTF-16) as an alternative representation.  See getWideCharMode().
      *
-     ** @param  pos    position of parameter (1..n)
-     *  @param  value  reference to variable where the value should be stored
+     ** @param  pos       position of parameter (1..n)
+     *  @param  filename  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, PVS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, PVS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ParamValueStatus getParam(const int pos,
                                 OFFilename &filename);
@@ -640,14 +652,15 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  predecessor of the optional defined reference parameter 'pos') and goes to the
      *  first one.
      *
-     ** @param  longOpt    name of option (in long format) to be checked
-     *  @param  pos        position of reference parameter
-     *                     (default: all parameters; if value is negative option must be a direct
-     *                      predecessor of the specified reference parameter '-pos', no further
-     *                      search processes will be performed; if search direction is left to right
-     *                      this parameter is ignored, also option blocks are not supported in this
-     *                      case)
-     *  @param  mode       find option mode (used to support option blocks and reverse search direction)
+     ** @param  longOpt  name of option (in long format) to be checked
+     *  @param  pos      position of reference parameter
+     *                   (default: all parameters; if value is negative option must be a
+     *                    direct predecessor of the specified reference parameter '-pos',
+     *                    no further search processes will be performed; if search direction
+     *                    is left to right this parameter is ignored, also option blocks are
+     *                    not supported in this case)
+     *  @param  mode     find option mode (used to support option blocks and reverse search
+     *                   direction)
      *
      ** @return OFTrue if option exists, OFFalse otherwise
      */
@@ -704,7 +717,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to signed integer variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFCmdSignedInt &value);
 
@@ -714,7 +728,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMin(OFCmdSignedInt &value,
                                       const OFCmdSignedInt low,
@@ -724,9 +739,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to signed integer variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMinMax(OFCmdSignedInt &value,
                                          const OFCmdSignedInt low,
@@ -736,7 +752,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to unsigned integer variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFCmdUnsignedInt &value);
 
@@ -746,7 +763,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMin(OFCmdUnsignedInt &value,
                                       const OFCmdUnsignedInt low,
@@ -756,9 +774,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to unsigned integer variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMinMax(OFCmdUnsignedInt &value,
                                          const OFCmdUnsignedInt low,
@@ -768,7 +787,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to floating point variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFCmdFloat &value);
 
@@ -778,7 +798,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *  @param  low    minimum boundary for value (used for range check)
      *  @param  incl   if OFTrue 'low' value is valid (included), otherwise invalid
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMin(OFCmdFloat &value,
                                       const OFCmdFloat low,
@@ -788,9 +809,10 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to floating point variable where the value should be stored
      *  @param  low    minimum boundary for value (used for range check, boundary included)
-     *  @param  high   maximum boundary for value (dito)
+     *  @param  high   maximum boundary for value (ditto)
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValueAndCheckMinMax(OFCmdFloat &value,
                                          const OFCmdFloat low,
@@ -800,7 +822,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to C string variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(const char *&value);
 
@@ -808,17 +831,19 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      *
      ** @param  value  reference to C++ string variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFCmdString &value);
 
     /** returns next argument as an instance of OFFilename.
-     *  Please note that on Windows systems the returned filename might also contain a wide character
-     *  version (UTF-16) as an alternative representation.  See getWideCharMode().
+     *  Please note that on Windows systems the returned filename might also contain a wide
+     *  character version (UTF-16) as an alternative representation.  See getWideCharMode().
      *
-     ** @param  value  reference to variable where the value should be stored
+     ** @param  filename  reference to variable where the value should be stored
      *
-     ** @return status of get/conversion, VS_Normal if successful (use getStatusString for error string)
+     ** @return status of get/conversion, VS_Normal if successful
+     *          (use getStatusString() for error string)
      */
     E_ValueStatus getValue(OFFilename &filename);
 
@@ -826,16 +851,18 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
  // --- parsing command line
 
     /** parses specified command line arguments (argc, argv).  Sets 'WideCharMode' to OFFalse.
-     *  Additionally, create internal structures for evaluation and return status indicating any errors
-     *  that occurred during the parse process.
+     *  Additionally, create internal structures for evaluation and return status indicating
+     *  any errors that occurred during the parse process.
      *
      ** @param  argCount  number of command line arguments stored in argValue
      *  @param  argValue  array where the command line arguments are stored
      *  @param  flags     optional flags affecting the parse process (see PF_xxx below)
-     *  @param  startPos  index of first argument which should be parsed (starting from 0, default: 1)
+     *  @param  startPos  index of first argument which should be parsed (starting from 0,
+     *                    default: 1)
      *
-     ** @return status of parse process, PS_Normal if successful (use getStatusString for error string).
-     *          If an exclusive option is used the status code PS_ExclusiveOption is returned.
+     ** @return status of parse process, PS_Normal if successful
+     *          (use getStatusString() for error string).  If an exclusive option is used,
+     *           the status code PS_ExclusiveOption is returned.
      */
     E_ParseStatus parseLine(int argCount,
                             char *argValue[],
@@ -845,20 +872,22 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
 #ifdef DCMTK_USE_WCHAR_T
 
     /** parses specified command line arguments (argc, argv).  Sets 'WideCharMode' to OFTrue.
-     *  This is a Windows-specific version supporting the wide character encoding (UTF-16).  Internally,
-     *  all character strings are stored in UTF-8, because this Unicode encoding is supported by DICOM.
-     *  However, there are getValue() and getParam() methods that allow for accessing filenames with
-     *  wide character encoding (UTF-16).
-     *  Additionally, create internal structures for evaluation and return status indicating any errors
-     *  that occurred during the parse process.
+     *  This is a Windows-specific version supporting the wide character encoding (UTF-16).
+     *  Internally, all character strings are stored in UTF-8, because this Unicode encoding is
+     *  supported by DICOM.  However, there are getValue() and getParam() methods that allow for
+     *  accessing filenames with wide character encoding (UTF-16).
+     *  Additionally, create internal structures for evaluation and return status indicating any
+     *  errors that occurred during the parse process.
      *
      ** @param  argCount  number of command line arguments stored in argValue
      *  @param  argValue  array where the command line arguments are stored
      *  @param  flags     optional flags affecting the parse process (see PF_xxx below)
-     *  @param  startPos  index of first argument which should be parsed (starting from 0, default: 1)
+     *  @param  startPos  index of first argument which should be parsed (starting from 0,
+     *                    default: 1)
      *
-     ** @return status of parse process, PS_Normal if successful (use getStatusString for error string).
-     *          If an exclusive option is used the status code PS_ExclusiveOption is returned.
+     ** @return status of parse process, PS_Normal if successful
+     *          (use getStatusString() for error string).  If an exclusive option is used,
+     *           the status code PS_ExclusiveOption is returned.
      */
     E_ParseStatus parseLine(int argCount,
                             wchar_t *argValue[],
@@ -871,15 +900,16 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
  // --- get usage/status strings
 
     /** returns command line syntax as a C++ string (single text line).
-     *  Text consists of "[options]" (if defined by addOption) and all parameters defined by addParam.
+     *  Text consists of "[options]" (if defined by addOption()) and all parameters defined
+     *  by addParam().
      *
      ** @param  syntaxStr  reference to C++ string where the text should be stored
      */
     void getSyntaxString(OFString &syntaxStr) const;
 
     /** returns description of all options as a C++ string (multiple text lines).
-     *  Text consists of group headings, short and long option names, option descriptions and additional
-     *  option values.
+     *  Text consists of group headings, short and long option names, option descriptions and
+     *  additional option values.
      *
      ** @param  optionStr  reference to C++ string where the text should be stored
      */
@@ -892,32 +922,32 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      */
     void getParamString(OFString &paramStr) const;
 
-    /** returns status of parseLine as a C++ string
+    /** returns status of parseLine() as a C++ string
      *
-     ** @param  status     value returned by method parseLine
+     ** @param  status     value returned by method parseLine()
      *  @param  statusStr  reference to C++string where the text should be stored
      */
     void getStatusString(const E_ParseStatus status,
                          OFString &statusStr);
 
-    /** returns status of getParam as a C++ string
+    /** returns status of getParam() as a C++ string
      *
-     ** @param  status     value returned by method getParam
+     ** @param  status     value returned by method getParam()
      *  @param  statusStr  reference to C++string where the text should be stored
      */
     void getStatusString(const E_ParamValueStatus status,
                          OFString &statusStr);
 
-    /** returns status of getValue as a C++ string
+    /** returns status of getValue() as a C++ string
      *
-     ** @param  status     value returned by method getValue
+     ** @param  status     value returned by method getValue()
      *  @param  statusStr  reference to C++string where the text should be stored
      */
     void getStatusString(const E_ValueStatus status,
                          OFString &statusStr);
 
 
- // --- flags (used for method parseLine)
+ // --- flags (used for method parseLine())
 
     /// parsing flag to expand wildcard under Windows.
     /// (not used anymore, only available for reasons of backward compatibility;
@@ -926,9 +956,9 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
     /// disable support for command files ("@filename") containing additional arguments
     static const int PF_NoCommandFiles;
 
- // --- flags (used for method addOption)
+ // --- flags (used for method addOption())
 
-    /// exclusive option that overrides any other option (e.g. "--help")
+    /// exclusive option that overrides any other option (e.g.\ "--help")
     static const int AF_Exclusive;
     /// internal option that is not shown in the syntax usage output
     static const int AF_Internal;
@@ -939,7 +969,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
 
  protected:
 
-    /** checks whether given option is valid (starting with an option char and not followed by a number)
+    /** checks whether given option is valid (starting with an option char and not
+     *  followed by a number)
      */
     OFBool checkOption(const OFString &option,
                        const OFBool mode = OFTrue) const;
@@ -990,7 +1021,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
                             unsigned int &longCols,
                             unsigned int &shortCols) const;
 
-    /** checks whether number of parameters in parsed command line is within the range of min/max (see below)
+    /** checks whether number of parameters in parsed command line is within the range
+     *  of min/max (see below)
      */
     E_ParseStatus checkParamCount();
 
@@ -998,7 +1030,8 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
      */
     OFBool getLastArg(OFString &arg);
 
-    /** returns name of parameter which is missed in the parsed command line (used for error output)
+    /** returns name of parameter which is missed in the parsed command line
+     *  (used for error output)
      */
     OFBool getMissingParam(OFString &param);
 
@@ -1033,7 +1066,7 @@ class DCMTK_OFSTD_EXPORT OFCommandLine
 
     /// OFTrue if option block is active, OFFalse otherwise
     OFBool OptionBlockMode;
-    /// C++ string conisting of all valid characters introducing an option
+    /// C++ string consisting of all valid characters introducing an option
     OFString OptionChars;
 
     /// OFTrue if an "exclusive" option is used in the command line, OFFalse otherwise
diff --git a/ofstd/include/dcmtk/ofstd/offile.h b/ofstd/include/dcmtk/ofstd/offile.h
index 4b9e88d..abb71bf 100644
--- a/ofstd/include/dcmtk/ofstd/offile.h
+++ b/ofstd/include/dcmtk/ofstd/offile.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2006-2014, OFFIS e.V.
+ *  Copyright (C) 2006-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were developed by
@@ -140,7 +140,7 @@ public:
    *    alternative representation.  Only works on Windows systems.
    */
   OFFilename(const wchar_t *filename,
-             const OFBool convert = OFFalse);
+             const OFBool convert = OFTrue);
 #endif
 
   /** copy constructor
@@ -226,7 +226,7 @@ public:
    *    representation.  Only works on Windows systems.
    */
   void set(const wchar_t *filename,
-           const OFBool convert = OFFalse);
+           const OFBool convert = OFTrue);
 #endif
 
 private:
diff --git a/ofstd/include/dcmtk/ofstd/ofmath.h b/ofstd/include/dcmtk/ofstd/ofmath.h
new file mode 100644
index 0000000..288503a
--- /dev/null
+++ b/ofstd/include/dcmtk/ofstd/ofmath.h
@@ -0,0 +1,89 @@
+/*
+ *
+ *  Copyright (C) 2015, 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 definition of basic functions declared
+ *           in <math.h> resp. <cmath>.
+ *
+ */
+
+
+#ifndef OFMATH_H
+#define OFMATH_H
+
+#include "dcmtk/config/osconfig.h"
+#include "dcmtk/ofstd/oftypes.h"    /* for OFBool */
+#include "dcmtk/ofstd/oftraits.h"   /* for OFenable_if, ... */
+
+class DCMTK_OFSTD_EXPORT OFMath
+{
+
+public:
+
+#ifndef DOXYGEN
+    static OFBool (isnan) (float f);
+    static OFBool (isnan) (double d);
+    template<typename Integer>
+    static inline OFTypename OFenable_if<OFis_integral<Integer>::value,OFBool>::type
+    (isnan) ( const Integer i ) { return (isnan) ( OFstatic_cast( double, i ) ); }
+
+    static OFBool (isinf) (float f);
+    static OFBool (isinf) (double d);
+    template<typename Integer>
+    static inline OFTypename OFenable_if<OFis_integral<Integer>::value,OFBool>::type
+    (isinf) ( const Integer i ) { return (isinf) ( OFstatic_cast( double, i ) ); }
+#else
+    /** Determines if the given floating point number is a not-a-number (NaN) value.
+     *  @param f the floating point value to inspect.
+     *  @return OFTrue if f is a NaN, OFFalse otherwise.
+     */
+    static OFBool isnan( float f );
+
+    /** Determines if the given floating point number is a not-a-number (NaN) value.
+     *  @param d the floating point value to inspect.
+     *  @return OFTrue if d is a NaN, OFFalse otherwise.
+     */
+    static OFBool isnan( double d );
+
+    /** Casts the argument to double and calls OFMath::isnan(double) on the result.
+     *  @param i an integer, i.e. <kbd>OFis_integral<Integer>::value</kbd> equals <kbd>OFTrue</kbd>.
+     *  @return OFMath::isnan(OFstatic_cast(double,i)).
+     */
+    template<typename Integer>
+    static OFBool isnan( Integer i );
+
+    /** Determines if the given floating point number is a positive or negative infinity.
+     *  @param f the floating point value to inspect.
+     *  @return OFTrue if f is infinite, OFFalse otherwise.
+     */
+    static OFBool isinf( float f );
+
+    /** Determines if the given floating point number is a positive or negative infinity.
+     *  @param d the floating point value to inspect.
+     *  @return OFTrue if d is infinite, OFFalse otherwise.
+     */
+    static OFBool isinf( double d );
+
+    /** Casts the argument to double and calls OFMath::isinf(double) on the result.
+     *  @param i an integer, i.e. <kbd>OFis_integral<Integer>::value</kbd> equals <kbd>OFTrue</kbd>.
+     *  @return OFMath::isinf(OFstatic_cast(double,i)).
+     */
+    template<typename Integer>
+    static OFBool isinf( Integer i );
+#endif
+};
+
+#endif // OFMATH_H
diff --git a/ofstd/include/dcmtk/ofstd/ofstack.h b/ofstd/include/dcmtk/ofstd/ofstack.h
index cf0da10..ba5f518 100644
--- a/ofstd/include/dcmtk/ofstd/ofstack.h
+++ b/ofstd/include/dcmtk/ofstd/ofstack.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
@@ -30,10 +30,10 @@
 #include "dcmtk/ofstd/ofdefine.h"
 
 #if defined(HAVE_STL) || defined(HAVE_STL_STACK)
-// It is possible to use the standard template library list class since the 
+// It is possible to use the standard template library list class since the
 // interface is nearly identical.
 // Important: If you want to use the standard template library, no variable
-// in a namespace with using a list shall have the name stack 
+// in a namespace with using a list shall have the name stack
 #include <stack>
 #define OFStack std::stack
 #else
@@ -47,7 +47,7 @@
 #endif
 
 
-/**  non-template single linked list class, used to store elements of a stack.
+/** non-template single linked list class, used to store elements of a stack.
  *  Implicitly used by OFStack, should not be called by users.
  */
 struct OFStackLinkBase
@@ -67,10 +67,10 @@ struct OFStackLinkBase
     }
 private:
 
-    /// private undefined copy constructor 
+    /// private undefined copy constructor
     OFStackLinkBase(const OFStackLinkBase &);
 
-    /// private undefined copy assignment operator 
+    /// private undefined copy assignment operator
     OFStackLinkBase &operator=(const OFStackLinkBase &);
 };
 
@@ -95,7 +95,7 @@ public:
     }
 
     /** checks if the stack is empty
-     *  @return true if stack is emtpy, false otherwise
+     *  @return true if stack is empty, false otherwise
      */
     OFBool base_empty() const { return head == NULL; }
 
@@ -106,11 +106,22 @@ public:
 
     /** returns element on top of stack.
      *  precondition: stack is not empty
+     *  @return element on top of stack.
      */
-    OFStackLinkBase * base_top() 
+    OFStackLinkBase * base_top()
     {
-    assert(head!=NULL);
-    return head;
+      assert(head!=NULL);
+      return head;
+    }
+
+    /** returns element on top of stack.
+     *  precondition: stack is not empty
+     *  @return element on top of stack.
+     */
+    const OFStackLinkBase * base_top() const
+    {
+      assert(head!=NULL);
+      return head;
     }
 
     /** pushes element onto stack.
@@ -122,7 +133,7 @@ public:
       head = element;
       stackSize++;
     }
-    
+
     /** removes top element from stack.
      *  precondition: stack not empty.
      */
@@ -139,16 +150,16 @@ protected:
 
     /// pointer to top element of stack
     OFStackLinkBase * head;
-    
+
     /// size of stack
     size_t stackSize;
 
 private:
- 
-    /// private undefined copy constructor 
+
+    /// private undefined copy constructor
     OFStackBase(const OFStackBase &);
 
-    /// private undefined copy assignment operator 
+    /// private undefined copy assignment operator
     OFStackBase &operator=(const OFStackBase &);
 
 };
@@ -173,11 +184,11 @@ struct OFStackLink : public OFStackLinkBase
     }
 
 private:
- 
-    /// private undefined copy constructor 
+
+    /// private undefined copy constructor
     OFStackLink(const OFStackLink<T> &);
 
-    /// private undefined copy assignment operator 
+    /// private undefined copy assignment operator
     OFStackLink<T> &operator=(const OFStackLink<T> &);
 };
 
@@ -192,7 +203,7 @@ class OFStack : private OFStackBase
 
 public:
 
-    /// Default constructor
+    /// default constructor
     OFStack() {};
 
     /// copy constructor
@@ -201,7 +212,7 @@ public:
         copy(x);
     }
 
-    /// Assignment operator
+    /// assignment operator
     OFStack<T> &operator=(const OFStack<T> &x)
     {
         if (this != &x)
@@ -227,28 +238,37 @@ public:
      *  This method may not be called if the stack is empty.
      *  @return reference to top element
      */
-    T & top() 
-    { 
-        return (OFstatic_cast(OFStackLink<T> *, OFStackBase::base_top()))->info; 
+    T & top()
+    {
+        return (OFstatic_cast(OFStackLink<T> *, OFStackBase::base_top()))->info;
+    }
+
+    /** returns a const reference to the top element on the stack.
+     *  This method may not be called if the stack is empty.
+     *  @return const reference to top element
+     */
+    const T & top() const
+    {
+        return (OFstatic_cast(const OFStackLink<T> *, OFStackBase::base_top()))->info;
     }
 
     /** inserts a new element on top of the stack. The value of
      *  the new element is copy constructed from the given argument.
      *  @param x value to be pushed (copied) onto the stack
      */
-    void push(const T & x) 
-    { 
+    void push(const T & x)
+    {
         OFStackBase::base_push(new OFStackLink<T>(x));
     }
 
     /** removes the top element from the stack.
      *  This method may not be called if the stack is empty.
-     */    
+     */
     void pop() { OFStackBase::base_pop(); }
 
 private:
 
-    /** copy assignment of a stack. 
+    /** copy assignment of a stack.
      *  @param x stack to be copied
      *  @return dummy value, required to keep Sun CC 2.0.1 happy
      */
@@ -262,8 +282,7 @@ private:
             OFStackLinkBase * oldPtr = x.head->next;
             while (oldPtr)
             {
-            newPtr->next = 
-                new OFStackLink<T>((OFstatic_cast(OFStackLink<T>*, oldPtr))->info);
+            newPtr->next = new OFStackLink<T>((OFstatic_cast(OFStackLink<T>*, oldPtr))->info);
             oldPtr = oldPtr->next;
             newPtr = newPtr->next;
             }
diff --git a/ofstd/include/dcmtk/ofstd/ofstd.h b/ofstd/include/dcmtk/ofstd/ofstd.h
index d599d5c..6f24049 100644
--- a/ofstd/include/dcmtk/ofstd/ofstd.h
+++ b/ofstd/include/dcmtk/ofstd/ofstd.h
@@ -30,7 +30,9 @@
 #include "dcmtk/ofstd/oftypes.h"    /* for OFBool */
 #include "dcmtk/ofstd/oftraits.h"   /* for OFenable_if, ... */
 #include "dcmtk/ofstd/ofcond.h"     /* for OFCondition */
+#include "dcmtk/ofstd/oflimits.h"   /* for OFnumeric_limits<T>::max() */
 
+#define INCLUDE_CASSERT
 #define INCLUDE_CSTDLIB
 #define INCLUDE_CSTDIO
 #define INCLUDE_CSTRING
@@ -629,7 +631,7 @@ class DCMTK_OFSTD_EXPORT OFStandard
 
     /** convert character string to an octal format stream.
      *  All non-ASCII and control characters (code < #32 and >= #127) are converted to their
-     *  octal representation, i.e. to '\ooo' where 'ooo' are the three octal digits of the
+     *  octal representation, i.e. to '\\ooo' where 'ooo' are the three octal digits of the
      *  character.  All other characters are output as is.  See section 6.1.2.3 in DICOM PS 3.5.
      ** @param out stream used for the output
      *  @param sourceString source string to be converted.  May contain one or more NULL bytes.
@@ -643,7 +645,7 @@ class DCMTK_OFSTD_EXPORT OFStandard
 
     /** convert character string to an octal format string.
      *  All non-ASCII and control characters (code < #32 and >= #127) are converted to their
-     *  octal representation, i.e. to '\ooo' where 'ooo' are the three octal digits of the
+     *  octal representation, i.e. to '\\ooo' where 'ooo' are the three octal digits of the
      *  character.  All other characters are output as is.  See section 6.1.2.3 in DICOM PS 3.5.
      ** @param sourceString source string to be converted.  May contain one or more NULL bytes.
      *  @param octalString reference to character string where the result should be stored
@@ -707,59 +709,6 @@ class DCMTK_OFSTD_EXPORT OFStandard
     static size_t decodeBase64(const OFString &data,
                                unsigned char *&result);
 
-
-#ifndef DOXYGEN
-    static OFBool (isnan) (float f);
-    static OFBool (isnan) (double d);
-    template<typename Integer>
-    static inline OFTypename OFenable_if<OFis_integral<Integer>::value,OFBool>::type
-    (isnan) ( const Integer i ) { return (isnan) ( OFstatic_cast( double, i ) ); }
-
-    static OFBool (isinf) (float f);
-    static OFBool (isinf) (double d);
-    template<typename Integer>
-    static inline OFTypename OFenable_if<OFis_integral<Integer>::value,OFBool>::type
-    (isinf) ( const Integer i ) { return (isinf) ( OFstatic_cast( double, i ) ); }
-#else
-    /** Determines if the given floating point number is a not-a-number (NaN) value.
-     *  @param f the floating point value to inspect.
-     *  @return OFTrue if f is a NaN, OFFalse otherwise.
-     */
-    static OFBool isnan( float f );
-
-    /** Determines if the given floating point number is a not-a-number (NaN) value.
-     *  @param d the floating point value to inspect.
-     *  @return OFTrue if d is a NaN, OFFalse otherwise.
-     */
-    static OFBool isnan( double d );
-
-    /** Casts the argument to double and calls OFStandard::isnan(double) on the result.
-     *  @param i an integer, i.e. <kbd>OFis_integral<Integer>::value</kbd> equals <kbd>OFTrue</kbd>.
-     *  @return OFStandard::isnan(OFstatic_cast(double,i)).
-     */
-    template<typename Integer>
-    static OFBool isnan( Integer i );
-
-    /** Determines if the given floating point number is a positive or negative infinity.
-     *  @param f the floating point value to inspect.
-     *  @return OFTrue if f is infinite, OFFalse otherwise.
-     */
-    static OFBool isinf( float f );
-
-    /** Determines if the given floating point number is a positive or negative infinity.
-     *  @param d the floating point value to inspect.
-     *  @return OFTrue if d is infinite, OFFalse otherwise.
-     */
-    static OFBool isinf( double d );
-
-    /** Casts the argument to double and calls OFStandard::isinf(double) on the result.
-     *  @param i an integer, i.e. <kbd>OFis_integral<Integer>::value</kbd> equals <kbd>OFTrue</kbd>.
-     *  @return OFStandard::isinf(OFstatic_cast(double,i)).
-     */
-    template<typename Integer>
-    static OFBool isinf( Integer i );
-#endif
-
     /** converts a floating-point number from an ASCII
      *  decimal representation to internal double-precision format.
      *  Unlike the atof() function defined in Posix, this implementation
@@ -879,7 +828,7 @@ class DCMTK_OFSTD_EXPORT OFStandard
      */
     static long getProcessID();
 
-     /** check whether the addition of two 32-bit integers yields in an overflow
+    /** check whether the addition of two 32-bit integers yields in an overflow
      *  @param summand1 first integer value to be added
      *  @param summand2 second integer value to be added
      *  @return OFTrue if an overflow occurred during the addition, OFFalse otherwise
@@ -890,6 +839,51 @@ class DCMTK_OFSTD_EXPORT OFStandard
       return (0xffffffff - summand1 < summand2);
     }
 
+    /** check whether subtraction is safe (i.e.\ no underflow occurs) and if so,
+     *  perform it (i.e.\ compute minuend-subtrahend=difference). Only works for
+     *  unsigned types.
+     *  @param minuend number to subtract from
+     *  @param subtrahend number to subtract from minuend
+     *  @param difference difference, if subtraction is safe, otherwise the
+     *    parameter value is not touched by the function
+     *  @return OFTrue if subtraction is safe and could be performed, OFFalse
+     *   otherwise
+     */
+    template <typename T>
+    static OFBool
+    safeSubtract(T minuend, T subtrahend, T& difference)
+    {
+      assert(!OFnumeric_limits<T>::is_signed);
+      if (minuend < subtrahend) {
+        return OFFalse;
+      } else {
+        difference = minuend - subtrahend;
+        return OFTrue;
+      }
+    }
+
+    /** check whether addition is safe (i.e.\ no overflow occurs) and if so,
+     *  perform it (i.e.\ compute a+b=sum). Only works for unsigned types.
+     *  @param a first number to add
+     *  @param b second number to add
+     *  @param sum resulting sum of both numbers, if addition is safe, otherwise
+     *    parameter value is not touched by the function
+     *  @return OFTrue if addition is safe and could be performed, OFFalse
+     *    otherwise
+     */
+    template <typename T>
+    static OFBool
+    safeAdd(T a, T b, T& sum)
+    {
+      assert(!OFnumeric_limits<T>::is_signed);
+      if (OFnumeric_limits<T>::max() - a < b) {
+        return OFFalse;
+      } else {
+        sum = a + b;
+        return OFTrue;
+      }
+    }
+
     /** Thread-safe version of gethostbyname.
      *  @param name the host name.
      *  @return a OFStandard::OFHostent object.
@@ -918,7 +912,7 @@ class DCMTK_OFSTD_EXPORT OFStandard
 
     /** On Posix-like platform, this method executes setuid(getuid()),
      *  which causes the application to revert from root privileges to
-     *  thos of the calling user when the program is installed as
+     *  those of the calling user when the program is installed as
      *  setuid root. DCMTK command line tools that open a socket for
      *  incoming DICOM network connections will call this method immediately
      *  after opening the socket. Since DICOM by default operates on
diff --git a/ofstd/include/dcmtk/ofstd/oftempf.h b/ofstd/include/dcmtk/ofstd/oftempf.h
index aaab514..f045406 100644
--- a/ofstd/include/dcmtk/ofstd/oftempf.h
+++ b/ofstd/include/dcmtk/ofstd/oftempf.h
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011, 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
@@ -84,7 +84,7 @@ public:
     /** Create a new temporary file.
      *  @param fileName after this call, this will contain the name of the file
      *         that was created
-     *  @param fd if not NULL, this will be set to a file descriptor for this
+     *  @param fd_out if not NULL, this will be set to a file descriptor for this
      *         file
      *  @param flags additional flags to pass to open() as its third argument
      *  @param dir the directory in which the file should be created.
diff --git a/ofstd/libsrc/Makefile.dep b/ofstd/libsrc/Makefile.dep
index 6093009..277ff0e 100644
--- a/ofstd/libsrc/Makefile.dep
+++ b/ofstd/libsrc/Makefile.dep
@@ -4,7 +4,9 @@ ofchrenc.o: ofchrenc.cc ../../config/include/dcmtk/config/osconfig.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/oflist.h ../include/dcmtk/ofstd/oftraits.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 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 \
@@ -13,7 +15,9 @@ ofcmdln.o: ofcmdln.cc ../../config/include/dcmtk/config/osconfig.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/ofchrenc.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofchrenc.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 \
@@ -23,6 +27,8 @@ ofconapp.o: ofconapp.cc ../../config/include/dcmtk/config/osconfig.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/ofchrenc.h
 ofcond.o: ofcond.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oftypes.h \
@@ -62,40 +68,44 @@ offile.o: offile.cc ../../config/include/dcmtk/config/osconfig.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/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 offname.o: offname.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/offname.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/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 oflist.o: oflist.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 \
  ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/ofstd/ofstream.h
 ofmath.o: ofmath.cc ../../config/include/dcmtk/config/osconfig.h \
- ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstd.h \
- ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftypes.h \
+ ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
+ ../include/dcmtk/ofstd/ofmath.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
- ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstream.h \
- ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/oftraits.h
 ofstd.o: ofstd.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.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/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/offile.h \
- ../include/dcmtk/ofstd/oftuple.h ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.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/variadic/tuplefrd.h \
- ../include/dcmtk/ofstd/variadic/tuple.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
+ ../include/dcmtk/ofstd/variadic/tuple.h ../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
 ofstring.o: ofstring.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -108,22 +118,26 @@ oftempf.o: oftempf.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/offname.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
- ../include/dcmtk/ofstd/oftraits.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 ofthread.o: ofthread.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/ofstd.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
  ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/ofstd/ofconsol.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/ofconsol.h
 oftime.o: oftime.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstdinc.h ../include/dcmtk/ofstd/oftime.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
  ../include/dcmtk/ofstd/ofexport.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.h \
- ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 oftimer.o: oftimer.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oftimer.h ../include/dcmtk/ofstd/ofstream.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -135,7 +149,8 @@ ofuuid.o: ofuuid.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstream.h ../include/dcmtk/ofstd/ofstring.h \
  ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/ofstd.h \
  ../include/dcmtk/ofstd/oflist.h ../include/dcmtk/ofstd/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 ofxml.o: ofxml.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofxml.h ../include/dcmtk/ofstd/ofstdinc.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
diff --git a/ofstd/libsrc/ofchrenc.cc b/ofstd/libsrc/ofchrenc.cc
index 3fb4091..26230d4 100644
--- a/ofstd/libsrc/ofchrenc.cc
+++ b/ofstd/libsrc/ofchrenc.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2014, 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
@@ -109,6 +109,8 @@ OFCondition OFCharacterEncoding::setTransliterationMode(const OFBool mode)
     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");
@@ -122,6 +124,8 @@ OFCondition OFCharacterEncoding::setDiscardIllegalSequenceMode(const OFBool mode
     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");
@@ -158,6 +162,9 @@ OFCondition OFCharacterEncoding::selectEncoding(const OFString &fromEncoding,
     // then, try to open a new descriptor for the specified character encodings
     return openDescriptor(ConversionDescriptor, fromEncoding.c_str(), toEncoding.c_str());
 #else
+    // avoid compiler warning on unused variables
+    (void)fromEncoding;
+    (void)toEncoding;
     return EC_NoEncodingLibrary;
 #endif
 }
@@ -253,6 +260,12 @@ OFCondition OFCharacterEncoding::convertString(T_Descriptor descriptor,
         status = EC_NoEncodingSelected;
     return status;
 #else
+    // avoid compiler warning on unused variables
+    (void)descriptor;
+    (void)fromString;
+    (void)fromLength;
+    (void)toString;
+    (void)clearMode;
     return EC_NoEncodingLibrary;
 #endif
 }
@@ -374,6 +387,9 @@ OFCondition OFCharacterEncoding::openDescriptor(T_Descriptor &descriptor,
     return status;
 #else
     descriptor = ILLEGAL_DESCRIPTOR;
+    // avoid compiler warning on unused variables
+    (void)fromEncoding;
+    (void)toEncoding;
     return EC_NoEncodingLibrary;
 #endif
 }
@@ -415,6 +431,8 @@ 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
 }
@@ -428,6 +446,11 @@ void OFCharacterEncoding::createErrnoCondition(OFCondition &status,
     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
 }
 
diff --git a/ofstd/libsrc/ofcmdln.cc b/ofstd/libsrc/ofcmdln.cc
index 5e7ef72..c1b650f 100644
--- a/ofstd/libsrc/ofcmdln.cc
+++ b/ofstd/libsrc/ofcmdln.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
@@ -1254,7 +1254,7 @@ OFCommandLine::E_ParseStatus OFCommandLine::parseCommandFile(const wchar_t *argV
 
 
 OFCommandLine::E_ParseStatus OFCommandLine::parseArgumentList(OFList<OFString> &argList,
-                                                              const int flags)
+                                                              const int /*flags*/)
 {
     ArgumentList.clear();                                                // initialize lists/positions
     ParamPosList.clear();
diff --git a/ofstd/libsrc/offile.cc b/ofstd/libsrc/offile.cc
index 73a71c4..a65b451 100644
--- a/ofstd/libsrc/offile.cc
+++ b/ofstd/libsrc/offile.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2014, 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
@@ -164,6 +164,8 @@ void OFFilename::set(const char *filename,
         }
 #endif
 #endif
+        /* avoid compiler warning on unused variable */
+        (void)convert;
     }
 }
 
@@ -193,6 +195,8 @@ void OFFilename::set(const wchar_t *filename,
             filename_ = strdup(tmpString.c_str());
         }
 #endif
+        /* avoid compiler warning on unused variable */
+        (void)convert;
     }
 }
 #endif
diff --git a/ofstd/libsrc/ofmath.cc b/ofstd/libsrc/ofmath.cc
index 788df75..90c9e61 100644
--- a/ofstd/libsrc/ofmath.cc
+++ b/ofstd/libsrc/ofmath.cc
@@ -25,8 +25,9 @@
 
 #define INCLUDE_CMATH
 #define INCLUDE_CFLOAT
+#define INCLUDE_IOSTREAM
 #include "dcmtk/ofstd/ofstdinc.h"
-#include "dcmtk/ofstd/ofstd.h"
+#include "dcmtk/ofstd/ofmath.h"
 
 #ifdef HAVE_WINDOWS_H
 #define WIN32_LEAN_AND_MEAN
@@ -87,7 +88,7 @@ static int my_isinf(double x)
 }
 #endif /* HAVE_ISINF */
 
-OFBool OFStandard::isnan( float f )
+OFBool OFMath::isnan( float f )
 {
 #ifdef HAVE_WINDOWS_H
   return _isnan(f) != 0;
@@ -98,7 +99,7 @@ OFBool OFStandard::isnan( float f )
 #endif
 }
 
-OFBool OFStandard::isnan( double d )
+OFBool OFMath::isnan( double d )
 {
 #ifdef HAVE_WINDOWS_H
   return _isnan(d) != 0;
@@ -109,7 +110,7 @@ OFBool OFStandard::isnan( double d )
 #endif
 }
 
-OFBool OFStandard::isinf( float f )
+OFBool OFMath::isinf( float f )
 {
 #ifdef HAVE_PROTOTYPE_STD__ISINF
   return STD_NAMESPACE isinf( f );
@@ -120,7 +121,7 @@ OFBool OFStandard::isinf( float f )
 #endif
 }
 
-OFBool OFStandard::isinf( double d )
+OFBool OFMath::isinf( double d )
 {
 #ifdef HAVE_PROTOTYPE_STD__ISINF
   return STD_NAMESPACE isinf( d );
diff --git a/ofstd/libsrc/ofstd.cc b/ofstd/libsrc/ofstd.cc
index 45865cf..cb35fad 100644
--- a/ofstd/libsrc/ofstd.cc
+++ b/ofstd/libsrc/ofstd.cc
@@ -97,6 +97,7 @@
 #include "dcmtk/ofstd/offile.h"
 #include "dcmtk/ofstd/ofstream.h"
 #include "dcmtk/ofstd/oftuple.h"
+#include "dcmtk/ofstd/ofmath.h"
 
 #define INCLUDE_CMATH
 #define INCLUDE_CFLOAT
@@ -1973,14 +1974,14 @@ void OFStandard::ftoa(
   unsigned char fmtch = 'G';
 
   // check if val is NAN
-  if (isnan(val))
+  if (OFMath::isnan(val))
   {
     OFStandard::strlcpy(dst, "nan", siz);
     return;
   }
 
   // check if val is infinity
-  if (isinf(val))
+  if (OFMath::isinf(val))
   {
     if (val < 0)
         OFStandard::strlcpy(dst, "-inf", siz);
@@ -2398,14 +2399,14 @@ void OFStandard::ftoa(
   if (!dst || !siz) return;
 
   // check if val is NAN
-  if (OFStandard::isnan(val))
+  if (OFMath::isnan(val))
   {
     OFStandard::strlcpy(dst, "nan", siz);
     return;
   }
 
   // check if val is infinity
-  if (OFStandard::isinf(val))
+  if (OFMath::isinf(val))
   {
     if (val < 0)
         OFStandard::strlcpy(dst, "-inf", siz);
diff --git a/ofstd/libsrc/ofuuid.cc b/ofstd/libsrc/ofuuid.cc
index b22afad..9a1e43c 100644
--- a/ofstd/libsrc/ofuuid.cc
+++ b/ofstd/libsrc/ofuuid.cc
@@ -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
@@ -296,7 +296,7 @@ void OFUUID::printHex(STD_NAMESPACE ostream& stream) const
     stream.fill(fill_char);
 }
 
-static void divide_by(Uint32 n, Uint32 d, Uint32& res, Uint32& rem)
+static void divide_by_10(Uint32 n, Uint32& res, Uint32& rem)
 {
     // This calculates res = m / d and rem = m % d where m = n + rem * 2^32
 
@@ -342,10 +342,10 @@ void OFUUID::printInteger(STD_NAMESPACE ostream& stream) const
     // As long as the result isn't 0, divide by 10 and print the remainder
     while (data[0] != 0 || data[1] != 0 || data[2] != 0 || data[3] != 0) {
         Uint32 rem = 0;
-        divide_by(data[0], 10, data[0], rem);
-        divide_by(data[1], 10, data[1], rem);
-        divide_by(data[2], 10, data[2], rem);
-        divide_by(data[3], 10, data[3], rem);
+        divide_by_10(data[0], data[0], rem);
+        divide_by_10(data[1], data[1], rem);
+        divide_by_10(data[2], data[2], rem);
+        divide_by_10(data[3], data[3], rem);
 
         assert(rem <= 9);
         buffer[--idx] = OFstatic_cast(char, rem + '0');
diff --git a/ofstd/libsrc/ofxml.cc b/ofstd/libsrc/ofxml.cc
index 15aefe3..a272f8f 100644
--- a/ofstd/libsrc/ofxml.cc
+++ b/ofstd/libsrc/ofxml.cc
@@ -1,6 +1,6 @@
 /*
  *
- *  Copyright (C) 2011-2014, OFFIS e.V.
+ *  Copyright (C) 2011-2016, OFFIS e.V.
  *  All rights reserved.  See COPYRIGHT file for details.
  *
  *  This software and supporting documentation were slightly modified by
@@ -213,7 +213,8 @@ XMLCSTR XMLNode::getError(XMLError xerror)
 // If you plan to "port" the library to a new system/compiler, all you have to do is
 // to edit the following lines.
 #ifdef XML_NO_WIDE_CHAR
-char myIsTextWideChar(const void *b, int len) { return FALSE; }
+// DCMTK: uncomment parameter names to avoid compiler warnings
+char myIsTextWideChar(const void * /*b*/, int /*len*/) { return FALSE; }
 #else
     #if defined (UNDER_CE) || !defined(_XMLWINDOWS)
     char myIsTextWideChar(const void *b, int len) // inspired by the Wine API: RtlIsTextUnicode
@@ -317,7 +318,8 @@ char myIsTextWideChar(const void *b, int len) { return FALSE; }
 #else
 // for gcc and CC
     #ifdef XML_NO_WIDE_CHAR
-        char *myWideCharToMultiByte(const wchar_t *s) { return NULL; }
+        // DCMTK: uncomment parameter name to avoid compiler warning
+        char *myWideCharToMultiByte(const wchar_t * /*s*/) { return NULL; }
     #else
         char *myWideCharToMultiByte(const wchar_t *s)
         {
diff --git a/ofstd/tests/Makefile.dep b/ofstd/tests/Makefile.dep
index 49a563f..b209f72 100644
--- a/ofstd/tests/Makefile.dep
+++ b/ofstd/tests/Makefile.dep
@@ -1,13 +1,25 @@
+taddsub.o: taddsub.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
 tatof.o: tatof.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstd.h ../include/dcmtk/ofstd/oflist.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/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oftest.h \
- ../include/dcmtk/ofstd/ofconapp.h ../include/dcmtk/ofstd/ofcmdln.h \
- ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/ofstd/offile.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
+ ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/ofconsol.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h
 tbase64.o: tbase64.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 \
@@ -17,7 +29,8 @@ tbase64.o: tbase64.cc ../../config/include/dcmtk/config/osconfig.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/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tchrenc.o: tchrenc.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 \
@@ -27,7 +40,9 @@ tchrenc.o: tchrenc.cc ../../config/include/dcmtk/config/osconfig.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/ofchrenc.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofchrenc.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 \
@@ -37,7 +52,8 @@ tests.o: tests.cc ../../config/include/dcmtk/config/osconfig.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/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tftoa.o: tftoa.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 \
@@ -47,7 +63,8 @@ tftoa.o: tftoa.cc ../../config/include/dcmtk/config/osconfig.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/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tlimits.o: tlimits.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 \
@@ -58,7 +75,8 @@ tlimits.o: tlimits.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/ofmath.h
 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 \
@@ -68,7 +86,9 @@ tlist.o: tlist.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcmdln.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/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tmap.o: tmap.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 \
@@ -78,7 +98,8 @@ tmap.o: tmap.cc ../../config/include/dcmtk/config/osconfig.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/ofmap.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h ../include/dcmtk/ofstd/ofmap.h \
  ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h
 tmarkup.o: tmarkup.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -90,7 +111,8 @@ tmarkup.o: tmarkup.cc ../../config/include/dcmtk/config/osconfig.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/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tmem.o: tmem.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 \
@@ -100,7 +122,8 @@ tmem.o: tmem.cc ../../config/include/dcmtk/config/osconfig.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/ofmem.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h ../include/dcmtk/ofstd/ofmem.h \
  ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h
 tofdatim.o: tofdatim.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -113,7 +136,9 @@ tofdatim.o: tofdatim.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/oflist.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/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 toffile.o: toffile.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/offile.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -121,6 +146,8 @@ toffile.o: toffile.cc ../../config/include/dcmtk/config/osconfig.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/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
  ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
  ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
  ../include/dcmtk/ofstd/ofcmdln.h
@@ -130,10 +157,11 @@ tofstd.o: tofstd.cc ../../config/include/dcmtk/config/osconfig.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/oftraits.h \
- ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oftest.h \
- ../include/dcmtk/ofstd/ofconapp.h ../include/dcmtk/ofstd/ofcmdln.h \
- ../include/dcmtk/ofstd/ofconsol.h ../include/dcmtk/ofstd/ofthread.h \
- ../include/dcmtk/ofstd/offile.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/oftest.h ../include/dcmtk/ofstd/ofconapp.h \
+ ../include/dcmtk/ofstd/ofcmdln.h ../include/dcmtk/ofstd/ofconsol.h \
+ ../include/dcmtk/ofstd/ofthread.h ../include/dcmtk/ofstd/offile.h
 toption.o: toption.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 \
@@ -143,8 +171,9 @@ toption.o: toption.cc ../../config/include/dcmtk/config/osconfig.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/ofoption.h \
- ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofoption.h ../include/dcmtk/ofstd/ofutil.h \
  ../include/dcmtk/ofstd/variadic/tuplefwd.h \
  ../include/dcmtk/ofstd/ofalign.h
 tstack.o: tstack.cc ../../config/include/dcmtk/config/osconfig.h \
@@ -156,7 +185,9 @@ tstack.o: tstack.cc ../../config/include/dcmtk/config/osconfig.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/oftraits.h ../include/dcmtk/ofstd/ofcond.h \
+ ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tstring.o: tstring.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/ofstring.h ../include/dcmtk/ofstd/oftypes.h \
  ../include/dcmtk/ofstd/ofdefine.h ../include/dcmtk/ofstd/ofcast.h \
@@ -166,7 +197,8 @@ tstring.o: tstring.cc ../../config/include/dcmtk/config/osconfig.h \
  ../include/dcmtk/ofstd/oflist.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/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 tthread.o: tthread.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 \
@@ -176,7 +208,8 @@ tthread.o: tthread.cc ../../config/include/dcmtk/config/osconfig.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/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h
 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 \
@@ -186,8 +219,9 @@ ttuple.o: ttuple.cc ../../config/include/dcmtk/config/osconfig.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/oftuple.h \
- ../include/dcmtk/ofstd/ofutil.h \
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.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/variadic/tuplefrd.h \
  ../include/dcmtk/ofstd/variadic/tuple.h
@@ -200,7 +234,9 @@ tuuid.o: tuuid.cc ../../config/include/dcmtk/config/osconfig.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/ofuuid.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofuuid.h
 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 \
@@ -210,7 +246,9 @@ tvec.o: tvec.cc ../../config/include/dcmtk/config/osconfig.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/ofvector.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h \
+ ../include/dcmtk/ofstd/ofvector.h
 txml.o: txml.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 \
@@ -220,4 +258,5 @@ txml.o: txml.cc ../../config/include/dcmtk/config/osconfig.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/ofxml.h
+ ../include/dcmtk/ofstd/ofcond.h ../include/dcmtk/ofstd/oflimits.h \
+ ../../config/include/dcmtk/config/arith.h ../include/dcmtk/ofstd/ofxml.h
diff --git a/ofstd/tests/taddsub.cc b/ofstd/tests/taddsub.cc
new file mode 100644
index 0000000..7cec09a
--- /dev/null
+++ b/ofstd/tests/taddsub.cc
@@ -0,0 +1,63 @@
+/*
+ *
+ *  Copyright (C) 2015, Open Connections GmbH
+ *  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:  Michael Onken
+ *
+ *  Purpose: test program for safe subtraction and addition
+ *
+ */
+
+
+#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/ofstd.h"
+
+
+OFTEST(ofstd_safeSubtractAndAdd)
+{
+  // --------------- Subtraction ----------------
+
+  unsigned int a = 1;
+  unsigned int b = 2;
+  // check whether underflow occurs (it should)
+  OFCHECK(OFStandard::safeSubtract(a, b, a) == OFFalse);
+  // check whether a has not been modified
+  OFCHECK_EQUAL(a, 1);
+
+  a = OFnumeric_limits<unsigned int>::max();
+  b = OFnumeric_limits<unsigned int>::max()-1;
+  // check whether no underflow occured (it shouldnt)
+  OFCHECK(OFStandard::safeSubtract(a, b, a) == OFTrue);
+  // check whether the result a was computed as expected
+  OFCHECK_EQUAL(a, 1);
+
+  // --------------- Addition ----------------
+
+  a = OFnumeric_limits<unsigned int>::max()-1;
+  b = OFnumeric_limits<unsigned int>::max()-1;
+  // check whether overflow occured (it should)
+  OFCHECK(OFStandard::safeAdd(a, b, a) == OFFalse);
+  // check whether a has not been modified
+  OFCHECK_EQUAL(a, OFnumeric_limits<unsigned int>::max()-1);
+
+  b = 1; // a still equals max-1
+  // check whether no overflow occured (it shouldnt)
+  OFCHECK(OFStandard::safeAdd(a, b, a) == OFTrue);
+  // check whether the result a was computed as expected.
+  // dividing and then multiplying by 2 is required since max maybe be an
+  // odd number so that max/2 is rounded to the floor number.
+  OFCHECK_EQUAL(a, OFnumeric_limits<unsigned int>::max());
+}
diff --git a/ofstd/tests/tests.cc b/ofstd/tests/tests.cc
index 3363862..b41e78d 100644
--- a/ofstd/tests/tests.cc
+++ b/ofstd/tests/tests.cc
@@ -77,4 +77,5 @@ OFTEST_REGISTER(ofstd_memory);
 OFTEST_REGISTER(ofstd_optional);
 OFTEST_REGISTER(ofstd_tuple);
 OFTEST_REGISTER(ofstd_limits);
+OFTEST_REGISTER(ofstd_safeSubtractAndAdd);
 OFTEST_MAIN("ofstd")
diff --git a/ofstd/tests/tlimits.cc b/ofstd/tests/tlimits.cc
index e463afe..c9107dc 100644
--- a/ofstd/tests/tlimits.cc
+++ b/ofstd/tests/tlimits.cc
@@ -5,6 +5,7 @@
 #include "dcmtk/ofstd/oflimits.h"
 #include "dcmtk/ofstd/ofstd.h"
 #include "dcmtk/ofstd/oftraits.h"
+#include "dcmtk/ofstd/ofmath.h"   // for isinf and isnan
 
 template<typename T>
 static void checkMinMax()
@@ -14,12 +15,12 @@ static void checkMinMax()
     OFCHECK
     (
         OFnumeric_limits<T>::max() >= max_plus_one ||
-        ( OFnumeric_limits<T>::has_infinity && OFStandard::isinf( max_plus_one ) )
+        ( OFnumeric_limits<T>::has_infinity && OFMath::isinf( max_plus_one ) )
     );
     OFCHECK
     (
         OFnumeric_limits<T>::lowest() <= lowest_minus_one ||
-        ( OFnumeric_limits<T>::has_infinity && OFStandard::isinf( lowest_minus_one ) )
+        ( OFnumeric_limits<T>::has_infinity && OFMath::isinf( lowest_minus_one ) )
     );
     OFCHECK( ( OFnumeric_limits<T>::lowest() == OFnumeric_limits<T>::min() ) || !OFnumeric_limits<T>::is_integer );
 }
@@ -27,7 +28,7 @@ static void checkMinMax()
 template<typename T>
 static OFTypename OFenable_if<OFnumeric_limits<T>::has_quiet_NaN>::type checkNaN()
 {
-    (OFStandard::isnan)( OFnumeric_limits<T>::quiet_NaN() );
+    (OFMath::isnan)( OFnumeric_limits<T>::quiet_NaN() );
 }
 
 template<typename T>
@@ -39,7 +40,7 @@ static OFTypename OFenable_if<!OFnumeric_limits<T>::has_quiet_NaN>::type checkNa
 template<typename T>
 static OFTypename OFenable_if<OFnumeric_limits<T>::has_infinity>::type checkInfinity()
 {
-    (OFStandard::isinf)( OFnumeric_limits<T>::infinity() );
+    (OFMath::isinf)( OFnumeric_limits<T>::infinity() );
 }
 
 template<typename T>
diff --git a/ofstd/tests/tofstd.cc b/ofstd/tests/tofstd.cc
index d62c037..637e7f4 100644
--- a/ofstd/tests/tofstd.cc
+++ b/ofstd/tests/tofstd.cc
@@ -256,3 +256,40 @@ OFTEST(ofstd_OFStandard_removeRootDirFromPathname)
     OFCHECK_EQUAL(result.getCharPointer(), nullPtr);
     OFCHECK(OFStandard::removeRootDirFromPathname(result, nullPtr, nullPtr).good());
 }
+
+
+OFTEST(ofstd_safeSubtractAndAdd)
+{
+  // --------------- Subtraction ----------------
+
+  unsigned int a = 1;
+  unsigned int b = 2;
+  // check whether underflow occurs (it should)
+  OFCHECK(OFStandard::safeSubtract(a, b, a) == OFFalse);
+  // check whether a has not been modified
+  OFCHECK_EQUAL(a, 1);
+
+  a = OFnumeric_limits<unsigned int>::max();
+  b = OFnumeric_limits<unsigned int>::max()-1;
+  // check whether no underflow occured (it shouldnt)
+  OFCHECK(OFStandard::safeSubtract(a, b, a) == OFTrue);
+  // check whether the result a was computed as expected
+  OFCHECK_EQUAL(a, 1);
+
+  // --------------- Addition ----------------
+
+  a = OFnumeric_limits<unsigned int>::max()-1;
+  b = OFnumeric_limits<unsigned int>::max()-1;
+  // check whether overflow occured (it should)
+  OFCHECK(OFStandard::safeAdd(a, b, a) == OFFalse);
+  // check whether a has not been modified
+  OFCHECK_EQUAL(a, OFnumeric_limits<unsigned int>::max()-1);
+
+  b = 1; // a still equals max-1
+  // check whether no overflow occured (it shouldnt)
+  OFCHECK(OFStandard::safeAdd(a, b, a) == OFTrue);
+  // check whether the result a was computed as expected.
+  // dividing and then multiplying by 2 is required since max may be be an
+  // odd number so that max/2 is rounded to the floor number.
+  OFCHECK_EQUAL(a, OFnumeric_limits<unsigned int>::max());
+}

-- 
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