-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNEWS
2282 lines (1717 loc) · 81.1 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Pending changes in the mainline
===============================
General
-------
* C-Store SCU now gives priority to the preferred TransferSyntax proposed by the receiving SCP
instead of Orthanc own AcceptedTransferSyntaxes.
* Made the default SQLite DB more robust wrt future updates like adding new columns in DB.
* Made the HTTP Client errors more verbose by including the url in the logs.
REST API
--------
* Loosen the sanity checks for DICOM modifications:
- allow modification of PatientID at study level
- allow modification of PatientID, StudyInstanceUID at series level
- allow modification of PatientID, StudyInstanceUID, SeriesInstanceUID at instance level
- allow modification of a patient without changing her PatientID
Users should be careful to preserve the DICOM model when modifying high level tags. E.g.
if you modify the PatientID at study level, also make sure to modify all other Patient related
tags (PatientName, PatientBirthDate, ...)
* Allow the HTTP server to return responses > 2GB (fixes asynchronous download of zip studies > 2GB)
OrthancFramework (C++)
----------------------
* DicomModification::SetAllowManualIdentifiers() has been removed since it was always true -> code cleanup.
Common plugins code (C++)
-------------------------
* Added a 'header' argument to all OrthancPeers::DoPost, DoPut, ...
version 1.11.2 (2022-08-30)
===========================
General
-------
* Added support for RGBA64 images in tools/create-dicom and /preview
* New configuration "MaximumStorageMode" to choose between recyling of
old patients (default behavior) and rejection of new incoming data when
the MaximumStorageSize has been reached.
Bug Fixes
---------
* Fix the "Never" option of the "StorageAccessOnFind" that was sill accessing
files (bug introduced in 1.11.0).
* Fix the Storage Cache for compressed files (bug introduced in 1.11.1).
Maintenance
-----------
* DelayedDeletion plugin: Fix leaking of symbols
* SQLite now closes and deletes WAL and SHM files on exit. This should improve
handling of SQLite DB over network drives.
* Fix static compilation of boost 1.69 on Ubuntu 22.04
* Upgraded dependencies for static builds:
- boost 1.80.0
- dcmtk 3.6.7 (fixes CVE-2022-2119 and CVE-2022-2120)
- openssl 3.0.5
Version 1.11.1 (2022-06-30)
===========================
General
-------
* New sample plugin: "DelayedDeletion" that will delete files from disk
asynchronously to speed up deletion of large studies.
* Lua: new "SetHttpTimeout" function
* Lua: new "OnHeartBeat" callback called at regular interval provided that
you have configured "LuaHeartBeatPeriod" > 0.
* "ExtraMainDicomTags" configuration now accepts Dicom Sequences. Sequences are
stored in a dedicated new metadata "MainDicomSequences". This should improve
DicomWeb QIDO-RS and avoid warnings like "Accessing Dicom tags from storage when
accessing series : 0040,0275".
Main dicom sequences can now be returned in "MainDicomTags" and in "RequestedTags".
Bug Fixes
---------
* Fix the storage cache that was not used by the Plugin SDK. This fixes the
DicomWeb plugin "/rendered" route performance issues.
Maintenance
-----------
* Housekeeper plugin: Fix resume of previous processing
* Added missing MOVEPatientRootQueryRetrieveInformationModel in
DicomControlUserConnection::SetupPresentationContexts()
* Improved HttpClient error logging (add method + url)
REST API
--------
* API version upgraded to 18
* /system is now reporting "DatabaseServerIdentifier"
* Added an Asynchronous mode to /modalities/../move.
* "RequestedTags" option can now include DICOM sequences.
Plugins
-------
* New function in the SDK: "OrthancPluginGetDatabaseServerIdentifier"
OrthancFramework (C++)
----------------------
* DicomMap::ParseMainDicomTags has been deprecated -> retrieve "full" tags
and use DicomMap::FromDicomAsJson instead
Version 1.11.0 (2022-05-09)
===========================
General
-------
* New configuration "ExtraMainDicomTags" to store more tags in the Index DB
to speed up, e.g, building C-Find, dicom-web or tools/find answers
* New sample plugin: "Housekeeper" that will re-construct the DB/Storage
when it detects there is room for improvements, e.g:
- if files were stored with a version of Orthanc prior to 1.9.1,
the storage might still contain dicom-as-json files that are not needed
anymore -> it will remove them
- if "ExtraMainDicomTags" has changed.
- if "StorageCompression" or "IngestTranscoding" has chagned.
* New configuration "Warnings" to enable/disable individual warnings that can
be identified by a W0XX prefix in the logs.
These warnings have been added:
- W001_TagsBeingReadFromStorage
- W002_InconsistentDicomTagsInDb
* C-Find and QIDO-RS can now return the InstanceAvailability tag. Value is
always "ONLINE"
* Improved decoding of US Images with Implicit VR.
* Speed-up handling of DicomModalitiesInStudy in C-Find and tools/find queries.
REST API
--------
* API version upgraded to 17
* new options in tools/find:
- "RequestedTags" (to use together with "Expand": true) contains a list of tags
that you'll receive in the "RequestedTags" field in the answers. These tags
may be tags from the MainDicomTags in DB, from the DICOM file or 'computed'
like ModalitiesInStudy. Check the new configuration "ExtraMainDicomTags" and
"Warnings" to optimize your queries.
* new query argument "requestedTags" in all API routes listing resources:
- /patients, /patients/../studies, /patients/../series, /patients/../instances
- /studies, /studies/../series, /studies/../instances
- /series, /series/../instances
- /instances
ex:
- /studies/c27857df-4078c84c-1a79ea78-ac357bb2-9dadc119?requestedTags=ModalitiesInStudy
- /studies?expand&since=0&limit=10&requestedTags=ModalitiesInStudy
* /reconstruct routes:
- new options "ReconstructFiles" (false by default to keep backward compatibility) to
potentialy compress/uncompress the files or transcode them if "StorageCompression"
or "IngestTranscoding" has changed since the file has been ingested.
POSSIBLE BREAKING-CHANGES:
- the /reconstruct routes now preserve all metadata
- the /reconstruct routes now skip the IncomingInstanceFilter
- the /reconstruct routes won't generate new events like NewStudy, StableStudy, ...
therefore, the corresponding callbacks won't be called anymore
- the /reconstruct routes won't affect the patient recycling anymore
* new fields reported in the /system route:
- "MainDicomTags" to list the tags that are saved in DB
- "StorageCompression", "OverwriteInstances", "IngestTranscoding" reported from the
configuration file
* New option "filename" in "/.../{id}/archive" and "/.../{id}/media" to
manually set the filename in the "Content-Disposition" HTTP header
Version 1.10.1 (2022-03-23)
===========================
General
-------
* Improved DICOM authorization checks when multiple modalities are
declared with the same AET.
Plugins
-------
* New function in the SDK: "OrthancPluginRegisterWebDavCollection()"
to map a WebDAV virtual filesystem into the REST API of Orthanc.
Documentation
-------------
* Removed the "LimitJobs" configuration that is not used anymore since
the new JobEngine has been introduced (in Orthanc 1.4.0). The
pending list of jobs is unlimited.
Version 1.10.0 (2022-02-23)
===========================
General
-------
* New configuration "DicomAlwaysAllowFindWorklist" to complement the existing
"DicomAlwaysAllowFind" configuration. "DicomAlwaysAllowFind" applies now
only to C-Find for Patients/Studies/Series/Instances while C-Find for worklists are
covered by "DicomAlwaysAllowFindWorklist". The same changes applies to new
configurations in "DicomModalities": "AllowFind" is now complemented by
"AllowFindWorklist".
This new option allows improved security management. E.g: a modality might have
only "AllowStore" and "AllowFindWorklist" enabled but might have "AllowFind"
disabled to prevent listing past patient studies.
Possible BREAKING-CHANGE: if you relied on "DicomAlwaysAllowFind" or "AllowFind"
to specifically authorize C-Find for worklist, you now need to explicitly enable
"DicomAlwaysAllowFindWorklist" and/or "AllowFindWorklist"
* Added a storage cache in RAM to avoid reading the same files multiple times from
the storage. This greatly improves, among other things, the performance of WADO-RS
retrieval of individual frames of multiframe instances.
* New configuration option "MaximumStorageCacheSize" to configure the size of
the new storage cache.
* New experimental configuration option "ZipLoaderThreads" to configure the number of
threads used to read instances from storage when creating a Zip archive/media.
* Support decoding of black-and-white images (with 1 bit per pixel), notably DICOM SEG
* Added links to download attachments from the Orthanc Explorer
* Fix XSS inside DICOM in Orthanc Explorer (as reported by Stuart Kurutac, NCC Group).
XSS Issues were re-introduced in Orthanc 1.9.4.
REST API
--------
* API version upgraded to 16
* If an image can not be decoded, "../preview" and "../rendered" routes
are now returning "unsupported.png" only if the
"?returnUnsupportedImage" option is specified; otherwise, it raises
a 415 HTTP error code.
* Archive jobs response now contains a header Content-Disposition:filename='archive.zip'
* "/instances/{...}/frames/{...}/numpy": Download the frame as a Python numpy array
* "/instances/{...}/numpy": Download the instance as a Python numpy array
* "/series/{...}/numpy": Download the series as a Python numpy array
* Added a "?full" option to "/patients|studies|series|instances/{...}/attachments" route
to show the mapping alias<->numerical id.
* Added "/patients|studies|series|instances/{...}/attachments/{...}/info" route to retrieve
the full information about an attachment (size, type, MD5 and UUID)
Lua
---
* New "ReceivedCStoreInstanceFilter" Lua callback to filter instances received
through C-Store and return a specific C-Store status code.
Plugins
-------
* New functions in the SDK:
- OrthancPluginRegisterIncomingCStoreInstanceFilter()
- OrthancPluginRegisterReceivedInstanceCallback()
Maintenance
-----------
* Removed the OpenSSL license exception, as binary versions of Orthanc are now
designed to use OpenSSL 3.x, that was re-licensed under Apache 2.0, making
it compatible with the GPL/AGPL licenses used by the Orthanc project:
https://en.wikipedia.org/wiki/OpenSSL#Licensing
https://people.gnome.org/~markmc/openssl-and-the-gpl.html
* Fix handling of option "DeidentifyLogs", notably for tags (0010,0010) and (0010,0020)
* New configuration options:
- "DicomThreadsCount" to set the number of threads in the embedded DICOM server
* Fix instances accumulating in DB while their attachments were not stored because of
MaximumStorageSize limit reached with a single patient in DB.
* Dropped support for static compilation of OpenSSL 1.0.2
* Upgraded dependencies for static builds (notably on Windows and LSB):
- openssl 3.0.1
Version 1.9.7 (2021-08-31)
==========================
General
-------
* New configuration option "DicomAlwaysAllowMove" to disable verification of
the remote modality in C-MOVE SCP
REST API
--------
* API version upgraded to 15
* Added "Level" option to POST /tools/bulk-modify
* Added missing OpenAPI documentation of "KeepSource" in ".../modify" and ".../anonymize"
Maintenance
-----------
* Added file CITATION.cff
* Linux Standard Base (LSB) builds of Orthanc can load non-LSB builds of plugins
* Fix upload of ZIP archives containing a DICOMDIR file
* Fix computation of the estimated time of arrival in jobs
* Support detection of windowing and rescale in Philips multiframe images
Version 1.9.6 (2021-07-21)
==========================
Orthanc Explorer
----------------
* In lookup and query/retrieve, possibility to provide a specific study date
* Clicking on "Send to remote modality" displays the job information to monitor progress
Maintenance
-----------
* Fix orphaned attachments if bad revision number is provided
Version 1.9.5 (2021-07-08)
==========================
General
-------
* Anonymization is applied recursively to nested tags
REST API
--------
* API version upgraded to 14
* Added "Short", "Simplify" and/or "Full" options to control the format of DICOM tags in:
- POST /modalities/{id}/find-worklist
- POST /queries/{id}/answers/{index}/retrieve
- POST /queries/{id}/retrieve
Maintenance
-----------
* Fix broken "Do lookup" button in Orthanc Explorer
* Error code and description of jobs are now saved into the Orthanc database
Version 1.9.4 (2021-06-24)
==========================
General
-------
* Orthanc now anonymizes according to Basic Profile of PS 3.15-2021b Table E.1-1
* New configuration options:
- "ExternalDictionaries" to load external DICOM dictionaries (useful for DICONDE)
- "SynchronousZipStream" to disable streaming of ZIP
Orthanc Explorer
----------------
* Orthanc Explorer supports the DICONDE dictionary
REST API
--------
* API version upgraded to 13
* New routes to handle groups of multiple, unrelated DICOM resources at once:
- "/tools/bulk-anonymize" to anonymize a set of resources
- "/tools/bulk-content" to get the content of a set of resources
- "/tools/bulk-delete" to delete a set of resources
- "/tools/bulk-modify" to modify a set of resources
* ZIP archive/media generated in synchronous mode are now streamed by default
* "Replace" tags in "/modify" and "/anonymize" now supports value representation AT
* "/jobs/..." has new field "ErrorDetails" to help identify the cause of an error
* "Replace", "Keep" and "Remove" in "/modify" and "/anonymize" accept paths to subsequences
using the syntax of the dcmodify command-line tool (wildcards are supported as well)
* Added "short", "simplify" and/or "full" options to control the format of DICOM tags in:
- GET /patients, GET /studies, GET /series, GET /instances (together with "&expand")
- GET /patients/{id}, GET /studies/{id}, GET /series/{id}, GET /instances/{id}
- GET /patients/{id}/studies, GET /patients/{id}/series, GET /patients/{id}/instances
- GET /studies/{id}/patient, GET /studies/{id}/series, GET /studies/{id}/instances
- GET /series/{id}/patient, GET /series/{id}/study, GET /series/{id}/instances
- GET /instances/{id}/patient, GET /instances/{id}/study, GET /instances/{id}/series
- GET /patients/{id}/instances-tags, GET /patients/{id}/shared-tags
- GET /studies/{id}/instances-tags, GET /series/{id}/shared-tags
- GET /series/{id}/instances-tags, GET /studies/{id}/shared-tags
- GET /patients/{id}/module, GET /patients/{id}/patient-module
- GET /series/{id}/module, GET /studies/{id}/module, GET /instances/{id}/module
- GET /queries/{id}/answers&expand, GET /queries/{id}/answers/{index}/content
- POST /tools/find
* "/studies/{id}/split" accepts "Instances" parameter to split instances instead of series
* "/studies/{id}/merge" accepts instances inside its "Resources" parameter
Maintenance
-----------
* Full support of hierarchical relationships in tags whose VR is UI during anonymization
* C-MOVE SCP: added possible DIMSE status "Sub-operations Complete - One or more Failures"
* Fix issue #146 (Update Anonyization to 2019c) - was actually updated to 2021b
* Upgraded dependencies for static builds (notably on Windows):
- curl 7.77.0
Version 1.9.3 (2021-05-07)
==========================
General
-------
* New configuration option: "DicomTlsRemoteCertificateRequired" to allow secure DICOM TLS
connections without certificate
REST API
--------
* "ETag" headers for metadata and attachments now allow strong comparison (MD5 is included)
Maintenance
-----------
* New CMake option: "ORTHANC_LUA_VERSION" to use a specific version of system-wide Lua
* Fix the lifetime of temporary files associated with jobs that create ZIP archive/media:
- In synchronous mode, their number could grow up to "JobsHistorySize" in Orthanc <= 1.9.2
- In asynchronous mode, the temporary files are removed as soon as their job gets canceled
* Fix regression in the handling of "DicomCheckModalityHost" configuration option
introduced by changeset 4182 in Orthanc 1.7.4
* Reduced memory consumption of "OrthancPluginHttpClient()", "OrthancPluginHttpClient2()" and
"OrthancPluginCallPeerApi()" on POST/PUT if chunked transfer is disabled
* Fix issue #195 (No need for BulkDataURI when Data Element is empty)
Version 1.9.2 (2021-04-22)
==========================
General
-------
* New configuration options related to multiple readers/writers:
- "DatabaseServerIdentifier" identifies the server in the DB among a pool of Orthanc servers
- "CheckRevisions" to protect against concurrent modifications of metadata and attachments
REST API
--------
* API version upgraded to 12
* "/system" reports the value of the "CheckRevisions" global option
* "/.../{id}/metadata/{name}" and "/.../{id}/attachments/{name}/..." URIs handle the
HTTP headers "If-Match", "If-None-Match" and "ETag" to cope with revisions
Plugins
-------
* New function in the SDK: OrthancPluginCallRestApi()
* Full refactoring of the database plugin SDK to handle multiple readers/writers,
which notably implies the handling of retries in the case of collisions
Maintenance
-----------
* Use the local timezone for query/retrieve in the Orthanc Explorer interface (was UTC before)
* Fix "OrthancServer/Resources/Samples/Python/Replicate.py" for Python 3.x
* Fix issue #83 (ServerIndex shall implement retries for DB temporary errors)
* Upgraded dependencies for static builds (notably on Windows and LSB):
- civetweb 1.14
- openssl 1.1.1k
Version 1.9.1 (2021-02-25)
==========================
General
-------
* The "dicom-as-json" attachments are not explicitly stored anymore to improve performance
* If the storage area doesn't support range reading, or if "StorageCompression"
is enabled, a new type of attachment "dicom-until-pixel-data" is generated
* New metadata automatically computed at the instance level: "PixelDataOffset"
* New configuration option related to networking:
- "Timeout" in "DicomModalities" to set DICOM SCU timeout on a per-modality basis
- "Timeout" in "OrthancPeers" to set HTTP client timeout on a per-peer basis
REST API
--------
* API version upgraded to 11
* BREAKING CHANGES:
- External applications should not call "/instances/.../attachments/dicom-as-json" anymore,
and should use "/instances/.../tags" instead
- "/instances/.../tags" route does not report the tags after "Pixel Data" (7fe0,0010) anymore
* "/peers/{id}/store-straight": Synchronously send the DICOM instance in POST body to the peer
* New arguments in the REST API:
- "Timeout" in "/modalities/.../query"
- "Timeout" in "/modalities/.../storage-commitment"
- "Timeout" in "/queries/.../answers/.../query-{studies|series|instances}"
Plugins
-------
* New value in enumeration: OrthancPluginDicomToJsonFlags_StopAfterPixelData
* New value in enumeration: OrthancPluginDicomToJsonFlags_SkipGroupLengths
Maintenance
-----------
* Improved precision of floating-point numbers in DICOM-as-JSON and DICOM summary
* Optimization in C-STORE SCP by avoiding an unnecessary DICOM parsing
* Fix build on big-endian architectures
* Handle public tags with "UN" value representation and containing a string (cf. DICOM CP 246)
* The numbering of sequences in Orthanc Explorer now uses the DICOM convention (starts at 1)
* Possibility to generate a static library containing the Orthanc Framework
Version 1.9.0 (2021-01-29)
==========================
General
-------
* Support of DICOM TLS
* New configuration options related to DICOM networking:
- "DicomTlsEnabled" to enable DICOM TLS in Orthanc SCP
- "DicomTlsCertificate" to provide the TLS certificate to be used in both Orthanc SCU and SCP
- "DicomTlsPrivateKey" to provide the private key of the TLS certificate
- "DicomTlsTrustedCertificates" to provide the list of TLS certificates to be trusted by Orthanc
- "UseDicomTls" in "DicomModalities" to enable DICOM TLS in outgoing SCU on a per-modality basis
- "MaximumPduLength" to tune the maximum PDU length (Protocol Data Unit)
- "LocalAet" in "DicomModalities" to overwrite global "DicomAet" for SCU on a per-modality basis
- "AcceptedTransferSyntaxes" to set the transfer syntax UIDs accepted by Orthanc C-STORE SCP
- "H265TransferSyntaxAccepted" to enable/disable all the transfer syntaxes related to H.265
- "DicomAlwaysAllowFind" to disable verification of the remote modality in C-FIND SCP
- "DicomAlwaysAllowGet" to disable verification of the remote modality in C-GET SCP
* New configuration option: "DicomScuPreferredTransferSyntax" to control transcoding in C-STORE SCU
* New command-line option: "--openapi" to write the OpenAPI documentation of the REST API to a file
* New metadata automatically computed at the series level: "RemoteAET"
Orthanc Explorer
----------------
* The DICOM meta-header and the transfer syntax are displayed at the "Instance" level
REST API
--------
* API version upgraded to 10
* "/tools/accepted-transfer-syntaxes": Get/set transfer syntaxes accepted by Orthanc C-STORE SCP
* "/tools/unknown-sop-class-accepted": Get/set whether C-STORE SCP accepts unknown SOP class UID
* "/modalities/{...}/query": New string argument "LocalAet"
* "/tools/create-dicom": New flag "Force" to bypass consistency checks for the DICOM tags
Lua
---
* BREAKING CHANGE: All the Lua callbacks "IsXXXTransferSyntaxAccepted()" and
"IsUnknownSopClassAccepted()" have been removed
Plugins
-------
* New functions in the SDK:
- OrthancPluginCreateMemoryBuffer64()
- OrthancPluginRegisterStorageArea2()
- OrthancPluginCreateDicom2()
Maintenance
-----------
* Refactoring and improvements to the cache of DICOM files (it can now hold many files)
* New Prometheus metrics "orthanc_dicom_cache_count" and "orthanc_dicom_cache_size"
* Fix upload of multiple DICOM files using one single POST call to "multipart/form-data"
Could be the final resolution of issue #21 (DICOM files missing after uploading with Firefox)
* Partial fix of issue #48 (Windows service not stopped properly), cf. comments 4 and 5
* Explicitly use little-endian to encode uncompressed file size with zlib compression
* Upgraded dependencies for static builds (notably on Windows):
- dcmtk 3.6.6
- jsoncpp 1.9.4
Version 1.8.2 (2020-12-18)
==========================
General
-------
* ZIP archives containing DICOM files can be uploaded using WebDAV
* New config option "MallocArenaMax" to control memory usage on GNU/Linux
* Explicit error log if trying to load a 32bit (resp. 64bit) plugin into
a 64bit (resp. 32bit) version of Orthanc
* New configuration options contributed by Varian Medical Systems:
- "DeidentifyLogs" to remove patient identification from the logs (C-GET, C-MOVE, C-FIND)
- "DeidentifyLogsDicomVersion" to specify the deidentification rules for the logs
- "OrthancExplorerEnabled" to enable/disable the Orthanc Explorer Web user interface
- "SslMinimumProtocolVersion" to set the minimal SSL protocol version (now defaults to SSL 1.2)
- "SslCiphersAccepted" to set the accepted ciphers over SSL (now defaults to FIPS 140-2)
* New configuration options related to ingest transcoding:
- "IngestTranscodingOfUncompressed" to control whether uncompressed transfer syntaxes are transcoded
- "IngestTranscodingOfCompressed" to control whether compressed transfer syntaxes are transcoded
REST API
--------
* "/instances" can be used to import ZIP archives provided in the POST body
Maintenance
-----------
* Allow concurrency on the OrthancPluginRegisterIncomingHttpRequestFilter() callbacks
* Allow empty request body in "/modalities/{id}/echo"
* If meta-header is missing, best-effort to extract "TransferSyntax" in "/instances/{id}/metadata"
Version 1.8.1 (2020-12-07)
==========================
General
-------
* New sample tool "OrthancImport.py" to easily import compressed archives (ZIP) into Orthanc
* Logging categories (cf. command-line options starting with "--verbose-" and "--trace=")
* New command-line option "--trace-dicom" to access full debug information from DCMTK
* New config option "DicomEchoChecksFind" to automatically complement C-GET SCU with C-FIND SCU
REST API
--------
* API version upgraded to 9
* "/tools/dicom-echo": Execute C-Echo SCU to a modality that is not registered in "/modalities"
* "/tools/log-level-*": Dynamically access and/or change the verbosity of logging categories
* "/peers/{id}/configuration": Get the configuration of one peer (cf. "/peers?expand")
* "/modalities/{id}/configuration": Get the configuration of one modality (cf. "/modalities?expand")
* "/tools/dicom-echo" and "/modalities/{id}/echo" now accept the field "CheckFind" in their JSON
body to complement C-GET SCU with C-FIND SCU ("DicomEchoChecksFind" on a per-connection basis)
* Archive/media jobs report the size of the created ZIP file in content field "ArchiveSizeMB"
Plugins
-------
* New function in the SDK: OrthancPluginGenerateRestApiAuthorizationToken()
Maintenance
-----------
* C-GET SCP: Fix responses and handling of cancel
* Fix decoding sequence if "BuiltinDecoderTranscoderOrder" is "Before"
* Fix keep-alive in the embedded HTTP server by setting the "Keep-Alive" HTTP header
* Fix access to videos as a single raw frame (feature broken since Orthanc 1.6.0)
* REST API now returns 404 error if deleting an inexistent peer or modality
* Improved forward ABI compatibility of Orthanc Framework (notably, no inline methods anymore)
* Upgraded dependencies for static builds (notably on Windows and LSB):
- civetweb 1.13
Version 1.8.0 (2020-10-16)
==========================
General
-------
* Serving the content of Orthanc as a WebDAV network share
* New config options: "WebDavEnabled", "WebDavDeleteAllowed" and "WebDavUploadAllowed"
Plugins
-------
* New available origin for a DICOM instance: "OrthancPluginInstanceOrigin_WebDav"
Version 1.7.4 (2020-09-18)
==========================
General
-------
* New configuration options to enable HTTP peers identification through certificates:
"SslVerifyPeers" and "SslTrustedClientCertificates"
* New configuration option "SyncStorageArea" to immediately commit the files onto the disk
(through fsync()), so as to avoid discrepencies between DB and filesystem in case of hard
shutdown of the machine running Orthanc. This slows down adding new files into Orthanc.
Maintenance
-----------
* Underscores are now allowed in peers/modalities symbolic names
* Fix compatibility with C-MOVE SCU requests issued by Ambra
* Fix transcoding in C-MOVE SCP, in the case where "SynchronousCMove" is "true"
* When checking DICOM allowed methods, if there are multiple modalities with the same AET,
differentiate them from the calling IP
* Enable the access to raw frames in Philips ELSCINT1 proprietary compression
* Support empty key passwords when using HTTP client certificates
* Fix handling of "ModalitiesInStudy" (0008,0061) in C-FIND and "/tools/find"
Version 1.7.3 (2020-08-24)
==========================
REST API
--------
* API version upgraded to 8
* "/peers/{id}/store": New option "Compress" to compress DICOM data using gzip
* "OrthancPeerStore" jobs now report the transmitted size in their public content
Plugins
-------
* New config option "Worklist.LimitAnswers" for the sample modality worklist plugin
Maintenance
-----------
* Add missing tag "Retrieve AE Title (0008,0054)" in C-FIND SCP responses
* Fix DICOM SCP filters if some query tag has > 256 characters (list of UIDs matching)
* "/series/.../ordered-slices" supports spaces in Image Position/Orientation Patient tags
* Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
* Support receiving multipart messages larger than 2GB in the embedded HTTP server
Version 1.7.2 (2020-07-08)
==========================
General
-------
* C-FIND SCP now returns private tags (cf. option "DefaultPrivateCreator")
* Packaging of the Orthanc framework as a shared library
Plugins
-------
* New change types in the SDK: JobSubmitted, JobSuccess, JobFailure
Maintenance
-----------
* Issue #182: Better reporting of errors in plugins reading chunked HTTP body
* Fix issue #183 (C-ECHO always fails in Orthanc Explorer, regression from 1.6.1 to 1.7.0)
Version 1.7.1 (2020-05-27)
==========================
* Fix decoding of DICOM images for plugins (for compatibility with
Orthanc Web Viewer 2.6)
Version 1.7.0 (2020-05-22)
==========================
General
-------
* Support of DICOM C-GET SCP (contribution by Varian Medical Systems)
* DICOM transcoding over the REST API
* Transcoding from compressed to uncompressed transfer syntaxes over DICOM
C-STORE SCU (if the remote modality doesn't support compressed syntaxes)
* New configuration options related to transcoding:
"TranscodeDicomProtocol", "BuiltinDecoderTranscoderOrder",
"IngestTranscoding" and "DicomLossyTranscodingQuality"
REST API
--------
* API version upgraded to 7
* Improved:
- "/instances/../modify": it is now possible to "Keep" the "SOPInstanceUID".
Note that it was already possible to "Replace" it.
- added "Timeout" parameter to every DICOM operation
- "/queries/.../answers/../retrieve": "TargetAet" not mandatory anymore
(defaults to the local AET)
* Changes:
- "/{patients|studies|series}/.../modify": New option "KeepSource"
- "/{patients|studies|series|instances}/.../modify": New option "Transcode"
- "/peers/{id}/store": New option "Transcode"
- ".../archive", ".../media", "/tools/create-media" and
"/tools/create-archive": New option "Transcode"
- "/ordered-slices": reverted the change introduced in 1.5.8 and go-back
to 1.5.7 behaviour.
Plugins
-------
* New functions in the SDK:
- OrthancPluginCreateDicomInstance()
- OrthancPluginCreateMemoryBuffer()
- OrthancPluginEncodeDicomWebJson2()
- OrthancPluginEncodeDicomWebXml2()
- OrthancPluginFreeDicomInstance()
- OrthancPluginGetInstanceAdvancedJson()
- OrthancPluginGetInstanceDecodedFrame()
- OrthancPluginGetInstanceDicomWebJson()
- OrthancPluginGetInstanceDicomWebXml()
- OrthancPluginGetInstanceFramesCount()
- OrthancPluginGetInstanceRawFrame()
- OrthancPluginRegisterTranscoderCallback()
- OrthancPluginSerializeDicomInstance()
- OrthancPluginTranscodeDicomInstance()
* "OrthancPluginDicomInstance" structure wrapped in "OrthancPluginCppWrapper.h"
* Allow concurrent calls to the custom image decoders provided by the plugins
Maintenance
-----------
* Moved the GDCM sample plugin out of the Orthanc repository as a separate plugin
* Fix missing body in "OrthancPluginHttpPost()" and "OrthancPluginHttpPut()"
* Fix issue #169 (TransferSyntaxUID change from Explicit to Implicit during C-STORE SCU)
* Fix issue #179 (deadlock in Python plugins)
* Upgraded dependencies for static builds (notably on Windows and LSB):
- openssl 1.1.1g
Version 1.6.1 (2020-04-21)
==========================
REST API
--------
* API version has been upgraded to 6
* Added:
- "/modalities/{id}/store-straight": Synchronously send the DICOM instance in POST
body to another modality (alternative to command-line tools such as "storescu")
Plugins
-------
* New functions in the SDK:
- OrthancPluginRegisterIncomingDicomInstanceFilter()
- OrthancPluginGetInstanceTransferSyntaxUid()
- OrthancPluginHasInstancePixelData()
Lua
---
* New "info" field in "ReceivedInstanceFilter()" callback, containing
"HasPixelData" and "TransferSyntaxUID" information
Maintenance
-----------
* Source code repository moved from BitBucket to self-hosted server
* Fix OpenSSL initialization on Linux Standard Base
* Fix lookup form in Orthanc Explorer (wildcards not allowed in StudyDate)
* Fix signature of "OrthancPluginRegisterStorageCommitmentScpCallback()" in plugins SDK
* Error reporting on failure while initializing SSL
* Fix unit test ParsedDicomFile.ToJsonFlags2 on big-endian architectures
* Avoid one memcpy of the DICOM buffer on "POST /instances"
* Upgraded dependencies for static builds (notably on Windows):
- civetweb 1.12
- openssl 1.1.1f
Version 1.6.0 (2020-03-18)
==========================
General
-------
* Support of DICOM storage commitment
REST API
--------
* API version has been upgraded to 5
* Added:
- "/peers/{id}/system": Test the connectivity with a remote peer
(and also retrieve its version number)
- "/tools/log-level": Access and/or change the log level without restarting Orthanc
- "/instances/{id}/frames/{frame}/rendered" and "/instances/{id}/rendered":
Render frames, taking windowing and resizing into account
- "/modalities/{...}/storage-commitment": Trigger storage commitment SCU
- "/storage-commitment/{...}": Access storage commitment reports
- "/storage-commitment/{...}/remove": Remove instances from storage commitment reports
* Improved:
- "/changes": Allow the "limit" argument to be greater than 100
- "/instances": Support "Content-Encoding: gzip" to upload gzip-compressed DICOM files
- ".../modify" and "/tools/create-dicom": New option "PrivateCreator" for private tags
- "/modalities/{...}/store": New Boolean argument "StorageCommitment"
Plugins
-------
* New sample plugin: "ConnectivityChecks"
* New primitives to handle storage commitment SCP by plugins
Lua
---
* New events:
- "OnDeletedPatient", "OnDeletedStudy", "OnDeletedSeries", "OnDeletedInstance":
triggered when a resource is deleted
- "OnUpdatedPatient", "OnUpdatedStudy", "OnUpdatedSeries", "OnUpdatedInstance":
triggered when an attachment or a metadata is updated
Maintenance
-----------
* New configuration options: "DefaultPrivateCreator" and "StorageCommitmentReportsSize"
* Support of MPEG4 transfer syntaxes in C-Store SCP
* C-FIND SCU at Instance level now sets the 0008,0052 tag to IMAGE per default (was INSTANCE).
Therefore, the "ClearCanvas" and "Dcm4Chee" modality manufacturer have now been deprecated.
* More strict C-FIND SCP wrt. the DICOM standard: Forbid wildcard
matching on some VRs, ignore main tags below the queried level
* Fix issue #65 (Logging improvements)
* Fix issue #103 ("queries/.../retrieve" API returns HTTP code 200 even on server errors)
* Fix issue #140 (Modifying private tags with REST API changes VR from LO to UN)
* Fix issue #154 (Matching against list of UID-s by C-MOVE)
* Fix issue #156 (Chunked Dicom-web transfer uses 100% CPU)
* Fix issue #165 (Boundary parameter in multipart Content-Type is too long)
* Fix issue #166 (CMake find_boost version is now broken with newer boost/cmake)
* Fix issue #167 (Job can't be cancelled - Handling of timeouts after established association)
* Fix issue #168 (Plugins can't read private tags from the configuration file)
* Upgraded dependencies for static builds (notably on Windows):
- dcmtk 3.6.5
- openssl 1.1.1d
- jsoncpp 0.10.7 for pre-C++11 compilers
Version 1.5.8 (2019-10-16)
==========================
REST API
--------
* API version has been upgraded to 4
* In /ordered-slices route, ignore instances without position/normal/seriesIndex,
unless there are only such instances in the series
Maintenance
-----------
* Security: If remote access is enabled, HTTP authentication is also
enabled by default. This modification was done to mitigate security
risks reported by independant security researcher Amitay Dan.
* Security: New configuration option "ExecuteLuaEnabled" to allow "/tools/execute-script"
* New configuration option: "HttpRequestTimeout"
* Log an explicit error if uploading an empty DICOM file using REST API
* Name of temporary files now include the process ID to ease design of scripts cleaning /tmp
* Fix compatibility of LSB binaries with Ubuntu >= 18.04
* Fix generation of "SOP Instance UID" on split and merge
* Orthanc Explorer: include the URL search params into HTTP headers to
the REST API to ease usage of the Authorization plugin. Note that
only the 'token', 'auth-token' & 'authorization' search params are
transmitted into HTTP headers.
* Fix lost relationships between CT and RT-STRUCT during anonymization
Version 1.5.7 (2019-06-25)
==========================
REST API
--------
* API version has been upgraded to 3
* "/modalities/{id}/query": New argument "Normalize" can be set to "false"
to bypass the automated correction of outgoing C-FIND queries
* Reporting of "ParentResources" in "DicomModalityStore" and "DicomModalityStore" jobs
Plugins
-------
* New functions in the SDK:
- OrthancPluginHttpClientChunkedBody(): HTTP client for POST/PUT with a chunked body
- OrthancPluginRegisterMultipartRestCallback(): HTTP server for POST/PUT with multipart body
- OrthancPluginGetTagName(): Retrieve the name of a DICOM tag from its group and element
Maintenance
-----------
* Orthanc now accepts "-H 'Transfer-Encoding: chunked'" option from curl
* Size of the Orthanc static binaries are reduced by compressing ICU data
* Anonymization: Preserve hierarchical relationships in (0008,1115) [] (0020,000e)
* Allow the serialization of signed 16bpp images in PAM format
* HTTP header "Accept-Encoding" is honored for streams without built-in support for compression
* The default HTTP timeout is now 60 seconds (instead of 10 seconds in previous versions)
* Allow anonymizing/modifying instances without the PatientID tag
* Fix issue #106 (Unable to export preview as jpeg from Lua script)
* Fix issue #136 (C-FIND request fails when found DICOM file does not have certain tags)
* Fix issue #137 (C-STORE fails for unknown SOP Class although server is configured to accept any)
* Fix issue #138 (POST to modalities/{name} accepts invalid characters)
* Fix issue #141 (/tools/create-dicom removes non-ASCII characters from study description)
Version 1.5.6 (2019-03-01)
==========================
Orthanc Explorer
----------------
* If performing a Query/Retrieve operation, the default value for the
tags is set to an empty string instead of '*', which allows one to match
even if the tag is not present. This allows malformed DICOM files to
be matched, even though they lack required tags such as "PatientSex"
Maintenance
-----------
* Enlarge the support of JSON-to-XML conversion in the REST API
* Fix missing DB transactions in some write operations
* Fix performance issue in DICOM protocol by disabling Nagle's algorithm