view NEWS @ 3103:81b58b549845

back to using 'var' instead of 'let' since let is not supported by many old browsers. All variables declaration have been moved to the top of the function to better show that their scope is the function
author Alain Mazy <alain@mazy.be>
date Thu, 10 Jan 2019 10:51:36 +0100
parents ad37c21ec4db
children 2e1711f80f74 554832246eaa
line wrap: on
line source

Pending changes in the mainline
===============================

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

* Fix issue #118 (Wording in Configuration.json regarding SynchronousCMove)
* Fixed Orthanc Explorer on IE and Firefox: Explorer always show "too many results"
  and it's therefore impossible to browse the content.
* Upgraded dependencies for static and Windows builds:
  - civetweb 1.11


Version 1.5.1 (2018-12-20)
==========================

General
-------

* Optimization: On C-FIND, avoid accessing the storage area whenever possible
* New configuration option:
  - "StorageAccessOnFind" to rule the access to the storage area during C-FIND

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

* Removal of the "AllowFindSopClassesInStudy" old configuration option
* "/tools/create-dicom" is more tolerant wrt. invalid specific character set


Version 1.5.0 (2018-12-10)
==========================

General
-------

* Possibility to restrict the allowed DICOM commands for each modality
* The Orthanc configuration file can use environment variables
* New configuration options:
  - "DicomModalitiesInDatabase" to store the definitions of modalities in the database
  - "OrthancPeersInDatabase" to store the definitions of Orthanc peers in the database

Orthanc Explorer
----------------

* The first screen of Orthanc Explorer is now a form to do studies lookups
* Support of large databases, by limiting the results to 100 patients or studies

REST API
--------

* API Version has been upgraded to 1.2
* Asynchronous generation of ZIP archives and DICOM medias
* New URI: "/studies/.../merge" to merge a study
* New URI: "/studies/.../split" to split a study
* POST-ing a DICOM file to "/instances" also answers the patient/study/series ID
* GET "/modalities/?expand" now returns a JSON object instead of a JSON array
* New "Details" field in HTTP answers on error (cf. "HttpDescribeErrors" option)
* New options to URI "/queries/.../answers": "?expand" and "?simplify"
* New URIs to launch new C-FIND to explore the hierarchy of a C-FIND answer:
  - "/queries/.../answers/.../query-instances" to C-FIND child instances
  - "/queries/.../answers/.../query-series" to C-FIND child series
  - "/queries/.../answers/.../query-studies" to C-FIND child studies
* New "DicomDiskSize" and "DicomUncompressedSize" fields in statistics about resources

Plugins
-------

* New functions in the SDK:
  - "OrthancPluginSetHttpErrorDetails()"
  - "OrthancPluginAutodetectMimeType()"

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

* "SynchronousCMove" is now "true" by default
* New modality manufacturer: "GE" for GE Healthcare EA and AW
* Executing a query/retrieve from the REST API now creates a job
* Fix: Closing DICOM associations after running query/retrieve from REST API
* Fix: Allow creation of MONOCHROME1 grayscale images in tools/create-dicom
* Remove invalid characters from badly-encoded UTF-8 strings (impacts PostgreSQL)
* Orthanc starts even if jobs from a previous execution cannot be unserialized
* New CMake option "ENABLE_DCMTK_LOG" to disable logging internal to DCMTK
* Fix issue 114 (Boost 1.68 doesn't support SHA-1 anymore)
* Support of "JobsHistorySize" set to zero
* Upgraded dependencies for static and Windows builds:
  - boost 1.68.0
  - lua 5.3.5


Version 1.4.2 (2018-09-20)
==========================

General
-------

* "OrthancPeers" configuration option now allows to specify HTTP headers
* New main DICOM tag: "ImageOrientationPatient" at the instance level
* New configuration options:
  - "HttpVerbose" to debug outgoing HTTP connections
  - "OverwriteInstances" to choose how duplicate SOPInstanceUID are handled

Orthanc Explorer
----------------

* Query/retrieve: Added button for "DX" modality

REST API
--------

* "/tools/reconstruct" to reconstruct the main DICOM tags, the JSON summary and
  the metadata of all the instances stored in Orthanc. This is a slow operation!

Plugins
-------

* New primitives to access Orthanc peers from plugins
* New events in change callbacks: "UpdatedPeers" and "UpdatedModalities"
* New primitives to handle jobs from plugins: "OrthancPluginSubmitJob()"
  and "OrthancPluginRegisterJobsUnserializer()"

Lua
---

* IncomingWorklistRequestFilter() to filter incoming C-FIND worklist queries

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

* Fix "/series/.../ordered-slices" in the presence of non-parallel slices
* Fix incoming DICOM C-Store filtering for JPEG-LS transfer syntaxes
* Fix OrthancPluginHttpClient() to return the HTTP status on errors
* Fix HTTPS requests to sites using a certificate encrypted with ECDSA
* Fix handling of incoming C-FIND queries containing Generic Group Length (*, 0x0000)
* Fix issue 54 (quoting multipart answers), for OsiriX compatibility through DICOMweb
* Fix issue 98 (DCMTK configuration fails with GCC 6.4.0 on Alpine)
* Fix issue 99 (PamWriter test segfaults on alpine linux with gcc 6.4.0)


Version 1.4.1 (2018-07-17)
==========================

* Fix deadlock in Lua scripting
* Simplification to the "DatabaseWrapper" class


Version 1.4.0 (2018-07-13)
==========================

General
-------

* New advanced job engine
* New configuration options:
  - "ConcurrentJobs": Max number of jobs that are simultaneously running
  - "SynchronousCMove": Whether to run DICOM C-Move operations synchronously
  - "JobsHistorySize": Max number of completed jobs that are kept in memory
* New metadata automatically computed at the instance level: 
  "RemoteIp", "CalledAet" and "HttpUsername"

Orthanc Explorer
----------------

* New screen listing all the available studies

REST API
--------

* "/jobs/..." to manage the jobs from the REST API
* New option "?short" to list DICOM tags using their hexadecimal ID in:
  - "/instances/.../tags?short"
  - "/instances/.../header?short"
  - "/{patients|studies|series}/.../instances-tags?short"
  - "/{patients|studies|series}/.../shared-tags?short"
  - "/{patients|studies|series|instances}/.../module?short"
  - "/studies/.../module-patient?short"
* "/instances/.../tags" URI was returning only the first value of
  DicomTags containing multiple numerical value.  It now returns all
  values in a string separated by \\ (i.e.: "1\\2\\3").  Note that,
  for data already in Orthanc, you'll need to reconstruct the data by
  sending a POST request to the ".../reconstruct" URI.  This change
  triggered an update of ORTHANC_API_VERSION from 1.0 to 1.1
* "/instances/.../frame/../image-uint8 and friends now accepts a 
  "image/pam" MIME type to retrieve images in PAM format
  (https://en.wikipedia.org/wiki/Netpbm#PAM_graphics_format)
* New option "?expand" to "/instances/.../metadata"

Plugins
-------

* New primitive in database SDK: "lookupIdentifierRange" to speed up range searches
* New function in the SDK: "OrthancPluginCheckVersionAdvanced()"

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

* Configuration option "LogExportedResources" is now "false" by default
* Header "OrthancCppDatabasePlugin.h" is now part of the "orthanc-databases" project
* Fix generation of DICOMDIR if PatientID is empty
* Fix issue 25 (Deadlock with Lua scripts): The event queue is now implemented for Lua
* Fix issue 94 (Instance modification should not modify FrameOfReferenceUID)
* Fix issue 77 (Lua access to REST-API is null terminated)
* Fix memory leak introduced by changeset #99116ed6f38c in Orthanc 1.3.2
* Upgraded dependencies for static and Windows builds:
  - boost 1.67.0
  - openssl 1.0.2o


Version 1.3.2 (2018-04-18)
==========================

REST API
--------

* "/system" URI returns the version of the Orthanc REST API
* "/tools/now" returns the current UTC (universal) time
* "/tools/now-local" returns the curent local time.
  This was the behavior of "/tools/now" until release 1.3.1.
* Added "?expand" GET argument to "/peers" and "/modalities" routes
* New URI: "/tools/create-media-extended" to generate a DICOMDIR
  archive from several resources, including additional type-3 tags
* Preservation of UID relationships while anonymizing

Lua
---

* New CMake option: "-DENABLE_LUA_MODULES=ON" to enable support for
  loading external Lua modules if the Lua engine is statically linked

Plugins
-------

* New error code: DatabaseUnavailable

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

* Orthanc now uses UTC (universal time) instead of local time in its database
* Fix to allow creating DICOM instances with empty Specific Character Set (0008,0005)
* Support of Linux Standard Base
* Static linking against libuuid (from e2fsprogs)
* Fix static build on CentOS 6
* Possibility of using JsonCpp 0.10.6 if the compiler does not support C++11
  with the "-DUSE_LEGACY_JSONCPP=ON" CMake option
* Upgraded dependencies for static and Windows builds:
  - boost 1.66.0
  - curl 7.57.0
  - jsoncpp 1.8.4
  - zlib 1.2.11


Version 1.3.1 (2017-11-29)
==========================

General
-------

* Built-in decoding of palette images

REST API
--------

* New URI: "/instances/.../frames/.../raw.gz" to compress raw frames using gzip
* New argument "ignore-length" to force the inclusion of too long tags in JSON
* New argument "/.../media?extended" to include additional type-3 tags in DICOMDIR

Plugins
-------

* New pixel formats exposed in SDK: BGRA32, Float32, Grayscale32, RGB48

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

* Creation of ./Resources/CMake/OrthancFramework*.cmake to reuse the Orthanc
  C++ framework in other projects
* New security-related options: "DicomAlwaysAllowEcho"
* Use "GBK" (frequently used in China) as an alias for "GB18030"
* Experimental support of actively maintained Civetweb to replace Mongoose 3.8
* Fix issue 31 for good (create new modality types for Philips ADW, GE Xeleris, GE AWServer)
* Fix issue 64 (OpenBSD support)
* Fix static compilation of DCMTK 3.6.2 on Fedora
* Upgrade to Boost 1.65.1 in static builds
* Upgrade to SQLite amalgamation 3.21.0 in static builds


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

General
-------

* Orthanc now anonymizes according to Basic Profile of PS 3.15-2017c Table E.1-1
* In the "DicomModalities" configuration:
  - Manufacturer type MedInria is now obsolete
  - Manufacturer types AgfaImpax and SyngoVia are obsolete too
    (use GenericNoWildcardInDates instead)
  - Obsolete manufacturers are still accepted but might disappear in the future
  - Added new manufacturer: GenericNoUniversalWildcard to replace all '*' by '' in
    outgoing C-Find requests
* New security-related options: "DicomAlwaysAllowStore" and "DicomCheckModalityHost"

REST API
--------

* Argument "Since" in URI "/tools/find" (related to issue 53)
* Argument "DicomVersion" in URIs "/{...}/{...}/anonymization"

Plugins
-------

* New function: "OrthancPluginRegisterIncomingHttpRequestFilter2()"

Lua
---

* Added HTTP headers support for Lua HttpPost/HttpGet/HttpPut/HttpDelete

Orthanc Explorer
----------------

* Query/retrieve: Added button for "DR" modality

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

* Ability to retrieve raw frames encoded as unsigned 32-bits integers
* Fix issue 29 (more consistent handling of the "--upgrade" argument)
* Fix issue 31 (create new modality types for Philips ADW, GE Xeleris, GE AWServer)
* Fix issue 35 (AET name is not transferred to Orthanc using DCMTK 3.6.0)
* Fix issue 44 (bad interpretation of photometric interpretation MONOCHROME1)
* Fix issue 45 (crash when providing a folder to "--config" command-line option)
* Fix issue 46 (PHI remaining after anonymization)
* Fix issue 49 (worklists: accentuated characters are removed from C-Find responses)
* Fix issue 52 (DICOM level security association problems)
* Fix issue 55 (modification/anonymization of tags that might break the database
  model now requires the "Force" parameter to be set to "true" in the query)
* Fix issue 56 (case-insensitive matching over accents)
* Fix Debian #865606 (orthanc FTBFS with libdcmtk-dev 3.6.1~20170228-2)
* Fix XSS inside DICOM in Orthanc Explorer (as reported by Victor Pasnkel, Morphus Labs)
* Upgrade to DCMTK 3.6.2 in static builds (released on 2017-07-17)
* Upgrade to Boost 1.64.0 in static builds
* New advanced "Locale" configuration option
* Removed configuration option "USE_DCMTK_361_PRIVATE_DIC"


Version 1.2.0 (2016/12/13)
==========================

General
-------

* Handling of private tags/creators in the "Dictionary" configuration option
* New configuration options: "LoadPrivateDictionary", "DicomScuTimeout" and "DicomScpTimeout"
* New metadata automatically computed at the instance level: "TransferSyntax" and "SopClassUid"

REST API
--------

* "/tools/invalidate-tags" to invalidate the JSON summary of all the DICOM files
  (useful if private tags are registered, or if changing the default encoding)
* "Permissive" flag for URI "/modalities/{...}/store" to ignore C-STORE transfer errors
* "Asynchronous" flag for URIs "/modalities/{...}/store" and "/peers/{...}/store"
  to avoid waiting for the completion of image transfers
* Possibility to DELETE "dicom-as-json" attachments to reconstruct the JSON summaries
  (useful if "Dictionary" has changed)
* "Keep" option for modifications to keep original DICOM identifiers (advanced feature)
* "/tools/default-encoding" to get or temporarily change the default encoding
* "/{resource}/{id}/reconstruct" to reconstruct the main DICOM tags, the JSON summary and
  the metadata of a resource (useful to compute new metadata, or if using "Keep" above)

Plugins
-------

* New function: "OrthancPluginRegisterPrivateDictionaryTag()" to register private tags
* More control over client cache in the ServeFolders plugin
* New C++ help wrappers in "Plugins/Samples/Common/" to read DICOM datasets from REST API
* New data structure: "OrthancPluginFindMatcher" to match DICOM against C-FIND queries

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

* Fix handling of encodings in C-FIND requests (including for worklists)
* Use of DCMTK 3.6.1 dictionary of private tags in standalone builds
* Avoid hard crash if not enough memory (handling of std::bad_alloc)
* Improved robustness of Orthanc Explorer wrt. query/retrieve (maybe fix issue 24)
* Fix serious performance issue with C-FIND
* Fix extraction of the symbolic name of the private tags
* Performance warning if runtime debug assertions are turned on
* Improved robustness against files with no PatientID
* Upgrade to curl 7.50.3 for static and Windows builds
* Content-Type for JSON documents is now "application/json; charset=utf-8"
* Ignore "Group Length" tags in C-FIND queries
* Fix handling of worklist SCP with ReferencedStudySequence and ReferencedPatientSequence
* Fix handling of Move Originator AET and ID in C-MOVE SCP
* Fix vulnerability ZSL-2016-5379 "Unquoted Service Path Privilege Escalation" in the
  Windows service
* Fix vulnerability ZSL-2016-5380 "Remote Memory Corruption Vulnerability" in DCMTK 3.6.0


Version 1.1.0 (2016/06/27)
==========================

General
-------

* HTTPS client certificates can be associated with Orthanc peers to enhance security over Internet
* Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
* New command-line option "--logfile" to output the Orthanc log to the given file
* Support of SIGHUP signal (restart Orthanc only if the configuration files have changed)

REST API
--------

* New URI: "/instances/.../frames/.../raw" to access the raw frames (bypass image decoding)
* New URI "/modalities/.../move" to issue C-MOVE SCU requests
* "MoveOriginatorID" can be specified for "/modalities/.../store"

Dicom protocol
--------------

* Support of optional tags for counting resources in C-FIND:
  0008-0061, 0008-0062, 0020-1200, 0020-1202, 0020-1204, 0020-1206, 0020-1208, 0020-1209
* Support of Move Originator Message ID (0000,1031) in C-STORE responses driven by C-MOVE

Plugins
-------

* Speedup in plugins by removing unnecessary locks
* New callback to filter incoming HTTP requests: OrthancPluginRegisterIncomingHttpRequestFilter()
* New callback to handle non-worklists C-FIND requests: OrthancPluginRegisterFindCallback()
* New callback to handle C-MOVE requests: OrthancPluginRegisterMoveCallback()
* New function: "OrthancPluginHttpClient()" to do HTTP requests with full control
* New function: "OrthancPluginGenerateUuid()" to generate a UUID
* More than one custom image decoder can be installed (e.g. to handle different transfer syntaxes)

Lua
---

* Possibility to dynamically fix outgoing C-FIND requests using "OutgoingFindRequestFilter()"
* Access to the HTTP headers in the "IncomingHttpRequestFilter()" callback

Image decoding
--------------

* Huge speedup if decoding the family of JPEG transfer syntaxes
* Refactoring leading to speedups with custom image decoders (including Web viewer plugin)
* Support decoding of RLE Lossless transfer syntax
* Support of signed 16bpp images in ParsedDicomFile

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

* New logo of Orthanc
* Fix issue 11 (is_regular_file() fails for FILE_ATTRIBUTE_REPARSE_POINT)
* Fix issue 16 ("Limit" parameter error in REST API /tools/find method)
* Fix of Debian bug #818512 ("FTBFS: Please install libdcmtk*-dev")
* Fix of Debian bug #823139 ("orthanc: Please provide RecoverCompressedFile.cpp")
* Replaced "localhost" by "127.0.0.1", as it might impact performance on Windows
* Compatibility with CMake >= 3.5.0
* Possibility to use forthcoming DCMTK 3.6.1 in static builds (instead of 3.6.0)
* Upgrade to Boost 1.60.0 for static builds
* Use of HTTP status 403 Forbidden (instead of 401) if access to a REST resource is disallowed
* Option "HttpsVerifyPeers" can be used to connect against self-signed HTTPS certificates
* New configuration option "AllowFindSopClassesInStudy"
* Macro "__linux" (now obsolete) replaced by macro "__linux__" (maybe solves Debian bug #821011)
* Modification of instances can now replace PixelData (resp. EncapsulatedDocument) with 
  provided a PNG/JPEG image (resp. PDF file) if it is encoded using Data URI Scheme
* Dropped support of Google Log


Version 1.0.0 (2015/12/15)
==========================

* Lua: "IncomingFindRequestFilter()" to apply filters to incoming C-FIND requests
* New function in plugin SDK: "OrthancPluginSendMultipartItem2()"
* Fix of DICOMDIR generation with DCMTK 3.6.1, support of encodings
* Fix range search if the lower or upper limit is absent
* Fix modality worklists lookups if tags with UN (unknown) VR are present
* Warn about badly formatted modality/peer definitions in configuration file at startup


Version 0.9.6 (2015/12/08)
==========================

* Promiscuous mode (accept unknown SOP class UID) is now turned off by default
* Fix serialization of DICOM buffers that might contain garbage trailing
* Fix modality worklists server if some fields are null
* More tolerant "/series/.../ordered-slices" with broken series
* Improved logging information if upgrade fails
* Fix formatting of multipart HTTP answers (bis)


Version 0.9.5 (2015/12/02)
==========================

Major
-----

* Experimental support of DICOM C-FIND SCP for modality worklists through plugins
* Support of DICOM C-FIND SCU for modality worklists ("/modalities/{dicom}/find-worklist")

REST API
--------

* New URIs:
  - "/series/.../ordered-slices" to order the slices of a 2D+t or 3D series
  - "/tools/shutdown" to stop Orthanc from the REST API
  - ".../compress", ".../uncompress" and ".../is-compressed" for attachments
  - "/tools/create-archive" to create ZIP from a set of resources
  - "/tools/create-media" to create ZIP+DICOMDIR from a set of resources
  - "/instances/.../header" to get the meta information (header) of the DICOM instance
* "/tools/create-dicom":
  - Support of binary tags encoded using data URI scheme
  - Support of hierarchical structures (creation of sequences)
  - Create tags with unknown VR
* "/modify" can insert/modify sequences
* ".../preview" and ".../image-uint8" can return JPEG images if the HTTP Accept Header asks so
* "Origin" metadata for the instances

Minor
-----

* New configuration options:
  - "UnknownSopClassAccepted" to disable promiscuous mode (accept unknown SOP class UID)
  - New configuration option: "Dictionary" to declare custom DICOM tags
* Add ".dcm" suffix to files in ZIP archives (cf. URI ".../archive")
* MIME content type can be associated to custom attachments (cf. "UserContentType")

Plugins
-------

* New functions:
  - "OrthancPluginRegisterDecodeImageCallback()" to replace the built-in image decoder
  - "OrthancPluginDicomInstanceToJson()" to convert DICOM to JSON
  - "OrthancPluginDicomBufferToJson()" to convert DICOM to JSON
  - "OrthancPluginRegisterErrorCode()" to declare custom error codes
  - "OrthancPluginRegisterDictionaryTag()" to declare custom DICOM tags
  - "OrthancPluginLookupDictionary()" to get information about some DICOM tag
  - "OrthancPluginRestApiGet2()" to provide HTTP headers when calling Orthanc API
  - "OrthancPluginGetInstanceOrigin()" to know through which mechanism an instance was received
  - "OrthancPluginCreateImage()" and "OrthancPluginCreateImageAccessor()" to create images
  - "OrthancPluginDecodeDicomImage()" to decode DICOM images
  - "OrthancPluginComputeMd5()" and "OrthancPluginComputeSha1()" to compute MD5/SHA-1 hash
* New events in change callbacks:
  - "OrthancStarted"
  - "OrthancStopped"
  - "UpdatedAttachment" 
  - "UpdatedMetadata"
* "/system" URI gives information about the plugins used for storage area and DB back-end
* Plugin callbacks must now return explicit "OrthancPluginErrorCode" (instead of integers)

Lua
---

* Optional argument "keepStrings" in "DumpJson()"

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

* Full indexation of the patient/study tags to speed up searches and C-FIND
* Many refactorings, notably of the searching features and of the image decoding
* C-MOVE SCP for studies using AccessionNumber tag
* Fix issue 4 (C-STORE Association not renegotiated on Specific-to-specific transfer syntax change)
* Fix formatting of multipart HTTP answers
* "--logdir" flag creates a single log file instead of 3 separate files for errors/warnings/infos
* "--errors" flag lists the error codes that could be returned by Orthanc
* Under Windows, the exit status of Orthanc corresponds to the encountered error code
* New "AgfaImpax", "EFilm2" and "Vitrea" modality manufacturers
* C-FIND SCP will return tags with sequence value representation
* Upgrade to Boost 1.59.0 for static builds


Version 0.9.4 (2015/09/16)
==========================

* Preview of PDF files encapsulated in DICOM from Orthanc Explorer
* Creation of DICOM files with encapsulated PDF through "/tools/create-dicom"
* "limit" and "since" arguments while retrieving DICOM resources in the REST API
* Support of "deflate" and "gzip" content-types in HTTP requests
* Options to validate peers against CA certificates in HTTPS requests
* New configuration option: "HttpTimeout" to set the default timeout for HTTP requests

Lua
---

* More information about the origin request in the "OnStoredInstance()" and
  "ReceivedInstanceFilter()" callbacks. WARNING: This can result in
  incompatibilities wrt. previous versions of Orthanc.
* New function "GetOrthancConfiguration()" to get the Orthanc configuration

Plugins
-------

* New functions to compress/uncompress images using PNG and JPEG
* New functions to issue HTTP requests from plugins
* New function "OrthancPluginBufferCompression()" to (un)compress memory buffers
* New function "OrthancPluginReadFile()" to read files from the filesystem
* New function "OrthancPluginWriteFile()" to write files to the filesystem
* New function "OrthancPluginGetErrorDescription()" to convert error codes to strings
* New function "OrthancPluginSendHttpStatus()" to send HTTP status with a body
* New function "OrthancPluginRegisterRestCallbackNoLock()" for high-performance plugins
* Plugins have access to explicit error codes 
* Improvements to the sample "ServeFolders" plugin
* Primitives to upgrade the database version in plugins

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

* Many code refactorings
* Improved error codes (no more custom descriptions in exceptions)
* If error while calling the REST API, the answer body contains description of the error
  (this feature can be disabled with the "HttpDescribeErrors" option)
* Upgrade to curl 7.44.0 for static and Windows builds
* Upgrade to openssl 1.0.2d for static and Windows builds
* Depends on libjpeg 9a
* Bypass zlib uncompression if "StorageCompression" is enabled and HTTP client supports deflate


Version 0.9.3 (2015/08/07)
==========================

* C-Echo testing can be triggered from Orthanc Explorer (in the query/retrieve page)
* Removal of the dependency upon Google Log, Orthanc now uses its internal logger 
  (use -DENABLE_GOOGLE_LOG=ON to re-enable Google Log)
* Upgrade to JsonCpp 0.10.5 for static and Windows builds


Version 0.9.2 (2015/08/02)
==========================

* Upgrade to Boost 1.58.0 for static and Windows builds
* Source code repository moved from Google Code to BitBucket
* Inject version information into Windows binaries
* Fix access to binary data in HTTP/REST requests by Lua scripts
* Fix potential deadlock in the callbacks of plugins


Version 0.9.1 (2015/07/02)
==========================

General
-------

* The configuration can be splitted into several files stored inside the same folder
* Custom setting of the local AET during C-STORE SCU (both in Lua and in the REST API)
* Many code refactorings

Lua
---

* Access to the REST API of Orthanc (RestApiGet, RestApiPost, RestApiPut, RestApiDelete)
* Functions to convert between Lua values and JSON strings: "ParseJson" and "DumpJson"
* New events: "OnStablePatient", "OnStableStudy", "OnStableSeries", "Initialize", "Finalize"

Plugins
-------

* Plugins can retrieve the configuration file directly as a JSON string
* Plugins can send answers as multipart messages

Fixes
-----

* Fix compatibility issues for C-FIND SCU to Siemens Syngo.Via modalities SCP
* Fix issue 15 (Lua scripts making HTTP requests)
* Fix issue 35 (Characters in PatientID string are not protected for C-FIND)
* Fix issue 37 (Hyphens trigger range query even if datatype does not support ranges)


Version 0.9.0 (2015/06/03)
==========================

Major
-----

* DICOM Query/Retrieve available from Orthanc Explorer
* C-MOVE SCU and C-FIND SCU are accessible through the REST API
* "?expand" flag for URIs "/patients", "/studies" and "/series"
* "/tools/find" URI to search for DICOM resources from REST
* Support of FreeBSD
* The "Orthanc Client" SDK is now a separate project

Minor
-----

* Speed-up in Orthanc Explorer for large amount of images
* Speed-up of the C-FIND SCP server of Orthanc
* Allow replacing PatientID/StudyInstanceUID/SeriesInstanceUID from Lua scripts
* Option "CaseSensitivePN" to enable case-insensitive C-FIND SCP

Fixes
-----

* Prevent freeze on C-FIND if no DICOM tag is to be returned
* Fix slow C-STORE SCP on recent versions of GNU/Linux, if
  USE_SYSTEM_DCMTK is set to OFF (http://forum.dcmtk.org/viewtopic.php?f=1&t=4009)
* Fix issue 30 (QR response missing "Query/Retrieve Level" (008,0052))
* Fix issue 32 (Cyrillic symbols): Introduction of the "Windows1251" encoding
* Plugins now receive duplicated GET arguments in their REST callbacks


Version 0.8.6 (2015/02/12)
==========================

Major
-----

* URIs to get all the parents of a given resource in a single REST call
* Instances without PatientID are now allowed
* Support of HTTP proxy to access Orthanc peers

Minor
-----

* Support of Tudor DICOM in Query/Retrieve
* More flexible "/modify" and "/anonymize" for single instance
* Access to called AET and remote AET from Lua scripts ("OnStoredInstance")
* Option "DicomAssociationCloseDelay" to set delay before closing DICOM association
* ZIP archives now display the accession number of the studies

Plugins
-------

* Introspection of plugins (cf. the "/plugins" URI)
* Plugins can access the command-line arguments used to launch Orthanc
* Plugins can extend Orthanc Explorer with custom JavaScript
* Plugins can get/set global properties to save their configuration
* Plugins can do REST calls to other plugins (cf. "xxxAfterPlugins()")
* Scan of folders for plugins

Fixes
-----

* Code refactorings
* Fix issue 25 (AET with underscore not allowed)
* Fix replacement and insertion of private DICOM tags
* Fix anonymization generating non-portable DICOM files


Version 0.8.5 (2014/11/04)
==========================

General
-------

* Major speed-up thanks to a new database schema
* Plugins can monitor changes through callbacks
* Download ZIP + DICOMDIR from Orthanc Explorer
* Sample plugin framework to serve static resources (./Plugins/Samples/WebSkeleton/)

Fixes
-----

* Fix issue 19 (YBR_FULL are decoded incorrectly)
* Fix issue 21 (Microsoft Visual Studio precompiled headers)
* Fix issue 22 (Error decoding multi-frame instances)
* Fix issue 24 (Build fails on OSX when directory has .DS_Store files)
* Fix crash when bad HTTP credentials are provided


Version 0.8.4 (2014/09/19)
==========================

* "/instances-tags" to get the tags of all the child instances of a
  patient/study/series with a single REST call (bulk tags retrieval)
* Configuration/Lua to select the accepted C-STORE SCP transfer syntaxes
* Fix reporting of errors in Orthanc Explorer when sending images to peers/modalities
* Installation of plugin SDK in CMake


Version 0.8.3 (2014/09/11)
==========================

Major
-----

* Creation of ZIP archives for media storage, with DICOMDIR
* URIs to get all the children of a given resource in a single REST call
* "/tools/lookup" URI to map DICOM UIDs to Orthanc identifiers
* Support of index-only mode (using the "StoreDicom" option)
* Plugins can implement a custom storage area

Minor
-----

* Configuration option to enable HTTP Keep-Alive
* Configuration option to disable the logging of exported resources in "/exports"
* Plugins can retrieve the path to Orthanc and to its configuration file
* "/tools/create-dicom" now accepts the "PatientID" DICOM tag (+ updated sample)
* Possibility to set HTTP headers from plugins
* "LastUpdate" metadata is now always returned for patients, studies and series

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

* Refactoring of HttpOutput ("Content-Length" header is now always sent)
* Upgrade to Mongoose 3.8
* Fixes for Visual Studio 2013 and Windows 64bit
* Fix issue 16: Handling of "AT" value representations in JSON
* Fix issue 17


Version 0.8.2 (2014/08/07)
==========================

* Support of the standard text encodings
* Hot restart of Orthanc by posting to "/tools/reset"
* More fault-tolerant commands in Lua scripts
* Parameter to set the default encoding for DICOM files without SpecificCharacterSet
* Fix of issue #14 (support of XCode 5.1)
* Upgrade to Google Test 1.7.0


Version 0.8.1 (2014/07/29)
==========================

General
-------

* Access patient module at the study level to cope with PatientID collisions
* On-the-fly conversion of JSON to XML according to the HTTP Accept header
* C-Echo SCU in the REST API
* DICOM conformance statement available at URI "/tools/dicom-conformance"

Lua scripts
-----------

* Lua scripts can do HTTP requests, and thus can call Web services
* Lua scripts can invoke system commands, with CallSystem()

Plugins
-------

* Lookup for DICOM UIDs in the plugin SDK
* Plugins have access to the HTTP headers and can answer with HTTP status codes
* Callback to react to the incoming of DICOM instances

Fixes
-----

* Fix build of Google Log with Visual Studio >= 11.0
* Fix automated generation of the list of resource children in the REST API


Version 0.8.0 (2014/07/10)
==========================

Major changes
-------------

* Routing images with Lua scripts
* Introduction of the Orthanc Plugin SDK
* Official support of OS X (Darwin) 10.8

Minor changes
-------------

* Extraction of tags for the patient/study/series/instance DICOM modules
* Extraction of the tags shared by all the instances of a patient/study/series
* Options to limit the number of results for an incoming C-FIND query
* Support of kFreeBSD
* Several code refactorings
* Fix OrthancCppClient::GetVoxelSizeZ()


Version 0.7.6 (2014/06/11)
==========================

* Support of JPEG and JPEG-LS decompression
* Download DICOM images as Matlab/Octave arrays
* Precompiled headers for Microsoft Visual Studio


Version 0.7.5 (2014/05/08)
==========================

* Dynamic negotiation of SOP classes for C-STORE SCU
* Creation of DICOM instances using the REST API
* Embedding of images within DICOM instances
* Adding/removal/modification of remote modalities/peers through REST
* Reuse of the previous SCU connection to avoid unnecessary handshakes
* Fix problems with anonymization and modification
* Fix missing licensing terms about reuse of some code from DCMTK
* Various code refactorings


Version 0.7.4 (2014/04/16)
==========================

* Switch to openssl-1.0.1g in static builds (cf. Heartbleed exploit)
* Switch to boost 1.55.0 in static builds (to solve compiling errors)
* Better logging about nonexistent tags
* Dcm4Chee manufacturer
* Automatic discovering of the path to the DICOM dictionaries
* In the "DicomModalities" config, the port number can be a string


Version 0.7.3 (2014/02/14)
==========================

Major changes
-------------

* Fixes in the implementation of the C-FIND handler for Query/Retrieve
* Custom attachment of files to patients, studies, series or instances
* Access to lowlevel info about the attached files through the REST API
* Recover pixel data for more transfer syntaxes (notably JPEG)

Minor changes
-------------

* AET comparison is now case-insensitive by default
* Possibility to disable the HTTP server or the DICOM server
* Automatic computation of MD5 hashes for the stored DICOM files
* Maintenance tool to recover DICOM files compressed by Orthanc
* The newline characters in the configuration file are fixed for GNU/Linux
* Capture of the SIGTERM signal in GNU/Linux


Version 0.7.2 (2013/11/08)
==========================

* Support of Query/Retrieve from medInria
* Accept more transfer syntaxes for C-STORE SCP and SCU (notably JPEG)
* Create the meta-header when receiving files through C-STORE SCP
* Fixes and improvements thanks to the static analyzer cppcheck


Version 0.7.1 (2013/10/30)
==========================

* Use ZIP64 only when required to improve compatibility (cf. issue #7)
* Refactoring of the CMake options
* Fix for big-endian architectures (RedHat bug #985748)
* Use filenames with 8 characters in ZIP files for maximum compatibility
* Possibility to build Orthanc inplace (in the source directory)


Version 0.7.0 (2013/10/25)
==========================

Major changes
-------------

* DICOM Query/Retrieve is supported

Minor changes
-------------

* Possibility to keep the PatientID during an anonymization
* Check whether "unzip", "tar" and/or "7-zip" are installed from CMake


Version 0.6.2 (2013/10/04)
==========================

* Build of the C++ client as a shared library
* Improvements and documentation of the C++ client API
* Fix of Debian bug #724947 (licensing issue with the SHA-1 library)
* Switch to Boost 1.54.0 (cf. issue #9)
* "make uninstall" is now possible


Version 0.6.1 (2013/09/16)
==========================

* Detection of stable patients/studies/series
* C-FIND SCU at the instance level
* Link from modified to original resource in Orthanc Explorer
* Fix of issue #8
* Anonymization of the medical alerts tag (0010,2000)


Version 0.6.0 (2013/07/16)
==========================

Major changes
-------------

* Introduction of the C++ client
* Send DICOM resources to other Orthanc instances through HTTP
* Access to signed images (instances/.../image-int16)
  (Closes: Debian #716958)

Minor changes
-------------

* Export of DICOM files to the host filesystem (instances/.../export)
* Statistics about patients, studies, series and instances
* Link from anonymized to original resource in Orthanc Explorer
* Fixes for Red Hat and Debian packaging
* Fixes for history in Orthanc Explorer
* Fixes for boost::thread, as reported by Cyril Paulus
* Fix licensing (Closes: Debian #712038)

Metadata
--------

* Access to the metadata through the REST API (.../metadata)
* Support of user-defined metadata
* "LastUpdate" metadata for patients, studies and series
* "/tools/now" to be used in combination with "LastUpdate"
* Improved support of series with temporal positions


Version 0.5.2 (2013/05/07)
==========================

* "Bulk" Store-SCU (send several DICOM instances with the same
  DICOM connection)
* Store-SCU for patients and studies in Orthanc Explorer
* Filtering of incoming DICOM instances (through Lua scripting)
* Filtering of incoming HTTP requests (through Lua scripting)
* Clearing of "/exports" and "/changes"
* Check MD5 of third party downloads
* Faking of the HTTP methods PUT and DELETE


Version 0.5.1 (2013/04/17)
==========================

* Support of RGB images
* Fix of store SCU in release builds
* Possibility to store the SQLite index at another place than the
  DICOM instances (for performance)


Version 0.5.0 (2013/01/31)
==========================

Major changes
-------------

* Download of modified or anonymized DICOM instances
* Inplace modification and anonymization of DICOM series, studies and patients

Minor changes
-------------

* Support of private tags
* Implementation of the PMSCT_RLE1 image decoding for Philips modalities
* Generation of random DICOM UID through the REST API (/tools/generate-uid)


Version 0.4.0 (2012/12/14)
==========================

Major changes
-------------

* Recycling of disk space
* Raw access to the value of the DICOM tags in the REST API

Minor changes
-------------

* Protection of patients against recycling (also in Orthanc Explorer)
* The DICOM dictionaries are embedded in Windows builds


Version 0.3.1 (2012/12/05)
==========================

* Download archives of patients, studies and series as ZIP files
* Orthanc now checks the version of its database schema before starting


Version 0.3.0 (2012/11/30)
==========================

Major changes
-------------

* Transparent compression of the DICOM instances on the disk
* The patient/study/series/instances are now indexed by SHA-1 digests
  of their DICOM Instance IDs (and not by UUIDs anymore): The same
  DICOM objects are thus always identified by the same Orthanc IDs
* Log of exported instances through DICOM C-STORE SCU ("/exported" URI)
* Full refactoring of the DB schema and of the REST API
* Introduction of generic classes for REST APIs (in Core/RestApi)

Minor changes
-------------

* "/statistics" URI
* "last" flag to retrieve the last change from the "/changes" URI
* Generate a sample configuration file from command line
* "CompletedSeries" event in the changes API
* Thread to continuously flush DB to disk (SQLite checkpoints for
  improved robustness)


Version 0.2.3 (2012/10/26)
==========================

* Use HTTP Content-Disposition to set a filename when downloading JSON/DCM
* URI "/system" for general information about Orthanc
* Versioning info and help on the command line
* Improved logging
* Possibility of dynamic linking against jsoncpp, sqlite, boost and dmctk
  for Debian packaging
* Fix some bugs
* Switch to default 8042 port for HTTP


Version 0.2.2 (2012/10/04)
==========================

* Switch to Google Log
* Fixes to Debian packaging


Version 0.2.1 (2012/09/28)
==========================

* Status of series
* Continuous Integration Server is up and running
* Ready for Debian packaging


Version 0.2.0 (2012/09/16)
==========================

Major changes
-------------

* Renaming to "Orthanc"
* Focus on security: Support of SSL, HTTP Basic Authentication and
  interdiction of remote access
* Access to multi-frame images (for nuclear medicine)
* Access to the raw PNG images (in 8bpp and 16bpp)

Minor changes
-------------

* Change of the licensing of the "Core/SQLite" folder to BSD (to
  reflect the original licensing terms of Chromium, from which the
  code derives)
* Standalone build for cross-compilation


Version 0.1.1 (2012/07/20)
==========================

* Fix Windows version
* Native Windows build with Microsoft Visual Studio 2005
* Add path to storage in Configuration.json


Version 0.1.0 (2012/07/19)
==========================

* Initial release