Mercurial > hg > orthanc-book
changeset 368:6979ebaae833
merge
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Wed, 01 Apr 2020 22:45:01 +0200 |
parents | ecdd754e16ba (current diff) 12f88a12d146 (diff) |
children | 8f7e9ebf7c96 |
files | Sphinx/source/faq/log.rst |
diffstat | 55 files changed, 616 insertions(+), 279 deletions(-) [+] |
line wrap: on
line diff
--- a/Sphinx/source/_templates/layout.html Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/_templates/layout.html Wed Apr 01 22:45:01 2020 +0200 @@ -17,7 +17,7 @@ </p> <p> - © Copyright 2015-2020, University Hospital of Liège and Osimis, Belgium, and the Orthanc community<br/> + © Copyright 2015-2020, University Hospital of Liège and Osimis S.A., Belgium, and the Orthanc community<br/> The Orthanc Book is licensed under <a href="http://creativecommons.org/licenses/by-sa/4.0/" target="_blank">Creative Commons CC-BY-SA 4.0</a>.<br/>
--- a/Sphinx/source/conf.py Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/conf.py Wed Apr 01 22:45:01 2020 +0200 @@ -295,3 +295,8 @@ # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False + + +linkcheck_timeout=3 +linkcheck_retries=2 +linkcheck_workers=15
--- a/Sphinx/source/contributing.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/contributing.rst Wed Apr 01 22:45:01 2020 +0200 @@ -13,7 +13,7 @@ on `Facebook <https://www.facebook.com/orthancdicom/>`__ and `Twitter <https://twitter.com/OrthancServer>`__). - Answer our `survey - <http://www.orthanc-server.com/static.php?page=blog#survey>`_. + <https://www.orthanc-server.com/static.php?page=blog#survey>`_. - Improve and translate the `Wikipedia pages <https://en.wikipedia.org/wiki/Orthanc_(software)>`_ about Orthanc. - Cite the `reference paper about Orthanc @@ -22,8 +22,10 @@ - Answer questions posted to the `mailing list <https://groups.google.com/forum/#!forum/orthanc-users>`_. - Improve the text of the `Orthanc Book and REST API documentation - <https://bitbucket.org/sjodogne/orthanc-book/>`_ (check out the - instructions provided in the README). + <https://hg.orthanc-server.com/orthanc-book/file/tip>`__ (check + out the instructions provided in the `README file + <https://hg.orthanc-server.com/orthanc-book/file/tip/README.md>`__, + and send us a :ref:`simple patch <hg-patch>`). - Provide documentation and use cases (inside the dedicated `GitHub repository <https://github.com/jodogne/OrthancContributed>`_, via pull requests). @@ -49,7 +51,7 @@ :ref:`dedicated FAQ entry <cla>`. - Interface Orthanc with other software (e.g. 3D Slicer, Matlab/Octave, Python, Horos, dicompyler...). Check the `already - supported frameworks <http://www.orthanc-server.com/static.php?page=resources>`_. + 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 of possible plugins: @@ -60,7 +62,7 @@ REST API or HL7 messages, instead of reading them from some folder on the filesystem. + Have a look at the TODO file containing our `official roadmap - <https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__. + <https://hg.orthanc-server.com/orthanc/file/default/TODO>`__. - Always remember that he **recommended way of contributing to the source code of Orthanc is by creating C/C++ plugins**. If the
--- a/Sphinx/source/developers/coding-style.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/developers/coding-style.rst Wed Apr 01 22:45:01 2020 +0200 @@ -12,7 +12,7 @@ <https://en.wikipedia.org/wiki/Indent_style#Allman_style>`__", with some adaptations that are described below. A compliant Eclipse formatter is `available in the Orthanc distribution -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/EclipseCodingStyle.xml>`__. +<https://hg.orthanc-server.com/orthanc/file/default/Resources/EclipseCodingStyle.xml>`__. Licensing ---------
--- a/Sphinx/source/developers/creating-plugins.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/developers/creating-plugins.rst Wed Apr 01 22:45:01 2020 +0200 @@ -13,23 +13,28 @@ <plugins>`. Orthanc plugins must use the `plugin SDK -<http://sdk.orthanc-server.com/>`__ and must be written in C or +<https://sdk.orthanc-server.com/>`__ and must be written in C or C++. They must also fullfil the terms of the `GPLv3 license <http://www.gnu.org/licenses/quick-guide-gplv3.en.html>`__ that is -used by the core of Orthanc. Here are some resources about creating -plugins: +used by the core of Orthanc. + +For developers who are more familiar with Python, it is also possible +to create plugins using this simpler language. Check out the +:ref:`dedicated Python plugin <python-plugin>`. + +Here are some resources about creating C/C++ plugins: * Sample code for plugins can be found `in the official Orthanc repository - <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/>`__ + <https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/>`__ (in the ``Plugins/Samples`` folder). * A tutorial showing how to implement a basic WADO server is `available on CodeProject - <http://www.codeproject.com/Articles/797118/Implementing-a-WADO-Server-using-Orthanc>`__. + <https://www.codeproject.com/Articles/797118/Implementing-a-WADO-Server-using-Orthanc>`__. * Marco Barnig provides `tutorial lessons to create Orthanc plugins - <https://github.com/mbarnig/RadioLogic/wiki#orthanc-plugin-development>`__ + <https://github.com/mbarnig/RadioLogic/wiki#user-content-orthanc-plugin-development>`__ as part of his `RadioLogic project <https://github.com/mbarnig/RadioLogic/>`__. @@ -37,7 +42,7 @@ core <coding-style>`, although this is of course not required. Do not hesitate to `contact us -<http://www.orthanc-server.com/static.php?page=contact>`__ if you wish +<https://www.orthanc-server.com/static.php?page=contact>`__ if you wish your plugin to be **indexed** in :ref:`the dedicated part of the Orthanc Book <plugins-contributed>`! @@ -73,9 +78,9 @@ that is part of the Orthanc source distribution: * `Plugins/Include/orthanc/OrthancCPlugin.h - <https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/Plugins/Include/orthanc/OrthancCPlugin.h>`__ + <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Plugins/Include/orthanc/OrthancCPlugin.h>`__ -`Online documentation <http://sdk.orthanc-server.com/>`__ for this C +`Online documentation <https://sdk.orthanc-server.com/>`__ for this C header is available, as generated by `Doxygen <https://en.wikipedia.org/wiki/Doxygen>`__. @@ -87,8 +92,8 @@ ``HAS_ORTHANC_EXCEPTION`` is set to ``0``: * `Plugins/Samples/Common/OrthanPluginCppWrapper.h - <https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__ + <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginCppWrapper.h>`__ * `Plugins/Samples/Common/OrthanPluginCppWrapper.cpp - <https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__ + <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginCppWrapper.cpp>`__ * `Plugins/Samples/Common/OrthanPluginException.h - <https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginException.h>`__ + <https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/Plugins/Samples/Common/OrthancPluginException.h>`__
--- a/Sphinx/source/developers/db-versioning.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/developers/db-versioning.rst Wed Apr 01 22:45:01 2020 +0200 @@ -4,10 +4,10 @@ =================== Orthanc stores the index of the DICOM instances as an embedded `SQLite -database <http://www.sqlite.org/>`_. The schema of this database has -evolved across the versions of Orthanc, making the database -incompatible between versions. This page clarifies which versions of -Orthanc are compatible with other versions. +database <https://www.sqlite.org/index.html>`_. The schema of this +database has evolved across the versions of Orthanc, making the +database incompatible between versions. This page clarifies which +versions of Orthanc are compatible with other versions. Recent versions (post-0.3.1) ----------------------------
--- a/Sphinx/source/developers/repositories.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/developers/repositories.rst Wed Apr 01 22:45:01 2020 +0200 @@ -70,12 +70,20 @@ Locally cloning one of those Mercurial repositories (say, the main ``orthanc`` repository) is as simple as typing:: - $ hg clone https://hg.orthanc-server.com/orthanc + $ hg clone https://hg.orthanc-server.com/orthanc/ You can then use separate tools such as `TortoiseHg <https://en.wikipedia.org/wiki/TortoiseHg>`__ to browse the code with richer features than the Web interface. +.. highlight:: text + +You might have to set up a host fingerprint in the Mercurial +configuration. Add the following lines to your ``~/.hgrc`` file:: + + [hostfingerprints] + hg.orthanc-server.com = fc:45:10:18:69:4d:a6:2b:22:fa:c0:81:f4:ee:eb:8e:ba:ae:54:90 + Note for Microsoft Windows .......................... @@ -112,7 +120,7 @@ Orthanc repositories (through SSH). Core developers can clone a repository with write access as follows:: - $ hg clone ssh://hg@hg.orthanc-server.com/public/orthanc + $ hg clone ssh://hg@hg.orthanc-server.com/public/orthanc/ .. _hg-contributing: @@ -136,6 +144,9 @@ both the University Hospital of Liège and the Osimis company to act as the official guardians of the whole Orthanc ecosystem. +Also, make sure to read our :ref:`FAQ if submitting code +<submitting_code>`. + .. _hg-patch: @@ -214,7 +225,7 @@ by typing the following commands on their side:: $ cd /tmp - $ hg clone https://hg.orthanc-server.com/orthanc + $ hg clone https://hg.orthanc-server.com/orthanc/ $ cd /tmp/orthanc $ hg unbundle /tmp/contribution.bundle $ hg up -c default
--- a/Sphinx/source/developers/stone.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/developers/stone.rst Wed Apr 01 22:45:01 2020 +0200 @@ -4,10 +4,10 @@ ================ This section of the Orthanc Book will document `Stone of Orthanc -<http://www.orthanc-server.com/static.php?page=stone>`__. This is +<https://www.orthanc-server.com/static.php?page=stone>`__. This is work-in-progress. For the time being, documentation is provided through various sample applications that can be found in the `source distribution -<https://bitbucket.org/sjodogne/orthanc-stone/src/default/Applications/Samples/>`__. +<https://hg.orthanc-server.com/orthanc-stone/file/tip/Applications/Samples>`__.
--- a/Sphinx/source/dicom-guide.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/dicom-guide.rst Wed Apr 01 22:45:01 2020 +0200 @@ -7,18 +7,18 @@ This section of the Orthanc Book provides a **gentle, informal, -high-level introduction to DICOM**. We will try and map -DICOM's own concepts to a modern terminology that should hopefully be -more easy to understand for software engineers diving for the first -time into DICOM. Once the concepts of this page are understood, -interested readers are invited to read a more formal textbook about -DICOM, such as the so-called "`Practical introduction and survival -guide <http://www.springer.com/us/book/9783642108495>`__", or to read -the full `DICOM specification +high-level introduction to DICOM**. We will try and map DICOM's own +concepts to a modern terminology that should hopefully be more easy to +understand for software engineers diving for the first time into +DICOM. Once the concepts of this page are understood, interested +readers are invited to read a more formal textbook about DICOM, such +as the so-called "`Practical introduction and survival guide +<https://www.springer.com/us/book/9783642108495>`__", or to read the +full `DICOM specification <http://dicom.nema.org/medical/dicom/current/output/html/>`__. All the DICOM concepts that are defined in this introduction are -illustrated with `Orthanc <http://www.orthanc-server.com/>`__, a +illustrated with `Orthanc <https://www.orthanc-server.com/>`__, a lightweight, yet powerful standalone DICOM server for healthcare and medical research. As Orthanc is free and open-source software, it is a good companion to learn DICOM. @@ -128,7 +128,7 @@ <https://en.wikipedia.org/wiki/Medical_ultrasound>`__). `As written in its DICOM conformance statement -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/DicomConformanceStatement.txt>`__, +<https://hg.orthanc-server.com/orthanc/file/default/Resources/DicomConformanceStatement.txt>`__, the Orthanc software can receive, store and send any kind of DICOM images (i.e. all the standard transfer syntaxes are supported). Furthermore, Orthanc can :ref:`convert most uncompressed @@ -617,11 +617,12 @@ authentication and :ref:`SSL encryption <https>`. The :ref:`Orthanc Explorer <orthanc-explorer>` interface can transparently use this peer mechanism to send DICOM files over HTTP(S). -2. Resort to the `DICOMweb standard <http://www.dicomweb.org/>`__, - that is an extension to the DICOM standard specifying how to access - the content of a remote DICOM server through HTTP(S). Because the - peer mechanism is bound to Orthanc, DICOMweb offers a less - expressive, but more generic access to remote servers. - Importantly, a `DICOMweb plugin to Orthanc - <http://www.orthanc-server.com/static.php?page=dicomweb>`__ is +2. Resort to the `DICOMweb standard + <https://www.dicomstandard.org/dicomweb/>`__, that is an extension + to the DICOM standard specifying how to access the content of a + remote DICOM server through HTTP(S). Because the peer mechanism is + bound to Orthanc, DICOMweb offers a less expressive, but more + generic access to remote servers. Importantly, a `DICOMweb plugin + to Orthanc + <https://www.orthanc-server.com/static.php?page=dicomweb>`__ is freely available.
--- a/Sphinx/source/faq/compiling-old.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/compiling-old.rst Wed Apr 01 22:45:01 2020 +0200 @@ -7,7 +7,7 @@ This page summarizes the GNU/Linux build instructions that were used **up to Orthanc 0.7.0 (inclusive)**. Instructions for Orthanc above 0.7.0 can be found directly `inside the source package -<https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt>`_. +<https://hg.orthanc-server.com/orthanc/file/default/LinuxCompilation.txt>`_. Static linking -------------- @@ -61,7 +61,7 @@ $ cmake -DSTATIC_BUILD:BOOL=OFF -DSTANDALONE_BUILD:BOOL=ON -DUSE_DYNAMIC_JSONCPP:BOOL=ON -DDEBIAN_USE_GTEST_SOURCE_PACKAGE:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DDCMTK_LIBRARIES="wrap;oflog" This is the configuration from the `official Debian package -<http://anonscm.debian.org/cgit/debian-med/orthanc.git/tree/debian/orthanc.init>`_. +<https://salsa.debian.org/med-team/orthanc/-/blob/master/debian/orthanc.init>`_. Dynamic Linking on Fedora 18 and 19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -71,15 +71,14 @@ $ cmake -DSTATIC_BUILD:BOOL=OFF -DSTANDALONE_BUILD:BOOL=ON -DUSE_DYNAMIC_GOOGLE_LOG:BOOL=ON -DUSE_DYNAMIC_JSONCPP:BOOL=ON -DCMAKE_BUILD_TYPE=Debug This is the configuration from the `official Fedora package -<http://pkgs.fedoraproject.org/cgit/orthanc.git/tree/orthanc.spec?h=f18>`_. +<https://src.fedoraproject.org/rpms/orthanc/blob/master/f/orthanc.spec>`_. Static Linking on CentOS 6.3 and 6.4 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You have to build and install `CMake 2.8 from source -<https://cmake.org/download/>`_, or you can use -the cmake28 package from `EPEL -<https://admin.fedoraproject.org/pkgdb/package/rpms/cmake28/>`_. The +<https://cmake.org/download/>`_, or you can use the cmake28 package +from `EPEL <https://src.fedoraproject.org/rpms/cmake28>`_. The ``STATIC_BUILD=ON`` option will then work:: $ /usr/local/bin/cmake -DSTATIC_BUILD:BOOL=ON -DCMAKE_BUILD_TYPE=Debug
--- a/Sphinx/source/faq/compiling.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/compiling.rst Wed Apr 01 22:45:01 2020 +0200 @@ -7,7 +7,7 @@ --------------- * Orthanc >= 0.7.1: See the `build instructions - <https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt>`_ + <https://hg.orthanc-server.com/orthanc/file/default/LinuxCompilation.txt>`_ inside the source package. * Orthanc <= 0.7.0: See the :ref:`compiling-old`. @@ -30,7 +30,7 @@ ----------------------- See the `build instructions for Windows -<https://bitbucket.org/sjodogne/orthanc/src/default/INSTALL>`_ inside +<https://hg.orthanc-server.com/orthanc/file/default/INSTALL>`_ inside the source package. Under OS X @@ -39,7 +39,7 @@ The mainline of Orthanc can compile under Apple OS X, with the XCode compiler, since June 24th, 2014. See the `build instructions for Darwin -<https://bitbucket.org/sjodogne/orthanc/src/default/DarwinCompilation.txt>`_ +<https://hg.orthanc-server.com/orthanc/file/default/DarwinCompilation.txt>`_ inside the source package. Performance warning @@ -64,7 +64,7 @@ the third-party dependencies directly inside the Orthanc executable. This is the meaning of the ``-DSTATIC_BUILD=ON`` option, as described in the `INSTALL -<https://bitbucket.org/sjodogne/orthanc/src/default/INSTALL>`_ file of Orthanc. +<https://hg.orthanc-server.com/orthanc/file/default/INSTALL>`_ file of Orthanc. Such a static linking is very desirable under Windows, since the Orthanc binaries do not depend on any external DLL, which results in a
--- a/Sphinx/source/faq/crash.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/crash.rst Wed Apr 01 22:45:01 2020 +0200 @@ -64,7 +64,7 @@ above <segfault-plugin>` is available as the ``crash.cpp`` file, here is a sample debug session:: - $ wget http://lsb.orthanc-server.com/orthanc/debug/1.6.0/Orthanc + $ wget https://lsb.orthanc-server.com/orthanc/debug/1.6.0/Orthanc $ chmod +x ./Orthanc $ gcc -fPIC -shared ./crash.cpp -I ~/orthanc/Plugins/Include -o crash.so $ ulimit -c unlimited
--- a/Sphinx/source/faq/debugging.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/debugging.rst Wed Apr 01 22:45:01 2020 +0200 @@ -45,7 +45,7 @@ to debug Orthanc without compiling from sources. Here is a sample debug session:: - $ wget http://lsb.orthanc-server.com/orthanc/debug/1.6.0/Orthanc + $ wget https://lsb.orthanc-server.com/orthanc/debug/1.6.0/Orthanc $ chmod +x ./Orthanc $ gdb ./Orthanc Configuration.json (gdb) catch throw @@ -67,13 +67,13 @@ plugins precompiled using the LSB are also available at the following locations: -* `Orthanc core <http://lsb.orthanc-server.com/orthanc/debug/>`__ -* `DICOMweb plugin <http://lsb.orthanc-server.com/plugin-dicom-web/debug/>`__ -* `MySQL plugin <http://lsb.orthanc-server.com/plugin-mysql/debug/>`__ -* `Orthanc Web viewer <http://lsb.orthanc-server.com/plugin-webviewer/debug/>`__ -* `PostgreSQL plugin <http://lsb.orthanc-server.com/plugin-postgresql/debug/>`__ -* `Transfers accelerator plugin <http://lsb.orthanc-server.com/plugin-transfers/debug/>`__ -* `Whole-slide imaging <http://lsb.orthanc-server.com/whole-slide-imaging/debug/>`__ +* `Orthanc core <https://lsb.orthanc-server.com/orthanc/debug/>`__ +* `DICOMweb plugin <https://lsb.orthanc-server.com/plugin-dicom-web/debug/>`__ +* `MySQL plugin <https://lsb.orthanc-server.com/plugin-mysql/debug/>`__ +* `Orthanc Web viewer <https://lsb.orthanc-server.com/plugin-webviewer/debug/>`__ +* `PostgreSQL plugin <https://lsb.orthanc-server.com/plugin-postgresql/debug/>`__ +* `Transfers accelerator plugin <https://lsb.orthanc-server.com/plugin-transfers/debug/>`__ +* `Whole-slide imaging <https://lsb.orthanc-server.com/whole-slide-imaging/debug/>`__ Docker
--- a/Sphinx/source/faq/dicom.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/dicom.rst Wed Apr 01 22:45:01 2020 +0200 @@ -7,7 +7,7 @@ computer network are related to the configuration of these modalities. As preliminary debugging actions, you should: -* Make sure you use the `most recent version <http://www.orthanc-server.com/download.php>`_ of Orthanc. +* Make sure you use the `most recent version <https://www.orthanc-server.com/download.php>`_ of Orthanc. * Make sure the two computers can "ping" each other. * Turn off all the firewalls on the two computers (especially on Microsoft Windows). * Make sure the remote computer has `DICOM TLS encryption
--- a/Sphinx/source/faq/features.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/features.rst Wed Apr 01 22:45:01 2020 +0200 @@ -234,10 +234,10 @@ registry** below: * ``Metadata 4200`` is used by the plugin for :ref:`whole-slide imaging <wsi>`. -* ``Attachment 9997`` is used by the `Osimis WebViewer plugin <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ to store series information. -* ``Attachment 9998`` is used by the `Osimis WebViewer plugin <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ to store instance information. -* ``Attachment 9999`` is used by the `Osimis WebViewer plugin <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ to store annotations. -* ``Attachments 10000-13999`` are used by the `Osimis WebViewer plugin <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ to store reduced quality images. +* ``Attachment 9997`` is used by the :ref:`Osimis WebViewer plugin <osimis_webviewer>` to store series information. +* ``Attachment 9998`` is used by the :ref:`Osimis WebViewer plugin <osimis_webviewer>` to store instance information. +* ``Attachment 9999`` is used by the :ref:`Osimis WebViewer plugin <osimis_webviewer>` to store annotations. +* ``Attachments 10000-13999`` are used by the :ref:`Osimis WebViewer plugin <osimis_webviewer>` to store reduced quality images. Jobs
--- a/Sphinx/source/faq/https.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/https.rst Wed Apr 01 22:45:01 2020 +0200 @@ -40,6 +40,6 @@ Some interesting references about this topic can be found `here <http://www.devsec.org/info/ssl-cert.html>`__, `here -<http://www.akadia.com/services/ssh_test_certificate.html>`__, and +<https://www.akadia.com/services/ssh_test_certificate.html>`__, and `here -<http://stackoverflow.com/questions/991758/how-to-get-an-openssl-pem-file-from-key-and-crt-files>`__. +<https://stackoverflow.com/questions/991758/how-to-get-pem-file-from-key-and-crt-files>`__.
--- a/Sphinx/source/faq/improving-interface.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/improving-interface.rst Wed Apr 01 22:45:01 2020 +0200 @@ -43,10 +43,10 @@ funding for this development). In the meantime, you can also contact a company that provides **commercial support on the top of Orthanc** and that might have developed an advanced user interface. Currently, -`Osimis <http://osimis.io/>`_ is the only company ensuring such +`Osimis <https://www.osimis.io/>`_ is the only company ensuring such corporate services, but others might show up in the future. A `contact -form <http://www.orthanc-server.com/orthanc-pro.php>`_ is available on -the official Web page of Orthanc. +form <https://www.orthanc-server.com/orthanc-pro.php>`_ is available +on the official Web page of Orthanc. **Update (2017-10-03):** A team of Master students from `ULiège <https://www.uliege.be/>`__ is currently working on creating a
--- a/Sphinx/source/faq/licensing.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/licensing.rst Wed Apr 01 22:45:01 2020 +0200 @@ -68,14 +68,14 @@ The following table provides a simple summary of the most common situations, and indicates whether the use is accepted ("Yes"), -prevented ("No"), or restricted ("Dual licensing"): +forbidden ("No"), or restricted ("Dual licensing"): +-----------------------------------------------------+--------------------------------------------------------------------------------------------+ | | Mode of distribution of the third-party system, or of the third-party plugin/script | +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | Usage of the Orthanc ecosystem | Permissive | GPLv3 | AGPLv3 | Internal use | Proprietary software | Proprietary cloud | -| | (MIT, BSD, | | | | distributed to clients | platform | -| | Apache...) | | | | | | +| | (MIT, BSD, | | | | distributed to clients | platform or Web | +| | Apache...) | | | | | portal | +=====================================================+===============+=======+========+==============+========================+===================+ | Using Orthanc as such, even if some AGPL-licensed | N/A | N/A | N/A | Yes | Yes | Yes | | plugin is installed | | | | | | | @@ -92,6 +92,8 @@ | is hosted by an Orthanc server where some | | | | | | | | AGPL-licensed plugin is installed | | | | | | | +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ +| Creating a :ref:`Python script <python-plugin>` | No | No | Yes | Yes | Dual licensing | Dual licensing | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | Using a modified version of the GPL-licensed | No | Yes | Yes | Yes | Dual licensing | Yes | | code of Orthanc, or using a modified version of | | | | | | | | some GPL-licensed plugin, or reusing their original | | | | | | | @@ -113,9 +115,9 @@ its global architecture. * If your use case falls in a "**Dual licensing**" cell, please get in - touch with `Osimis <http://osimis.io/>`__, the commercial partner of - the Orthanc project that is the only entity entitled to grant a - `license exception + touch with `Osimis <https://www.osimis.io/>`__, the commercial + partner of the Orthanc project that is the only entity entitled to + grant a `license exception <https://www.fsf.org/blogs/rms/selling-exceptions>`__ to your company for the Orthanc core and its :ref:`associated official plugins <plugins-official>`. @@ -146,7 +148,7 @@ sells **CE-approved** versions of a Web viewer plugin. * You are kindly invited to cite the `reference paper about Orthanc - <https://link.springer.com/article/10.1007%2Fs10278-018-0082-y>`__ + <https://link.springer.com/article/10.1007/s10278-018-0082-y>`__ in your scientific work. * This is our own simplified, technical interpretation of the GPLv3+ @@ -232,23 +234,19 @@ the same e-mail address: ``orthanc-legal@osimis.io``. +.. _submitting_code: + Submitting code ^^^^^^^^^^^^^^^ Once the CLA onboarding process has succeeded, use `Mercurial <https://en.wikipedia.org/wiki/Mercurial>`__ to fork the official -repository of interest from BitBucket. Here are the location of those -repositories: - -* The `Orthanc server <https://bitbucket.org/sjodogne/orthanc/src>`__. +repository of interest from BitBucket. All the repositories are +centralized on our `self-hosted Mercurial server +<https://hg.orthanc-server.com/>`__. -* The `official plugins <https://bitbucket.org/sjodogne/>`__ originating from the University Hospital of Liège. - -* The `official plugins <https://bitbucket.org/osimis/>`__ originating from Osimis. - -Once you have finished modifying the code in your forked repository, -issue a `pull request -<https://confluence.atlassian.com/bitbucket/tutorial-learn-about-bitbucket-pull-requests-774243385.html>`__. +A :ref:`dedicated page <repositories>` explains how to submit +:ref:`simple patches <hg-patch>` or :ref:`full branches <hg-bundle>`. **Some words of warning:** @@ -272,11 +270,11 @@ should be focused on one very specific issue or feature. Large architectural changes are reserved for the core development team of Orthanc, as we must follow our `long-term roadmap - <https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__. + <https://hg.orthanc-server.com/orthanc/file/default/TODO>`__. * Unit testing is mandatory. Integration tests should be submitted to the `dedicated repository - <http://bitbucket.org/sjodogne/orthanc-tests/>`__. + <https://hg.orthanc-server.com/orthanc-tests/file/tip>`__. * In the case of a doubt wrt. a potential contribution, please discuss it on the `Orthanc Users
--- a/Sphinx/source/faq/log.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/log.rst Wed Apr 01 22:45:01 2020 +0200 @@ -44,7 +44,7 @@ Under Windows, if you used the official installer: 1. Download the `precompiled command-line version - <http://www.orthanc-server.com/download-windows.php>`__ of Orthanc. + <https://www.orthanc-server.com/download-windows.php>`__ of Orthanc. 2. Stop the Orthanc service. The actual process depends on your version of Windows.
--- a/Sphinx/source/faq/matlab.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/matlab.rst Wed Apr 01 22:45:01 2020 +0200 @@ -12,7 +12,7 @@ Both Matlab and Octave have access to HTTP servers thanks to their built-in `urlread() function -<http://nl.mathworks.com/help/matlab/ref/urlread.html>`__. Once must +<https://nl.mathworks.com/help/matlab/ref/urlread.html>`__. Once must simply install a Matlab/Octave library to decode JSON files. The `JSONLab toolkit <https://github.com/fangq/jsonlab>`__ works perfectly to this end.
--- a/Sphinx/source/faq/orthanc-ids.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/orthanc-ids.rst Wed Apr 01 22:45:01 2020 +0200 @@ -41,7 +41,7 @@ The actual implementation of the hashing is carried on by the `DicomInstanceHasher class -<https://bitbucket.org/sjodogne/orthanc/src/default/Core/DicomFormat/DicomInstanceHasher.cpp>`_. +<https://hg.orthanc-server.com/orthanc/file/default/Core/DicomFormat/DicomInstanceHasher.cpp>`_. The "Inexistent Tag" error
--- a/Sphinx/source/faq/orthanc-storage.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/orthanc-storage.rst Wed Apr 01 22:45:01 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://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/OrthancServer/Database/PrepareDatabase.sql>`__ +<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/OrthancServer/Database/PrepareDatabase.sql>`__ and `InstallTrackAttachmentsSize.sql -<https://bitbucket.org/sjodogne/orthanc/src/Orthanc-1.6.0/OrthancServer/Database/InstallTrackAttachmentsSize.sql>`__. +<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/OrthancServer/Database/InstallTrackAttachmentsSize.sql>`__. Direct access
--- a/Sphinx/source/faq/proprietary.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/proprietary.rst Wed Apr 01 22:45:01 2020 +0200 @@ -49,7 +49,7 @@ Finally, if you need to complement the commercial services of your official supplier, please note that you can also contact a company that provides **commercial support on the top of Orthanc**. Currently, -`Osimis <http://osimis.io/>`_ is the only company ensuring such +`Osimis <https://www.osimis.io/>`_ is the only company ensuring such corporate services, but others might show up in the future. A `contact -form <http://www.orthanc-server.com/orthanc-pro.php>`_ is available on -the official Web page of Orthanc. +form <https://www.orthanc-server.com/orthanc-pro.php>`_ is available +on the official Web page of Orthanc.
--- a/Sphinx/source/faq/rest-samples.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/rest-samples.rst Wed Apr 01 22:45:01 2020 +0200 @@ -10,11 +10,11 @@ dedicated section <rest-advanced>`. * Many working examples written in Python are `available in the source distribution - <https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/>`__. + <https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Python/>`__. * If you cannot find an example for some feature in this manual or in the Python examples, please check the `publicly available integration tests - <https://bitbucket.org/sjodogne/orthanc-tests/src/default/Tests/Tests.py>`__ + <https://hg.orthanc-server.com/orthanc-tests/file/tip/Tests/Tests.py>`__ that span most of the REST API. * Samples for the deprecated APIs are available below. @@ -50,7 +50,7 @@ *Note:* This API has been superseded by the ``/modalities/.../query`` URI. Please check the ``test_rest_query_retrieve`` `integration test -<https://bitbucket.org/sjodogne/orthanc-tests/src/default/Tests/Tests.py>`__. +<https://hg.orthanc-server.com/orthanc-tests/file/tip/Tests/Tests.py>`__. Using Orthanc to Ease WADO Querying (Deprecated) @@ -85,4 +85,4 @@ *Note:* This API has been superseded by the ``/modalities/.../query`` URI. Please check the ``test_rest_query_retrieve`` `integration test -<https://bitbucket.org/sjodogne/orthanc-tests/src/default/Tests/Tests.py>`__. +<https://hg.orthanc-server.com/orthanc-tests/file/tip/Tests/Tests.py>`__.
--- a/Sphinx/source/faq/supported-images.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/supported-images.rst Wed Apr 01 22:45:01 2020 +0200 @@ -5,7 +5,7 @@ Orthanc can **receive/store/send** any kind of standard DICOM files (cf. the `DICOM conformance statement -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/DicomConformanceStatement.txt>`__). +<https://hg.orthanc-server.com/orthanc/file/default/Resources/DicomConformanceStatement.txt>`__). Note that the ``UnknownSopClassAccepted`` :ref:`configuration option <configuration>` can be set to `true` if interfacing with modalities that are producing non-standard SOP classes. @@ -32,7 +32,7 @@ also be displayed from Orthanc Explorer. Other type of encodings are available in the `Web viewer plugin -<http://www.orthanc-server.com/static.php?page=web-viewer>`__, that +<https://www.orthanc-server.com/static.php?page=web-viewer>`__, that mostly supports whatever is supported by the well-known `GDCM toolkit <https://sourceforge.net/projects/gdcm/>`__ by Mathieu Malaterre. Note however that multiframe (notably cine) DICOM instances are currently
--- a/Sphinx/source/faq/transcoding.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/transcoding.rst Wed Apr 01 22:45:01 2020 +0200 @@ -13,7 +13,7 @@ Adding support for transcoding is one of the features that is pending on `our roadmap -<https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__, and for which +<https://hg.orthanc-server.com/orthanc/file/default/TODO>`__, and for which we are looking for industrial sponsors. @@ -108,7 +108,7 @@ ``OrthancPluginRegisterOnStoredInstanceCallback()`` function). A sample Lua script that converts every incoming DICOM file to the JPEG2k transfer syntax is `part of the Orthanc sources -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Lua/AutomatedJpeg2kCompression.lua>`__. +<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Lua/AutomatedJpeg2kCompression.lua>`__. Finally, as a fourth solution, it is possible to **combine two Orthanc
--- a/Sphinx/source/faq/troubleshooting.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/troubleshooting.rst Wed Apr 01 22:45:01 2020 +0200 @@ -5,7 +5,7 @@ As a general rule, when you encounter an issue, always make sure that you use the `most recent version -<http://www.orthanc-server.com/download.php>`__ of Orthanc. +<https://www.orthanc-server.com/download.php>`__ of Orthanc. Also make a search on the `Orthanc Users discussion group <https://groups.google.com/forum/#!forum/orthanc-users>`__, and make a @@ -65,14 +65,14 @@ * **Orthanc slows down if storing many files**: The default database engine that is built in Orthanc is `SQLite - <https://www.sqlite.org/>`__. As SQLite is above all a lightweight - database engine, it is not designed to `store very large datasets - <https://www.sqlite.org/whentouse.html>`__. If you are sure that you - have properly disabled run-time debug assertions (cf. above), but - still experience degradation in performance over time, you should - seriously consider switching to a more scalable database engine. To - this end, you can notably check out the :ref:`official PostgreSQL - plugin <postgresql>`. + <https://www.sqlite.org/index.html>`__. As SQLite is above all a + lightweight database engine, it is not designed to `store very large + datasets <https://www.sqlite.org/whentouse.html>`__. If you are sure + that you have properly disabled run-time debug assertions + (cf. above), but still experience degradation in performance over + time, you should seriously consider switching to a more scalable + database engine. To this end, you can notably check out the + :ref:`official PostgreSQL plugin <postgresql>`. As a rule of thumb, the performance of the default SQLite engine built in Orthanc should run fine up to about 50,000 DICOM instances. @@ -94,9 +94,9 @@ - As an alternative, you can disable IPv6 support. This is a Windows-specific problem that is discussed `here - <http://superuser.com/questions/43823/google-chrome-is-slow-to-localhost>`__ + <https://superuser.com/questions/43823/google-chrome-is-slow-to-localhost>`__ and `here - <http://stackoverflow.com/questions/1726585/firefox-and-chrome-slow-on-localhost-known-fix-doesnt-work-on-windows-7>`__. + <https://stackoverflow.com/questions/1726585/firefox-and-chrome-slow-on-localhost-known-fix-doesnt-work-on-windows-7>`__. * If you experience **slow DICOM transfers under GNU/Linux**, please read the `following bug report @@ -106,7 +106,7 @@ advantage of this patch, you need to statically link Orthanc against DCMTK by using the ``-DUSE_SYSTEM_DCMTK=OFF`` flag `when invoking CMake - <https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt>`__. + <https://hg.orthanc-server.com/orthanc/file/default/LinuxCompilation.txt>`__. Checking DICOM file integrity ----------------------------- @@ -136,9 +136,9 @@ * If **Orthanc crashes when handling one large DICOM file**, this most probably indicates a memory allocation error. Indeed, the `official Windows binaries - <http://www.orthanc-server.com/download-windows.php>`__ are compiled + <https://www.orthanc-server.com/download-windows.php>`__ are compiled using a 32bit compiler. As a consequence, Orthanc only has access to less than 4GB of RAM. If this is an important limitation for you, precompiled command-line versions of Orthanc for Windows 64bit are available courtesy of `Osimis - <http://www.osimis.io/en/download.html>`__. + <https://www.osimis.io/en/download.html>`__.
--- a/Sphinx/source/faq/video.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/video.rst Wed Apr 01 22:45:01 2020 +0200 @@ -20,10 +20,10 @@ distinction is also discussed in :ref:`another FAQ entry <supported-images>`. -If you also want to **play** the videos, the `Osimis WebViewer plugin -<https://bitbucket.org/osimis/osimis-webviewer-plugin>`__ is able to play -H.264 (MPEG4) videos and 2D+t (cine) sequences but not MPEG2 videos that -currently can not be played by Web browsers. +If you also want to **play** the videos, the :ref:`Osimis Web Viewer +plugin <osimis_webviewer>` is able to play H.264 (MPEG4) videos and +2D+t (cine) sequences but not MPEG2 videos that currently can not be +played by Web browsers. If your video is a 2D+t (cine) sequence, Orthanc can also display it inside a Web browser by at least 2 different means: @@ -32,7 +32,7 @@ Explorer <orthanc-explorer>` is able to display the individual frames and manually navigate between them through keyboard. 2. The official `Web viewer plugin - <http://www.orthanc-server.com/static.php?page=web-viewer>`__ will + <https://www.orthanc-server.com/static.php?page=web-viewer>`__ will allow you to use the mouse scroll wheel to display the successive frames of the video.
--- a/Sphinx/source/faq/viewers.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/viewers.rst Wed Apr 01 22:45:01 2020 +0200 @@ -14,24 +14,24 @@ <mailto:s.jodogne@orthanc-labs.com>`__ about other compatible FOSS): * `Open Health Imaging Foundation (OHIF) <https://docs.ohif.org/>`__. -* `Horos <https://www.horosproject.org/>`__. -* `Gingko CADx <https://www.ginkgo-cadx.com/>`__ (a +* `Horos <https://horosproject.org/>`__. +* `Gingko CADx <http://ginkgo-cadx.com/en/>`__ (a :ref:`configuration guide <ginkgo-cadx>` is available). * `3D Slicer <https://www.slicer.org/>`__. * `medInria <https://med.inria.fr/>`__. * `Aeskulap <https://github.com/pipelka/aeskulap>`__. -* `OsiriX <http://www.osirix-viewer.com/>`__ (note however that the +* `OsiriX <https://www.osirix-viewer.com/>`__ (note however that the openness of this particular software is `currently subject to discussion - <http://blog.purview.net/an-open-letter-to-the-osirix-community>`__). + <https://www.purview.net/blog/an-open-letter-to-the-osirix-community>`__). Make also sure to check out the following extensions to Orthanc: -* `Orthanc Web viewer plugin <http://www.orthanc-server.com/static.php?page=web-viewer>`__. +* `Orthanc Web viewer plugin <https://www.orthanc-server.com/static.php?page=web-viewer>`__. * `Osimis Web viewer plugin (Advanced version of the Orthanc Web viewer) <https://www.orthanc-server.com/static.php?page=osimis-web-viewer>`__. -* `ImageJ extension <http://www.orthanc-server.com/static.php?page=imagej>`__. -* `Stone of Orthanc <http://www.orthanc-server.com/static.php?page=stone>`__. +* `ImageJ extension <https://www.orthanc-server.com/static.php?page=imagej>`__. +* `Stone of Orthanc <https://www.orthanc-server.com/static.php?page=stone>`__. * `dwv-orthanc-plugin <https://github.com/ivmartel/dwv-orthanc-plugin>`__ by Yves Martelli, that embeds `dwv
--- a/Sphinx/source/faq/why-orthanc.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/why-orthanc.rst Wed Apr 01 22:45:01 2020 +0200 @@ -1,10 +1,9 @@ Why "Orthanc"? ============== -The spelling "`Orthanc -<https://en.wikipedia.org/wiki/Orthanc#Orthanc>`__" originates from -`J.R.R. Tolkien <https://en.wikipedia.org/wiki/J._R._R._Tolkien>`__'s -work. +The spelling "`Orthanc <https://en.wikipedia.org/wiki/Isengard>`__" +originates from `J.R.R. Tolkien +<https://en.wikipedia.org/wiki/J._R._R._Tolkien>`__'s work. Orthanc is the black tower of Isengard that houses one of the **palantíri**. A `palantír
--- a/Sphinx/source/faq/worklist.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/faq/worklist.rst Wed Apr 01 22:45:01 2020 +0200 @@ -24,10 +24,10 @@ distribution of Orthanc to serve the worklists stored in some folder on the filesystem. This sample plugin mimics the behavior of the ``wlmscpfs`` command-line tool from the `DCMTK software -<http://support.dcmtk.org/docs/wlmscpfs.html>`__. +<https://support.dcmtk.org/docs/wlmscpfs.html>`__. For more complex or integrated workflows where you must implement a custom MWL plugin, please check the `documentation of the part of the Orthanc plugin SDK -<http://sdk.orthanc-server.com/group__DicomCallbacks.html#ga23080c4e871b8428ede61d9841c10d76>`__ +<https://sdk.orthanc-server.com/group__DicomCallbacks.html#ga23080c4e871b8428ede61d9841c10d76>`__ that is related to the management of worklists.
--- a/Sphinx/source/index.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/index.rst Wed Apr 01 22:45:01 2020 +0200 @@ -8,7 +8,7 @@ This site documents Orthanc. If you want to access more general information about Orthanc, please go to the `official Web site -<http://www.orthanc-server.com>`_. +<https://www.orthanc-server.com>`_. Contents
--- a/Sphinx/source/plugins.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins.rst Wed Apr 01 22:45:01 2020 +0200 @@ -70,7 +70,7 @@ * `AWS S3 storage plugin <https://github.com/radpointhq/orthanc-s3-storage>`__: This plugin - by `Radpoint <https://www.radpoint.pl/>`__ makes Orthanc store its + 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 @@ -80,7 +80,7 @@ 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 <http://www.vpireveal.com/>`__ provides a plugin to +* `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 @@ -97,5 +97,5 @@ might contain plugins that are not tracked in this list. *Remark:* Do not hesitate to `contact us -<http://www.orthanc-server.com/static.php?page=contact>`__ if you have +<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/authorization.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/authorization.rst Wed Apr 01 22:45:01 2020 +0200 @@ -13,8 +13,8 @@ set to ``403`` (Forbidden). The `source code of this plugin -<https://bitbucket.org/osimis/orthanc-authorization>`__ is freely -available under the terms of the AGPLv3 license. +<https://hg.orthanc-server.com/orthanc-authorization/file/tip>`__ is +freely available under the terms of the AGPLv3 license. Compilation @@ -183,7 +183,7 @@ the cache entry will never expire. **Note:** The source code of the plugin contains a `basic example -<https://bitbucket.org/osimis/orthanc-authorization/src/default/Resources/TestService.js>`__ +<https://hg.orthanc-server.com/orthanc-authorization/file/tip/Resources/TestService.js>`__ of such a Web service written in node.js.
--- a/Sphinx/source/plugins/dicomweb.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/dicomweb.rst Wed Apr 01 22:45:01 2020 +0200 @@ -15,11 +15,11 @@ into a **DICOMweb client**. For general information, check out the `official homepage of the -plugins <http://www.orthanc-server.com/static.php?page=dicomweb>`__. +plugins <https://www.orthanc-server.com/static.php?page=dicomweb>`__. The full standard is not implemented yet, the supported features are `tracked in the repository -<https://bitbucket.org/sjodogne/orthanc-dicomweb/src/default/Status.txt>`__. +<https://hg.orthanc-server.com/orthanc-dicomweb/file/tip/Status.txt>`__. Compilation @@ -39,16 +39,16 @@ The compilation will produce a shared library ``OrthancDicomWeb`` that contains the DICOMweb plugin. Pre-compiled binaries for Microsoft Windows `are also available -<http://www.orthanc-server.com/browse.php?path=/plugin-dicom-web>`__, +<https://www.orthanc-server.com/browse.php?path=/plugin-dicom-web>`__, and are included in the `Windows installers <https://www.orthanc-server.com/download-windows.php>`__. A package for `Apple's Mac OS X -<http://localhost/~jodogne/orthanc/static.php?page=download-mac>`__ is -available courtesy of `Osimis <http://osimis.io/>`__. +<https://www.orthanc-server.com/static.php?page=download-mac>`__ is +available courtesy of `Osimis <https://www.osimis.io/>`__. *Remark:* Some older build instructions are also available in the `source distribution -<https://bitbucket.org/sjodogne/orthanc-dicomweb/src/default/Resources/BuildInstructions.txt>`__. +<https://hg.orthanc-server.com/orthanc-dicomweb/file/tip/Resources/BuildInstructions.txt>`__. Installation @@ -388,8 +388,8 @@ Here is a direct link to the DICOMweb client running on our demo server: -`http://demo.orthanc-server.com/dicom-web/app/client/index.html -<http://demo.orthanc-server.com/dicom-web/app/client/index.html>`__ +`https://demo.orthanc-server.com/dicom-web/app/client/index.html +<https://demo.orthanc-server.com/dicom-web/app/client/index.html>`__ @@ -399,7 +399,8 @@ Once your Orthanc server is properly configured (see above), you can make REST calls to the API of the DICOMweb server. For demonstration purpose, this section makes the assumption that the ``VIX`` dataset -provided by `OsiriX <http://www.osirix-viewer.com/datasets/>`__ has +provided by `OsiriX +<https://www.osirix-viewer.com/resources/dicom-image-library/>`__ has been uploaded to Orthanc. WADO-URI @@ -536,7 +537,8 @@ <https://en.wikipedia.org/wiki/Percent-encoding>`__. An user-friendly reference of the features available in QIDO-RS and -WADO-RS `can be found on this site <http://www.dicomweb.org/>`__. +WADO-RS `can be found on this site +<https://www.dicomstandard.org/dicomweb/>`__. Sending DICOM resources to a STOW-RS server @@ -649,12 +651,12 @@ Samples of how to call DICOMweb services from standalone applications are available for `Python -<https://bitbucket.org/sjodogne/orthanc-dicomweb/src/default/Resources/Samples/Python/>`__ +<https://hg.orthanc-server.com/orthanc-dicomweb/file/tip/Resources/Samples/Python>`__ and for `JavaScript -<https://bitbucket.org/sjodogne/orthanc-dicomweb/src/default/Resources/Samples/JavaScript>`__. +<https://hg.orthanc-server.com/orthanc-dicomweb/file/tip/Resources/Samples/JavaScript>`__. Integration tests are `available separately -<https://bitbucket.org/sjodogne/orthanc-tests/src/default/Plugins/DicomWeb/Run.py>`__, +<https://hg.orthanc-server.com/orthanc-tests/file/tip/Plugins/DicomWeb/Run.py>`__, and provide samples for more advanced features of the REST API (such as dynamically adding/updating/removing remote DICOMweb servers using HTTP PUT and DELETE methods).
--- a/Sphinx/source/plugins/google-cloud-platform.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/google-cloud-platform.rst Wed Apr 01 22:45:01 2020 +0200 @@ -11,8 +11,8 @@ ------------ Osimis freely provides the `source code -<https://bitbucket.org/osimis/orthanc-gcp/src>`__ of a plugin to -interface Orthanc with the Healthcare API of `Google Cloud Platform +<https://hg.orthanc-server.com/orthanc-gcp/file/tip/>`__ of a plugin +to interface Orthanc with the Healthcare API of `Google Cloud Platform (GCP) <https://en.wikipedia.org/wiki/Google_Cloud_Platform>`__ through `DICOMweb <https://www.dicomstandard.org/dicomweb/>`__. @@ -58,7 +58,7 @@ The compilation produces a shared library ``OrthancGoogleCloudPlatform`` that contains the GCP plugin. Pre-compiled binaries for Microsoft Windows `are available -<http://www.orthanc-server.com/browse.php?path=/plugin-google-cloud>`__, +<https://www.orthanc-server.com/browse.php?path=/plugin-google-cloud>`__, and are included in the `Windows installers <https://www.orthanc-server.com/download-windows.php>`__. @@ -125,14 +125,14 @@ ^^^^^^^^^^^^^^^ As explained on the `Google documentation -<https://cloud.google.com/docs/authentication/#service_accounts>`__, -*"a service account is a Google account that represents an -application, as opposed to representing an end user"*. This is -presumably the most common situation in the case of Orthanc. +<https://cloud.google.com/docs/authentication>`__, *"a service account +is a Google account that represents an application, as opposed to +representing an end user"*. This is presumably the most common +situation in the case of Orthanc. You first have to `create a service account -<https://cloud.google.com/docs/authentication/getting-started#creating_a_service_account>`__ -for your application. This will produce a JSON file (say, +<https://cloud.google.com/docs/authentication/getting-started>`__ for +your application. This will produce a JSON file (say, ``dicom-osimis.json``) that you have to store securely on the server that will run Orthanc. @@ -173,7 +173,7 @@ User account is an alternative to service account, and can be used *"when the application needs to access resources on behalf of an end user"* (check out the `Google documentation -<https://cloud.google.com/docs/authentication/#user_accounts>`__). +<https://cloud.google.com/docs/authentication/end-user>`__). .. highlight:: json
--- a/Sphinx/source/plugins/mysql.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/mysql.rst Wed Apr 01 22:45:01 2020 +0200 @@ -11,7 +11,7 @@ by a MySQL or a MariaDB database. For general information, check out the `official homepage of the -plugins <http://www.orthanc-server.com/static.php?page=mysql>`__. +plugins <https://www.orthanc-server.com/static.php?page=mysql>`__. **Warning:** According to `this thread on our discussion group <https://groups.google.com/d/msg/orthanc-users/yV3LSTh_TjI/Fb4ShaYMBAAJ>`__, @@ -47,7 +47,7 @@ ^^^^^^^^^^^^^^^^^ Pre-compiled binaries for Microsoft Windows `are also available -<http://www.orthanc-server.com/browse.php?path=/plugin-mysql>`__. +<https://www.orthanc-server.com/browse.php?path=/plugin-mysql>`__. Dynamic linking on Ubuntu 16.04 @@ -161,7 +161,7 @@ By default, the plugins lock the database (using `MySQL/MariaDB "GET_LOCK()" -<https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_get-lock>`__) +<https://dev.mysql.com/doc/refman/8.0/en/locking-functions.html>`__) to prevent other instances of Orthanc from using the same database. If you want several instances of Orthanc to share the same database, set the ``Lock`` option to ``false`` in the configuration file.
--- a/Sphinx/source/plugins/osimis-webviewer.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/osimis-webviewer.rst Wed Apr 01 22:45:01 2020 +0200 @@ -11,9 +11,9 @@ viewer plugin <webviewer>`. The Osimis plugin adds tools for measuring, for viewing multiple series, and for split-pane. -For general information, check out the `official homepage of the -plugin -<http://www.orthanc-server.com/static.php?page=osimis-web-viewer>`__. +For general information and a demonstration, check out the `official +homepage of the plugin +<https://www.orthanc-server.com/static.php?page=osimis-web-viewer>`__. Also `check out the source code <https://bitbucket.org/osimis/osimis-webviewer-plugin>`__. @@ -107,7 +107,7 @@ of the sets of codecs supported by the `DICOM standard <http://dicom.nema.org/medical/dicom/current/output/chtml/part05/PS3.5.html>`__ and those supported by the `web browsers - <https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats>`__. + <https://developer.mozilla.org/en-US/docs/Web/Media/Formats>`__. In short, this mostly comes down to just MPEG-4. - **Where are the annotations stored ?**
--- a/Sphinx/source/plugins/postgresql.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/postgresql.rst Wed Apr 01 22:45:01 2020 +0200 @@ -11,7 +11,7 @@ by a PostgreSQL database. For general information, check out the `official homepage of the -plugins <http://www.orthanc-server.com/static.php?page=postgresql>`__. +plugins <https://www.orthanc-server.com/static.php?page=postgresql>`__. @@ -42,10 +42,10 @@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Pre-compiled binaries for Microsoft Windows `are also available -<http://www.orthanc-server.com/browse.php?path=/plugin-postgresql>`__. +<https://www.orthanc-server.com/browse.php?path=/plugin-postgresql>`__. A package for `Apple's Mac OS X -<http://www.osimis.io/en/download.html>`__ -is available courtesy of `Osimis <http://osimis.io/>`__. +<https://www.osimis.io/en/download.html>`__ +is available courtesy of `Osimis <https://www.osimis.io/>`__. .. _postgresql-ubuntu1604: @@ -88,7 +88,8 @@ In such a situation, please add your version of PostgreSQL to the macro ``PostgreSQL_ADDITIONAL_VERSIONS`` that is defined at the end of the `Resources/CMake/PostgreSQLConfiguration.cmake file -<https://bitbucket.org/sjodogne/orthanc-databases/src/default/Resources/CMake/PostgreSQLConfiguration.cmake>`__ in the sources of the project. +<https://hg.orthanc-server.com/orthanc-databases/file/tip/Resources/CMake/PostgreSQLConfiguration.cmake>`__ +in the sources of the project. Usage @@ -100,7 +101,7 @@ version above 0.9.5. You then have to **create a database** dedicated to Orthanc on some PostgreSQL server. Please refer to the `PostgreSQL documentation -<https://www.postgresql.org/docs/current/static/tutorial-createdb.html>`__. +<https://www.postgresql.org/docs/current/tutorial-createdb.html>`__. Once Orthanc is installed and the database is created, you must add a section in the :ref:`configuration file <configuration>` that @@ -180,7 +181,7 @@ Instead of specifying explicit authentication parameters, you can also use the `PostgreSQL connection URIs syntax -<https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING>`__. For +<https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING>`__. For instance:: { @@ -199,7 +200,7 @@ **Remark:** The Debian Med project maintains `another useful set of instructions -<https://anonscm.debian.org/viewvc/debian-med/trunk/packages/orthanc-postgresql/trunk/debian/README.Debian?view=markup>`__. +<https://salsa.debian.org/med-team/orthanc-postgresql/-/blob/master/debian/README.Debian>`__. Advanced options @@ -218,7 +219,7 @@ By default, the plugins lock the database (using `PostgreSQL advisory locks -<https://www.postgresql.org/docs/current/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS>`__) +<https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS>`__) to prevent other instances of Orthanc from using the same PostgreSQL database. If you want several instances of Orthanc to share the same database, set the ``Lock`` option to ``false`` in the configuration @@ -280,5 +281,5 @@ This is due to a timeout in the PostgreSQL server. Please make sure to `enable keep-alive -<http://dba.stackexchange.com/questions/97534/is-there-a-timeout-option-for-remote-access-to-postgresql-database>`__ +<https://dba.stackexchange.com/questions/97534/is-there-a-timeout-option-for-remote-access-to-postgresql-database>`__ in the configuration of your PostgreSQL server
--- a/Sphinx/source/plugins/python.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/python.rst Wed Apr 01 22:45:01 2020 +0200 @@ -6,17 +6,163 @@ .. contents:: -Work-in-progress. +Overview +-------- + +This plugin can be used to write :ref:`Orthanc plugins +<creating-plugins>` using the `Python programming language +<https://en.wikipedia.org/wiki/Python_(programming_language)>`__ +instead of the more complex C/C++ programming languages. -The Python API is automatically generated from the `Orthanc plugin SDK -in C +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.5.7/Plugins/Include/orthanc/OrthancCPlugin.h>`__ using the `Clang <https://en.wikipedia.org/wiki/Clang>`__ compiler -front-end. The coverage of the C SDK is about 75% (105 functions are -automatically wrapped in Python out of a total of 139 functions in C). +front-end. + +As of initial release 1.0 of the plugin, the coverage of the C SDK is +about 75% (105 functions are automatically wrapped in Python out of a +total of 139 functions in the Orthanc SDK 1.5.7). + +Licensing +--------- + +Pay attention to the fact that this plugin is licensed under the terms +of the `AGPL license +<https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License>`__. + +This has an important consequence: If you distribute Orthanc to +clients together with one Python script, or if you put an Orthanc +server equipped with one Python script on a Web portal, you **must** +disclose the source code of your Python script to the Orthanc +community under the terms of the AGPL license. + +We suggest you to put the source code of your Python scripts on the +dedicated `"OrthancContributed" repository on GitHub +<https://github.com/jodogne/OrthancContributed/tree/master/Plugins>`__, +and/or to send it to the `Orthanc Users +<https://groups.google.com/forum/#!forum/orthanc-users>`__ discussion +group. + +Check out the :ref:`FAQ about licensing <licensing>` for more context. + + +Usage +----- + +Docker +...... + +.. highlight:: json + +The most direct way of starting Orthanc together with the Python +plugin is through :ref:`Docker <docker>`. Let's create the file +``/tmp/hello.py`` that contains the following basic Python script:: + + print('Hello world!') + +.. highlight:: json + +Let's also create the file ``/tmp/orthanc.json`` that contains the +following minimal :ref:`configuration for Orthanc <configuration>`:: + + { + "StorageDirectory" : "/var/lib/orthanc/db", + "RemoteAccessAllowed" : true, + "Plugins" : [ + "/usr/local/share/orthanc/plugins" + ], + "PythonScript" : "/etc/orthanc/hello.py" + } + +.. highlight:: bash + +Given these two files, Orthanc can be started as follows:: + + $ docker run -p 4242:4242 -p 8042:8042 --rm \ + -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro \ + -v /tmp/hello.py:/etc/orthanc/hello.py:ro \ + jodogne/orthanc-python + +.. highlight:: text + +You'll see the following excerpt in the log, which indicates that the Python plugin is properly loaded:: -This provides much more flexibility than the Lua scripts. + W0331 15:48:12.990661 PluginsManager.cpp:269] Registering plugin 'python' (version mainline) + W0331 15:48:12.990691 PluginsManager.cpp:168] Python plugin is initializing + W0331 15:48:12.990743 PluginsManager.cpp:168] Using Python script "hello.py" from directory: /etc/orthanc + W0331 15:48:12.990819 PluginsManager.cpp:168] Program name: /usr/local/sbin/Orthanc + Hello world! + + +Compiling from source +..................... + +.. highlight:: bash + +The procedure to compile this plugin from source is similar to that +for the :ref:`core of Orthanc <compiling>`. The following commands +should work for most UNIX-like distribution (including GNU/Linux):: + + $ mkdir Build + $ cd Build + $ cmake .. -DPYTHON_VERSION=3.7 -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release + $ make + +Before running CMake, make sure that the Python interpreter and its +associated development library are installed. On Ubuntu 18.04 LTS, you +would for instance install packages ``libpython3.7-dev`` and +``python3.7``. + +The compilation will produce the shared library ``OrthancPython``, +that can be loaded by properly setting the ``Plugins`` +:ref:`configuration option <configuration>` of Orthanc. +**Warning:** The shared library is only compatible with the Python +interpreter whose version corresponds to the value of the +``PYTHON_VERSION`` argument that was given to CMake. + + +Microsoft Windows +................. + +Pre-compiled binaries for Microsoft Windows `are also available +<https://www.orthanc-server.com/browse.php?path=/plugin-python>`__. + +Beware that one version of the Python plugin can only be run against +one version of the Python interpreter. This version is clearly +indicated in the name of the folder. + +As of release 1.0, the Orthanc project only provides pre-compiled +binaries for Microsoft Windows 32bit and Python 2.7. Even though this +version of Python is not supported anymore, it can still run on all +the versions of Microsoft Windows that have been released for more +than 10 years. + +.. highlight:: text + +You are of course free to compile the plugin from sources if you need +a more recent version. You'll have to explicitly specify the path to +your Python installation while invoking CMake. For instance:: + + C:\orthanc-python\Build> cmake .. -DPYTHON_VERSION=2.7 -DPYTHON_WINDOWS_ROOT=C:/Python27 \ + -DSTATIC_BUILD=ON -DCMAKE_BUILD_TYPE=Release -G "Visual Studio 15 2017" + + +Configuration options +--------------------- + +The only two configuration options that are available for this plugin +are the following: + +* ``PythonScript`` indicates where the Python script is located. If + this configuration option is not provided, the Python plugin is not + started. + +* ``PythonVerbose`` is a Boolean value to make the Python interpreter + verbose. + Samples ------- @@ -167,8 +313,8 @@ orthanc.RegisterOnChangeCallback(OnChange) -Render a thumbnail using PIL/Pillow -................................... +Rendering a thumbnail using PIL/Pillow +...................................... .. highlight:: python @@ -200,3 +346,157 @@ output.SendMethodNotAllowed('GET') orthanc.RegisterRestCallback('/pydicom/(.*)', DecodeInstance) # (*) + + +Performance and concurrency +--------------------------- + +.. highlight:: python + +Let us consider the following sample Python script that makes a +CPU-intensive computation on a REST callback:: + + import math + import orthanc + import time + + # CPU-intensive computation taking about 4 seconds + def SlowComputation(): + start = time.time() + for i in range(1000): + for j in range(30000): + math.sqrt(float(j)) + end = time.time() + duration = (end - start) + return 'computation done in %.03f seconds\n' % duration + + def OnRest(output, uri, **request): + answer = SlowComputation() + output.AnswerBuffer(answer, 'text/plain') + + orthanc.RegisterRestCallback('/computation', OnRest) + + +.. highlight:: text + +Calling this REST route from the command-line returns the time that is +needed to compute 30 million times a squared root on your CPU:: + + $ curl http://localhost:8042/computation + computation done in 4.208 seconds + +Now, let us call this route three times concurrently (we use bash):: + + $ (curl http://localhost:8042/computation & curl http://localhost:8042/computation & curl http://localhost:8042/computation ) + computation done in 11.262 seconds + computation done in 12.457 seconds + computation done in 13.360 seconds + +As can be seen, the computation time has tripled. This means that the +computations were not distributed across the available CPU cores. +This might seem surprising, as Orthanc is a threaded server (in +Orthanc, a pool of C++ threads serves concurrent requests). + +The explanation is that the Python interpreter (`CPython +<https://en.wikipedia.org/wiki/CPython>`__ actually) is built on the +top of a so-called `Global Interpreter Lock (GIL) +<https://en.wikipedia.org/wiki/Global_interpreter_lock>`__. The GIL is +basically a mutex that protects all the calls to the Python +interpreter. If multiple C++ threads from Orthanc call a Python +callback, only one can proceed at any given time. Note however that +the GIL only applies to the Python script: The baseline REST API of +Orthanc is not affected by the GIL. + +.. highlight:: python + +The solution is to use the `multiprocessing primitives +<https://docs.python.org/3/library/multiprocessing.html>`__ of Python. +The "master" Python interpreter that is initially started by the +Orthanc plugin, can start several `children processes +<https://en.wikipedia.org/wiki/Process_(computing)>`__, each of these +processes running a separate Python interpreter. This allows to +offload intensive computations from the "master" Python interpreter of +Orthanc onto those "slave" interpreters. The ``multiprocessing`` +library is actually quite straightforward to use:: + + import math + import multiprocessing + import orthanc + import signal + import time + + # CPU-intensive computation taking about 4 seconds + # (same code as above) + def SlowComputation(): + start = time.time() + for i in range(1000): + for j in range(30000): + math.sqrt(float(j)) + end = time.time() + duration = (end - start) + return 'computation done in %.03f seconds\n' % duration + + # Ignore CTRL+C in the slave processes + def Initializer(): + signal.signal(signal.SIGINT, signal.SIG_IGN) + + # Create a pool of 4 slave Python interpreters + POOL = multiprocessing.Pool(4, initializer = Initializer) + + def OnRest(output, uri, **request): + # Offload the call to "SlowComputation" onto one slave process. + # The GIL is unlocked until the slave sends its answer back. + answer = POOL.apply(SlowComputation) + output.AnswerBuffer(answer, 'text/plain') + + orthanc.RegisterRestCallback('/computation', OnRest) + +.. highlight:: text + +Here is now the result of calling this route three times concurrently:: + + $ (curl http://localhost:8042/computation & curl http://localhost:8042/computation & curl http://localhost:8042/computation ) + computation done in 4.211 seconds + computation done in 4.215 seconds + computation done in 4.225 seconds + +As can be seen, the calls to the Python computation now fully run in +parallel (the time is cut down from 12 seconds to 4 seconds, the same +as for one isolated request). + +Note also how the ``multiprocessing`` library allows to make a fine +control over the computational resources that are available to the +Python script: The number of "slave" interpreters can be easily +changed in the constructor of the ``multiprocessing.Pool`` object, and +are fully independent of the threads used by the Orthanc server. + +.. highlight:: python + +Very importantly, pay attention to the fact that only the "master" +Python interpreter has access to the Orthanc SDK. For instance, here +is how you would parse a DICOM file in a slave process:: + + import pydicom + import io + + def OffloadedDicomParsing(dicom): + # No access to the "orthanc" library here, as we are in the slave process + dataset = pydicom.dcmread(io.BytesIO(dicom)) + return str(dataset) + + def OnRest(output, uri, **request): + # The call to "orthanc.RestApiGet()" is only possible in the master process + dicom = orthanc.RestApiGet('/instances/19816330-cb02e1cf-df3a8fe8-bf510623-ccefe9f5/file') + answer = POOL.apply(OffloadedDicomParsing, args = (dicom, )) + output.AnswerBuffer(answer, 'text/plain') + +Communication primitives such as ``multiprocessing.Queue`` are +available to exchange messages from the "slave" Python interpreters to +the "master" Python interpreter if further calls to the Orthanc SDK +are required. + +Obviously, an in-depth discussion about the ``multiprocessing`` +library is out of the scope of this document. There are many +references available on Internet. Also, note that ``multithreading`` +is not useful here, as Python multithreading is also limited by the +GIL, and is more targeted at dealing with costly I/O operations.
--- a/Sphinx/source/plugins/serve-folders.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/serve-folders.rst Wed Apr 01 22:45:01 2020 +0200 @@ -12,7 +12,7 @@ The source code of this sample plugin is `available in the source distribution of Orthanc -<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ServeFolders/>`__ +<https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ServeFolders/>`__ (GPLv3+ license).
--- a/Sphinx/source/plugins/transfers.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/transfers.rst Wed Apr 01 22:45:01 2020 +0200 @@ -7,7 +7,7 @@ .. contents:: Osimis provides a `transfers accelerator plugin -<https://bitbucket.org/sjodogne/orthanc-transfers/src>`__ whose +<https://hg.orthanc-server.com/orthanc-transfers/file/tip>`__ whose purpose is to speed up the transfers of DICOM instances over networks (with respect to the native DICOM protocol or to the built-in :ref:`Orthanc peers <peers>` mechanism). @@ -84,7 +84,7 @@ ^^^^^^^^^^^^^^^^^ Pre-compiled binaries for Microsoft Windows `are available -<http://www.orthanc-server.com/browse.php?path=/plugin-transfers>`__. +<https://www.orthanc-server.com/browse.php?path=/plugin-transfers>`__. Dynamic linking on Ubuntu 16.04
--- a/Sphinx/source/plugins/webviewer.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/webviewer.rst Wed Apr 01 22:45:01 2020 +0200 @@ -9,7 +9,7 @@ This **official** plugin extends Orthanc with a Web viewer of medical images. For general information, check out the `official homepage of the -plugin <http://www.orthanc-server.com/static.php?page=web-viewer>`__. +plugin <https://www.orthanc-server.com/static.php?page=web-viewer>`__. Compilation @@ -29,11 +29,11 @@ The compilation will produce a shared library ``OrthancWebViewer`` that contains the Web viewer plugin. Pre-compiled binaries for Microsoft Windows `are also available -<http://www.orthanc-server.com/browse.php?path=/plugin-webviewer>`__. +<https://www.orthanc-server.com/browse.php?path=/plugin-webviewer>`__. *Remark:* Some older build instructions are also available in the `source distribution -<https://bitbucket.org/sjodogne/orthanc-webviewer/src/default/Resources/BuildInstructions.txt>`__. +<https://hg.orthanc-server.com/orthanc-webviewer/file/tip/Resources/BuildInstructions.txt>`__. Usage @@ -77,7 +77,7 @@ Explorer, a yellow button entitled ``Orthanc Web Viewer`` will show up. It will open the Web viewer for that particular series. See also the demonstration video on `official homepage of the plugin -<http://www.orthanc-server.com/static.php?page=web-viewer>`__. +<https://www.orthanc-server.com/static.php?page=web-viewer>`__. Advanced options @@ -111,7 +111,7 @@ * ``EnableGdcm`` specifies whether `GDCM <https://sourceforge.net/projects/gdcm/>`__ should be used to decode DICOM images, replacing the built-in decoder of Orthanc that - internally uses `DCMTK <http://dicom.offis.de/dcmtk.php.en>`__. + internally uses `DCMTK <https://dicom.offis.de/dcmtk.php.en>`__. This is notably necessary to deal with DICOM images encoded using `JPEG2000 <https://en.wikipedia.org/wiki/JPEG_2000>`__, as this format is not readily supported by the core version of DCMTK. By
--- a/Sphinx/source/plugins/worklists-plugin.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/worklists-plugin.rst Wed Apr 01 22:45:01 2020 +0200 @@ -12,12 +12,12 @@ The sample plugin will serve the worklists stored in some folder on the filesystem. This mimics the behavior of the ``wlmscpfs`` command-line tool from the `DCMTK software -<http://support.dcmtk.org/docs/wlmscpfs.html>`__. +<https://support.dcmtk.org/docs/wlmscpfs.html>`__. The worklists to be served must be put inside the folder of interest by an external application or script (note: files must have a ``.wl`` extension). ``dump2dcm`` might be a very `useful companion tool -<http://support.dcmtk.org/docs/dump2dcm.html>`__ to generate such +<https://support.dcmtk.org/docs/dump2dcm.html>`__ to generate such worklist files. Whenever a C-Find SCP request is issued to Orthanc, the plugin will read the content of the folder of interest to locate the worklists that match the request. As a consequence, the external @@ -26,7 +26,7 @@ The source code of this sample plugin is `available in the source distribution of Orthanc -<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__ +<https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ModalityWorklists/>`__ (GPLv3+ license). @@ -59,10 +59,10 @@ The folder ``WorklistsDatabase`` of the `source distribution of Orthanc -<https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__ +<https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ModalityWorklists/>`__ contains a database of sample worklists, that comes from the DCMTK source distribution, as described in the `FAQ entry #37 of the DCMTK -project <http://forum.dcmtk.org/viewtopic.php?t=84>`__. +project <https://forum.dcmtk.org/viewtopic.php?t=84>`__. Tutorial @@ -71,9 +71,9 @@ .. highlight:: javascript - Download `DCMTK utilities - <http://dicom.offis.de/download/dcmtk/release/bin/>`__. + <https://dicom.offis.de/download/dcmtk/release/bin/>`__. - Download sample `worklist files - <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/>`__ + <https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ModalityWorklists/>`__ from the Orthanc source code and copy them in a dedicated folder. - Generate the :ref:`default configuration of Orthanc <configuration>`. - Enable the ModalityWorklist plugin in your configuration file by adding this section:: @@ -93,7 +93,7 @@ - The tests below will be done using the ``findscu`` command-line tool from the `DCMTK utilities - <http://support.dcmtk.org/docs/findscu.html>`__. Assuming + <https://support.dcmtk.org/docs/findscu.html>`__. Assuming ``findscu`` and Orthanc runs on the same computer (i.e. on the ``127.0.0.1`` localhost), declare the ``FINDSCU`` AET to the list of know modalities:: @@ -130,7 +130,7 @@ - Start with an existing worklist file, some samples of which can be found in the `Orthanc source distribution - <https://bitbucket.org/sjodogne/orthanc/src/default/Plugins/Samples/ModalityWorklists/WorklistsDatabase/>`__ + <https://hg.orthanc-server.com/orthanc/file/default/Plugins/Samples/ModalityWorklists/WorklistsDatabase/>`__ (with ``.wl`` file extensions). - The worklist file is a DICOM file. Dump its content as a text file using ``dcmdump``:: @@ -184,7 +184,7 @@ When trying to retrieve worklists from a modality, one usually don't get debugging capabilities from the modality itself. Therefore, it is usually convenient to mimic the modality with ``findscu`` (provided by `DCMTK software -<http://support.dcmtk.org/docs/wlmscpfs.html>`__). +<https://support.dcmtk.org/docs/wlmscpfs.html>`__). - First, you should make sure that you have configured the Worklist plugin correctly and that you have pushed at least a ``.wl`` file in the worklist database. For this, you should issue this kind of command::
--- a/Sphinx/source/plugins/wsi.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/plugins/wsi.rst Wed Apr 01 22:45:01 2020 +0200 @@ -18,7 +18,7 @@ inside Orthanc, to a standard hierarchical TIFF image. For general information, check out the `official homepage of the -framework <http://www.orthanc-server.com/static.php?page=wsi>`__. +framework <https://www.orthanc-server.com/static.php?page=wsi>`__. Compilation @@ -55,7 +55,7 @@ ^^^^^^^^^^^^^^^^^ Note that pre-compiled binaries for Microsoft Windows `are available -<http://www.orthanc-server.com/browse.php?path=/whole-slide-imaging>`__. +<https://www.orthanc-server.com/browse.php?path=/whole-slide-imaging>`__. Dynamic linking @@ -113,7 +113,7 @@ images. This button will open the WSI viewer for that particular series. This behavior can be seen on the Orthanc Explorer interface running on our `WSI demonstration server -<http://wsi.orthanc-server.com/orthanc/app/explorer.html>`__. +<https://wsi.orthanc-server.com/orthanc/app/explorer.html>`__. @@ -221,7 +221,7 @@ images. Some commonplace image formats (PNG and JPEG) can be DICOM-ized as well. However, whole-slide images can come in many proprietary file formats. To re-encode such images, the DICOM-izer -relies upon the `OpenSlide toolbox <http://openslide.org/>`__. +relies upon the `OpenSlide toolbox <https://openslide.org/>`__. For this feature to work, you have to tell the command-line tool where it can find the OpenSlide shared library. GNU/Linux distributions @@ -232,7 +232,7 @@ $ ./OrthancWSIDicomizer --openslide=libopenslide.so CMU-1-JP2K-33005.svs Pre-compiled Microsoft Windows binaries of this shared library can be -found on the `OpenSlide homepage <http://openslide.org/download/>`__ (Note that +found on the `OpenSlide homepage <https://openslide.org/download/>`__ (Note that you should copy all .dll files from the OpenSlide package next to the OrthancWSIDicomizer executable)::
--- a/Sphinx/source/users/advanced-rest.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/advanced-rest.rst Wed Apr 01 22:45:01 2020 +0200 @@ -150,7 +150,7 @@ * Retry a job in ``Failed`` state by POST-ing to ``/jobs/.../resubmit``. The related state machine is depicted in the `implementation notes -<https://bitbucket.org/sjodogne/orthanc/raw/Orthanc-1.6.0/Resources/ImplementationNotes/JobsEngineStates.pdf>`__. +<https://hg.orthanc-server.com/orthanc/raw-file/tip/Resources/ImplementationNotes/JobsEngineStates.pdf>`__. @@ -272,4 +272,4 @@ writing this configuration to, say, ``/tmp/prometheus.yml``, then type:: - $ sudo docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml --rm prom/prometheus:v2.7.0 + $ sudo run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml --rm prom/prometheus:v2.7.0
--- a/Sphinx/source/users/backup.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/backup.rst Wed Apr 01 22:45:01 2020 +0200 @@ -34,7 +34,7 @@ for the official Debian package of Orthanc that automates this backup procedure. Note that in this script, the call to the SQLite command-line tool is used to force the `WAL replay -<http://www.sqlite.org/wal.html>`__. This manual replay should not be +<https://www.sqlite.org/wal.html>`__. This manual replay should not be necessary for Orthanc >= 0.7.3. @@ -44,15 +44,15 @@ The default SQLite engine is well adapted for DICOM routing or for image buffering tasks, but not for enterprise scenarios. In such cases, you are highly recommended to use the `PostgreSQL back-end -<http://www.orthanc-server.com/static.php?page=postgresql>`__ or the +<https://www.orthanc-server.com/static.php?page=postgresql>`__ or the `MySQL/MariaDB back-end -<http://www.orthanc-server.com/static.php?page=mysql>`__. +<https://www.orthanc-server.com/static.php?page=mysql>`__. If using PostgreSQL, you can do hot backups (i.e. while Orthanc is running), and you benefit from all the flexibility of PostgreSQL backup. These procedures are out of the scope of this manual. Please check the `official backup and restore manual -<https://www.postgresql.org/docs/devel/static/backup.html>`__. +<https://www.postgresql.org/docs/devel/backup.html>`__. Similar backup procedures are available for MySQL and MariaDB as well. Please check the official manual about `database backup methods
--- a/Sphinx/source/users/configuration.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/configuration.rst Wed Apr 01 22:45:01 2020 +0200 @@ -5,12 +5,11 @@ ======================== Configuring Orthanc simply consists in providing a configuration file. -Orthanc has numerous configuration that are documented in the `default +Orthanc has numerous configuration that are documented in the `default configuration file -<https://bitbucket.org/sjodogne/orthanc/raw/Orthanc-1.6.0/Resources/Configuration.json>`_. This +<https://hg.orthanc-server.com/orthanc/file/Orthanc-1.6.0/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:: +format. You can generate this file file with the following call:: $ Orthanc --config=Configuration.json
--- a/Sphinx/source/users/cookbook.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/cookbook.rst Wed Apr 01 22:45:01 2020 +0200 @@ -15,11 +15,11 @@ To obtain the Orthanc binaries, you have several possibilities: -* `Download pre-compiled packages <http://www.orthanc-server.com/download.php>`__. +* `Download pre-compiled packages <https://www.orthanc-server.com/download.php>`__. * :ref:`Use Docker <docker>`. * :ref:`Compile Orthanc by yourself <compiling>`. * External contributors are also maintaining `Vagrant VM for Orthanc - <https://github.com/jodogne/OrthancContributed/blob/master/Links.md#vagrant>`__. + <https://github.com/jodogne/OrthancContributed/blob/master/Links.md#user-content-vagrant>`__. .. _orthanc-explorer: @@ -66,8 +66,8 @@ connect your modality to Orthanc. You can also use the standard command-line tool ``storescu`` from the -`DCMTK software <http://dicom.offis.de/dcmtk.php.en>`__ to -manually send DICOM images to Orthanc, for instance:: +`DCMTK software <https://dicom.offis.de/dcmtk.php.en>`__ to manually +send DICOM images to Orthanc, for instance:: $ storescu -aec ORTHANC localhost 4242 *.dcm
--- a/Sphinx/source/users/docker.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/docker.rst Wed Apr 01 22:45:01 2020 +0200 @@ -26,8 +26,8 @@ configuration system that is inherited from the Debian packages (i.e. manual edition of the configuration files). -* Our commercial partner `Osimis <http://osimis.io>`__ also `publishes - separated Docker images +* Our commercial partner `Osimis <https://www.osimis.io>`__ also + `publishes separated Docker images <https://osimis.atlassian.net/wiki/spaces/OKB/pages/26738689/How+to+use+osimis+orthanc+Docker+images>`__. These ``osimis/orthanc`` images are used by the technical team of Osimis in order to provide professional support to their customers, @@ -51,7 +51,7 @@ The following command will start the core of Orthanc, with all the plugins disabled:: - $ sudo docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc + $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc Once Orthanc is running, use Mozilla Firefox at URL http://localhost:8042/ to interact with Orthanc. The default username @@ -61,18 +61,18 @@ development is in continuous progress. Do not forget to regularly update the Docker image to benefit from the latest features:: - $ sudo docker pull jodogne/orthanc + $ docker pull jodogne/orthanc If more stability is required, you can select the official release of Orthanc to be run:: - $ sudo docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.6.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc:1.6.0 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):: - $ sudo docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc /etc/orthanc --verbose + $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc /etc/orthanc --verbose Usage, with plugins enabled @@ -84,8 +84,20 @@ implementation <dicomweb>`, and its :ref:`whole-slide imaging viewer <wsi>`:: - $ sudo docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins + $ docker run -p 4242:4242 -p 8042:8042 --rm jodogne/orthanc-plugins + +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.6.0 +If you have an interest in the :ref:`Python plugin <python-plugin>`, +you can use the ``orthanc-python`` image. The latter image is a +heavier version of the ``orthanc-plugins`` image, as it embeds the +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.6.0 + Fine-tuning the configuration ----------------------------- @@ -98,12 +110,12 @@ You can generate a custom configuration file for Orthanc as follows:: - $ sudo docker run --rm --entrypoint=cat jodogne/orthanc /etc/orthanc/orthanc.json > /tmp/orthanc.json + $ docker run --rm --entrypoint=cat jodogne/orthanc /etc/orthanc/orthanc.json > /tmp/orthanc.json Then, edit the just-generated file ``/tmp/orthanc.json`` and restart Orthanc with your updated configuration:: - $ sudo docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc + $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc Making the Orthanc database persistent @@ -115,7 +127,7 @@ container to some path in the filesystem of your Linux host, e.g.:: $ mkdir /tmp/orthanc-db - $ sudo docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.6.0 + $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc-db/:/var/lib/orthanc/db/ jodogne/orthanc:1.6.0 Whole-slide imaging support @@ -125,13 +137,13 @@ whole-slide imaging (WSI) <wsi>`. For instance, the following command will start the WSI viewer plugin transparently together with Orthanc:: - $ sudo docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins + $ docker run -p 4242:4242 -p 8042:8042 --rm --name orthanc-wsi jodogne/orthanc-plugins Note that we gave the name ``orthanc-wsi`` to this new Docker container. Then, the Dicomizer command-line tool can be invoked as follows:: - $ sudo docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.tif:/tmp/Source.tif:ro jodogne/orthanc-plugins --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 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ /tmp/Source.tif This command needs a few explanations: @@ -156,10 +168,10 @@ expected format). If you have a source image that is not a hierarchical TIFF, you must -instruct the Dicomizer to use `OpenSlide <http://openslide.org/>`__ to -decode it by adding the ``--openslide`` option:: +instruct the Dicomizer to use `OpenSlide <https://openslide.org/>`__ +to decode it by adding the ``--openslide`` option:: - $ sudo docker run -t -i --rm --link=orthanc-wsi:orthanc --entrypoint=OrthancWSIDicomizer -v /tmp/Source.svs:/tmp/Source.svs:ro jodogne/orthanc-plugins --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 --username=orthanc --password=orthanc --orthanc=http://orthanc:8042/ --openslide=libopenslide.so /tmp/Source.svs PostgreSQL and Orthanc inside Docker @@ -167,20 +179,20 @@ It is possible to run both Orthanc and PostgreSQL inside Docker. First, start the official PostgreSQL container:: - $ sudo docker run --name some-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=pgpassword --rm postgres + $ docker run --name some-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=pgpassword --rm postgres Open another shell, and create a database to host the Orthanc database:: - $ sudo docker run -it --link some-postgres:postgres --rm postgres sh -c 'echo "CREATE DATABASE orthanc;" | exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres' + $ docker run -it --link some-postgres:postgres --rm postgres sh -c 'echo "CREATE DATABASE orthanc;" | exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres' You will have to type the password (cf. the environment variable ``POSTGRES_PASSWORD`` above that it set to ``pgpassword``). Then, retrieve the IP and the port of the PostgreSQL container, together with the default Orthanc configuration file:: - $ sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' some-postgres - $ sudo docker inspect --format '{{ .NetworkSettings.Ports }}' some-postgres - $ sudo docker run --rm --entrypoint=cat jodogne/orthanc-plugins /etc/orthanc/orthanc.json > /tmp/orthanc.json + $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' some-postgres + $ docker inspect --format '{{ .NetworkSettings.Ports }}' some-postgres + $ docker run --rm --entrypoint=cat jodogne/orthanc-plugins /etc/orthanc/orthanc.json > /tmp/orthanc.json .. highlight:: json @@ -201,7 +213,7 @@ Finally, you can start Orthanc:: - $ sudo docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins + $ docker run -p 4242:4242 -p 8042:8042 --rm -v /tmp/orthanc.json:/etc/orthanc/orthanc.json:ro jodogne/orthanc-plugins Debugging @@ -212,15 +224,15 @@ For debugging purpose, you can start an interactive bash session as follows:: - $ sudo docker run -i -t --rm --entrypoint=bash jodogne/orthanc - $ sudo docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins + $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc + $ docker run -i -t --rm --entrypoint=bash jodogne/orthanc-plugins For developers and power users, the images ``jodogne/orthanc-debug`` contain the Orthanc core compiled in debug mode (i.e. with runtime assertions enabled, and including debugging symbols). A ``gdb`` command-line session can be started as follows:: - $ sudo docker run -i -t --rm --entrypoint=bash --network=host --cap-add=SYS_PTRACE -p 4242:4242 -p 8042:8042 jodogne/orthanc-debug + $ docker run -i -t --rm --entrypoint=bash --network=host --cap-add=SYS_PTRACE -p 4242:4242 -p 8042:8042 jodogne/orthanc-debug # gdb --args Orthanc /etc/orthanc/ --verbose Exceptions can be automatically caught by launching ``gdb`` as follows::
--- a/Sphinx/source/users/lua.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/lua.rst Wed Apr 01 22:45:01 2020 +0200 @@ -13,7 +13,7 @@ scripting. Many other examples are `available in the source distribution -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Lua/>`__. +<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Lua/>`__. Installing a Lua script @@ -27,7 +27,8 @@ To install it by the **configuration file** method, you just have to specify the path to the file containing the Lua script in the -``LuaScripts`` variable. +``LuaScripts`` variable. A comma-separated list of paths can be +specified to install multiple scripts. To upload a script stored in the file "``script.lua``" through the **REST API**, use the following command:: @@ -45,9 +46,8 @@ *Note:* The ``--data-binary`` cURL option is used instead of ``--data`` to prevent the interpretation of newlines by cURL, which is `mandatory for the proper evaluation -<http://stackoverflow.com/questions/3872427/how-to-send-line-break-with-curl>`__ of the possible -comments inside the Lua script. - +<https://stackoverflow.com/questions/3872427/how-to-send-line-break-with-curl>`__ +of the possible comments inside the Lua script. Lua API ------- @@ -58,7 +58,7 @@ Callbacks to react to events ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The Lua engine of Orthanc comes invokes the following callbacks that +The Lua engine of Orthanc invokes the following callbacks that are triggered on various events. Here are the **generic events**: * ``function Initialize()``: Invoked as soon as the Orthanc server is started. @@ -108,7 +108,7 @@ protocol. This allows to inspect the content of the C-Find query, and possibly modify it if a patch is needed for some manufacturer. A `sample script is available - <https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Lua/IncomingFindRequestFilter.lua>`__. + <https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Lua/IncomingFindRequestFilter.lua>`__. Some other **resource-related events** are available: @@ -137,12 +137,15 @@ SCP, several callbacks are successively invoked to specify which **transfer syntaxes** are accepted for the association. These callbacks are listed in `this sample script -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Lua/TransferSyntaxEnable.lua>`__. +<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Lua/TransferSyntaxEnable.lua>`__. *Note:* All of these callbacks are guaranteed to be **invoked in mutual exclusion**. This implies that Lua scripting in Orthanc does not support any kind of concurrency. +If a callback is specified multiple times in separate scripts, the +event handler of the latest loaded script is used. + .. _lua-rest:
--- a/Sphinx/source/users/replication.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/replication.rst Wed Apr 01 22:45:01 2020 +0200 @@ -71,7 +71,7 @@ The most direct way to replicate an instance of Orthanc consists in using the `ImportDicomFiles -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`_ +<https://hg.orthanc-server.com/orthanc/file/default/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 @@ -86,9 +86,9 @@ * The source Orthanc uses the default storage area on the filesystem (i.e. the source Orthanc does *not* store its DICOM files using one of the "storage area plugins", such as for `PostgreSQL - <http://www.orthanc-server.com/static.php?page=postgresql>`_ or + <https://www.orthanc-server.com/static.php?page=postgresql>`_ or `MySQL/MariaDB - <http://www.orthanc-server.com/static.php?page=mysql>`_ - but it's + <https://www.orthanc-server.com/static.php?page=mysql>`_ - but it's OK for the source of Orthanc to use any of the "index plugins"), * You have command-line access to the source Orthanc, and * The transparent :ref:`compression` of the DICOM instances is @@ -111,7 +111,7 @@ ------------------- If you cannot use the first method, you can use the `Replicate -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/Replicate.py>`_ +<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Python/Replicate.py>`_ script of the Orthanc distribution. This script will use the REST API of both the source and target instances of Orthanc. For instance::
--- a/Sphinx/source/users/rest.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/rest.rst Wed Apr 01 22:45:01 2020 +0200 @@ -52,12 +52,12 @@ Note that in the case of curl, setting the ``Expect`` HTTP Header will significantly `reduce the execution time of POST requests -<http://stackoverflow.com/questions/463144/php-http-post-fails-when-curl-data-1024/463277#463277>`__:: +<https://stackoverflow.com/questions/463144/php-http-post-fails-when-curl-data-1024/463277#463277>`__:: $ 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 -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__ +<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/ImportDicomFiles/ImportDicomFiles.py>`__ that recursively upload the content of some folder into Orthanc using the REST API:: @@ -598,7 +598,7 @@ The list of the resources to be sent are given as a JSON array. In this case, a single DICOM connection is used. `Sample code is available - <https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/HighPerformanceAutoRouting.py>`__. + <https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Python/HighPerformanceAutoRouting.py>`__. Note that the list of resources to be sent can include the :ref:`Orthanc identifiers <orthanc-ids>` of entire patients, @@ -922,7 +922,7 @@ $ curl 'http://localhost:8042/changes?limit=100&since=922' A `sample code in the source distribution -<https://bitbucket.org/sjodogne/orthanc/src/default/Resources/Samples/Python/ChangesLoop.py>`__ +<https://hg.orthanc-server.com/orthanc/file/default/Resources/Samples/Python/ChangesLoop.py>`__ shows how to use this Changes API to implement a polling loop. @@ -1011,7 +1011,7 @@ * The full documentation of the REST API is maintained as an online spreadsheet accessible from the `documentation part of the official Web site - <http://www.orthanc-server.com/static.php?page=documentation>`__ + <https://www.orthanc-server.com/static.php?page=documentation>`__ (click on the *Reference of the REST API* button). * A documentation of the REST API in the OpenAPI/Swagger format is `available as work-in-progress <https://api.orthanc-server.com/>`__.
--- a/Sphinx/source/users/storage-commitment.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/storage-commitment.rst Wed Apr 01 22:45:01 2020 +0200 @@ -183,7 +183,7 @@ The custom storage commitment SCP is installed in the Orthanc core by using the ``OrthancPluginRegisterStorageCommitmentScpCallback()`` -function of the `plugin SDK <http://sdk.orthanc-server.com/>`__. +function of the `plugin SDK <https://sdk.orthanc-server.com/>`__. Importantly, this primitive frees the plugin developer from manually creating the Orthanc jobs. One job is transparently created by the @@ -192,7 +192,7 @@ instances. Note that a `sample plugin -<https://bitbucket.org/sjodogne/orthanc/src/storage-commitment/Plugins/Samples/StorageCommitmentScp/>`__ +<https://hg.orthanc-server.com/orthanc/file/tip/Plugins/Samples/StorageCommitmentScp>`__ is also available in the source distribution of Orthanc.
--- a/Sphinx/source/users/support.rst Wed Apr 01 22:44:38 2020 +0200 +++ b/Sphinx/source/users/support.rst Wed Apr 01 22:45:01 2020 +0200 @@ -25,12 +25,12 @@ <https://groups.google.com/forum/#!forum/orthanc-users>`__. 7. Check out the ``Pending changes in the mainline`` section of the `NEWS file - <https://bitbucket.org/sjodogne/orthanc/src/default/NEWS>`__, as + <https://hg.orthanc-server.com/orthanc/file/default/NEWS>`__, as your issue might already be solved in the mainline of Orthanc (i.e. in the cutting-edge version of Orthanc since the last stable official release). 8. Carefully read the `TODO file - <https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__ that + <https://hg.orthanc-server.com/orthanc/file/default/TODO>`__ that contains our roadmap, as you might be requesting a feature that is currently pending in our backlog (i.e. not implemented yet). 9. Have a look for the issue in the `official bug tracker