changeset 961:ec4e1e8c3fa9

merge
author Alain Mazy <am@osimis.io>
date Fri, 23 Jun 2023 08:42:15 +0200
parents 91273763cb94 (current diff) 22a19433820b (diff)
children 5df222ddd7d1
files
diffstat 10 files changed, 308 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/Sphinx/source/_templates/layout.html	Fri Jun 23 08:41:58 2023 +0200
+++ b/Sphinx/source/_templates/layout.html	Fri Jun 23 08:42:15 2023 +0200
@@ -17,7 +17,7 @@
     </p>
     <p>
 
-      &copy; Copyright 2015-2022, University Hospital of Liège, Osimis
+      &copy; Copyright 2015-2023, University Hospital of Liège, Osimis
       S.A. (Belgium), UCLouvain ICTEAM, and the Orthanc community<br/>
       The Orthanc Book is licensed under
       <a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative 
@@ -27,19 +27,4 @@
   </div>
 </footer>
 
-<!-- Matomo -->
-<script type="text/javascript">
-  var _paq = window._paq = window._paq || [];
-  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
-  _paq.push(['trackPageView']);
-  _paq.push(['enableLinkTracking']);
-  (function() {
-    var u="https://matomo.orthanc-server.com/";
-    _paq.push(['setTrackerUrl', u+'matomo.php']);
-    _paq.push(['setSiteId', '2']);
-    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-    g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-  })();
-</script>
-<!-- End Matomo Code -->
 {% endblock %}
--- a/Sphinx/source/faq/features.rst	Fri Jun 23 08:41:58 2023 +0200
+++ b/Sphinx/source/faq/features.rst	Fri Jun 23 08:42:15 2023 +0200
@@ -329,6 +329,7 @@
 * ``Global property 5468`` is used by the :ref:`DICOMweb plugin <dicomweb>` to store the DICOMweb servers into the Orthanc database.
 * ``Metadata 4200`` is used by the plugin for :ref:`whole-slide imaging <wsi>` with version <= 0.7.
 * ``Metadata 4201`` is used by the plugin for :ref:`whole-slide imaging <wsi>` with version >= 1.0.
+* ``Metadata 4202`` is used by the :ref:`OHIF plugin <ohif>` to store precomputed information about the DICOM instances.
 
 
 Jobs
--- a/Sphinx/source/faq/viewers.rst	Fri Jun 23 08:41:58 2023 +0200
+++ b/Sphinx/source/faq/viewers.rst	Fri Jun 23 08:42:15 2023 +0200
@@ -17,7 +17,10 @@
 with Orthanc (do not hesitate to `warn us
 <mailto:s.jodogne@orthanc-labs.com>`__ about other compatible FOSS):
 
-* `Open Health Imaging Foundation (OHIF) <https://docs.ohif.org/>`__.
+* `Open Health Imaging Foundation (OHIF) <https://docs.ohif.org/>`__,
+  for which an official :ref:`Orthanc plugin <ohif>` is available.
+* `Kitware's VolView <https://volview.kitware.com/>`__, for which an
+  official :ref:`Orthanc plugin <volview>` is available.
 * `Horos <https://horosproject.org/>`__.
 * `Gingko CADx <http://ginkgo-cadx.com/en/>`__ (a
   :ref:`configuration guide <ginkgo-cadx>` is available).
Binary file Sphinx/source/images/OHIF.png has changed
--- a/Sphinx/source/plugins.rst	Fri Jun 23 08:41:58 2023 +0200
+++ b/Sphinx/source/plugins.rst	Fri Jun 23 08:42:15 2023 +0200
@@ -82,10 +82,11 @@
 .. toctree::
    :maxdepth: 1
 
+   plugins/ohif.rst
+   plugins/volview.rst
    plugins/tcia.rst
    plugins/indexer.rst
    plugins/neuro.rst
-   plugins/volview.rst
    plugins/multitenant-dicom.rst
 
 .. _plugins-contributed:
--- a/Sphinx/source/plugins/authorization.rst	Fri Jun 23 08:41:58 2023 +0200
+++ b/Sphinx/source/plugins/authorization.rst	Fri Jun 23 08:42:15 2023 +0200
@@ -375,12 +375,12 @@
     }
   }
 
-.. _orthanc-explorer-authorization:
+.. _orthanc-explorer-2-authorization:
 
 Integration with the Orthanc Explorer 2
 ---------------------------------------
 
-This project contains a `complete example<https://github.com/orthanc-team/orthanc-auth-service>`__ 
+This project contains a `complete example <https://github.com/orthanc-team/orthanc-auth-service>`__ 
 of a Web services integrating with :ref:`Orthanc Explorer 2 <orthanc-explorer-2>` to implement
 user level permissions and sharing of single studies.
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sphinx/source/plugins/ohif.rst	Fri Jun 23 08:42:15 2023 +0200
@@ -0,0 +1,280 @@
+.. _ohif:
+
+
+OHIF plugin
+===========
+
+.. contents::
+
+This **official** plugin by the `ICTEAM institute of UCLouvain
+<https://uclouvain.be/en/research-institutes/icteam>`__ extends
+Orthanc with the `OHIF <https://ohif.org/>`__ extensible Web imaging
+platform.
+
+The plugin greatly simplifies the deployment of OHIF, as it does not
+necessitate the setup of any reverse proxy. It also speeds up the
+loading of 
+
+
+Usage
+-----
+
+This plugin adds a dedicated button to Orthanc Explorer, which
+provides an easy, fast access to the OHIF viewers (click on the image
+to view a demo video):
+
+.. image:: ../images/OHIF.png
+           :align: center
+           :width: 800
+           :target: https://www.youtube.com/watch?v=-lzddzq9iT4
+|
+
+
+Compilation
+-----------
+
+.. highlight:: bash
+
+Official releases can be `downloaded from the Orthanc homepage
+<https://www.orthanc-server.com/browse.php?path=/plugin-ohif>`__. As
+an alternative, the `repository containing the source code
+<https://orthanc.uclouvain.be/hg/orthanc-ohif/>`__ can be accessed
+using Mercurial.
+
+The procedure to compile this plugin is similar of that for the
+:ref:`core of Orthanc <binaries>`. The following commands should work
+on most GNU/Linux distributions, provided Docker is installed::
+
+  $ mkdir Build
+  $ cd Build
+  $ ../Resources/CreateOHIFDist.sh
+  $ cmake .. -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release
+  $ make
+
+The compilation will produce a shared library ``libOrthancOHIF.so``
+that contains the OHIF plugin for Orthanc.
+
+Pre-compiled Linux Standard Base (LSB) binaries `are available for
+download <https://lsb.orthanc-server.com/plugin-ohif/>`__.
+
+Pre-compiled binaries for Microsoft Windows and macOS `are also
+available
+<https://www.orthanc-server.com/browse.php?path=/plugin-ohif>`__.
+
+Furthermore, the :ref:`Docker images <docker>`
+``jodogne/orthanc-plugins`` and ``osimis/orthanc`` also contain the
+plugin. Debian and Ubuntu packages can be found in the
+:ref:`standalone repository <binaries>`
+``https://debian.orthanc-labs.com/``.
+
+
+Configuration
+-------------
+
+.. highlight:: json
+
+Here is a minimal sample :ref:`configuration file <configuration>` to
+use this plugin::
+
+  {
+    "Plugins" : [
+      "/home/user/orthanc-ohif/Build/libOrthancOHIF.so"
+    ]
+  }
+
+Orthanc must of course be restarted after the modification of its
+configuration file.
+
+
+Using DICOMweb
+^^^^^^^^^^^^^^
+
+.. highlight:: json
+
+By default, the plugin uses the `DICOM JSON data source
+<https://v3-docs.ohif.org/configuration/datasources/dicom-json/>`__ of
+OHIF. This data source is optimized to provide the fastest access to
+the DICOM images, while requiring no additional plugin. However, in
+order to deliver fast access, the OHIF plugin will cache additional
+information about each DICOM instance as :ref:`metadata <metadata>` in
+the Orthanc database, which results in a larger size of the Orthanc
+database (an additional 1KB is roughly needed per instance).
+
+As an alternative, it is possible to enable the `DICOMweb data source
+<https://v3-docs.ohif.org/configuration/dataSources/dicom-web>`__. In
+this case, the :ref:`DICOMweb plugin of Orthanc <dicomweb>` must also
+be loaded. It can also be useful to load the :ref:`GDCM plugin <gdcm>`
+if the DICOM images are encoded using a JPEG2k compressed transfer
+syntax.
+
+The advantages of using DICOMweb over the default DICOM JSON are:
+
+* More standard-compliant.
+
+* The OHIF study list is accessible, notably as a button on the
+  welcome screen of Orthanc Explorer. The study list is not available
+  if using the DICOM JSON data source.
+
+* No additional space is used in the Orthanc database.
+  
+Here is a minimal configuration file to use DICOMweb::
+
+  {
+    "Plugins" : [
+      "/home/user/orthanc-ohif/Build/libOrthancOHIF.so",
+      "/home/user/orthanc-dicomweb/Build/libOrthancDicomWeb.so"
+    ],
+    "OHIF" : {
+      "DataSource" : "dicom-web"
+    }
+  }
+  
+
+User configuration of OHIF
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. highlight:: json
+
+OHIF comes with a number of `configuration options
+<https://v3-docs.ohif.org/configuration/configurationfiles/#configuration-options>`__
+that can be fine-tuned by the user. User settings can be injected
+using the ``UserConfiguration`` option as follows::
+
+  {
+    "Plugins" : [
+      "/home/user/orthanc-ohif/Build/libOrthancOHIF.so"
+    ],
+    "OHIF" : {
+      "UserConfiguration" : "ohif.js"
+    }
+  }
+
+.. highlight:: javascript
+
+A minimal ``ohif.js`` would be::
+
+  window.config = {
+    extensions: [],
+    modes: []
+  }
+
+Note that the following configuration options will be overridden by
+the OHIF plugin to properly configure the data source and the
+integration with the Orthanc Web server:
+
+* ``window.config.dataSources``
+* ``window.config.defaultDataSourceName``
+* ``window.config.routerBasename``
+* ``window.config.showStudyList`` (set to ``false`` if using the DICOM
+  JSON data source)
+  
+
+Router basename
+^^^^^^^^^^^^^^^
+
+.. highlight:: json
+
+If Orthanc is not branched at the root of a Web server thanks of the
+presence of a reverse proxy, the configuration option
+``RouterBasename`` must be adapted.
+
+For instance, if Orthanc is running at address
+``https://host.com/imaging/demo/orthanc/``, the following
+configuration file must be used for OHIF to work::
+
+  {
+    "Plugins" : [
+      "/home/user/orthanc-ohif/Build/libOrthancOHIF.so"
+    ],
+    "OHIF" : {
+      "RouterBasename" : "/imaging/demo/orthanc/ohif/"
+    }
+  }
+
+The default value of ``RouterBasename`` is ``/ohif/``.
+
+
+.. _ohif-preloading:
+
+Preloading
+^^^^^^^^^^
+
+.. highlight:: json
+
+If using the DICOM JSON data source, whenever a new DICOM instance is
+received by Orthanc, the OHIF plugin will compute a summary of the
+DICOM tags of interest to OHIF, and will store it as :ref:`metadata
+<metadata>` in the Orthanc database. This process has the advantage of
+speeding up even the first opening of the DICOM study by OHIF, which
+probably corresponds to the expectations of most radiologists.
+
+However, if your Orthanc deployment is focused on speed, this
+preloading might be undesirable, as it slows down the ingestion of new
+DICOM instances by Orthanc. Furthermore, if your Orthanc server will
+contain a large number of DICOM studies that will never be displayed
+using OHIF, this can result in a waste of space in the Orthanc
+database because of the metadata that will be preloaded, but that will
+never be read.
+
+It is consequently possible to turn off the automated preloading
+of metadata using the following configuration::
+
+  {
+    "Plugins" : [
+      "/home/user/orthanc-ohif/Build/libOrthancOHIF.so"
+    ],
+    "OHIF" : {
+      "DataSource" : "dicom-json",
+      "Preload" : false
+    }
+  }
+
+If the ``Preload`` option is set to ``false``, the first display of a
+DICOM study can take several seconds because of the computation of the
+metadata, but subsequent displays will run much faster.
+
+Note that preloading is only applied to the newly received instances:
+The DICOM instances that were stored in the Orthanc server before the
+installation of the OHIF plugin will only benefit from the
+optimization starting with their second display using OHIF.
+
+
+For developers
+--------------
+
+Extensions to the REST API
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. highlight:: bash
+
+The content of the `DICOM JSON data source
+<https://v3-docs.ohif.org/configuration/datasources/dicom-json/>`__
+for a DICOM study of interest can be retrieved as follows::
+
+  $ curl http://demo.orthanc-server.com/studies/6b9e19d9-62094390-5f9ddb01-4a191ae7-9766b715/ohif-dicom-json
+
+This data source is constructed from the :ref:`metadata 4202
+<registry>` associated with the individual DICOM instances of the
+DICOM study. The metadata corresponds to the `Base64 encoding
+<https://en.wikipedia.org/wiki/Base64>`__ of a gzipped JSON file. For
+debugging, the JSON file associated with a DICOM instance can be
+inspected using::
+
+  $ curl http://demo.orthanc-server.com/instances/1f3c00bd-49df10b7-f416a598-1b3bb5a2-cb791b52/metadata/4202 | base64 -d | gunzip -c
+  
+
+Preloading existing studies
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:ref:`As explained above <ohif-preloading>`, the metadata associated
+with DICOM instances are only preloaded for the newly ingested DICOM
+instances. Using the REST API of Orthanc, it is easy to create a
+script that would preload the metadata for the already existing DICOM
+studies, hereby greatly speeding up the first opening of those studies
+as well.
+
+This script would loop over the :ref:`the DICOM studies that are
+stored by Orthanc <rest-access>` using ``GET /studies``. For each
+study whose :ref:`Orthanc identifier <orthanc-ids>` is ``id``, the
+script would simply call ``GET /studies/{id}/ohif-dicom-json``.
+
--- a/Sphinx/source/users/cookbook.rst	Fri Jun 23 08:41:58 2023 +0200
+++ b/Sphinx/source/users/cookbook.rst	Fri Jun 23 08:42:15 2023 +0200
@@ -35,10 +35,10 @@
 .. highlight:: bash
 
 Furthermore, if you are running Debian 9 (stretch), Debian 10
-(buster), Debian 11 (bullseye), Ubuntu 18.04 LTS (bionic), Ubuntu
-20.04 LTS (focal), or Ubuntu 22.04 LTS (jammy) on an **AMD64
-architecture**, Sébastien Jodogne maintains a **standalone Debian
-repository** that provides the latest versions of the LSB
+(buster), Debian 11 (bullseye), Debian 12 (bookworm), Ubuntu 18.04 LTS
+(bionic), Ubuntu 20.04 LTS (focal), or Ubuntu 22.04 LTS (jammy) on an
+**AMD64 architecture**, Sébastien Jodogne maintains a **standalone
+Debian repository** that provides the latest versions of the LSB
 binaries. For instance, here is how to install the :ref:`Stone Web
 viewer <stone_webviewer>` on a barebone Docker setup::
 
--- a/Sphinx/source/users/replication.rst	Fri Jun 23 08:41:58 2023 +0200
+++ b/Sphinx/source/users/replication.rst	Fri Jun 23 08:42:15 2023 +0200
@@ -72,11 +72,14 @@
 The most direct way to replicate an instance of Orthanc consists in
 using the `ImportDicomFiles
 <https://hg.orthanc-server.com/orthanc/file/default/OrthancServer/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`_
-script of the Orthanc distribution. For instance, the following
-command would recursively explore the content of the
-``OrthancStorage`` folder (where Orthanc stores its DICOM files by
-default), and send each DICOM file inside this folder to the instance
-of Orthanc whose REST API is listening on
+script of the Orthanc distribution. This process can also be used to
+restore the content of an Orthanc server after a corruption of its
+database.
+
+For instance, the following command would recursively explore the
+content of the ``OrthancStorage`` folder (where Orthanc stores its
+DICOM files by default), and send each DICOM file inside this folder
+to the instance of Orthanc whose REST API is listening on
 ``http://192.168.0.2:8042``::
 
     $ python ImportDicomFiles.py 192.168.0.2 8042 OrthancStorage
@@ -97,16 +100,13 @@
 
 **Important remark:** Because of :ref:`the way Orthanc stores its
 database <orthanc-storage>` on the filesystem, it is *entirely normal*
-that the ``ImportDicomFiles.py`` script ends by saying that only half
-of the DICOM files were properly sent. This is because the JSON
-summaries are not DICOM files, and are thus rejected by the target
-Orthanc server. More information are available `on the discussion
-group
+if the ``ImportDicomFiles.py`` script ends by saying that only half of
+the DICOM files were properly sent. This is because the JSON summaries
+are not DICOM files, and are thus rejected by the target Orthanc
+server. More information are available `on the discussion group
 <https://groups.google.com/d/msg/orthanc-users/Zlhtcpo76qQ/tp8EqaRCAQAJ>`__.
 
 
-
-
 Generic replication
 -------------------
 
--- a/Sphinx/source/users/support.rst	Fri Jun 23 08:41:58 2023 +0200
+++ b/Sphinx/source/users/support.rst	Fri Jun 23 08:42:15 2023 +0200
@@ -187,11 +187,13 @@
    * **Africa**:
 
      * `Abdrahman Elkafil <mailto:elkafil@nextbehealthcare.com>`__ (English/French/Arabic, Belgium and Morocco)
+     * `Olakunle Dada <mailto:holakunle69@gmail.com>`__ (English/French, Nigeria)
 
    * **Asia**:
      
      * `Phong Tran Duc <http://www.itechcorp.com.vn/>`__ (English/Vietnamese, Vietnam)
      * `Rana Asim Wajid <http://ethosmed.com/>`__ (English/Urdu/Punjabi, Pakistan)
+     * `Yash Sonalia <mailto:sonaliayash@gmail.com>`__ (English/Hindi/Bengali, India)
 
    * **Oceania**: