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