Version 1.22 (2025-12-02)
=========================

* Fixed a possible deadlock when using "WadoRsLoaderThreadsCount" > 1 when the HTTP
  client disconnects while downloading the response.
* Fixed "Success: Success" errors when trying to send resources synchronously to a remote DICOMweb
  server while the Orthanc job engine was busy with other tasks.


Version 1.21 (2025-08-14)
=========================

* New configuration "WadoRsLoaderThreadsCount" to configure how many threads are loading
  files from the storage when answering to a WADO-RS query.  A value > 1 is meaningful 
  only if the storage is a distributed network storage (e.g object storage plugin).
  A value of 0 means reading and writing are performed in sequence (default behaviour).
* New configuration "EnablePerformanceLogs" to display performance logs.  Currently
  only showing the time required to execute a WADO-RS query.  For example:
  WADO-RS: elapsed: 26106623 us, rate: 14.86 instances/s, 155.23Mbps
* Fix false errors logs generated e.g when OHIF requests the /dicom-web/studies/../metadata route:
  "dicom-web:/Configuration.cpp:643] Unsupported return MIME type: application/dicom+json,
  multipart/related; type=application/octet-stream; transfer-syntax=*, will return DICOM+JSON"


Version 1.20 (2025-05-12)
=========================

=> Minimum Orthanc version: 1.12.5 <=
=> Recommended SDK version: 1.12.4 <=
=> Minimum SDK version: 1.12.1 <=

* Fix calls to /studies/../series/../rendered returning a 404 if the series has
  multiple instances.
  https://discourse.orthanc-server.org/t/thumbnail-orthanc-stone-viewer-issue/5827/3
* Fix response of /servers/../stow where the study id was repeated for each instance.
  The response also now contains the list of sent instances.


Version 1.19 (2025-04-29)
=========================

=> Minimum Orthanc version: 1.12.5 <=
=> Recommended SDK version: 1.12.4 <=
=> Minimum SDK version: 1.12.1 <=

* STOW-RS: improved compatibility with, amongst others, DCM4CHEE:
  - it now accepts extra 'transfer-syntax=..' in Content-Type
  - it now returns 0008,00198 (FailedSopSequence) only if there are failed instances.
  (https://discourse.orthanc-server.org/t/orthanc-dicomweb-stowrs-server-request-response-compatibility/5763)
* If calling /rendered route on a video, the plugin will now return the video file (MP4 or ...).
  This notably enables display of videos in OHIF 3.10.1.
* Added basic support for thumbnails 
  (aka sup 203: https://www.dicomstandard.org/docs/librariesprovider2/dicomdocuments/news/progress/docs/sups/sup203.pdf).
  Right now, /thumbnail is equivalent to /rendered except for videos for 
  which the same default video icon is shown since we are not able to extract a 
  thumbnail from a video.  
  This notably enables display of a video icon in the series list of OHIF 3.10.1.
* Maintenance: Use new internal API available only from Orthanc 1.12.5 to reduce
  the number of SQL queries.
* Maintenance: Use Orthanc SDK 1.12.4 by default to benefit from more detailed logging.


Version 1.18 (2024-12-18)
=========================

=> Minimum Orthanc version: 1.11.0 <=
=> Minimum SDK version: 1.12.1 <=

* Added a "Server" entry in the DICOMweb job content
* Fixed parsing of numerical values in QIDO-RS response that prevented, among other,
  the retrieval of "NumberOfStudyRelatedInstances", "NumberOfStudyRelatedSeries",...
* Fixed non-Latin "PatientName" values that were empty in some QIDO-RS responses
* Optimized the retrieval of single frame in WADO-RS when no transcoding is required,
  which greatly improves the download time of multi-frame images in OHIF
* Optimization when running with an Orthanc that supports the "ExtendedFind" primitive
* Added support for Orthanc running in "ReadOnly" mode
* Fix handling of revisions for cached data
* Removed dependency on bootstrap-vue
* Upgraded to Bootstrap 5.3.3


Version 1.17 (2024-06-05)
=========================

* WADO-RS retrieve frame: fix issue 219 (https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=219)
  by converting BigEndianExplicitVR to LittleEndianExplicitVR.
* QIDO-RS: now returning sequences that are listed in includefield
  https://discourse.orthanc-server.org/t/qido-includefield-with-sequences/4746
* The plugin now uses the new logging primitives from Orthanc 1.12.4


Version 1.16 (2023-12-19)
=========================

* Removed misleading log messages about transcoding.
  https://discourse.orthanc-server.org/t/dicomweb-plugin-1-13-possible-unnecessary-transcoding/3979
* Fix parsing of Accept header "multipart/related; type=application/octet-stream; transfer-syntax=*" that is used by OHIF.
* When retrieving frames, WADO-RS may now retrieve transcoded instances from Orthanc StorageCache (for Orthanc >= 1.12.2)


Version 1.15 (2023-08-24)
=========================

* speed improvement:
  - Now storing the output of /dicom-web/studies/../series/../metadata route in an attachment that can be used
    by the "Full" mode.
    The json file is gzipped and stored in attachment 4301 everytime a series is stable or the first time
    its /dicom-web/studies/../series/../metadata route is called in "Full" mode if the attachment does not exist yet.
    A new route /studies/{orthancId}/update-dicomweb-cache has also been added to allow e.g. the Housekeeper plugin
    to generate these attachment for old studies.
    This cache can be disabled by setting "EnableMetadataCache" to false.  However, disabling the cache
    won't delete the already cached data.  You may call DELETE /series/../attachments/4031 to clear the cache.


Version 1.14 (2023-07-05)
=========================

=> Minimum SDK version: 1.12.1 <=

* speed improvements:
  - Speeded up instance metadata retrieval using OrthancPluginLoadDicomInstance() from SDK 1.12.1
  - Using multiple threads to compute the studies/../series/../metadata route when in "Full" mode.
    New configuration: "MetadataWorkerThreadsCount" defaults to 4
  - Small speed-up the studies/../series/../metadata route when in "MainDicomTags" mode.
* Support "X-Forwarded-Host" and "X-Forwarded-Proto" headers to compute BulkDataURI.
* Fix issue #216 (Requests fail due to bad parsing of the accept HTTP header (semi-colons))


Version 1.13 (2023-02-03)
=========================

* Use Orthanc SDK 1.11.3 to avoid a crash in STOW-RS jobs.


Version 1.12 (2022-10-27)
=========================

* STOW-RS now calls to the plugin flavored /instances route and now also forwards
  the HTTP headers from the Incoming STOW-RS request.


Version 1.11 (2022-10-13)
=========================

* Added a list of "Resources" in the DicomWebStowClient Job "Content"


Version 1.10 (2022-08-30)
=========================

* speed-up the /metadata routes by a factor of 2 when in "MainDicomTags" or "Extrapolate"
  mode.
* improved HTTP status code for STOW-RS (now returning 202 instead of 200 if some instances 
  could not be ingested).  Also reporting a Failure Reason "out of resources 0xA700"  if
  new instances can not be ingested because storage is full.


Version 1.9 (2022-06-30)
========================

=> Minimum SDK version: 1.9.2 <=
=> Minimum Orthanc version: 1.11.1 <=

* if using "MainDicomTags" mode for "SeriesMetadata" and "StudiesMetadata",
  the plugin now returns the "ExtraMainDicomTags" that have been configured on Orthanc side.
* Now able to return sequences stored in "ExtraMainDicomTags" (with Orthanc 1.11.1)
* refactored the way WADO-RS locate resources.  If the same SeriesInstanceUID is re-used
  across multiple Studies, the plugin should now locate it correctly.
* HTTP headers are now forwarded to "tools/find" route in Orthanc allowing user to overwrite
  the "tools/find" route in e.g. a python plugin to limit the returned results based on e.g
  an authentication token in an HTTP header.  The "tools/find" route is mainly used in QIDO-RS.
  HTTP headers are not forward to GET routes in Orthanc.  If you want to check authorization
  for these routes, it is recommended to perform it in "IncomingHttpRequestFilter" in Lua or
  with the authorization plugin.



Version 1.8 (2022-05-09)
========================

=> Minimum Orthanc version: 1.11.0 <=

* Show an error message when trying to send studies > 4GB via STOW-RS
* Optimized QIDO-RS to build its responses from DB if tags are saved in "ExtraMainDicomTags".
  Recommended configuration to optmize dicom-web usage:
    "ExtraMainDicomTags" : {
      "Instance" : [
        "Rows",
        "Columns",
        "ImageType",
        "SOPClassUID",
        "ContentDate",
        "ContentTime",
        "FrameOfReferenceUID",
        "PixelSpacing",
        "SpecificCharacterSet",
        "BitsAllocated",
        "BitsStored"
      ],
      "Series" : [
        "TimezoneOffsetFromUTC",
        "PerformedProcedureStepStartDate",
        "PerformedProcedureStepStartTime"
      ],
      "Study": [
        "TimezoneOffsetFromUTC"
      ],
      "Patient": []
    }
* New configuration "PublicRoot" that is used in RetrieveUrl tags
  and location information.  This is useful if, e.g, your Orthanc is
  behind a reverse-proxy and has another base endpoint than the "Root"
  one.  Note that, if using a reverse-proxy, make sure to set the "host"
  and "proto" correctly in the "Forwarded" HTTP headers.


Version 1.7 (2021-08-31)
========================

* Detection of windowing and rescale in ".../rendered" for Philips multiframe images


Version 1.6 (2021-05-07)
========================

* New field "Timeout" in "DicomWeb.Servers" to specify HTTP timeout on a per-server basis
* Reduced memory consumption in STOW-RS server thanks to an optimization of
  Orthanc::MultipartStreamReader in Orthanc framework 1.9.3
* Fix issue #194 (Upgrade media types to DICOM 2021a, cf. table 8.7.3-5)
* Fix issue #196 (STOW-RS: Should return 200 only when successfully stored all instances)


Version 1.5 (2021-01-26)
========================

* Possibility to store the definition of DICOMweb servers into the Orthanc database
* New configuration option "DicomWeb.ServersInDatabase"
* Fix compliance with DICOM >= 2016c: If no "transfer-syntax" is provided in WADO-RS
  Retrieve Instance/Series/Study, DICOM shall be transcoded to Little Endian Explicit


Version 1.4 (2020-12-18)
========================

* "Extrapolate" mode doesn't fail if no consensus is found in WADO-RS Retrieve Metadata.
  This is necessary for proper behavior of the Stone Web viewer on very small series.
* Fix issue #190 (STOW-RS fails is multipart boundary is surrounded by quotes in headers)


Version 1.3 (2020-10-19)
========================

* Support transcoding in WADO-RS RetrieveStudy, RetrieveSeries and RetrieveInstance
* Support of dynamic linking against the system-wide Orthanc framework library
* Support rendering of images whose pixel format is uint8_t
* Fix ".../rendered" on MONOCHROME1 images
* Fix default windowing in rendered frames using WADO-URI and WADO-RS
* More verbose logs to debug chunked transfers


Version 1.2 (2020-05-26)
========================

=> Minimum SDK version: 1.7.0 <=

* Removed dependency on GDCM
* "QidoCaseSensitive" defaults to "CaseSensitivePN" of Orthanc configuration (instead of "true")


Version 1.1 (2020-03-04)
========================

New features
------------

* Support of "window", "viewport" and "quality" parameters in "Retrieve Rendered Transaction"
* Support of "/studies/.../rendered" and "/studies/.../series/.../rendered"
* QIDO-RS: Allow to query against a list of multiple values separated by commas
* WADO-RS "Retrieve Metadata": Configuration options "StudiesMetadata"
  and "SeriesMetadata", whose value can be "Full" (read all DICOM
  instances from the storage area), "MainDicomTags" (only report the
  main DICOM tags from the Orthanc database), or "Extrapolate" (main
  DICOM tags + user-specified tags extrapolated from a few random instances)

Maintenance
-----------

* QIDO-RS: Optimization for large studies/series
* QIDO-RS: Fix returned attributes if Study/Series Instance UIDs are not filtered
* Fix handling of the "Forwarded" HTTP header
* Fix support for client certificate authentication
* Accept multiple MIME types in Accept header for WADO-RS "Retrieve Metadata"
  https://groups.google.com/d/msg/orthanc-users/P3B6J9abZpE/syn5dnW2AwAJ
* Added explicit "Accept" header to avoid uncompressing DICOM files by Google cloud,
  can be turned off by setting "HasWadoRsUniversalTransferSyntax" to "false" (for
  instance if contacting a remote Orthanc plugin with DICOMweb version <= 1.0)
  https://groups.google.com/d/msg/orthanc-users/w1Ekrsc6-U8/T2a_DoQ5CwAJ
* Fix issue #162 ("DICOMweb metadata resource reads all instances")
* Fix issue #164 ("JPEG YBR_422 generates a 500 in the DicomWeb plugin")
* Upgrade to GDCM 3.0.4 in static builds


Version 1.0 (2019-06-26)
========================

=> Recommended SDK version: 1.5.7 <=
=> Minimum SDK version: 1.5.4 <=

* Web user interface to QIDO-RS, WADO-RS and STOW-RS client
* First implementation of WADO-RS "Retrieve Rendered Transaction", for
  ".../instances/.../rendered" and ".../instances/.../frames/.../rendered"
* WADO-RS and STOW-RS client now create Orthanc jobs
* Support "Transfer-Encoding: chunked" to reduce memory consumption in STOW-RS
  (provided the SDK version is above 1.5.7)
* New URI: /dicom-web/servers/.../qido
* New URI: /dicom-web/servers/.../delete
* Handling of the HTTP header "Forwarded" for WADO-RS
* Full refactoring of multipart parsing


Version 0.6 (2019-02-27)
========================

=> Minimum SDK version: 1.5.4 <=

* Sending "HttpHeaders" of the "DicomWeb.Servers" configuration to remote DICOMweb servers
* Improved WADO-RS compatibility if Orthanc is acting as a DICOMweb client
* More detailed information about errors is provided in the HTTP answers
* Fix issue #96 / #5 (WADO-RS: RetrieveFrames rejects valid accept headers)
* Fix issue #111 / #3 (QIDO-RS: wrong serialization of empty values)
* Fix issue #112 / #4 (QIDO-RS: wrong serialization of number values)
* Fix issue #113 / #2 (QIDO-RS: wrong serialization of PN VR)
* Upgrade to GDCM 2.8.8 in static builds


Version 0.5 (2018-04-19)
========================

* New option: "QidoCaseSensitive" to make queries to QIDO-RS server case insensitive
* Defaults to JSON answers instead of XML
* Use of "application/dicom+json" MIME type instead of "application/json"
* Added "?expand" argument to "/servers" route
* Fix generation of numeric tags part of sequences for ".../metadata" routes
* Support for OpenBSD
* Support for Linux Standard Base
* Upgrade to GDCM 2.8.4 in static builds
* Resort to Orthanc framework


Version 0.4 (2017-07-19)
========================

* Improved robustness in the STOW-RS server (occurrences of "\r\n\r\n" in DICOM are supported)
* Performance warning if runtime debug assertions are turned on
* WADO-RS client supports quoted Content-Type header in HTTP answers
* Added "Arguments" to WADO-RS and STOW-RS client to handle query arguments in uri
* Using MIME types of DICOM version 2017c in WADO RetrieveFrames
* Fix issue #53 (DICOMweb plugin support for "limit" and "offset" parameters in QIDO-RS)
* Fix issue #28 (Non-compliant enumerations for "accept" header for WADO RetrieveFrames)


Version 0.3 (2016-06-28)
========================

=> Minimum SDK version: 1.1.0 <=

* STOW-RS client with URI "/{dicom-web}/servers/{id}/stow"
* QIDO-RS and WADO-RS client with URI "/{dicom-web}/servers/{id}/get"
* Retrieval of DICOM instances with WADO-RS through URI "/{dicom-web}/servers/{id}/retrieve"
* Improved robustness in the STOW-RS server
* Fix issue #13 (QIDO-RS study-level query is slow)
* Fix issue #14 (Aggregate fields empty for QIDO-RS study/series-level queries)


Version 0.2 (2015-12-10)
========================

=> Minimum SDK version: 0.9.5 <=

* Support of WADO-RS - RetrieveFrames
* QIDO-RS now takes advantage of "/tools/find"
* Upgrade to GDCM 2.6.0 for static and Windows builds


Version 0.1 (2015-08-03)
========================

=> Minimum SDK version: 0.9.1 <=

* Support of WADO-RS - RetrieveMetadata
* Support of WADO, in addition to DICOMweb
* All the APIs are now under the same root

Production
----------

* Inject version information into Windows binaries
* Use of Orthanc built-in API for multipart answers (requires Orthanc >= 0.9.1)
* Support of Visual Studio 2008
* Support of FreeBSD
* Support of OS X
* Upgrade to Boost 1.58.0 for static and Windows builds


2015-03-13
==========

* Initial commit
