Mercurial > hg > orthanc-book
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> - © Copyright 2015-2022, University Hospital of Liège, Osimis + © 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).
--- 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**: