changeset 493:c4604a6c2193

merge
author Alain Mazy <alain@mazy.be>
date Thu, 27 Aug 2020 13:05:26 +0200
parents 9c5263c89272 (current diff) 45b768895975 (diff)
children 826032d7cb84
files
diffstat 24 files changed, 358 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- a/Sphinx/source/contributing.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/contributing.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -1,8 +1,14 @@
 .. _contributing:
 
+
 Contributing to Orthanc
 =======================
 
+.. toctree::
+   :hidden:
+
+   unanswered-forum.rst
+   
 If you find Orthanc useful and wish to contribute to its development,
 here are some tasks you can take in charge that would greatly help us:
 
@@ -21,11 +27,20 @@
     in your research work.
   - Answer questions posted to the `mailing list
     <https://groups.google.com/forum/#!forum/orthanc-users>`_.
+
+    - **Important**: A page list the :ref:`old questions that are not
+      fully answered yet <unanswered_forum>`. Consider answering these
+      topics too!
+    
   - Improve the text of the `Orthanc Book and REST API documentation
     <https://hg.orthanc-server.com/orthanc-book/file/default>`__ (check
     out the instructions provided in the `README file
     <https://hg.orthanc-server.com/orthanc-book/file/default/README.md>`__,
     and send us a :ref:`simple patch <hg-patch>`).
+  - Pursue the `OpenAPI documentation
+    <https://api.orthanc-server.com/>`__, that is still
+    work-in-progress (`check out its source code
+    <https://hg.orthanc-server.com/orthanc-book/file/default/OpenAPI>`__).
   - Provide documentation and use cases (inside the dedicated `GitHub
     repository <https://github.com/jodogne/OrthancContributed>`_, via
     pull requests).
@@ -39,10 +54,20 @@
     workarounds on the dedicated `issue tracker
     <http://bugs.orthanc-server.com/>`_.
   - Package Orthanc and its associated plugins for more UNIX or
-    GNU/Linux distributions (e.g. Ubuntu PPA, RHEL, CentOS, openSUSE...).
+    GNU/Linux distributions (e.g. Ubuntu PPA, RHEL/`EPEL
+    <https://fedoraproject.org/wiki/EPEL>`__, CentOS, openSUSE...).
+  - Take ownership of the now-orphaned `Fedora package
+    <https://src.fedoraproject.org/rpms/orthanc>`__.
   - Share your maintenance scripts or sample code inside the "`Orthanc Contributed
     <https://github.com/jodogne/OrthancContributed>`_" public GitHub
     repository, via pull requests.
+  - Help with the integration of Orthanc together with our friend free
+    and open-source projects, notably `GNU Health
+    <https://www.orthanc-server.com/resources/orthanccon2019/GNUHealthCon-02-AxelBraun.pdf>`__,
+    but also `OpenEMR
+    <https://community.open-emr.org/t/project-pacs-server-integration/13706/15>`__,
+    `GNUmed <https://en.wikipedia.org/wiki/GNUmed>`__...
+    
 
 * **Coding tasks**:
       
@@ -52,7 +77,7 @@
   - Interface Orthanc with other software (e.g. 3D Slicer,
     Matlab/Octave, Python, Horos, dicompyler...). Check the `already
     supported frameworks <https://www.orthanc-server.com/static.php?page=resources>`_.
-  - Develop :ref:`C/C++ plugins extending the Orthanc core <plugins>`.  Here are some ideas
+  - Develop :ref:`C/C++/Python plugins extending the Orthanc core <plugins>`.  Here are some ideas
     of possible plugins:
   
     + Create a :ref:`more advanced Web interface
@@ -61,21 +86,38 @@
       that it manages the worklists (i.e. add/remove items) with a
       REST API or HL7 messages, instead of reading them from some
       folder on the filesystem.
+    + Conversion to/from `NIfTI
+      <https://www.sciencedirect.com/science/article/abs/pii/S0165027016300073?via%3Dihub>`__
+      and/or `BIDS
+      <https://en.wikipedia.org/wiki/Brain_Imaging_Data_Structure>`__,
+      notably for neuroimaging.
+    + `Encapsulate a video into a DICOM file
+      <https://stackoverflow.com/questions/28698888/creating-h-264-avc-dicom-file-with-dcmtk/28737338#28737338>`__
+      by calling some REST route, similarly to the
+      ``/tools/create-dicom`` :ref:`route to encapsulate PDF <pdf>`.
     + Have a look at the TODO file containing our `official roadmap
       <https://hg.orthanc-server.com/orthanc/file/default/TODO>`__.
-
+  
+  - Develop a way to "mount" the content of one Orthanc server as a
+    network drive through the :ref:`REST API <rest>`, using either
+    `FTP <https://en.wikipedia.org/wiki/File_Transfer_Protocol>`__,
+    `FUSE <https://en.wikipedia.org/wiki/Filesystem_in_Userspace>`__
+    (through `Samba
+    <https://en.wikipedia.org/wiki/Samba_(software)>`__ for Windows)
+    or `WebDAV <https://en.wikipedia.org/wiki/WebDAV>`__.
   - Always remember that he **recommended way of contributing to the
-    source code of Orthanc is by creating C/C++ plugins**. If the
-    current plugin SDK is insufficient for you to develop some feature
-    as a plugin, do not hesitate to request an extension to the
-    Orthanc SDK on the `mailing list
+    source code of Orthanc is by creating C/C++/Python plugins, or by
+    creating external software that use the REST API**. If the current
+    plugin SDK is insufficient for you to develop some feature as a
+    plugin, do not hesitate to request an extension to the Orthanc SDK
+    on the `mailing list
     <https://groups.google.com/forum/#!forum/orthanc-users>`_.
 
 
 * **Financial support**:
 
-  - Osimis provides `support packs and custom development services
-    <https://www.osimis.io/en/services.html>`__ around the Orthanc
-    ecosystem and, more generally, around medical imaging. Buying such
-    professional services is the best way to make the Orthanc project
-    sustainable in the long term.
+  - Osimis provides `support packs and professional development
+    services <https://www.osimis.io/en/services.html>`__ around the
+    Orthanc ecosystem and, more generally, around medical
+    imaging. Buying such professional services is the best way to make
+    the Orthanc project sustainable in the long term.
--- a/Sphinx/source/developers/creating-plugins.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/developers/creating-plugins.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -83,7 +83,7 @@
 that is part of the Orthanc source distribution:
 
 * `Plugins/Include/orthanc/OrthancCPlugin.h
-  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.2/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 
 `Online documentation <https://sdk.orthanc-server.com/>`__ for this C
 header is available, as generated by `Doxygen
@@ -97,8 +97,8 @@
 ``HAS_ORTHANC_EXCEPTION`` is set to ``0``:
 
 * `Plugins/Samples/Common/OrthanPluginCppWrapper.h
-  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.2/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__
 * `Plugins/Samples/Common/OrthanPluginCppWrapper.cpp
-  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.2/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__
 * `Plugins/Samples/Common/OrthanPluginException.h
-  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.2/OrthancServer/Plugins/Samples/Common/OrthancPluginException.h>`__
+  <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Plugins/Samples/Common/OrthancPluginException.h>`__
--- a/Sphinx/source/developers/db-versioning.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/developers/db-versioning.rst	Thu Aug 27 13:05:26 2020 +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.7.2             u       u       u       x
+Orthanc 0.9.5 - Orthanc 1.7.3             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
--- a/Sphinx/source/developers/repositories.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/developers/repositories.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -104,7 +104,7 @@
 and add the following lines::
 
   [hostsecurity]
-  hg.orthanc-server.com:fingerprints=sha256:2C:D2:D1:9F:45:E3:21:85:FE:82:18:47:D4:E5:18:96:64:3A:73:BB:0A:94:EF:8F:3E:A9:3D:DD:F9:7E:0C:DD
+  hg.orthanc-server.com:fingerprints=sha256:B9:3B:E5:04:25:F7:11:14:0E:29:1F:65:4F:6D:C8:4F:A2:E5:53:E9:80:1C:2E:EF:02:06:45:96:87:1C:EC:BC
   
 .. highlight:: bash
 
--- a/Sphinx/source/dicom-guide.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/dicom-guide.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -657,7 +657,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.7.2, Orthanc implements C-Get as a service
+*Note:* As of Orthanc 1.7.3, Orthanc implements C-Get as a service
 class provider (SCP). Using C-Get as a service class user (SCU) is not
 currently supported in Orthanc.
 
--- a/Sphinx/source/faq/compiling.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/compiling.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -3,6 +3,12 @@
 Compiling Orthanc
 =================
 
+.. toctree::
+   :hidden:
+
+   compiling-old.rst
+
+   
 Under GNU/Linux
 ---------------
 
--- a/Sphinx/source/faq/crash.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/crash.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -64,13 +64,13 @@
 above <segfault-plugin>` is available as the ``crash.cpp`` file, here
 is a sample debug session::
 
-  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.7.2/Orthanc
+  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.7.3/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.7.2
+  W0427 15:43:24.215783 main.cpp:1436] Orthanc version: 1.7.3
   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
--- a/Sphinx/source/faq/debian-daemon.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/debian-daemon.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -45,10 +45,11 @@
 
 A sample `systemd daemon <https://en.wikipedia.org/wiki/Systemd>`__
 for Orthanc can be found in the official `Fedora package
-<https://apps.fedoraproject.org/packages/orthanc>`__:
+<https://src.fedoraproject.org/rpms/orthanc>`__ (now orphaned - please
+consider :ref:`contributing by adopting this package <contributing>`):
 
 1. Download the `systemd script
-   <https://src.fedoraproject.org/rpms/orthanc/blob/master/f/orthanc.service>`__,
+   <https://src.fedoraproject.org/rpms/orthanc/blob/f32/f/orthanc.service>`__,
 2. Adapt some of its variables to reflect the configuration of your
    system,
 3. Copy it as ``/etc/systemd/system/orthanc.service``,
--- a/Sphinx/source/faq/debugging.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/debugging.rst	Thu Aug 27 13:05:26 2020 +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.7.2/Orthanc
+  $ wget https://lsb.orthanc-server.com/orthanc/debug/1.7.3/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.7.2
+  W0513 15:24:42.374349 main.cpp:1436] Orthanc version: 1.7.3
   ---> 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
--- a/Sphinx/source/faq/dicom.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/dicom.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -12,7 +12,7 @@
 * Turn off all the firewalls on the two computers (especially on Microsoft Windows).
 * Make sure the remote computer has `DICOM TLS encryption
   <https://www.dicomstandard.org/using/security/>`__ turned off (this
-  feature is not supported yet as of Orthanc 1.7.2).
+  feature is not supported yet as of Orthanc 1.7.3).
 * Write down on a paper the following information about each modality:
 
   * its IP address (avoid using symbolic names if possible to troubleshot any DNS problem),
--- a/Sphinx/source/faq/improving-interface.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/improving-interface.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -54,8 +54,27 @@
   <https://groups.google.com/d/msg/orthanc-users/oOyKTmfs-J0/B6eyBJcvCAAJ>`__
   on the Orthanc Users forum.
 
-* The `Orthanc Tools JS <https://github.com/salimkanoun/Orthanc-Tools-JS>`__
-  environment created by Salim Kanoun.
+* `Orthanc Tools <https://github.com/salimkanoun/Orthanc_Tools>`__, a
+  desktop Java interface around the REST API of Orthanc by Salim
+  Kanoun. Orthanc Tools was notably showcased during `OrthancCon 2019
+  <https://www.orthanc-server.com/static.php?page=conference-schedule>`__.
+  
+* `OrthancToolsJS <https://github.com/salimkanoun/Orthanc-Tools-JS>`__
+  is the successor of the now-deprecated Orthanc Tools. This Web
+  interface was also created by Salim Kanoun. For more information,
+  including link to a demo server, `check out the announcement
+  <https://groups.google.com/forum/#!msg/orthanc-users/L1BqXbD900E/CB8wOnQ_AwAJ>`__
+  on the discussion group.
 
 * The `Orthanc Manager <https://github.com/id-05/OrthancManager>`__
-  Android application.
+  Android application. `Check out the announcement
+  <https://groups.google.com/forum/#!msg/orthanc-users/ToG4kbhK4Ss/CdFaexyvBwAJ>`__
+  on the discussion group.
+
+* Last but not least, as written above, please consider buying the
+  `professional development services by Osimis
+  <https://www.osimis.io/en/services.html>`__. Osimis can help medical
+  and hospital audience with the deployment of a **certified,
+  integrated clinical environment** around Orthanc. In turn, the money
+  you pay will contribute to make the Orthanc project sustainable in
+  the long term.
--- a/Sphinx/source/faq/log.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/log.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -49,7 +49,7 @@
 2. Stop the Orthanc service. The actual process depends on your
    version of Windows.
 
-3. Copy the just-downloaded ``Orthanc-1.7.2-Release.exe`` together
+3. Copy the just-downloaded ``Orthanc-1.7.3-Release.exe`` together
    with your configuration file (that is by default located in
    ``C:\Orthanc\Configuration.json``) into the same folder
    (e.g. ``C:\Temp``).
@@ -58,7 +58,7 @@
    ``Orthanc.log`` file::
 
    $ cd C:\Temp
-   $ Orthanc-1.7.2-Release.exe --verbose Configuration.json > Orthanc.log 2<&1
+   $ Orthanc-1.7.3-Release.exe --verbose Configuration.json > Orthanc.log 2<&1
 
 5. Once the log has been generated (by default, it is available as
    ``C:\Temp\Orthanc.log``), stop Orthanc and possibly restart the
--- a/Sphinx/source/faq/nginx.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/nginx.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -34,9 +34,11 @@
 Enabling CORS
 -------------
 
-It is also possible to enable `cross-origin resource sharing (CORS)
-<https://en.wikipedia.org/wiki/Cross-origin_resource_sharing>`_ with
-nginx::
+Orthanc does not feature built-in support for `cross-origin resource
+sharing (CORS)
+<https://en.wikipedia.org/wiki/Cross-origin_resource_sharing>`_.  It
+is however possible to enable it with a nginx reverse proxy. Here is a
+sample configuration for nginx::
 
     server {
        listen  80  default_server;
--- a/Sphinx/source/faq/orthanc-storage.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/orthanc-storage.rst	Thu Aug 27 13:05:26 2020 +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
-<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.2/OrthancServer/Sources/Database/PrepareDatabase.sql>`__
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Sources/Database/PrepareDatabase.sql>`__
 and `InstallTrackAttachmentsSize.sql
-<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.2/OrthancServer/Sources/Database/InstallTrackAttachmentsSize.sql>`__.
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Sources/Database/InstallTrackAttachmentsSize.sql>`__.
 
 
 Direct access
--- a/Sphinx/source/faq/scalability.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/scalability.rst	Thu Aug 27 13:05:26 2020 +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.7.2 at the time of
+* Make sure to use the latest release of Orthanc (1.7.3 at the time of
   writing).
 
 * We suggest to use the latest release of the :ref:`PostgreSQL plugin
@@ -172,7 +172,7 @@
 Exclusive access to the DB
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-As of Orthanc 1.7.2, the internal code accessing the DB is still affected
+As of Orthanc 1.7.3, the internal code accessing the DB is still affected
 by limitations induced by the SQLite engine that was the only one originally
 available at the beginning of the project: inside a single Orthanc process,
 there is no concurrent access to the DB.
@@ -184,7 +184,7 @@
 Also note that the core of Orthanc does not currently support the replay
 of database transactions, which is necessary to deal with conflicts
 between several instances of Orthanc that would simultaneously write
-to the database.  As a consequence, as of Orthanc 1.7.2, when connecting multiple
+to the database.  As a consequence, as of Orthanc 1.7.3, when connecting multiple
 Orthanc to a single database by setting ``Lock`` to ``false``, there
 should only be one instance of Orthanc acting as a writer and all the
 other instances of Orthanc acting as readers only. Be careful to set
@@ -203,7 +203,7 @@
 Latency
 ^^^^^^^
 
-As of Orthanc 1.7.2, Orthanc still performs quite a large number of small
+As of Orthanc 1.7.3, Orthanc still performs quite a large number of small
 SQL requests.  A simple request to a route like ``/studies/{id}`` can trigger
 6 SQL queries.
 
--- a/Sphinx/source/faq/security.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/security.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -188,7 +188,7 @@
   configuration of remote modalities.
   
 
-**Remark:** As of Orthanc 1.7.2, `DICOM TLS encryption
+**Remark:** As of Orthanc 1.7.3, `DICOM TLS encryption
 <https://www.dicomstandard.org/using/security/>`__ is not supported
 yet. We are looking for :ref:`an industrial sponsor <contributing>` to
 get this feature implemented, as it is useful in enterprise and cloud
--- a/Sphinx/source/faq/transcoding.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/faq/transcoding.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -88,7 +88,7 @@
   UID of interest. For instance, setting ``IngestTranscoding`` to
   ``1.2.840.10008.1.2.1`` will decompress all the received DICOM
   instances. Conversely, setting it to ``1.2.840.10008.1.2.4.70`` will
-  compress and store images using JPEG-LS (lossless).
+  compress and store images using JPEG Lossless.
 
 * **Decompression while sending instances using the DICOM protocol**.
   Orthanc can be configured to automatically decompress DICOM images
--- a/Sphinx/source/plugins.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/plugins.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -3,6 +3,17 @@
 Plugins
 =======
 
+.. toctree::
+   :hidden:
+
+   plugins/authorization.rst
+   plugins/google-cloud-platform.rst
+   plugins/mysql.rst
+   plugins/object-storage.rst
+   plugins/osimis-webviewer.rst
+   plugins/python.rst
+   plugins/transfers.rst
+
 .. contents::
 
 Overview
@@ -70,34 +81,62 @@
 Index of the contributed plugins
 --------------------------------
 
+C/C++ plugins
+^^^^^^^^^^^^^
+
 * `AWS S3 storage plugin
   <https://github.com/radpointhq/orthanc-s3-storage>`__: This plugin
   by `Radpoint <https://radpoint.pl/>`__ makes Orthanc store its
   DICOM files into an `Amazon S3 bucket
   <https://en.wikipedia.org/wiki/Amazon_S3>`__.
+
 * `DWV Orthanc Plugin
   <https://github.com/ivmartel/dwv-orthanc-plugin>`__: This plugin by
   Yves Martelli is based on `dwv
   <https://github.com/ivmartel/dwv/wiki>`__ and extends Orthanc with a
   Web viewer of DICOM images.
+
 * Another Web viewer is provided courtesy of `Emsy Chan
   <https://groups.google.com/d/msg/orthanc-users/EC5Z2KaM4Hs/MG3KkzhCDAAJ>`__.
+
 * `VPI Reveal <https://www.vpireveal.com/>`__ provides a plugin to
   "write the DICOM records in a normal Windows-readable file hierarchy
   (patient-study-series-DICOM file) at a location called
   ``VPIStorage`` that can then be imported into VPI Reveal."  `Check
   out their source code
   <https://github.com/jodogne/OrthancContributed/tree/master/Plugins/orthancVPIRevealPlugin>`__.
+
 * `Doc Cirrus <https://www.doc-cirrus.com/>`__ is working on `MongoDB
   <https://en.wikipedia.org/wiki/MongoDB>`__ database plugins. Check
   out their `source code
   <https://github.com/Doc-Cirrus/orthanc-mongodb>`__ and the
   `associated description
   <https://github.com/jodogne/OrthancContributed/tree/master/Plugins/orthanc-mongodb>`__.
+
+Python plugins
+^^^^^^^^^^^^^^
+
+* Julian Hartig maintains a `Python plugin
+  <https://github.com/crispinus2/orthanc-gdt>`__ called
+  ``orthanc-gdt``, in order to glue Orthanc to the `GDT interface most
+  German AIS <https://en.wikipedia.org/wiki/XDT>`__
+  (Arztinformationssysteme - as opposed to e.g. the RIS used by
+  radiologists) use for communicating with external applications and
+  devices. This topic is further discussed on the `Orthanc Users forum
+  <https://groups.google.com/d/msg/orthanc-users/NO7MnWzKsAc/5hEVxymWBQAJ>`__.
+
+* Stephen Douglas Scotti maintains a `Python plugin
+  <https://github.com/sscotti/OrthancBrowser>`__ to implement
+  pagination on one Orthanc server.
+
+  
+Other
+^^^^^
+
 * Check out the `OrthancContributed repository on GitHub
   <https://github.com/jodogne/OrthancContributed/tree/master/Plugins>`__, that
   might contain plugins that are not tracked in this list.
 
-*Remark:* Do not hesitate to `contact us
-<https://www.orthanc-server.com/static.php?page=contact>`__ if you have
-developed a plugin so that we can promote it in the list above!
+* **Important:** Do not hesitate to `contact us
+  <https://www.orthanc-server.com/static.php?page=contact>`__ if you
+  have developed a plugin so that we can promote it in the list above!
--- a/Sphinx/source/plugins/python.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/plugins/python.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -18,7 +18,7 @@
 Python plugins have access to more features and a more consistent SDK
 than :ref:`Lua scripts <lua>`. The Python API is automatically
 generated from the `Orthanc plugin SDK in C
-<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.2/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Plugins/Include/orthanc/OrthancCPlugin.h>`__
 using the `Clang <https://en.wikipedia.org/wiki/Clang>`__ compiler
 front-end.
 
@@ -240,6 +240,8 @@
   $ curl http://localhost:8042/toto
   ok
 
+
+.. _python-changes:
   
 Listening to changes
 ....................
@@ -556,7 +558,7 @@
 about `attribute matching
 <http://dicom.nema.org/medical/dicom/2019e/output/chtml/part04/sect_C.2.2.2.html>`__.
 
-.. highlight:: python
+.. highlight:: bash
 
 Here is a sample call to retrieve all the studies that were last
 updated in 2019 thanks to this Python script::
@@ -564,9 +566,90 @@
   $ curl http://localhost:8042/tools/find -d '{"Level":"Study","Query":{},"Expand":true,"Metadata":{"LastUpdate":"^2019.*$"}}'
 
 
+.. _python-paging:
+
+Implementing basic paging
+.........................
+
+.. highlight:: python
+
+As explained in the FAQ, the :ref:`Orthanc Explorer interface is
+low-level <improving-interface>`, and is not adapted for
+end-users. One common need is to implement paging of studies, which
+calls for server-side sorting of studies. This can be done using the
+following sample Python plugin that registers a new route
+``/sort-studies`` in the REST API of Orthanc::
+
+ import json
+ import orthanc
+
+ def GetStudyDate(study):
+     if 'StudyDate' in study['MainDicomTags']:
+         return study['MainDicomTags']['StudyDate']
+     else:
+         return ''
+
+ def SortStudiesByDate(output, uri, **request):
+     if request['method'] == 'GET':
+         # Retrieve all the studies
+         studies = json.loads(orthanc.RestApiGet('/studies?expand'))
+
+         # Sort the studies according to the "StudyDate" DICOM tag
+         studies = sorted(studies, key = GetStudyDate)
+
+         # Read the limit/offset arguments provided by the user
+         offset = 0
+         if 'offset' in request['get']:
+             offset = int(request['get']['offset'])
+
+         limit = 0
+         if 'limit' in request['get']:
+             limit = int(request['get']['limit'])
+
+         # Truncate the list of studies
+         if limit == 0:
+             studies = studies[offset : ]
+         else:
+             studies = studies[offset : offset + limit]
+
+         # Return the truncated list of studies
+         output.AnswerBuffer(json.dumps(studies), 'application/json')
+     else:
+         output.SendMethodNotAllowed('GET')
+
+ orthanc.RegisterRestCallback('/sort-studies', SortStudiesByDate)
+
+
+.. highlight:: bash
+
+Here is a sample call to this new REST route, that could be issued by
+any JavaScript framework (the ``json_pp`` command-line pretty-prints a
+JSON file)::
+
+  $ curl http://localhost:8042/sort-studies | json_pp
+
+This route also implement paging (i.e. it can limit and offset the
+returned studies)::
+  
+  $ curl 'http://localhost:8042/sort-studies?offset=2&limit=2' | json_pp
+
+Obviously, this basic sample can be improved in many ways. To improve
+performance, one could for instance cache the result of
+``/studies?expand`` in memory by :ref:`listening to changes
+<python-changes>` in the list of studies
+(cf. ``orthanc.ChangeType.NEW_STUDY`` and
+``orthanc.ChangeType.DELETED``).
+
+
+
 Performance and concurrency
 ---------------------------
 
+**Important:** This section only applies to UNIX-like systems. The
+``multiprocessing`` package will not work on Microsoft Windows as the
+latter OS has a different model for `forking processes
+<https://en.wikipedia.org/wiki/Fork_(system_call)>`__.
+
 .. highlight:: python
 
 Let us consider the following sample Python script that makes a
--- a/Sphinx/source/plugins/worklists-plugin.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/plugins/worklists-plugin.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -51,9 +51,10 @@
     "Worklists" : {
       "Enable": true,
       "Database": "./WorklistsDatabase",
-      "FilterIssuerAet": false  // Some modalities do not specify 'ScheduledStationAETitle (0040,0001)'
+      "FilterIssuerAet": false, // Some modalities do not specify 'ScheduledStationAETitle (0040,0001)'
                                 // in the C-Find and may receive worklists not related to them.  This option 
                                 // adds an extra filtering based on the AET of the modality issuing the C-Find.
+      "LimitAnswers": 0  // Maximum number of answers to be returned (new in release 1.7.3)
     }
   }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sphinx/source/unanswered-forum.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -0,0 +1,57 @@
+.. _unanswered_forum:
+
+Old unanswered questions from Orthanc Users
+===========================================
+
+.. contents::
+
+
+Rationale
+---------
+
+This page lists the questions (since 2018) that are still looking for
+an answer on the `Orthanc Users discussion group
+<https://groups.google.com/forum/#!forum/orthanc-users>`__.
+
+Threads that are not answered in a satisfying manner after a few weeks
+are indexed here by the core maintainers of Orthanc, in order to avoid
+forgetting them if they get buried under many new threads.
+
+If you consider that another old thread is missing in this list
+(**wait at least 2 months**), you can ping by replying onto the
+forgotten thread, asking to index it on this page of the Orthanc Book.
+
+Conversely, if you feel that some thread listed on this page is
+already properly answered, reply to the thread by saying that you are
+happy with the answers that have been gathered. We would then be able
+to remove the question from this page.
+
+
+Pending questions
+-----------------
+
+* **2020-04-24**: `Auto routing with OnStableStudy <https://groups.google.com/g/orthanc-users/c/GuFqiZtkwtg/m/PGu2fM5LCAAJ>`__
+* **2020-04-13**: `Advanced authorization plugin vs. Remote access <https://groups.google.com/g/orthanc-users/c/m2VM3AhhWok/m/EjVy5_ZFCAAJ>`__
+* **2020-03-28**: `REST Query Remote Modality using DICOM Sequence <https://groups.google.com/g/orthanc-users/c/7o0RNFEtVuA/m/KmpalFxTAwAJ>`__
+* **2020-03-04**: `Bulk Store SCU question <https://groups.google.com/g/orthanc-users/c/upftCWzl7qc/m/2FFEmXqkAQAJ>`__
+* **2020-02-10**: `Authorisation web service and the AC_AUTHENTICATION_ENABLED variable <https://groups.google.com/g/orthanc-users/c/liOW6BQMbdQ/m/yqfm2B0vFgAJ>`__
+* **2020-02-05**: `TotalDiskSize Disagrees With filesystem du; any way to stop storing json <https://groups.google.com/g/orthanc-users/c/gA-ixbFCjrI/m/NzH3FDS9AQAJ>`__
+* **2019-11-14**: `instance anonymization with consistent PatientID <https://groups.google.com/g/orthanc-users/c/9rIpNHxA4d8/m/dDABlu4LAgAJ>`__  
+* **2018-05-11**: `Web vs API query/retrieve with Orthanc Docker <https://groups.google.com/d/msg/orthanc-users/3g7V7kqr3g0/3i83GIfxBwAJ>`__
+
+
+Questions requiring a development
+---------------------------------
+
+* **2020-08-06**: `Advanced authorization plugin dicomweb-plugin issue <https://groups.google.com/g/orthanc-users/c/gwgGJsLvQUk/m/CkiaojrCAgAJ>`__
+* **2019-10-25**: `Expediting stability of a DICOM study - new API endpoint? <https://groups.google.com/g/orthanc-users/c/kADj2eoELK4/m/xFrc0wfIBgAJ>`__
+* **2019-10-07**: `Timeout too short when connecting to MySQL server resulting in crash <https://groups.google.com/g/orthanc-users/c/rYA4eJzEp7Q/m/teFOHBI6BwAJ>`__
+* **2019-05-14**: `Jobs Engine: Study Details <https://groups.google.com/g/orthanc-users/c/9GCV88GLEzw/m/A8r4cb_UAgAJ>`__
+
+
+Waiting for feedback from the original poster
+---------------------------------------------
+
+* **2020-05-13**: `Contribution - Use default encoding when specific character set value is invalid <https://groups.google.com/g/orthanc-users/c/I78mQbp9nBM/m/amaikWp7CAAJ>`__
+* **2020-03-06**: `Orthanc not working with MySQL 8 <https://groups.google.com/d/msg/orthanc-users/OCFFkm1qm0k/k3rx12UjAwAJ>`__
+* **2018-02-22**: `Dicom modification - removing sequences? <https://groups.google.com/d/msg/orthanc-users/NnbMfH0P0OA/cF-aMKkpAQAJ>`__
--- a/Sphinx/source/users/advanced-rest.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/users/advanced-rest.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -128,7 +128,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.7.2, this feature is not
+  re-submission after a delay. As of Orthanc 1.7.3, this feature is not
   used by any type of job.
 
 In order to wait for the end of an asynchronous call, the caller will
@@ -151,10 +151,55 @@
 
 The related state machine is depicted in the `implementation notes
 <https://hg.orthanc-server.com/orthanc/raw-file/default/OrthancServer/Resources/ImplementationNotes/JobsEngineStates.pdf>`__.
-  
 
 
+Example: Asynchronous generation of an archive
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+.. highlight:: bash
+
+Sucessful jobs are associated with a set of so-called "outputs" that
+can be attached to the job.
+               
+Here is a sample bash session to ask Orthanc to generate a ZIP
+archive, then to download it locally::
+
+  $ curl http://localhost:8042/studies/27f7126f-4f66fb14-03f4081b-f9341db2-53925988/archive -d '{"Asynchronous":true}'
+  {
+    "ID" : "82cc02d1-03fe-41f9-be46-a308d16ea94a",
+    "Path" : "/jobs/82cc02d1-03fe-41f9-be46-a308d16ea94a"
+  }
+  $ curl http://localhost:8042/jobs/82cc02d1-03fe-41f9-be46-a308d16ea94a
+  {
+    "CompletionTime" : "20200817T144700.401777",
+    "Content" : {
+      "Description" : "REST API",
+      "InstancesCount" : 232,
+      "UncompressedSizeMB" : 64
+    },
+    "CreationTime" : "20200817T144658.011824",
+    "EffectiveRuntime" : 2.3879999999999999,
+    "ErrorCode" : 0,
+    "ErrorDescription" : "Success",
+    "ID" : "82cc02d1-03fe-41f9-be46-a308d16ea94a",
+    "Priority" : 0,
+    "Progress" : 100,
+    "State" : "Success",
+    "Timestamp" : "20200817T144705.770825",
+    "Type" : "Archive"
+  }
+  $ curl http://localhost:8042/jobs/82cc02d1-03fe-41f9-be46-a308d16ea94a/archive > a.zip
+
+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
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Sources/ServerJobs/ArchiveJob.cpp>`__
+of Orthanc).
+
+As of Orthanc 1.7.3, only the creation of a ZIP or a DICOMDIR archive
+produces such an "output".
+
+  
 .. _pdf:
 
 Attaching PDF file as DICOM series
--- a/Sphinx/source/users/configuration.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/users/configuration.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -7,7 +7,7 @@
 Configuring Orthanc simply consists in providing a configuration file.
 Orthanc has numerous configuration that are documented in the `default
 configuration file
-<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.2/OrthancServer/Resources/Configuration.json>`_. This
+<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.7.3/OrthancServer/Resources/Configuration.json>`_. This
 file is in the `JSON <https://en.wikipedia.org/wiki/JSON>`_ file
 format. You can generate this file file with the following call::
 
--- a/Sphinx/source/users/docker.rst	Thu Aug 27 13:05:01 2020 +0200
+++ b/Sphinx/source/users/docker.rst	Thu Aug 27 13:05:26 2020 +0200
@@ -5,6 +5,12 @@
 Orthanc for Docker
 ==================
 
+.. toctree::
+   :hidden:
+
+   docker-osimis.rst
+   
+
 .. contents::
    :depth: 3
 
@@ -67,7 +73,7 @@
 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.7.2
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.7.3
 
 Passing additional command-line options (e.g. to make Orthanc verbose)
 can be done as follows (note the ``/etc/orthanc`` option that is
@@ -89,7 +95,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.7.2
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins:1.7.3
 
 If you have an interest in the :ref:`Python plugin <python-plugin>`,
 you can use the ``orthanc-python`` image. The latter image is a
@@ -97,7 +103,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.7.2
+  $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-python:1.7.3
   
 
 Fine-tuning the configuration
@@ -149,7 +155,7 @@
   version: '3.1'  # Secrets are only available since this version of Docker Compose
   services:
     orthanc:
-      image: jodogne/orthanc-plugins:1.7.2
+      image: jodogne/orthanc-plugins:1.7.3
       command: /run/secrets/  # Path to the configuration files (stored as secrets)
       ports:
         - 4242:4242
@@ -188,7 +194,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.7.2 
+  $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.7.3 
 
 
 Whole-slide imaging support
@@ -309,4 +315,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.7.2``.
+  use e.g. ``jodogne/orthanc-debug:1.7.3``.