1Pending changes in the mainline
2===============================
3
4
5Version 1.8.1 (2020-12-07)
6==========================
7
8General
9-------
10
11* New sample tool "OrthancImport.py" to easily import compressed archives (ZIP) into Orthanc
12* Logging categories (cf. command-line options starting with "--verbose-" and "--trace=")
13* New command-line option "--trace-dicom" to access full debug information from DCMTK
14* New config option "DicomEchoChecksFind" to automatically complement C-GET SCU with C-FIND SCU
15
16REST API
17--------
18
19* API version upgraded to 9
20* "/tools/dicom-echo": Execute C-Echo SCU to a modality that is not registered in "/modalities"
21* "/tools/log-level-*": Dynamically access and/or change the verbosity of logging categories
22* "/peers/{id}/configuration": Get the configuration of one peer (cf. "/peers?expand")
23* "/modalities/{id}/configuration": Get the configuration of one modality (cf. "/modalities?expand")
24* "/tools/dicom-echo" and "/modalities/{id}/echo" now accept the field "CheckFind" in their JSON
25  body to complement C-GET SCU with C-FIND SCU ("DicomEchoChecksFind" on a per-connection basis)
26* Archive/media jobs report the size of the created ZIP file in content field "ArchiveSizeMB"
27
28Plugins
29-------
30
31* New function in the SDK: OrthancPluginGenerateRestApiAuthorizationToken()
32
33Maintenance
34-----------
35
36* C-GET SCP: Fix responses and handling of cancel
37* Fix decoding sequence if "BuiltinDecoderTranscoderOrder" is "Before"
38* Fix keep-alive in the embedded HTTP server by setting the "Keep-Alive" HTTP header
39* Fix access to videos as a single raw frame (feature broken since Orthanc 1.6.0)
40* REST API now returns 404 error if deleting an inexistent peer or modality
41* Improved forward ABI compatibility of Orthanc Framework (notably, no inline methods anymore)
42* Upgraded dependencies for static builds (notably on Windows and LSB):
43  - civetweb 1.13
44
45
46Version 1.8.0 (2020-10-16)
47==========================
48
49General
50-------
51
52* Serving the content of Orthanc as a WebDAV network share
53* New config options: "WebDavEnabled", "WebDavDeleteAllowed" and "WebDavUploadAllowed"
54
55Plugins
56-------
57
58* New available origin for a DICOM instance: "OrthancPluginInstanceOrigin_WebDav"
59
60
61Version 1.7.4 (2020-09-18)
62==========================
63
64General
65-------
66
67* New configuration options to enable HTTP peers identification through certificates:
68  "SslVerifyPeers" and "SslTrustedClientCertificates"
69* New configuration option "SyncStorageArea" to immediately commit the files onto the disk
70  (through fsync()), so as to avoid discrepencies between DB and filesystem in case of hard
71  shutdown of the machine running Orthanc. This slows down adding new files into Orthanc.
72
73Maintenance
74-----------
75
76* Underscores are now allowed in peers/modalities symbolic names
77* Fix compatibility with C-MOVE SCU requests issued by Ambra
78* Fix transcoding in C-MOVE SCP, in the case where "SynchronousCMove" is "true"
79* When checking DICOM allowed methods, if there are multiple modalities with the same AET,
80  differentiate them from the calling IP
81* Enable the access to raw frames in Philips ELSCINT1 proprietary compression
82* Support empty key passwords when using HTTP client certificates
83* Fix handling of "ModalitiesInStudy" (0008,0061) in C-FIND and "/tools/find"
84
85
86Version 1.7.3 (2020-08-24)
87==========================
88
89REST API
90--------
91
92* API version upgraded to 8
93* "/peers/{id}/store": New option "Compress" to compress DICOM data using gzip
94* "OrthancPeerStore" jobs now report the transmitted size in their public content
95
96Plugins
97-------
98
99* New config option "Worklist.LimitAnswers" for the sample modality worklist plugin
100
101Maintenance
102-----------
103
104* Add missing tag "Retrieve AE Title (0008,0054)" in C-FIND SCP responses
105* Fix DICOM SCP filters if some query tag has > 256 characters (list of UIDs matching)
106* "/series/.../ordered-slices" supports spaces in Image Position/Orientation Patient tags
107* Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
108* Support receiving multipart messages larger than 2GB in the embedded HTTP server
109
110
111Version 1.7.2 (2020-07-08)
112==========================
113
114General
115-------
116
117* C-FIND SCP now returns private tags (cf. option "DefaultPrivateCreator")
118* Packaging of the Orthanc framework as a shared library
119
120Plugins
121-------
122
123* New change types in the SDK: JobSubmitted, JobSuccess, JobFailure
124
125Maintenance
126-----------
127
128* Issue #182: Better reporting of errors in plugins reading chunked HTTP body
129* Fix issue #183 (C-ECHO always fails in Orthanc Explorer, regression from 1.6.1 to 1.7.0)
130
131
132Version 1.7.1 (2020-05-27)
133==========================
134
135* Fix decoding of DICOM images for plugins (for compatibility with
136  Orthanc Web Viewer 2.6)
137
138
139Version 1.7.0 (2020-05-22)
140==========================
141
142General
143-------
144
145* Support of DICOM C-GET SCP (contribution by Varian Medical Systems)
146* DICOM transcoding over the REST API
147* Transcoding from compressed to uncompressed transfer syntaxes over DICOM
148  C-STORE SCU (if the remote modality doesn't support compressed syntaxes)
149* New configuration options related to transcoding:
150  "TranscodeDicomProtocol", "BuiltinDecoderTranscoderOrder",
151  "IngestTranscoding" and "DicomLossyTranscodingQuality"
152
153REST API
154--------
155
156* API version upgraded to 7
157* Improved:
158  - "/instances/../modify": it is now possible to "Keep" the "SOPInstanceUID".
159    Note that it was already possible to "Replace" it.
160  - added "Timeout" parameter to every DICOM operation
161  - "/queries/.../answers/../retrieve": "TargetAet" not mandatory anymore
162    (defaults to the local AET)
163* Changes:
164  - "/{patients|studies|series}/.../modify": New option "KeepSource"
165  - "/{patients|studies|series|instances}/.../modify": New option "Transcode"
166  - "/peers/{id}/store": New option "Transcode"
167  - ".../archive", ".../media", "/tools/create-media" and
168    "/tools/create-archive": New option "Transcode"
169  - "/ordered-slices": reverted the change introduced in 1.5.8 and go-back
170    to 1.5.7 behaviour.
171
172Plugins
173-------
174
175* New functions in the SDK:
176  - OrthancPluginCreateDicomInstance()
177  - OrthancPluginCreateMemoryBuffer()
178  - OrthancPluginEncodeDicomWebJson2()
179  - OrthancPluginEncodeDicomWebXml2()
180  - OrthancPluginFreeDicomInstance()
181  - OrthancPluginGetInstanceAdvancedJson()
182  - OrthancPluginGetInstanceDecodedFrame()
183  - OrthancPluginGetInstanceDicomWebJson()
184  - OrthancPluginGetInstanceDicomWebXml()
185  - OrthancPluginGetInstanceFramesCount()
186  - OrthancPluginGetInstanceRawFrame()
187  - OrthancPluginRegisterTranscoderCallback()
188  - OrthancPluginSerializeDicomInstance()
189  - OrthancPluginTranscodeDicomInstance()
190* "OrthancPluginDicomInstance" structure wrapped in "OrthancPluginCppWrapper.h"
191* Allow concurrent calls to the custom image decoders provided by the plugins
192
193Maintenance
194-----------
195
196* Moved the GDCM sample plugin out of the Orthanc repository as a separate plugin
197* Fix missing body in "OrthancPluginHttpPost()" and "OrthancPluginHttpPut()"
198* Fix issue #169 (TransferSyntaxUID change from Explicit to Implicit during C-STORE SCU)
199* Fix issue #179 (deadlock in Python plugins)
200* Upgraded dependencies for static builds (notably on Windows and LSB):
201  - openssl 1.1.1g
202
203
204Version 1.6.1 (2020-04-21)
205==========================
206
207REST API
208--------
209
210* API version has been upgraded to 6
211* Added:
212  - "/modalities/{id}/store-straight": Synchronously send the DICOM instance in POST
213    body to another modality (alternative to command-line tools such as "storescu")
214
215Plugins
216-------
217
218* New functions in the SDK:
219  - OrthancPluginRegisterIncomingDicomInstanceFilter()
220  - OrthancPluginGetInstanceTransferSyntaxUid()
221  - OrthancPluginHasInstancePixelData()
222
223Lua
224---
225
226* New "info" field in "ReceivedInstanceFilter()" callback, containing
227  "HasPixelData" and "TransferSyntaxUID" information
228
229Maintenance
230-----------
231
232* Source code repository moved from BitBucket to self-hosted server
233* Fix OpenSSL initialization on Linux Standard Base
234* Fix lookup form in Orthanc Explorer (wildcards not allowed in StudyDate)
235* Fix signature of "OrthancPluginRegisterStorageCommitmentScpCallback()" in plugins SDK
236* Error reporting on failure while initializing SSL
237* Fix unit test ParsedDicomFile.ToJsonFlags2 on big-endian architectures
238* Avoid one memcpy of the DICOM buffer on "POST /instances"
239* Upgraded dependencies for static builds (notably on Windows):
240  - civetweb 1.12
241  - openssl 1.1.1f
242
243
244Version 1.6.0 (2020-03-18)
245==========================
246
247General
248-------
249
250* Support of DICOM storage commitment
251
252REST API
253--------
254
255* API version has been upgraded to 5
256* Added:
257  - "/peers/{id}/system": Test the connectivity with a remote peer
258    (and also retrieve its version number)
259  - "/tools/log-level": Access and/or change the log level without restarting Orthanc
260  - "/instances/{id}/frames/{frame}/rendered" and "/instances/{id}/rendered":
261    Render frames, taking windowing and resizing into account
262  - "/modalities/{...}/storage-commitment": Trigger storage commitment SCU
263  - "/storage-commitment/{...}": Access storage commitment reports
264  - "/storage-commitment/{...}/remove": Remove instances from storage commitment reports
265* Improved:
266  - "/changes": Allow the "limit" argument to be greater than 100
267  - "/instances": Support "Content-Encoding: gzip" to upload gzip-compressed DICOM files
268  - ".../modify" and "/tools/create-dicom": New option "PrivateCreator" for private tags
269  - "/modalities/{...}/store": New Boolean argument "StorageCommitment"
270
271Plugins
272-------
273
274* New sample plugin: "ConnectivityChecks"
275* New primitives to handle storage commitment SCP by plugins
276
277Lua
278---
279
280* New events:
281  - "OnDeletedPatient", "OnDeletedStudy", "OnDeletedSeries", "OnDeletedInstance":
282    triggered when a resource is deleted
283  - "OnUpdatedPatient", "OnUpdatedStudy", "OnUpdatedSeries", "OnUpdatedInstance":
284    triggered when an attachment or a metadata is updated
285
286Maintenance
287-----------
288
289* New configuration options: "DefaultPrivateCreator" and "StorageCommitmentReportsSize"
290* Support of MPEG4 transfer syntaxes in C-Store SCP
291* C-FIND SCU at Instance level now sets the 0008,0052 tag to IMAGE per default (was INSTANCE).
292  Therefore, the "ClearCanvas" and "Dcm4Chee" modality manufacturer have now been deprecated.
293* More strict C-FIND SCP wrt. the DICOM standard: Forbid wildcard
294  matching on some VRs, ignore main tags below the queried level
295* Fix issue #65 (Logging improvements)
296* Fix issue #103 ("queries/.../retrieve" API returns HTTP code 200 even on server errors)
297* Fix issue #140 (Modifying private tags with REST API changes VR from LO to UN)
298* Fix issue #154 (Matching against list of UID-s by C-MOVE)
299* Fix issue #156 (Chunked Dicom-web transfer uses 100% CPU)
300* Fix issue #165 (Boundary parameter in multipart Content-Type is too long)
301* Fix issue #166 (CMake find_boost version is now broken with newer boost/cmake)
302* Fix issue #167 (Job can't be cancelled - Handling of timeouts after established association)
303* Fix issue #168 (Plugins can't read private tags from the configuration file)
304* Upgraded dependencies for static builds (notably on Windows):
305  - dcmtk 3.6.5
306  - openssl 1.1.1d
307  - jsoncpp 0.10.7 for pre-C++11 compilers
308
309
310Version 1.5.8 (2019-10-16)
311==========================
312
313REST API
314--------
315
316* API version has been upgraded to 4
317* In /ordered-slices route, ignore instances without position/normal/seriesIndex,
318  unless there are only such instances in the series
319
320Maintenance
321-----------
322
323* Security: If remote access is enabled, HTTP authentication is also
324  enabled by default. This modification was done to mitigate security
325  risks reported by independant security researcher Amitay Dan.
326* Security: New configuration option "ExecuteLuaEnabled" to allow "/tools/execute-script"
327* New configuration option: "HttpRequestTimeout"
328* Log an explicit error if uploading an empty DICOM file using REST API
329* Name of temporary files now include the process ID to ease design of scripts cleaning /tmp
330* Fix compatibility of LSB binaries with Ubuntu >= 18.04
331* Fix generation of "SOP Instance UID" on split and merge
332* Orthanc Explorer: include the URL search params into HTTP headers to
333  the REST API to ease usage of the Authorization plugin. Note that
334  only the 'token', 'auth-token' & 'authorization' search params are
335  transmitted into HTTP headers.
336* Fix lost relationships between CT and RT-STRUCT during anonymization
337
338
339Version 1.5.7 (2019-06-25)
340==========================
341
342REST API
343--------
344
345* API version has been upgraded to 3
346* "/modalities/{id}/query": New argument "Normalize" can be set to "false"
347  to bypass the automated correction of outgoing C-FIND queries
348* Reporting of "ParentResources" in "DicomModalityStore" and "DicomModalityStore" jobs
349
350Plugins
351-------
352
353* New functions in the SDK:
354  - OrthancPluginHttpClientChunkedBody(): HTTP client for POST/PUT with a chunked body
355  - OrthancPluginRegisterMultipartRestCallback(): HTTP server for POST/PUT with multipart body
356  - OrthancPluginGetTagName(): Retrieve the name of a DICOM tag from its group and element
357
358Maintenance
359-----------
360
361* Orthanc now accepts "-H 'Transfer-Encoding: chunked'" option from curl
362* Size of the Orthanc static binaries are reduced by compressing ICU data
363* Anonymization: Preserve hierarchical relationships in (0008,1115) [] (0020,000e)
364* Allow the serialization of signed 16bpp images in PAM format
365* HTTP header "Accept-Encoding" is honored for streams without built-in support for compression
366* The default HTTP timeout is now 60 seconds (instead of 10 seconds in previous versions)
367* Allow anonymizing/modifying instances without the PatientID tag
368* Fix issue #106 (Unable to export preview as jpeg from Lua script)
369* Fix issue #136 (C-FIND request fails when found DICOM file does not have certain tags)
370* Fix issue #137 (C-STORE fails for unknown SOP Class although server is configured to accept any)
371* Fix issue #138 (POST to modalities/{name} accepts invalid characters)
372* Fix issue #141 (/tools/create-dicom removes non-ASCII characters from study description)
373
374
375Version 1.5.6 (2019-03-01)
376==========================
377
378Orthanc Explorer
379----------------
380
381* If performing a Query/Retrieve operation, the default value for the
382  tags is set to an empty string instead of '*', which allows one to match
383  even if the tag is not present. This allows malformed DICOM files to
384  be matched, even though they lack required tags such as "PatientSex"
385
386Maintenance
387-----------
388
389* Enlarge the support of JSON-to-XML conversion in the REST API
390* Fix missing DB transactions in some write operations
391* Fix performance issue in DICOM protocol by disabling Nagle's algorithm
392
393
394Version 1.5.5 (2019-02-25)
395==========================
396
397General
398-------
399
400* Support of the following multi-byte specific character sets:
401  - Japanese Kanji (ISO 2022 IR 87)
402  - Korean (ISO 2022 IR 149)
403  - Simplified Chinese (ISO 2022 IR 58)
404* Basic support for character sets with code extensions (ISO 2022 escape sequences)
405
406REST API
407--------
408
409* API version has been upgraded to 2
410* "DicomMoveScu" jobs provide the associated C-FIND answer in their "Query" public field
411
412Plugins
413-------
414
415* Separation of ideographic and phonetic characters in DICOMweb JSON and XML
416
417Maintenance
418-----------
419
420* Accept SOP classes: BreastProjectionXRayImageStorageForProcessing/Presentation
421* More tolerance wrt. missing DICOM tags that must be returned by Orthanc C-FIND SCP
422* Orthanc now interprets the "DCMDICTPATH" environment variable the same way as DCMTK
423* New CMake option: "-DMSVC_MULTIPLE_PROCESSES=ON" for parallel build with Visual Studio
424* Fix issue #126 (Orthanc and DCMDICTPATH)
425* Fix issue #131 (C-MOVE failure due to duplicate StudyInstanceUID in the database)
426* Fix issue #134 (/patient/modify gives 500, should really be 400)
427* Upgraded dependencies for static builds (notably on Windows):
428  - boost 1.69.0
429  - curl 1.64.0
430  - dcmtk 3.6.4
431  - e2fsprogs 1.44.5 (libuuid)
432  - googletest 1.8.1
433  - libjpeg 9c
434  - libpng 1.6.36
435  - openssl 1.0.2p
436  - pugixml 1.9
437  - sqlite amalgamation 3.27.1
438
439
440Version 1.5.4 (2019-02-08)
441==========================
442
443General
444-------
445
446* New configuration options:
447  - "MetricsEnabled" to enable the tracking of the metrics of Orthanc
448  - "HttpThreadsCount" to set the number of threads in the embedded HTTP server
449  - "TemporaryDirectory" to set the folder containing the temporary files
450
451REST API
452--------
453
454* API version has been upgraded to 1.4
455* URI "/instances/.../file" can return DICOMweb JSON or XML, depending
456  on the content of the "Accept" HTTP header
457* New URI "/tools/metrics" to dynamically enable/disable the collection of metrics
458* New URI "/tools/metrics-prometheus" to retrieve metrics using Prometheus text format
459* URI "/peers?expand" provides more information about the peers
460
461Plugins
462-------
463
464* New functions in the SDK:
465  - OrthancPluginSetMetricsValue() to set the value of a metrics
466  - OrthancPluginRegisterRefreshMetricsCallback() to ask to refresh metrics
467  - OrthancPluginEncodeDicomWebJson() to convert DICOM to "application/dicom+json"
468  - OrthancPluginEncodeDicomWebXml() to convert DICOM to "application/dicom+xml"
469* New extensions in the database SDK: LookupResourceAndParent and GetAllMetadata
470
471Maintenance
472-----------
473
474* Fix regression if calling "/tools/find" with the tag "ModalitiesInStudy"
475* Fix build with unpatched versions of Civetweb (missing "mg_disable_keep_alive()")
476* Fix issue #130 (Orthanc failed to start when /tmp partition was full)
477
478
479Version 1.5.3 (2019-01-25)
480==========================
481
482General
483-------
484
485* New configuration option: "SaveJobs" to specify whether jobs are stored in the database
486
487Maintenance
488-----------
489
490* Don't return tags whose group is below 0x0008 in C-FIND SCP answers
491* Fix compatibility with DICOMweb plugin (allow multipart answers over HTTP Keep-Alive)
492* Fix issue #73 (/modalities/{modalityId}/store raises 500 errors instead of 404)
493* Fix issue #90 (C-Find shall match missing tags to null/empty string)
494* Fix issue #119 (/patients/.../archive returns a 500 when JobsHistorySize is 0)
495* Fix issue #128 (Asynchronous C-MOVE: invalid number of remaining sub-operations)
496
497
498Version 1.5.2 (2019-01-18)
499==========================
500
501General
502-------
503
504* CivetWeb is now the default embedded HTTP server (instead of Mongoose)
505* New configuration option: "TcpNoDelay" to disable Nagle's algorithm in HTTP server
506
507REST API
508--------
509
510* API version has been upgraded to 1.3
511* More consistent handling of the "Last" field returned by the "/changes" URI
512
513Plugins
514-------
515
516* New primitives to speed up databases (custom index plugins)
517
518Maintenance
519-----------
520
521* Ignore tags whose group is below 0x0008 in C-FIND SCP requests
522* Compatibility with DCMTK 3.6.4
523* Fix issue #21 (DICOM files missing after uploading with Firefox)
524* Fix issue #32 (HTTP keep-alive is now enabled by default)
525* Fix issue #58 (Patient recycling order should be defined by their received last instance)
526* Fix issue #118 (Wording in Configuration.json regarding SynchronousCMove)
527* Fix issue #124 (GET /studies/ID/media fails for certain dicom file)
528* Fix issue #125 (Mongoose: /instances/{id} returns 500 on invalid HTTP Method)
529* Fixed Orthanc Explorer on IE and Firefox: Explorer always show "too many results"
530  and it's therefore impossible to browse the content
531* Upgraded dependencies for static and Windows builds:
532  - civetweb 1.11
533
534
535Version 1.5.1 (2018-12-20)
536==========================
537
538General
539-------
540
541* Optimization: On C-FIND, avoid accessing the storage area whenever possible
542* New configuration option:
543  - "StorageAccessOnFind" to rule the access to the storage area during C-FIND
544
545Maintenance
546-----------
547
548* Removal of the "AllowFindSopClassesInStudy" old configuration option
549* "/tools/create-dicom" is more tolerant wrt. invalid specific character set
550
551
552Version 1.5.0 (2018-12-10)
553==========================
554
555General
556-------
557
558* Possibility to restrict the allowed DICOM commands for each modality
559* The Orthanc configuration file can use environment variables
560* New configuration options:
561  - "DicomModalitiesInDatabase" to store the definitions of modalities in the database
562  - "OrthancPeersInDatabase" to store the definitions of Orthanc peers in the database
563
564Orthanc Explorer
565----------------
566
567* The first screen of Orthanc Explorer is now a form to do studies lookups
568* Support of large databases, by limiting the results to 100 patients or studies
569
570REST API
571--------
572
573* API version has been upgraded to 1.2
574* Asynchronous generation of ZIP archives and DICOM medias
575* New URI: "/studies/.../merge" to merge a study
576* New URI: "/studies/.../split" to split a study
577* POST-ing a DICOM file to "/instances" also answers the patient/study/series ID
578* GET "/modalities/?expand" now returns a JSON object instead of a JSON array
579* New "Details" field in HTTP answers on error (cf. "HttpDescribeErrors" option)
580* New options to URI "/queries/.../answers": "?expand" and "?simplify"
581* New URIs to launch new C-FIND to explore the hierarchy of a C-FIND answer:
582  - "/queries/.../answers/.../query-instances" to C-FIND child instances
583  - "/queries/.../answers/.../query-series" to C-FIND child series
584  - "/queries/.../answers/.../query-studies" to C-FIND child studies
585* New "DicomDiskSize" and "DicomUncompressedSize" fields in statistics about resources
586
587Plugins
588-------
589
590* New functions in the SDK:
591  - "OrthancPluginSetHttpErrorDetails()"
592  - "OrthancPluginAutodetectMimeType()"
593
594Maintenance
595-----------
596
597* "SynchronousCMove" is now "true" by default
598* New modality manufacturer: "GE" for GE Healthcare EA and AW
599* Executing a query/retrieve from the REST API now creates a job
600* Fix: Closing DICOM associations after running query/retrieve from REST API
601* Fix: Allow creation of MONOCHROME1 grayscale images in tools/create-dicom
602* Remove invalid characters from badly-encoded UTF-8 strings (impacts PostgreSQL)
603* Orthanc starts even if jobs from a previous execution cannot be unserialized
604* New CMake option "ENABLE_DCMTK_LOG" to disable logging internal to DCMTK
605* Fix issue 114 (Boost 1.68 doesn't support SHA-1 anymore)
606* Support of "JobsHistorySize" set to zero
607* Upgraded dependencies for static and Windows builds:
608  - boost 1.68.0
609  - lua 5.3.5
610
611
612Version 1.4.2 (2018-09-20)
613==========================
614
615General
616-------
617
618* "OrthancPeers" configuration option now allows one to specify HTTP headers
619* New main DICOM tag: "ImageOrientationPatient" at the instance level
620* New configuration options:
621  - "HttpVerbose" to debug outgoing HTTP connections
622  - "OverwriteInstances" to choose how duplicate SOPInstanceUID are handled
623
624Orthanc Explorer
625----------------
626
627* Query/retrieve: Added button for "DX" modality
628
629REST API
630--------
631
632* "/tools/reconstruct" to reconstruct the main DICOM tags, the JSON summary and
633  the metadata of all the instances stored in Orthanc. This is a slow operation!
634
635Plugins
636-------
637
638* New primitives to access Orthanc peers from plugins
639* New events in change callbacks: "UpdatedPeers" and "UpdatedModalities"
640* New primitives to handle jobs from plugins: "OrthancPluginSubmitJob()"
641  and "OrthancPluginRegisterJobsUnserializer()"
642
643Lua
644---
645
646* IncomingWorklistRequestFilter() to filter incoming C-FIND worklist queries
647
648Maintenance
649-----------
650
651* Fix "/series/.../ordered-slices" in the presence of non-parallel slices
652* Fix incoming DICOM C-Store filtering for JPEG-LS transfer syntaxes
653* Fix OrthancPluginHttpClient() to return the HTTP status on errors
654* Fix HTTPS requests to sites using a certificate encrypted with ECDSA
655* Fix handling of incoming C-FIND queries containing Generic Group Length (*, 0x0000)
656* Fix issue 54 (quoting multipart answers), for OsiriX compatibility through DICOMweb
657* Fix issue 98 (DCMTK configuration fails with GCC 6.4.0 on Alpine)
658* Fix issue 99 (PamWriter test segfaults on alpine linux with gcc 6.4.0)
659
660
661Version 1.4.1 (2018-07-17)
662==========================
663
664* Fix deadlock in Lua scripting
665* Simplification to the "DatabaseWrapper" class
666
667
668Version 1.4.0 (2018-07-13)
669==========================
670
671General
672-------
673
674* New advanced job engine
675* New configuration options:
676  - "ConcurrentJobs": Max number of jobs that are simultaneously running
677  - "SynchronousCMove": Whether to run DICOM C-Move operations synchronously
678  - "JobsHistorySize": Max number of completed jobs that are kept in memory
679* New metadata automatically computed at the instance level:
680  "RemoteIp", "CalledAet" and "HttpUsername"
681
682Orthanc Explorer
683----------------
684
685* New screen listing all the available studies
686
687REST API
688--------
689
690* "/jobs/..." to manage the jobs from the REST API
691* New option "?short" to list DICOM tags using their hexadecimal ID in:
692  - "/instances/.../tags?short"
693  - "/instances/.../header?short"
694  - "/{patients|studies|series}/.../instances-tags?short"
695  - "/{patients|studies|series}/.../shared-tags?short"
696  - "/{patients|studies|series|instances}/.../module?short"
697  - "/studies/.../module-patient?short"
698* "/instances/.../tags" URI was returning only the first value of
699  DicomTags containing multiple numerical value.  It now returns all
700  values in a string separated by \\ (i.e.: "1\\2\\3").  Note that,
701  for data already in Orthanc, you'll need to reconstruct the data by
702  sending a POST request to the ".../reconstruct" URI.  This change
703  triggered an update of ORTHANC_API_VERSION from 1.0 to 1.1
704* "/instances/.../frame/../image-uint8 and friends now accepts a
705  "image/pam" MIME type to retrieve images in PAM format
706  (https://en.wikipedia.org/wiki/Netpbm#PAM_graphics_format)
707* New option "?expand" to "/instances/.../metadata"
708
709Plugins
710-------
711
712* New primitive in database SDK: "lookupIdentifierRange" to speed up range searches
713* New function in the SDK: "OrthancPluginCheckVersionAdvanced()"
714
715Maintenance
716-----------
717
718* Configuration option "LogExportedResources" is now "false" by default
719* Header "OrthancCppDatabasePlugin.h" is now part of the "orthanc-databases" project
720* Fix generation of DICOMDIR if PatientID is empty
721* Fix issue 25 (Deadlock with Lua scripts): The event queue is now implemented for Lua
722* Fix issue 94 (Instance modification should not modify FrameOfReferenceUID)
723* Fix issue 77 (Lua access to REST-API is null terminated)
724* Fix memory leak introduced by changeset #99116ed6f38c in Orthanc 1.3.2
725* Upgraded dependencies for static and Windows builds:
726  - boost 1.67.0
727  - openssl 1.0.2o
728
729
730Version 1.3.2 (2018-04-18)
731==========================
732
733REST API
734--------
735
736* "/system" URI returns the version of the Orthanc REST API
737* "/tools/now" returns the current UTC (universal) time
738* "/tools/now-local" returns the curent local time.
739  This was the behavior of "/tools/now" until release 1.3.1.
740* Added "?expand" GET argument to "/peers" and "/modalities" routes
741* New URI: "/tools/create-media-extended" to generate a DICOMDIR
742  archive from several resources, including additional type-3 tags
743* Preservation of UID relationships while anonymizing
744
745Lua
746---
747
748* New CMake option: "-DENABLE_LUA_MODULES=ON" to enable support for
749  loading external Lua modules if the Lua engine is statically linked
750
751Plugins
752-------
753
754* New error code: DatabaseUnavailable
755
756Maintenance
757-----------
758
759* Orthanc now uses UTC (universal time) instead of local time in its database
760* Fix to allow creating DICOM instances with empty Specific Character Set (0008,0005)
761* Support of Linux Standard Base
762* Static linking against libuuid (from e2fsprogs)
763* Fix static build on CentOS 6
764* Possibility of using JsonCpp 0.10.6 if the compiler does not support C++11
765  with the "-DUSE_LEGACY_JSONCPP=ON" CMake option
766* Upgraded dependencies for static and Windows builds:
767  - boost 1.66.0
768  - curl 7.57.0
769  - jsoncpp 1.8.4
770  - zlib 1.2.11
771
772
773Version 1.3.1 (2017-11-29)
774==========================
775
776General
777-------
778
779* Built-in decoding of palette images
780
781REST API
782--------
783
784* New URI: "/instances/.../frames/.../raw.gz" to compress raw frames using gzip
785* New argument "ignore-length" to force the inclusion of too long tags in JSON
786* New argument "/.../media?extended" to include additional type-3 tags in DICOMDIR
787
788Plugins
789-------
790
791* New pixel formats exposed in SDK: BGRA32, Float32, Grayscale32, RGB48
792
793Maintenance
794-----------
795
796* Creation of ./Resources/CMake/OrthancFramework*.cmake to reuse the Orthanc
797  C++ framework in other projects
798* New security-related options: "DicomAlwaysAllowEcho"
799* Use "GBK" (frequently used in China) as an alias for "GB18030"
800* Experimental support of actively maintained Civetweb to replace Mongoose 3.8
801* Fix issue 31 for good (create new modality types for Philips ADW, GE Xeleris, GE AWServer)
802* Fix issue 64 (OpenBSD support)
803* Fix static compilation of DCMTK 3.6.2 on Fedora
804* Upgrade to Boost 1.65.1 in static builds
805* Upgrade to SQLite amalgamation 3.21.0 in static builds
806
807
808Version 1.3.0 (2017-07-19)
809==========================
810
811General
812-------
813
814* Orthanc now anonymizes according to Basic Profile of PS 3.15-2017c Table E.1-1
815* In the "DicomModalities" configuration:
816  - Manufacturer type MedInria is now obsolete
817  - Manufacturer types AgfaImpax and SyngoVia are obsolete too
818    (use GenericNoWildcardInDates instead)
819  - Obsolete manufacturers are still accepted but might disappear in the future
820  - Added new manufacturer: GenericNoUniversalWildcard to replace all '*' by '' in
821    outgoing C-Find requests
822* New security-related options: "DicomAlwaysAllowStore" and "DicomCheckModalityHost"
823
824REST API
825--------
826
827* Argument "Since" in URI "/tools/find" (related to issue 53)
828* Argument "DicomVersion" in URIs "/{...}/{...}/anonymization"
829
830Plugins
831-------
832
833* New function: "OrthancPluginRegisterIncomingHttpRequestFilter2()"
834
835Lua
836---
837
838* Added HTTP headers support for Lua HttpPost/HttpGet/HttpPut/HttpDelete
839
840Orthanc Explorer
841----------------
842
843* Query/retrieve: Added button for "DR" modality
844
845Maintenance
846-----------
847
848* Ability to retrieve raw frames encoded as unsigned 32-bits integers
849* Fix issue 29 (more consistent handling of the "--upgrade" argument)
850* Fix issue 31 (create new modality types for Philips ADW, GE Xeleris, GE AWServer)
851* Fix issue 35 (AET name is not transferred to Orthanc using DCMTK 3.6.0)
852* Fix issue 44 (bad interpretation of photometric interpretation MONOCHROME1)
853* Fix issue 45 (crash when providing a folder to "--config" command-line option)
854* Fix issue 46 (PHI remaining after anonymization)
855* Fix issue 49 (worklists: accentuated characters are removed from C-Find responses)
856* Fix issue 52 (DICOM level security association problems)
857* Fix issue 55 (modification/anonymization of tags that might break the database
858  model now requires the "Force" parameter to be set to "true" in the query)
859* Fix issue 56 (case-insensitive matching over accents)
860* Fix Debian #865606 (orthanc FTBFS with libdcmtk-dev 3.6.1~20170228-2)
861* Fix XSS inside DICOM in Orthanc Explorer (as reported by Victor Pasnkel, Morphus Labs)
862* Upgrade to DCMTK 3.6.2 in static builds (released on 2017-07-17)
863* Upgrade to Boost 1.64.0 in static builds
864* New advanced "Locale" configuration option
865* Removed configuration option "USE_DCMTK_361_PRIVATE_DIC"
866
867
868Version 1.2.0 (2016/12/13)
869==========================
870
871General
872-------
873
874* Handling of private tags/creators in the "Dictionary" configuration option
875* New configuration options: "LoadPrivateDictionary", "DicomScuTimeout" and "DicomScpTimeout"
876* New metadata automatically computed at the instance level: "TransferSyntax" and "SopClassUid"
877
878REST API
879--------
880
881* "/tools/invalidate-tags" to invalidate the JSON summary of all the DICOM files
882  (useful if private tags are registered, or if changing the default encoding)
883* "Permissive" flag for URI "/modalities/{...}/store" to ignore C-STORE transfer errors
884* "Asynchronous" flag for URIs "/modalities/{...}/store" and "/peers/{...}/store"
885  to avoid waiting for the completion of image transfers
886* Possibility to DELETE "dicom-as-json" attachments to reconstruct the JSON summaries
887  (useful if "Dictionary" has changed)
888* "Keep" option for modifications to keep original DICOM identifiers (advanced feature)
889* "/tools/default-encoding" to get or temporarily change the default encoding
890* "/{resource}/{id}/reconstruct" to reconstruct the main DICOM tags, the JSON summary and
891  the metadata of a resource (useful to compute new metadata, or if using "Keep" above)
892
893Plugins
894-------
895
896* New function: "OrthancPluginRegisterPrivateDictionaryTag()" to register private tags
897* More control over client cache in the ServeFolders plugin
898* New C++ help wrappers in "Plugins/Samples/Common/" to read DICOM datasets from REST API
899* New data structure: "OrthancPluginFindMatcher" to match DICOM against C-FIND queries
900
901Maintenance
902-----------
903
904* Fix handling of encodings in C-FIND requests (including for worklists)
905* Use of DCMTK 3.6.1 dictionary of private tags in standalone builds
906* Avoid hard crash if not enough memory (handling of std::bad_alloc)
907* Improved robustness of Orthanc Explorer wrt. query/retrieve (maybe fix issue 24)
908* Fix serious performance issue with C-FIND
909* Fix extraction of the symbolic name of the private tags
910* Performance warning if runtime debug assertions are turned on
911* Improved robustness against files with no PatientID
912* Upgrade to curl 7.50.3 for static and Windows builds
913* Content-Type for JSON documents is now "application/json; charset=utf-8"
914* Ignore "Group Length" tags in C-FIND queries
915* Fix handling of worklist SCP with ReferencedStudySequence and ReferencedPatientSequence
916* Fix handling of Move Originator AET and ID in C-MOVE SCP
917* Fix vulnerability ZSL-2016-5379 "Unquoted Service Path Privilege Escalation" in the
918  Windows service
919* Fix vulnerability ZSL-2016-5380 "Remote Memory Corruption Vulnerability" in DCMTK 3.6.0
920
921
922Version 1.1.0 (2016/06/27)
923==========================
924
925General
926-------
927
928* HTTPS client certificates can be associated with Orthanc peers to enhance security over Internet
929* Possibility to use PKCS#11 authentication for hardware security modules with Orthanc peers
930* New command-line option "--logfile" to output the Orthanc log to the given file
931* Support of SIGHUP signal (restart Orthanc only if the configuration files have changed)
932
933REST API
934--------
935
936* New URI: "/instances/.../frames/.../raw" to access the raw frames (bypass image decoding)
937* New URI "/modalities/.../move" to issue C-MOVE SCU requests
938* "MoveOriginatorID" can be specified for "/modalities/.../store"
939
940Dicom protocol
941--------------
942
943* Support of optional tags for counting resources in C-FIND:
944  0008-0061, 0008-0062, 0020-1200, 0020-1202, 0020-1204, 0020-1206, 0020-1208, 0020-1209
945* Support of Move Originator Message ID (0000,1031) in C-STORE responses driven by C-MOVE
946
947Plugins
948-------
949
950* Speedup in plugins by removing unnecessary locks
951* New callback to filter incoming HTTP requests: OrthancPluginRegisterIncomingHttpRequestFilter()
952* New callback to handle non-worklists C-FIND requests: OrthancPluginRegisterFindCallback()
953* New callback to handle C-MOVE requests: OrthancPluginRegisterMoveCallback()
954* New function: "OrthancPluginHttpClient()" to do HTTP requests with full control
955* New function: "OrthancPluginGenerateUuid()" to generate a UUID
956* More than one custom image decoder can be installed (e.g. to handle different transfer syntaxes)
957
958Lua
959---
960
961* Possibility to dynamically fix outgoing C-FIND requests using "OutgoingFindRequestFilter()"
962* Access to the HTTP headers in the "IncomingHttpRequestFilter()" callback
963
964Image decoding
965--------------
966
967* Huge speedup if decoding the family of JPEG transfer syntaxes
968* Refactoring leading to speedups with custom image decoders (including Web viewer plugin)
969* Support decoding of RLE Lossless transfer syntax
970* Support of signed 16bpp images in ParsedDicomFile
971
972Maintenance
973-----------
974
975* New logo of Orthanc
976* Fix issue 11 (is_regular_file() fails for FILE_ATTRIBUTE_REPARSE_POINT)
977* Fix issue 16 ("Limit" parameter error in REST API /tools/find method)
978* Fix of Debian bug #818512 ("FTBFS: Please install libdcmtk*-dev")
979* Fix of Debian bug #823139 ("orthanc: Please provide RecoverCompressedFile.cpp")
980* Replaced "localhost" by "127.0.0.1", as it might impact performance on Windows
981* Compatibility with CMake >= 3.5.0
982* Possibility to use forthcoming DCMTK 3.6.1 in static builds (instead of 3.6.0)
983* Upgrade to Boost 1.60.0 for static builds
984* Use of HTTP status 403 Forbidden (instead of 401) if access to a REST resource is disallowed
985* Option "HttpsVerifyPeers" can be used to connect against self-signed HTTPS certificates
986* New configuration option "AllowFindSopClassesInStudy"
987* Macro "__linux" (now obsolete) replaced by macro "__linux__" (maybe solves Debian bug #821011)
988* Modification of instances can now replace PixelData (resp. EncapsulatedDocument) with
989  provided a PNG/JPEG image (resp. PDF file) if it is encoded using Data URI Scheme
990* Dropped support of Google Log
991
992
993Version 1.0.0 (2015/12/15)
994==========================
995
996* Lua: "IncomingFindRequestFilter()" to apply filters to incoming C-FIND requests
997* New function in plugin SDK: "OrthancPluginSendMultipartItem2()"
998* Fix of DICOMDIR generation with DCMTK 3.6.1, support of encodings
999* Fix range search if the lower or upper limit is absent
1000* Fix modality worklists lookups if tags with UN (unknown) VR are present
1001* Warn about badly formatted modality/peer definitions in configuration file at startup
1002
1003
1004Version 0.9.6 (2015/12/08)
1005==========================
1006
1007* Promiscuous mode (accept unknown SOP class UID) is now turned off by default
1008* Fix serialization of DICOM buffers that might contain garbage trailing
1009* Fix modality worklists server if some fields are null
1010* More tolerant "/series/.../ordered-slices" with broken series
1011* Improved logging information if upgrade fails
1012* Fix formatting of multipart HTTP answers (bis)
1013
1014
1015Version 0.9.5 (2015/12/02)
1016==========================
1017
1018Major
1019-----
1020
1021* Experimental support of DICOM C-FIND SCP for modality worklists through plugins
1022* Support of DICOM C-FIND SCU for modality worklists ("/modalities/{dicom}/find-worklist")
1023
1024REST API
1025--------
1026
1027* New URIs:
1028  - "/series/.../ordered-slices" to order the slices of a 2D+t or 3D series
1029  - "/tools/shutdown" to stop Orthanc from the REST API
1030  - ".../compress", ".../uncompress" and ".../is-compressed" for attachments
1031  - "/tools/create-archive" to create ZIP from a set of resources
1032  - "/tools/create-media" to create ZIP+DICOMDIR from a set of resources
1033  - "/instances/.../header" to get the meta information (header) of the DICOM instance
1034* "/tools/create-dicom":
1035  - Support of binary tags encoded using data URI scheme
1036  - Support of hierarchical structures (creation of sequences)
1037  - Create tags with unknown VR
1038* "/modify" can insert/modify sequences
1039* ".../preview" and ".../image-uint8" can return JPEG images if the HTTP Accept Header asks so
1040* "Origin" metadata for the instances
1041
1042Minor
1043-----
1044
1045* New configuration options:
1046  - "UnknownSopClassAccepted" to disable promiscuous mode (accept unknown SOP class UID)
1047  - New configuration option: "Dictionary" to declare custom DICOM tags
1048* Add ".dcm" suffix to files in ZIP archives (cf. URI ".../archive")
1049* MIME content type can be associated to custom attachments (cf. "UserContentType")
1050
1051Plugins
1052-------
1053
1054* New functions:
1055  - "OrthancPluginRegisterDecodeImageCallback()" to replace the built-in image decoder
1056  - "OrthancPluginDicomInstanceToJson()" to convert DICOM to JSON
1057  - "OrthancPluginDicomBufferToJson()" to convert DICOM to JSON
1058  - "OrthancPluginRegisterErrorCode()" to declare custom error codes
1059  - "OrthancPluginRegisterDictionaryTag()" to declare custom DICOM tags
1060  - "OrthancPluginLookupDictionary()" to get information about some DICOM tag
1061  - "OrthancPluginRestApiGet2()" to provide HTTP headers when calling Orthanc API
1062  - "OrthancPluginGetInstanceOrigin()" to know through which mechanism an instance was received
1063  - "OrthancPluginCreateImage()" and "OrthancPluginCreateImageAccessor()" to create images
1064  - "OrthancPluginDecodeDicomImage()" to decode DICOM images
1065  - "OrthancPluginComputeMd5()" and "OrthancPluginComputeSha1()" to compute MD5/SHA-1 hash
1066* New events in change callbacks:
1067  - "OrthancStarted"
1068  - "OrthancStopped"
1069  - "UpdatedAttachment"
1070  - "UpdatedMetadata"
1071* "/system" URI gives information about the plugins used for storage area and DB back-end
1072* Plugin callbacks must now return explicit "OrthancPluginErrorCode" (instead of integers)
1073
1074Lua
1075---
1076
1077* Optional argument "keepStrings" in "DumpJson()"
1078
1079Maintenance
1080-----------
1081
1082* Full indexation of the patient/study tags to speed up searches and C-FIND
1083* Many refactorings, notably of the searching features and of the image decoding
1084* C-MOVE SCP for studies using AccessionNumber tag
1085* Fix issue 4 (C-STORE Association not renegotiated on Specific-to-specific transfer syntax change)
1086* Fix formatting of multipart HTTP answers
1087* "--logdir" flag creates a single log file instead of 3 separate files for errors/warnings/infos
1088* "--errors" flag lists the error codes that could be returned by Orthanc
1089* Under Windows, the exit status of Orthanc corresponds to the encountered error code
1090* New "AgfaImpax", "EFilm2" and "Vitrea" modality manufacturers
1091* C-FIND SCP will return tags with sequence value representation
1092* Upgrade to Boost 1.59.0 for static builds
1093
1094
1095Version 0.9.4 (2015/09/16)
1096==========================
1097
1098* Preview of PDF files encapsulated in DICOM from Orthanc Explorer
1099* Creation of DICOM files with encapsulated PDF through "/tools/create-dicom"
1100* "limit" and "since" arguments while retrieving DICOM resources in the REST API
1101* Support of "deflate" and "gzip" content-types in HTTP requests
1102* Options to validate peers against CA certificates in HTTPS requests
1103* New configuration option: "HttpTimeout" to set the default timeout for HTTP requests
1104
1105Lua
1106---
1107
1108* More information about the origin request in the "OnStoredInstance()" and
1109  "ReceivedInstanceFilter()" callbacks. WARNING: This can result in
1110  incompatibilities wrt. previous versions of Orthanc.
1111* New function "GetOrthancConfiguration()" to get the Orthanc configuration
1112
1113Plugins
1114-------
1115
1116* New functions to compress/uncompress images using PNG and JPEG
1117* New functions to issue HTTP requests from plugins
1118* New function "OrthancPluginBufferCompression()" to (un)compress memory buffers
1119* New function "OrthancPluginReadFile()" to read files from the filesystem
1120* New function "OrthancPluginWriteFile()" to write files to the filesystem
1121* New function "OrthancPluginGetErrorDescription()" to convert error codes to strings
1122* New function "OrthancPluginSendHttpStatus()" to send HTTP status with a body
1123* New function "OrthancPluginRegisterRestCallbackNoLock()" for high-performance plugins
1124* Plugins have access to explicit error codes
1125* Improvements to the sample "ServeFolders" plugin
1126* Primitives to upgrade the database version in plugins
1127
1128Maintenance
1129-----------
1130
1131* Many code refactorings
1132* Improved error codes (no more custom descriptions in exceptions)
1133* If error while calling the REST API, the answer body contains description of the error
1134  (this feature can be disabled with the "HttpDescribeErrors" option)
1135* Upgrade to curl 7.44.0 for static and Windows builds
1136* Upgrade to openssl 1.0.2d for static and Windows builds
1137* Depends on libjpeg 9a
1138* Bypass zlib uncompression if "StorageCompression" is enabled and HTTP client supports deflate
1139
1140
1141Version 0.9.3 (2015/08/07)
1142==========================
1143
1144* C-Echo testing can be triggered from Orthanc Explorer (in the query/retrieve page)
1145* Removal of the dependency upon Google Log, Orthanc now uses its internal logger
1146  (use -DENABLE_GOOGLE_LOG=ON to re-enable Google Log)
1147* Upgrade to JsonCpp 0.10.5 for static and Windows builds
1148
1149
1150Version 0.9.2 (2015/08/02)
1151==========================
1152
1153* Upgrade to Boost 1.58.0 for static and Windows builds
1154* Source code repository moved from Google Code to BitBucket
1155* Inject version information into Windows binaries
1156* Fix access to binary data in HTTP/REST requests by Lua scripts
1157* Fix potential deadlock in the callbacks of plugins
1158
1159
1160Version 0.9.1 (2015/07/02)
1161==========================
1162
1163General
1164-------
1165
1166* The configuration can be splitted into several files stored inside the same folder
1167* Custom setting of the local AET during C-STORE SCU (both in Lua and in the REST API)
1168* Many code refactorings
1169
1170Lua
1171---
1172
1173* Access to the REST API of Orthanc (RestApiGet, RestApiPost, RestApiPut, RestApiDelete)
1174* Functions to convert between Lua values and JSON strings: "ParseJson" and "DumpJson"
1175* New events: "OnStablePatient", "OnStableStudy", "OnStableSeries", "Initialize", "Finalize"
1176
1177Plugins
1178-------
1179
1180* Plugins can retrieve the configuration file directly as a JSON string
1181* Plugins can send answers as multipart messages
1182
1183Fixes
1184-----
1185
1186* Fix compatibility issues for C-FIND SCU to Siemens Syngo.Via modalities SCP
1187* Fix issue 15 (Lua scripts making HTTP requests)
1188* Fix issue 35 (Characters in PatientID string are not protected for C-FIND)
1189* Fix issue 37 (Hyphens trigger range query even if datatype does not support ranges)
1190
1191
1192Version 0.9.0 (2015/06/03)
1193==========================
1194
1195Major
1196-----
1197
1198* DICOM Query/Retrieve available from Orthanc Explorer
1199* C-MOVE SCU and C-FIND SCU are accessible through the REST API
1200* "?expand" flag for URIs "/patients", "/studies" and "/series"
1201* "/tools/find" URI to search for DICOM resources from REST
1202* Support of FreeBSD
1203* The "Orthanc Client" SDK is now a separate project
1204
1205Minor
1206-----
1207
1208* Speed-up in Orthanc Explorer for large amount of images
1209* Speed-up of the C-FIND SCP server of Orthanc
1210* Allow replacing PatientID/StudyInstanceUID/SeriesInstanceUID from Lua scripts
1211* Option "CaseSensitivePN" to enable case-insensitive C-FIND SCP
1212
1213Fixes
1214-----
1215
1216* Prevent freeze on C-FIND if no DICOM tag is to be returned
1217* Fix slow C-STORE SCP on recent versions of GNU/Linux, if
1218  USE_SYSTEM_DCMTK is set to OFF (http://forum.dcmtk.org/viewtopic.php?f=1&t=4009)
1219* Fix issue 30 (QR response missing "Query/Retrieve Level" (008,0052))
1220* Fix issue 32 (Cyrillic symbols): Introduction of the "Windows1251" encoding
1221* Plugins now receive duplicated GET arguments in their REST callbacks
1222
1223
1224Version 0.8.6 (2015/02/12)
1225==========================
1226
1227Major
1228-----
1229
1230* URIs to get all the parents of a given resource in a single REST call
1231* Instances without PatientID are now allowed
1232* Support of HTTP proxy to access Orthanc peers
1233
1234Minor
1235-----
1236
1237* Support of Tudor DICOM in Query/Retrieve
1238* More flexible "/modify" and "/anonymize" for single instance
1239* Access to called AET and remote AET from Lua scripts ("OnStoredInstance")
1240* Option "DicomAssociationCloseDelay" to set delay before closing DICOM association
1241* ZIP archives now display the accession number of the studies
1242
1243Plugins
1244-------
1245
1246* Introspection of plugins (cf. the "/plugins" URI)
1247* Plugins can access the command-line arguments used to launch Orthanc
1248* Plugins can extend Orthanc Explorer with custom JavaScript
1249* Plugins can get/set global properties to save their configuration
1250* Plugins can do REST calls to other plugins (cf. "xxxAfterPlugins()")
1251* Scan of folders for plugins
1252
1253Fixes
1254-----
1255
1256* Code refactorings
1257* Fix issue 25 (AET with underscore not allowed)
1258* Fix replacement and insertion of private DICOM tags
1259* Fix anonymization generating non-portable DICOM files
1260
1261
1262Version 0.8.5 (2014/11/04)
1263==========================
1264
1265General
1266-------
1267
1268* Major speed-up thanks to a new database schema
1269* Plugins can monitor changes through callbacks
1270* Download ZIP + DICOMDIR from Orthanc Explorer
1271* Sample plugin framework to serve static resources (./Plugins/Samples/WebSkeleton/)
1272
1273Fixes
1274-----
1275
1276* Fix issue 19 (YBR_FULL are decoded incorrectly)
1277* Fix issue 21 (Microsoft Visual Studio precompiled headers)
1278* Fix issue 22 (Error decoding multi-frame instances)
1279* Fix issue 24 (Build fails on OSX when directory has .DS_Store files)
1280* Fix crash when bad HTTP credentials are provided
1281
1282
1283Version 0.8.4 (2014/09/19)
1284==========================
1285
1286* "/instances-tags" to get the tags of all the child instances of a
1287  patient/study/series with a single REST call (bulk tags retrieval)
1288* Configuration/Lua to select the accepted C-STORE SCP transfer syntaxes
1289* Fix reporting of errors in Orthanc Explorer when sending images to peers/modalities
1290* Installation of plugin SDK in CMake
1291
1292
1293Version 0.8.3 (2014/09/11)
1294==========================
1295
1296Major
1297-----
1298
1299* Creation of ZIP archives for media storage, with DICOMDIR
1300* URIs to get all the children of a given resource in a single REST call
1301* "/tools/lookup" URI to map DICOM UIDs to Orthanc identifiers
1302* Support of index-only mode (using the "StoreDicom" option)
1303* Plugins can implement a custom storage area
1304
1305Minor
1306-----
1307
1308* Configuration option to enable HTTP Keep-Alive
1309* Configuration option to disable the logging of exported resources in "/exports"
1310* Plugins can retrieve the path to Orthanc and to its configuration file
1311* "/tools/create-dicom" now accepts the "PatientID" DICOM tag (+ updated sample)
1312* Possibility to set HTTP headers from plugins
1313* "LastUpdate" metadata is now always returned for patients, studies and series
1314
1315Maintenance
1316-----------
1317
1318* Refactoring of HttpOutput ("Content-Length" header is now always sent)
1319* Upgrade to Mongoose 3.8
1320* Fixes for Visual Studio 2013 and Windows 64bit
1321* Fix issue 16: Handling of "AT" value representations in JSON
1322* Fix issue 17
1323
1324
1325Version 0.8.2 (2014/08/07)
1326==========================
1327
1328* Support of the standard text encodings
1329* Hot restart of Orthanc by posting to "/tools/reset"
1330* More fault-tolerant commands in Lua scripts
1331* Parameter to set the default encoding for DICOM files without SpecificCharacterSet
1332* Fix of issue #14 (support of XCode 5.1)
1333* Upgrade to Google Test 1.7.0
1334
1335
1336Version 0.8.1 (2014/07/29)
1337==========================
1338
1339General
1340-------
1341
1342* Access patient module at the study level to cope with PatientID collisions
1343* On-the-fly conversion of JSON to XML according to the HTTP Accept header
1344* C-Echo SCU in the REST API
1345* DICOM conformance statement available at URI "/tools/dicom-conformance"
1346
1347Lua scripts
1348-----------
1349
1350* Lua scripts can do HTTP requests, and thus can call Web services
1351* Lua scripts can invoke system commands, with CallSystem()
1352
1353Plugins
1354-------
1355
1356* Lookup for DICOM UIDs in the plugin SDK
1357* Plugins have access to the HTTP headers and can answer with HTTP status codes
1358* Callback to react to the incoming of DICOM instances
1359
1360Fixes
1361-----
1362
1363* Fix build of Google Log with Visual Studio >= 11.0
1364* Fix automated generation of the list of resource children in the REST API
1365
1366
1367Version 0.8.0 (2014/07/10)
1368==========================
1369
1370Major changes
1371-------------
1372
1373* Routing images with Lua scripts
1374* Introduction of the Orthanc Plugin SDK
1375* Official support of OS X (Darwin) 10.8
1376
1377Minor changes
1378-------------
1379
1380* Extraction of tags for the patient/study/series/instance DICOM modules
1381* Extraction of the tags shared by all the instances of a patient/study/series
1382* Options to limit the number of results for an incoming C-FIND query
1383* Support of kFreeBSD
1384* Several code refactorings
1385* Fix OrthancCppClient::GetVoxelSizeZ()
1386
1387
1388Version 0.7.6 (2014/06/11)
1389==========================
1390
1391* Support of JPEG and JPEG-LS decompression
1392* Download DICOM images as Matlab/Octave arrays
1393* Precompiled headers for Microsoft Visual Studio
1394
1395
1396Version 0.7.5 (2014/05/08)
1397==========================
1398
1399* Dynamic negotiation of SOP classes for C-STORE SCU
1400* Creation of DICOM instances using the REST API
1401* Embedding of images within DICOM instances
1402* Adding/removal/modification of remote modalities/peers through REST
1403* Reuse of the previous SCU connection to avoid unnecessary handshakes
1404* Fix problems with anonymization and modification
1405* Fix missing licensing terms about reuse of some code from DCMTK
1406* Various code refactorings
1407
1408
1409Version 0.7.4 (2014/04/16)
1410==========================
1411
1412* Switch to openssl-1.0.1g in static builds (cf. Heartbleed exploit)
1413* Switch to boost 1.55.0 in static builds (to solve compiling errors)
1414* Better logging about nonexistent tags
1415* Dcm4Chee manufacturer
1416* Automatic discovering of the path to the DICOM dictionaries
1417* In the "DicomModalities" config, the port number can be a string
1418
1419
1420Version 0.7.3 (2014/02/14)
1421==========================
1422
1423Major changes
1424-------------
1425
1426* Fixes in the implementation of the C-FIND handler for Query/Retrieve
1427* Custom attachment of files to patients, studies, series or instances
1428* Access to lowlevel info about the attached files through the REST API
1429* Recover pixel data for more transfer syntaxes (notably JPEG)
1430
1431Minor changes
1432-------------
1433
1434* AET comparison is now case-insensitive by default
1435* Possibility to disable the HTTP server or the DICOM server
1436* Automatic computation of MD5 hashes for the stored DICOM files
1437* Maintenance tool to recover DICOM files compressed by Orthanc
1438* The newline characters in the configuration file are fixed for GNU/Linux
1439* Capture of the SIGTERM signal in GNU/Linux
1440
1441
1442Version 0.7.2 (2013/11/08)
1443==========================
1444
1445* Support of Query/Retrieve from medInria
1446* Accept more transfer syntaxes for C-STORE SCP and SCU (notably JPEG)
1447* Create the meta-header when receiving files through C-STORE SCP
1448* Fixes and improvements thanks to the static analyzer cppcheck
1449
1450
1451Version 0.7.1 (2013/10/30)
1452==========================
1453
1454* Use ZIP64 only when required to improve compatibility (cf. issue #7)
1455* Refactoring of the CMake options
1456* Fix for big-endian architectures (RedHat bug #985748)
1457* Use filenames with 8 characters in ZIP files for maximum compatibility
1458* Possibility to build Orthanc inplace (in the source directory)
1459
1460
1461Version 0.7.0 (2013/10/25)
1462==========================
1463
1464Major changes
1465-------------
1466
1467* DICOM Query/Retrieve is supported
1468
1469Minor changes
1470-------------
1471
1472* Possibility to keep the PatientID during an anonymization
1473* Check whether "unzip", "tar" and/or "7-zip" are installed from CMake
1474
1475
1476Version 0.6.2 (2013/10/04)
1477==========================
1478
1479* Build of the C++ client as a shared library
1480* Improvements and documentation of the C++ client API
1481* Fix of Debian bug #724947 (licensing issue with the SHA-1 library)
1482* Switch to Boost 1.54.0 (cf. issue #9)
1483* "make uninstall" is now possible
1484
1485
1486Version 0.6.1 (2013/09/16)
1487==========================
1488
1489* Detection of stable patients/studies/series
1490* C-FIND SCU at the instance level
1491* Link from modified to original resource in Orthanc Explorer
1492* Fix of issue #8
1493* Anonymization of the medical alerts tag (0010,2000)
1494
1495
1496Version 0.6.0 (2013/07/16)
1497==========================
1498
1499Major changes
1500-------------
1501
1502* Introduction of the C++ client
1503* Send DICOM resources to other Orthanc instances through HTTP
1504* Access to signed images (instances/.../image-int16)
1505  (Closes: Debian #716958)
1506
1507Minor changes
1508-------------
1509
1510* Export of DICOM files to the host filesystem (instances/.../export)
1511* Statistics about patients, studies, series and instances
1512* Link from anonymized to original resource in Orthanc Explorer
1513* Fixes for Red Hat and Debian packaging
1514* Fixes for history in Orthanc Explorer
1515* Fixes for boost::thread, as reported by Cyril Paulus
1516* Fix licensing (Closes: Debian #712038)
1517
1518Metadata
1519--------
1520
1521* Access to the metadata through the REST API (.../metadata)
1522* Support of user-defined metadata
1523* "LastUpdate" metadata for patients, studies and series
1524* "/tools/now" to be used in combination with "LastUpdate"
1525* Improved support of series with temporal positions
1526
1527
1528Version 0.5.2 (2013/05/07)
1529==========================
1530
1531* "Bulk" Store-SCU (send several DICOM instances with the same
1532  DICOM connection)
1533* Store-SCU for patients and studies in Orthanc Explorer
1534* Filtering of incoming DICOM instances (through Lua scripting)
1535* Filtering of incoming HTTP requests (through Lua scripting)
1536* Clearing of "/exports" and "/changes"
1537* Check MD5 of third party downloads
1538* Faking of the HTTP methods PUT and DELETE
1539
1540
1541Version 0.5.1 (2013/04/17)
1542==========================
1543
1544* Support of RGB images
1545* Fix of store SCU in release builds
1546* Possibility to store the SQLite index at another place than the
1547  DICOM instances (for performance)
1548
1549
1550Version 0.5.0 (2013/01/31)
1551==========================
1552
1553Major changes
1554-------------
1555
1556* Download of modified or anonymized DICOM instances
1557* Inplace modification and anonymization of DICOM series, studies and patients
1558
1559Minor changes
1560-------------
1561
1562* Support of private tags
1563* Implementation of the PMSCT_RLE1 image decoding for Philips modalities
1564* Generation of random DICOM UID through the REST API (/tools/generate-uid)
1565
1566
1567Version 0.4.0 (2012/12/14)
1568==========================
1569
1570Major changes
1571-------------
1572
1573* Recycling of disk space
1574* Raw access to the value of the DICOM tags in the REST API
1575
1576Minor changes
1577-------------
1578
1579* Protection of patients against recycling (also in Orthanc Explorer)
1580* The DICOM dictionaries are embedded in Windows builds
1581
1582
1583Version 0.3.1 (2012/12/05)
1584==========================
1585
1586* Download archives of patients, studies and series as ZIP files
1587* Orthanc now checks the version of its database schema before starting
1588
1589
1590Version 0.3.0 (2012/11/30)
1591==========================
1592
1593Major changes
1594-------------
1595
1596* Transparent compression of the DICOM instances on the disk
1597* The patient/study/series/instances are now indexed by SHA-1 digests
1598  of their DICOM Instance IDs (and not by UUIDs anymore): The same
1599  DICOM objects are thus always identified by the same Orthanc IDs
1600* Log of exported instances through DICOM C-STORE SCU ("/exported" URI)
1601* Full refactoring of the DB schema and of the REST API
1602* Introduction of generic classes for REST APIs (in Core/RestApi)
1603
1604Minor changes
1605-------------
1606
1607* "/statistics" URI
1608* "last" flag to retrieve the last change from the "/changes" URI
1609* Generate a sample configuration file from command line
1610* "CompletedSeries" event in the changes API
1611* Thread to continuously flush DB to disk (SQLite checkpoints for
1612  improved robustness)
1613
1614
1615Version 0.2.3 (2012/10/26)
1616==========================
1617
1618* Use HTTP Content-Disposition to set a filename when downloading JSON/DCM
1619* URI "/system" for general information about Orthanc
1620* Versioning info and help on the command line
1621* Improved logging
1622* Possibility of dynamic linking against jsoncpp, sqlite, boost and dmctk
1623  for Debian packaging
1624* Fix some bugs
1625* Switch to default 8042 port for HTTP
1626
1627
1628Version 0.2.2 (2012/10/04)
1629==========================
1630
1631* Switch to Google Log
1632* Fixes to Debian packaging
1633
1634
1635Version 0.2.1 (2012/09/28)
1636==========================
1637
1638* Status of series
1639* Continuous Integration Server is up and running
1640* Ready for Debian packaging
1641
1642
1643Version 0.2.0 (2012/09/16)
1644==========================
1645
1646Major changes
1647-------------
1648
1649* Renaming to "Orthanc"
1650* Focus on security: Support of SSL, HTTP Basic Authentication and
1651  interdiction of remote access
1652* Access to multi-frame images (for nuclear medicine)
1653* Access to the raw PNG images (in 8bpp and 16bpp)
1654
1655Minor changes
1656-------------
1657
1658* Change of the licensing of the "Core/SQLite" folder to BSD (to
1659  reflect the original licensing terms of Chromium, from which the
1660  code derives)
1661* Standalone build for cross-compilation
1662
1663
1664Version 0.1.1 (2012/07/20)
1665==========================
1666
1667* Fix Windows version
1668* Native Windows build with Microsoft Visual Studio 2005
1669* Add path to storage in Configuration.json
1670
1671
1672Version 0.1.0 (2012/07/19)
1673==========================
1674
1675* Initial release
1676