# HG changeset patch # User Sebastien Jodogne # Date 1688489429 -7200 # Node ID a6bf749b3c04c77bbfa584a102847c4ce4ee059e # Parent 5df222ddd7d1f4cda2c1c5e4f0f61665a7f1383f Orthanc 1.12.1 diff -r 5df222ddd7d1 -r a6bf749b3c04 OpenAPI/orthanc-openapi.json --- a/OpenAPI/orthanc-openapi.json Wed Jun 28 09:23:16 2023 +0200 +++ b/OpenAPI/orthanc-openapi.json Tue Jul 04 18:50:29 2023 +0200 @@ -2,7 +2,7 @@ "info" : { "description" : "This is the full documentation of the [REST API](https://book.orthanc-server.com/users/rest.html) of Orthanc.

This reference is automatically generated from the source code of Orthanc. A [shorter cheat sheet](https://book.orthanc-server.com/users/rest-cheatsheet.html) is part of the Orthanc Book.

An earlier, manually crafted version from August 2019, is [still available](2019-08-orthanc-openapi.html), but is not up-to-date anymore ([source](https://groups.google.com/g/orthanc-users/c/NUiJTEICSl8/m/xKeqMrbqAAAJ)).", "title" : "Orthanc API", - "version" : "1.12.0" + "version" : "1.12.1" }, "openapi" : "3.0.0", "paths" : { @@ -372,6 +372,7 @@ "FileUuid" : "dc031d9e-ef02-4871-821f-ffe445deb7c2", "ID" : "d94d9a03-3003b047-a4affc69-322313b2-680530a2", "IndexInSeries" : 155, + "Labels" : [], "MainDicomTags" : { "AcquisitionNumber" : "4", "ImageOrientationPatient" : "1\\0\\0\\0\\1\\0", @@ -2394,9 +2395,9 @@ "200" : { "content" : { "application/json" : { - "examples" : {}, - "schema" : { - "description" : "JSON array containing the names of the labels" + "schema" : { + "description" : "JSON array containing the names of the labels", + "example" : [] } } }, @@ -2589,7 +2590,9 @@ "TransferSyntax", "SopClassUid", "RemoteIP", - "HttpUsername" + "HttpUsername", + "PixelDataOffset", + "4202" ] } } @@ -3025,6 +3028,7 @@ "example" : { "ID" : "65ce8003-696b2eb6-03adeee7-6561ce8e-3e03f13a", "IsStable" : true, + "Labels" : [], "LastUpdate" : "20200803T131236", "MainDicomTags" : { "PatientBirthDate" : "", @@ -3368,6 +3372,7 @@ "..." ], "IsStable" : true, + "Labels" : [], "LastUpdate" : "20200803T131236", "MainDicomTags" : { "BodyPartExamined" : "CHEST", @@ -3576,6 +3581,7 @@ "example" : { "ID" : "1c379a23-9fd28bba-02b60e5b-850ff34e-4349f09b", "IsStable" : true, + "Labels" : [], "LastUpdate" : "20200803T131236", "MainDicomTags" : { "AccessionNumber" : "2819497684894126", @@ -3746,9 +3752,9 @@ "schema" : { "description" : "JSON array containing either the jobs identifiers, or detailed information about the reported jobs (if `expand` argument is provided)", "example" : [ - "0e2b7757-763b-4ef4-8323-fc7625094e39", - "0e6e6562-f56a-485b-9905-4b722e2c5e1d", - "4eee84fe-4248-4683-8506-6f93fb55c60a", + "0d9e3061-0ec4-49ff-966b-7f0dc99ad6e6", + "46fd1fe1-84d4-4dcd-b386-d48f320e98e3", + "723a96f3-b473-45c4-bc49-00e54c1734ca", "..." ] } @@ -3940,6 +3946,37 @@ } }, "/jobs/{id}/{key}" : { + "delete" : { + "deprecated" : false, + "description" : "Delete the output produced by a job. As of Orthanc 1.12.1, only the jobs that generate a DICOMDIR media or a ZIP archive provide such an output (with `key` equals to `archive`).", + "parameters" : [ + { + "description" : "Identifier of the job of interest", + "in" : "path", + "name" : "id", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "description" : "Name of the output of interest", + "in" : "path", + "name" : "key", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "description" : "" + } + }, + "summary" : "Delete a job output", + "tags" : [ "Jobs" ] + }, "get" : { "deprecated" : false, "description" : "Retrieve some output produced by a job. As of Orthanc 1.8.2, only the jobs that generate a DICOMDIR media or a ZIP archive provide such an output (with `key` equals to `archive`).", @@ -5053,6 +5090,7 @@ "example" : { "ID" : "46e6332c-677825b6-202fcf7c-f787bc5f-7b07c382", "IsStable" : true, + "Labels" : [], "LastUpdate" : "20180414T091542", "MainDicomTags" : { "PatientID" : "SOtNwu", @@ -6119,12 +6157,7 @@ "FileUuid" : "c14b2b87-53e2-420b-baf9-020cae34fedf", "ID" : "e3dfd688-80e4743a-29c45f90-371ec4a4-04d18ae5", "IndexInSeries" : 137, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-96.3193359375\\-249.3193359375\\62", - "InstanceNumber" : "137", - "SOPInstanceUID" : "1.3.12.2.1107.5.1.4.54693.30000006053107175587500014881" - }, + "Labels" : [], "{...}" : "..." }, { @@ -6132,12 +6165,7 @@ "FileUuid" : "27cdb02f-500f-4b37-9ca1-058d8d4f649a", "ID" : "4fecddf1-518346e4-4f30176b-c453b3d8-65899230", "IndexInSeries" : 114, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-96.3193359375\\-249.3193359375\\73.5", - "InstanceNumber" : "114", - "SOPInstanceUID" : "1.3.12.2.1107.5.1.4.54693.30000006053107175587500014858" - }, + "Labels" : [], "{...}" : "..." }, { @@ -6145,12 +6173,7 @@ "FileUuid" : "5a6334a8-e050-47e5-8832-531ee62aa9a7", "ID" : "c9a55bc1-9e98ba4b-bc455dc3-24c4c525-1b171b6c", "IndexInSeries" : 66, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-96.3193359375\\-249.3193359375\\97.5", - "InstanceNumber" : "66", - "SOPInstanceUID" : "1.3.12.2.1107.5.1.4.54693.30000006053107175587500014810" - }, + "Labels" : [], "{...}" : "..." }, { @@ -6158,12 +6181,7 @@ "FileUuid" : "e6c09e08-8284-4416-a90f-67a7dc9f68f0", "ID" : "135cca6f-4c099fdd-afc99251-f58a819b-5a0222eb", "IndexInSeries" : 161, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-96.3193359375\\-249.3193359375\\50", - "InstanceNumber" : "161", - "SOPInstanceUID" : "1.3.12.2.1107.5.1.4.54693.30000006053107175587500014905" - }, + "Labels" : [], "{...}" : "..." }, { @@ -6171,12 +6189,7 @@ "FileUuid" : "9eb33412-d1e9-4bb0-879b-5501db81d574", "ID" : "719d58b1-2a259486-7cc5919d-68a2bd30-da2cd290", "IndexInSeries" : 61, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-96.3193359375\\-249.3193359375\\100", - "InstanceNumber" : "61", - "SOPInstanceUID" : "1.3.12.2.1107.5.1.4.54693.30000006053107175587500014805" - }, + "Labels" : [], "{...}" : "..." }, "..." @@ -6414,9 +6427,9 @@ "200" : { "content" : { "application/json" : { - "examples" : {}, - "schema" : { - "description" : "JSON array containing the names of the labels" + "schema" : { + "description" : "JSON array containing the names of the labels", + "example" : [] } } }, @@ -7194,7 +7207,7 @@ "..." ], "IsStable" : true, - "LastUpdate" : "20180414T091542", + "Labels" : [], "{...}" : "..." } ] @@ -7427,6 +7440,7 @@ { "ID" : "e98b9ac7-dd31ac40-ff046cb2-f0400d30-12f81d85", "IsStable" : true, + "Labels" : [], "LastUpdate" : "20180414T091542", "MainDicomTags" : { "AccessionNumber" : "0", @@ -7436,7 +7450,6 @@ "StudyDate" : "20060531", "{...}" : "..." }, - "ParentPatient" : "46e6332c-677825b6-202fcf7c-f787bc5f-7b07c382", "{...}" : "..." } ] @@ -7838,14 +7851,19 @@ "explorer.js", "authorization", "connectivity-checks", + "delayed-deletion", "dicom-web", "gdcm", + "housekeeper", "indexer", + "multitenant-dicom", "mysql-index", "mysql-storage", "neuro", "odbc-index", "odbc-storage", + "ohif", + "orthanc-explorer-2", "postgresql-index", "postgresql-storage", "serve-folders", @@ -7916,7 +7934,7 @@ "ExtendsOrthancExplorer" : true, "ID" : "dicom-web", "RootUri" : "../dicom-web/app/client/index.html", - "Version" : "1.7" + "Version" : "1.13" } } } @@ -8831,6 +8849,7 @@ "ID" : "37836232-d13a2350-fa1dedc5-962b31aa-010f8e52", "Instances" : [ "6582b1c0-292ad5ab-ba0f088f-f7a1766f-9a29a54f" ], "IsStable" : true, + "Labels" : [], "LastUpdate" : "20180414T091542", "MainDicomTags" : { "ImageOrientationPatient" : "0\\1\\0\\0\\0\\-1", @@ -9904,13 +9923,7 @@ "FileUuid" : "9016272a-ee8c-41b2-afc6-dcfe06dd3be8", "ID" : "6582b1c0-292ad5ab-ba0f088f-f7a1766f-9a29a54f", "IndexInSeries" : 1, - "MainDicomTags" : { - "ImagePositionPatient" : "0\\-159\\-425.915649", - "InstanceCreationDate" : "20050927", - "InstanceCreationTime" : "155030.000000", - "InstanceNumber" : "1", - "SOPInstanceUID" : "1.2.840.113704.7.1.1.6632.1127829031.2" - }, + "Labels" : [], "{...}" : "..." } ] @@ -10034,9 +10047,9 @@ "200" : { "content" : { "application/json" : { - "examples" : {}, - "schema" : { - "description" : "JSON array containing the names of the labels" + "schema" : { + "description" : "JSON array containing the names of the labels", + "example" : [] } } }, @@ -10973,6 +10986,7 @@ "example" : { "ID" : "2f74083e-9b042648-10edac14-b26950f8-f82ec3a0", "IsStable" : true, + "Labels" : [], "LastUpdate" : "20180414T091601", "MainDicomTags" : { "PatientBirthDate" : "19910101", @@ -11240,6 +11254,7 @@ "example" : { "ID" : "49974143-ec23cb52-6b2a1c46-14d5daa0-0822ce1a", "IsStable" : true, + "Labels" : [], "LastUpdate" : "20180414T091601", "MainDicomTags" : { "AccessionNumber" : "A10011234814", @@ -11575,6 +11590,7 @@ "example" : { "ID" : "27f7126f-4f66fb14-03f4081b-f9341db2-53925988", "IsStable" : true, + "Labels" : [], "LastUpdate" : "20180414T091532", "MainDicomTags" : { "AccessionNumber" : "0", @@ -12663,14 +12679,7 @@ "FileUuid" : "42607af0-e2ca-402a-9cb4-8819a0485dbd", "ID" : "82cc1a6b-7b05d34e-cd74474b-594f0d43-94f609d8", "IndexInSeries" : 3, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-118.20798927708\\-118.00763136239\\71.7517339810729", - "InstanceCreationDate" : "20061201", - "InstanceCreationTime" : "145313.000000", - "InstanceNumber" : "3", - "{...}" : "..." - }, + "Labels" : [], "{...}" : "..." }, { @@ -12678,14 +12687,7 @@ "FileUuid" : "f986a0de-cf3b-4acc-a2ca-ce6a5844ec63", "ID" : "2fbd6d5f-802f6561-b9d8da32-c54ead16-18a208bd", "IndexInSeries" : 13, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-116.77244740887\\-113.68593889565\\11.9247972592711", - "InstanceCreationDate" : "20061201", - "InstanceCreationTime" : "145313.000000", - "InstanceNumber" : "13", - "{...}" : "..." - }, + "Labels" : [], "{...}" : "..." }, { @@ -12693,14 +12695,7 @@ "FileUuid" : "64cc6dae-228d-4e60-82ea-34c540a09cfb", "ID" : "4dbca7c1-f6e1a582-b3196370-0151cac8-19caac8e", "IndexInSeries" : 17, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-116.19823080464\\-111.95726186127\\-12.005976177752", - "InstanceCreationDate" : "20061201", - "InstanceCreationTime" : "145313.000000", - "InstanceNumber" : "17", - "{...}" : "..." - }, + "Labels" : [], "{...}" : "..." }, { @@ -12708,14 +12703,7 @@ "FileUuid" : "06823b17-6217-4534-b318-4de5c9157c74", "ID" : "98c6f0c7-e6f9812b-d0a9df8a-97eeaa41-fa891d8e", "IndexInSeries" : 6, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-117.77732664509\\-116.71112352700\\53.8036520108580", - "InstanceCreationDate" : "20061201", - "InstanceCreationTime" : "145313.000000", - "InstanceNumber" : "6", - "{...}" : "..." - }, + "Labels" : [], "{...}" : "..." }, { @@ -12723,14 +12711,7 @@ "FileUuid" : "7012f4ad-e1f7-49a8-95e0-5050227b4090", "ID" : "c25f4e48-8f7d737e-3dbeafb5-f1563a30-eddf816c", "IndexInSeries" : 20, - "MainDicomTags" : { - "AcquisitionNumber" : "3", - "ImagePositionPatient" : "-115.76756829186\\-110.66075450272\\-29.954057492315", - "InstanceCreationDate" : "20061201", - "InstanceCreationTime" : "145313.000000", - "InstanceNumber" : "20", - "{...}" : "..." - }, + "Labels" : [], "{...}" : "..." }, "..." @@ -12968,9 +12949,9 @@ "200" : { "content" : { "application/json" : { - "examples" : {}, - "schema" : { - "description" : "JSON array containing the names of the labels" + "schema" : { + "description" : "JSON array containing the names of the labels", + "example" : [] } } }, @@ -13879,6 +13860,7 @@ "example" : { "ID" : "16738bc3-e47ed42a-43ce044c-a3414a45-cb069bd0", "IsStable" : true, + "Labels" : [], "LastUpdate" : "20180414T091532", "MainDicomTags" : { "PatientBirthDate" : "19490301", @@ -13999,7 +13981,7 @@ "..." ], "IsStable" : true, - "LastUpdate" : "20180414T091528", + "Labels" : [], "{...}" : "..." }, { @@ -14014,7 +13996,7 @@ "..." ], "IsStable" : true, - "LastUpdate" : "20180414T091530", + "Labels" : [], "{...}" : "..." }, { @@ -14029,7 +14011,7 @@ "..." ], "IsStable" : true, - "LastUpdate" : "20180414T091530", + "Labels" : [], "{...}" : "..." }, { @@ -14044,7 +14026,7 @@ "..." ], "IsStable" : true, - "LastUpdate" : "20180414T091531", + "Labels" : [], "{...}" : "..." }, { @@ -14059,7 +14041,7 @@ "..." ], "IsStable" : true, - "LastUpdate" : "20180414T091531", + "Labels" : [], "{...}" : "..." }, "..." @@ -14346,18 +14328,32 @@ "schema" : { "description" : "", "example" : { - "ApiVersion" : 16, + "ApiVersion" : 20, "CheckRevisions" : false, "DatabaseBackendPlugin" : null, + "DatabaseServerIdentifier" : "d67a54ff-aa19a273-ead8ba48-fa279633-f9654ab4", "DatabaseVersion" : 6, "DicomAet" : "ORTHANC", "DicomPort" : 4242, + "HasLabels" : true, "HttpPort" : 8042, + "IngestTranscoding" : "", "IsHttpServerSecure" : false, + "MainDicomTags" : { + "Instance" : "0008,0012;0008,0013;0008,0018;0020,0012;0020,0013;0020,0032;0020,0037;0020,0100;0020,4000;0028,0008;0054,1330", + "Patient" : "0010,0010;0010,0020;0010,0030;0010,0040;0010,1000", + "Series" : "0008,0021;0008,0031;0008,0060;0008,0070;0008,1010;0008,103e;0008,1070;0018,0010;0018,0015;0018,0024;0018,1030;0018,1090;0018,1400;0020,000e;0020,0011;0020,0037;0020,0105;0020,1002;0040,0254;0054,0081;0054,0101;0054,1000", + "Study" : "0008,0020;0008,0030;0008,0050;0008,0080;0008,0090;0008,1030;0020,000d;0020,0010;0032,1032;0032,1060" + }, + "MaximumStorageMode" : "Recycle", + "MaximumStorageSize" : 0, "Name" : "Orthanc Demo", + "OverwriteInstances" : false, "PluginsEnabled" : true, "StorageAreaPlugin" : null, - "Version" : "1.10.1" + "StorageCompression" : false, + "UserMetadata" : {}, + "Version" : "1.12.0" }, "properties" : { "ApiVersion" : { @@ -14948,7 +14944,7 @@ "description" : "", "properties" : { "Content" : { - "description" : "This field can be used to embed an image (pixel data) or a PDF inside the created DICOM instance. The PNG image, the JPEG image or the PDF file must be provided using their [data URI scheme encoding](https://en.wikipedia.org/wiki/Data_URI_scheme). This field can possibly contain a JSON array, in which case a DICOM series is created containing one DICOM instance for each item in the `Content` field.", + "description" : "This field can be used to embed an image (pixel data encoded as PNG or JPEG), a PDF, or a 3D manufactoring model (MTL/OBJ/STL) inside the created DICOM instance. The file to be encapsulated must be provided using its [data URI scheme encoding](https://en.wikipedia.org/wiki/Data_URI_scheme). This field can possibly contain a JSON array, in which case a DICOM series is created containing one DICOM instance for each item in the `Content` field.", "type" : "string" }, "Force" : { @@ -15882,7 +15878,7 @@ "200" : { "content" : { "text/plain" : { - "example" : "orthanc_count_instances 2552 1681548113397\northanc_count_patients 8 1681548113397\northanc_count_series 26 1681548113397\northanc_count_studies 8 1681548113397\northanc_dicom_cache_count 243 1681494684086\northanc_dicom_cache_size 127.85218 1681494684086\northanc_disk_size_mb 1018.65021 1681548113397\northanc_jobs_completed 10 1681548113397\northanc_jobs_failed 3 1681548113397\northanc_jobs_pending 0 1681548113397\northanc_jobs_running 0 1681548113397\northanc_jobs_success 7 1681548113397\northanc_rest_api_active_requests 1 1681548113396\northanc_rest_api_duration_ms 1517 1681548111639\northanc_storage_read_duration_ms 43 1681548110651\northanc_uncompressed_size_mb 1018.65021 1681548113397\n" + "example" : "orthanc_count_instances 2552 1688489399993\northanc_count_patients 8 1688489399993\northanc_count_series 26 1688489399993\northanc_count_studies 8 1688489399993\northanc_dicom_cache_count 5 1688475481515\northanc_dicom_cache_size 0.636888504 1688475481515\northanc_disk_size_mb 1018.65021 1688489399993\northanc_jobs_completed 10 1688489399993\northanc_jobs_failed 1 1688489399993\northanc_jobs_pending 0 1688489399993\northanc_jobs_running 0 1688489399993\northanc_jobs_success 9 1688489399993\northanc_last_change 5395 1688489399993\northanc_rest_api_active_requests 1 1688489399991\northanc_rest_api_duration_ms 582 1688489398151\northanc_storage_read_duration_ms 17 1688489397639\northanc_uncompressed_size_mb 1018.65021 1688489399993\northanc_up_time_s 172856 1688489399993\n" } }, "description" : "" @@ -15901,7 +15897,7 @@ "200" : { "content" : { "text/plain" : { - "example" : "20230415T084153", + "example" : "20230704T165000", "schema" : { "description" : "The UTC time" } @@ -15923,7 +15919,7 @@ "200" : { "content" : { "text/plain" : { - "example" : "20230415T084153", + "example" : "20230704T165000", "schema" : { "description" : "The local time" } diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/developers/creating-plugins.rst --- a/Sphinx/source/developers/creating-plugins.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/developers/creating-plugins.rst Tue Jul 04 18:50:29 2023 +0200 @@ -15,7 +15,7 @@ Native Orthanc plugins must use the `plugin SDK `__ whose interface is available as a `C header -`__. +`__. As a consequence, an Orthanc plugin will typically be written using C or C++, although it is also possible to create native plugins using languages that feature compatibility with C headers and with `FFI of @@ -96,7 +96,7 @@ that is part of the Orthanc source distribution: * `Plugins/Include/orthanc/OrthancCPlugin.h - `__ + `__ `Online documentation `__ for this C header is available, as generated by `Doxygen @@ -110,8 +110,8 @@ ``HAS_ORTHANC_EXCEPTION`` is set to ``0``: * `Plugins/Samples/Common/OrthanPluginCppWrapper.h - `__ + `__ * `Plugins/Samples/Common/OrthanPluginCppWrapper.cpp - `__ + `__ * `Plugins/Samples/Common/OrthanPluginException.h - `__ + `__ diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/developers/db-versioning.rst --- a/Sphinx/source/developers/db-versioning.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/developers/db-versioning.rst Tue Jul 04 18:50:29 2023 +0200 @@ -26,7 +26,7 @@ Version DB v2 DB v3 DB v4 DB v5 DB v6 =============================== ===== ===== ===== ===== ===== Mainline u u u x -Orthanc 0.9.5 - Orthanc 1.12.0 u u u x +Orthanc 0.9.5 - Orthanc 1.12.1 u u u x Orthanc 0.8.5 - Orthanc 0.9.4 u u x Orthanc 0.7.3 - Orthanc 0.8.4 u x Orthanc 0.4.0 - Orthanc 0.7.2 x diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/dicom-guide.rst --- a/Sphinx/source/dicom-guide.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/dicom-guide.rst Tue Jul 04 18:50:29 2023 +0200 @@ -665,7 +665,7 @@ $ getscu -v localhost 4242 -aec ORTHANC -k "0008,0052=STUDY" -k "0020,000d=1.2.840.113543.6.6.4.7.64067529866380271256212683512383713111129" -*Note:* As of Orthanc 1.12.0, Orthanc only implements C-Get as a +*Note:* As of Orthanc 1.12.1, Orthanc only implements C-Get as a service class provider (SCP). Using C-Get as a service class user (SCU) is not currently supported in Orthanc. diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/faq/crash.rst --- a/Sphinx/source/faq/crash.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/faq/crash.rst Tue Jul 04 18:50:29 2023 +0200 @@ -64,13 +64,13 @@ above ` is available as the ``crash.cpp`` file, here is a sample debug session:: - $ wget https://lsb.orthanc-server.com/orthanc/debug/1.12.0/Orthanc + $ wget https://lsb.orthanc-server.com/orthanc/debug/1.12.1/Orthanc $ chmod +x ./Orthanc $ gcc -fPIC -shared ./crash.cpp -I ~/orthanc/Plugins/Include -o crash.so $ ulimit -c unlimited $ echo '{ "Plugins" : ["crash.so"] }' > Configuration.json $ rm -f core ; ./Orthanc Configuration.json - W0427 15:43:24.215783 main.cpp:1436] Orthanc version: 1.12.0 + W0427 15:43:24.215783 main.cpp:1436] Orthanc version: 1.12.1 W0427 15:43:24.215910 main.cpp:1279] Performance warning: Non-release build, runtime debug assertions are turned on W0427 15:43:24.217585 OrthancConfiguration.cpp:61] Reading the configuration from: "Configuration.json" W0427 15:43:24.254733 main.cpp:700] Loading plugin(s) from: crash.so diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/faq/debugging.rst --- a/Sphinx/source/faq/debugging.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/faq/debugging.rst Tue Jul 04 18:50:29 2023 +0200 @@ -45,13 +45,13 @@ to debug Orthanc without compiling from sources. Here is a sample debug session:: - $ wget https://lsb.orthanc-server.com/orthanc/debug/1.12.0/Orthanc + $ wget https://lsb.orthanc-server.com/orthanc/debug/1.12.1/Orthanc $ chmod +x ./Orthanc $ gdb ./Orthanc Configuration.json (gdb) catch throw Catchpoint 1 (throw) (gdb) run - W0513 15:24:42.374349 main.cpp:1436] Orthanc version: 1.12.0 + W0513 15:24:42.374349 main.cpp:1436] Orthanc version: 1.12.1 ---> Reproduce your error case <--- Thread 15 "Orthanc" hit Catchpoint 1 (exception thrown), 0x00007ffff6de68bd in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (gdb) backtrace diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/faq/features.rst --- a/Sphinx/source/faq/features.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/faq/features.rst Tue Jul 04 18:50:29 2023 +0200 @@ -480,7 +480,7 @@ .. highlight:: text -Orthanc 1.12.0 introduces the concept of **labels**. A label is a +Orthanc 1.12.1 introduces the concept of **labels**. A label is a string that can be attached to any DICOM resource (i.e. patients, studies, series, or instances). In contrast with :ref:`metadata `, labels are not associated with a value, however labels diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/faq/orthanc-storage.rst --- a/Sphinx/source/faq/orthanc-storage.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/faq/orthanc-storage.rst Tue Jul 04 18:50:29 2023 +0200 @@ -59,9 +59,9 @@ database schema is kept as simple as possible, and can be found in the following two files of the source code of Orthanc: `PrepareDatabase.sql -`__ +`__ and `InstallTrackAttachmentsSize.sql -`__. +`__. Direct access diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/faq/scalability.rst --- a/Sphinx/source/faq/scalability.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/faq/scalability.rst Tue Jul 04 18:50:29 2023 +0200 @@ -54,7 +54,7 @@ Here is a generic setup that should provide best performance in the presence of large databases: -* Make sure to use the latest release of Orthanc (1.12.0 at the time of +* Make sure to use the latest release of Orthanc (1.12.1 at the time of writing) running on a GNU/Linux distribution. * We suggest to use the latest release of the :ref:`PostgreSQL plugin diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/plugins/python.rst --- a/Sphinx/source/plugins/python.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/plugins/python.rst Tue Jul 04 18:50:29 2023 +0200 @@ -18,7 +18,7 @@ Python plugins have access to more features and a more consistent SDK than :ref:`Lua scripts `. The largest part of the Python API is automatically generated from the `Orthanc plugin SDK in C -`__ +`__ using the `Clang `__ compiler front-end. diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/users/advanced-rest.rst --- a/Sphinx/source/users/advanced-rest.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/users/advanced-rest.rst Tue Jul 04 18:50:29 2023 +0200 @@ -89,7 +89,7 @@ the ``MediaArchiveSize`` configuration that defines the maximum number of ZIP/media archives that are maintained by Orthanc, as a response to the asynchronous creation of archive. As of Orthanc -1.12.0, this value is ``1`` by default. +1.12.1, this value is ``1`` by default. .. _jobs-monitoring: @@ -139,7 +139,7 @@ ``ErrorCode`` and ``ErrorDescription`` fields for more information. * ``Paused``: The job has been paused. * ``Retry``: The job has failed internally, and has been scheduled for - re-submission after a delay. As of Orthanc 1.12.0, this feature is not + re-submission after a delay. As of Orthanc 1.12.1, this feature is not used by any type of job. In order to wait for the end of an asynchronous call, the caller will @@ -148,7 +148,7 @@ ``Failure``. Note that the `integration tests of Orthanc -`__ +`__ give an example about how to monitor a job in Python using the REST API (cf. function ``MonitorJob()``). @@ -221,7 +221,7 @@ Note how we retrieve the content of the archive by accessing the ``archive`` output of the job (check out the virtual method ``IJob::GetOutput()`` from the `source code -`__ +`__ of Orthanc). Here is the corresponding sequence of commands to generate a DICOMDIR @@ -230,7 +230,7 @@ $ curl http://localhost:8042/studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988/media -d '{"Asynchronous":true}' $ curl http://localhost:8042/jobs/6332be8a-0052-44fb-8cc2-ac959aeccad9/archive > a.zip -As of Orthanc 1.12.0, only the creation of a ZIP or a DICOMDIR archive +As of Orthanc 1.12.1, only the creation of a ZIP or a DICOMDIR archive produces such "outputs". diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/users/anonymization.rst --- a/Sphinx/source/users/anonymization.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/users/anonymization.rst Tue Jul 04 18:50:29 2023 +0200 @@ -80,7 +80,7 @@ **Implementation:** Internally, the setup of the anonymization profiles can be found in the methods ``SetupAnonymizationXXX()`` of the class ``Orthanc::DicomModification`` (cf. `source code -`__). +`__). Modification of a Single Instance diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/users/configuration.rst --- a/Sphinx/source/users/configuration.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/users/configuration.rst Tue Jul 04 18:50:29 2023 +0200 @@ -8,7 +8,7 @@ Configuring Orthanc simply consists in providing a configuration file. Orthanc has numerous configuration that are documented in the `default configuration file -`_. This +`_. This file is in the `JSON `_ file format. You can generate this file file with the following call:: diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/users/debian-packages.rst --- a/Sphinx/source/users/debian-packages.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/users/debian-packages.rst Tue Jul 04 18:50:29 2023 +0200 @@ -108,10 +108,10 @@ This can be done with this sequence of commands:: $ sudo service orthanc stop - $ sudo wget https://lsb.orthanc-server.com/orthanc/1.12.0/Orthanc --output-document /usr/sbin/Orthanc + $ sudo wget https://lsb.orthanc-server.com/orthanc/1.12.1/Orthanc --output-document /usr/sbin/Orthanc $ sudo rm -f /usr/share/orthanc/plugins/*.so - $ sudo wget https://lsb.orthanc-server.com/orthanc/1.12.0/libServeFolders.so --output-document /usr/share/orthanc/plugins/libServeFolders.so - $ sudo wget https://lsb.orthanc-server.com/orthanc/1.12.0/libModalityWorklists.so --output-document /usr/share/orthanc/plugins/libModalityWorklists.so + $ sudo wget https://lsb.orthanc-server.com/orthanc/1.12.1/libServeFolders.so --output-document /usr/share/orthanc/plugins/libServeFolders.so + $ sudo wget https://lsb.orthanc-server.com/orthanc/1.12.1/libModalityWorklists.so --output-document /usr/share/orthanc/plugins/libModalityWorklists.so $ $ sudo wget https://lsb.orthanc-server.com/plugin-dicom-web/1.13/libOrthancDicomWeb.so --output-document /usr/share/orthanc/plugins/libOrthancDicomWeb.so $ ... diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/users/docker.rst --- a/Sphinx/source/users/docker.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/users/docker.rst Tue Jul 04 18:50:29 2023 +0200 @@ -75,13 +75,13 @@ If more stability is required, you can select the official release of Orthanc to be run:: - $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.1 Passing additional command-line options (e.g. to make Orthanc verbose) can be done as follows (note the ``/etc/orthanc`` option that is required for Orthanc to find its configuration files):: - $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.0 /etc/orthanc --verbose + $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.12.1 /etc/orthanc --verbose Usage, with plugins enabled @@ -97,7 +97,7 @@ Or you can also start a specific version of Orthanc for more stability:: - $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:1.12.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:1.12.1 If you have an interest in the :ref:`Python plugin `, you can use the ``orthanc-python`` image. The latter image is a @@ -105,7 +105,7 @@ Python 3.7 interpreter. Here is how to start this image:: $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python - $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python:1.12.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python:1.12.1 Fine-tuning the configuration @@ -119,12 +119,12 @@ You can generate a custom configuration file for Orthanc as follows:: - $ docker run --rm --entrypoint=cat jodogne/orthanc:1.12.0 /etc/orthanc/orthanc.json > /tmp/orthanc.json + $ docker run --rm --entrypoint=cat jodogne/orthanc:1.12.1 /etc/orthanc/orthanc.json > /tmp/orthanc.json Then, edit the just-generated file ``/tmp/orthanc.json`` and restart Orthanc with your updated configuration:: - $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc:1.12.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc:1.12.1 *Remark:* These Docker images automatically set the environment variable ``MALLOC_ARENA_MAX`` to ``5`` in order to :ref:`control @@ -157,7 +157,7 @@ version: '3.1' # Secrets are only available since this version of Docker Compose services: orthanc: - image: jodogne/orthanc-plugins:1.12.0 + image: jodogne/orthanc-plugins:1.12.1 command: /run/secrets/ # Path to the configuration files (stored as secrets) ports: - 4242:4242 @@ -206,7 +206,7 @@ container to some path in the filesystem of your Linux host, e.g.:: $ mkdir /tmp/orthanc-db - $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.12.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.12.1 Whole-slide imaging support @@ -216,13 +216,13 @@ whole-slide imaging (WSI) `. For instance, the following command will start the WSI viewer plugin transparently together with Orthanc:: - $ docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins:1.12.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins:1.12.1 Note that we gave the name ``orthanc-wsi`` to this new Docker container. Then, the Dicomizer command-line tool can be invoked as follows:: - $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.tif:/tmp/Source.tif:ro jodogne/orthanc-plugins:1.12.0 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ /tmp/Source.tif + $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.tif:/tmp/Source.tif:ro jodogne/orthanc-plugins:1.12.1 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ /tmp/Source.tif This command needs a few explanations: @@ -250,7 +250,7 @@ instruct the Dicomizer to use `OpenSlide `__ to decode it by adding the ``--openslide`` option:: - $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.svs:/tmp/Source.svs:ro jodogne/orthanc-plugins:1.12.0 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ --openslide=libopenslide.so /tmp/Source.svs + $ docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.svs:/tmp/Source.svs:ro jodogne/orthanc-plugins:1.12.1 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ --openslide=libopenslide.so /tmp/Source.svs PostgreSQL and Orthanc inside Docker @@ -271,7 +271,7 @@ $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' some-postgres $ docker inspect --format '{{ .NetworkSettings.Ports }}' some-postgres - $ docker run --rm --entrypoint=cat jodogne/orthanc-plugins:1.12.0 /etc/orthanc/orthanc.json > /tmp/orthanc.json + $ docker run --rm --entrypoint=cat jodogne/orthanc-plugins:1.12.1 /etc/orthanc/orthanc.json > /tmp/orthanc.json .. highlight:: text @@ -292,7 +292,7 @@ Finally, you can start Orthanc:: - $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins:1.12.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins:1.12.1 Debugging @@ -303,8 +303,8 @@ For debugging purpose, you can start an interactive bash session as follows:: - $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc:1.12.0 - $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins:1.12.0 + $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc:1.12.1 + $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins:1.12.1 For developers and power users, the images ``jodogne/orthanc-debug`` contain the Orthanc core compiled in debug mode (i.e. with runtime @@ -327,4 +327,4 @@ * The build artifacts can be found in folder ``/root/orthanc/Build``. * This command launches the mainline version. To start a released version, - use e.g. ``jodogne/orthanc-debug:1.12.0``. + use e.g. ``jodogne/orthanc-debug:1.12.1``. diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/users/man-orthanc.txt --- a/Sphinx/source/users/man-orthanc.txt Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/users/man-orthanc.txt Tue Jul 04 18:50:29 2023 +0200 @@ -129,4 +129,4 @@ This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. -Orthanc 1.12.0 April 2023 ORTHANC(1) +Orthanc 1.12.1 July 2023 ORTHANC(1) diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/users/rest-cheatsheet.csv --- a/Sphinx/source/users/rest-cheatsheet.csv Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/users/rest-cheatsheet.csv Tue Jul 04 18:50:29 2023 +0200 @@ -59,7 +59,7 @@ ``/jobs/{id}/pause``,,`POST `__,,,Pause job ``/jobs/{id}/resubmit``,,`POST `__,,,Resubmit job ``/jobs/{id}/resume``,,`POST `__,,,Resume job -``/jobs/{id}/{key}``,`GET `__,,,,Get job output +``/jobs/{id}/{key}``,`GET `__,,`DELETE `__,,Get job output ``/modalities``,`GET `__,,,,List DICOM modalities ``/modalities/{id}``,`GET `__,,`DELETE `__,`PUT `__,List operations on modality ``/modalities/{id}/configuration``,`GET `__,,,,Get modality configuration diff -r 5df222ddd7d1 -r a6bf749b3c04 Sphinx/source/users/rest.rst --- a/Sphinx/source/users/rest.rst Wed Jun 28 09:23:16 2023 +0200 +++ b/Sphinx/source/users/rest.rst Tue Jul 04 18:50:29 2023 +0200 @@ -98,7 +98,7 @@ $ curl -X POST -H "Expect:" http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm The code distribution of Orthanc contains a `sample Python script -`__ +`__ that recursively upload the content of some folder into Orthanc using the REST API:: @@ -110,7 +110,7 @@ import the content of ``.zip``, ``.tar.gz`` or ``.tar.bz2`` archives without having to uncompress them first. It also provides more comprehensive command-line options. `Check this script out -`__. +`__. .. highlight:: perl