Mercurial > hg > orthanc-book
view Sphinx/source/plugins.rst @ 1013:ab270400aae1
python: overriding core API
author | Alain Mazy <am@osimis.io> |
---|---|
date | Tue, 09 Jan 2024 11:50:17 +0100 |
parents | 3b62529bfe91 |
children | 683f238333cf |
line wrap: on
line source
.. _plugins: Plugins ======= .. contents:: Overview -------- The core of Orthanc can be extended through **plugins**. A plugin takes the form of a shared library (``.DLL`` under Windows, ``.so`` under GNU/Linux, ``.dylib`` under Apple OS X...). A plugin can do various things, among others: * Serving new **Web applications** that have full access to the REST API of Orthanc, which makes easy to handle DICOM images from JavaScript code. * Replacing **the way DICOM images are decoded** (e.g. the official :ref:`Web viewer plugin <webviewer>` introduces the decoding of JPEG2000 images, which is not available in the core of Orthanc). * Replacing the default **database back-end** of Orthanc (that is built upon SQLite) by another (:ref:`PostgreSQL <postgresql>`, :ref:`MySQL <mysql>`, SQL Server...). * Creating **new REST APIs** on the top of the Orthanc built-in API (as in in the official :ref:`DICOMweb <dicomweb>` plugin). * **Reacting** to the arrival of new DICOM images or other DICOM-related events so as to carry on automated processing. * ... Developers external to the official Orthanc project are :ref:`invited to contribute <contributing>` to the C/C++ part of Orthanc by creating third-party plugins. A specific section of the Orthanc Book explains :ref:`how to create new Orthanc plugins <creating-plugins>`. .. _plugins-official: Index of the official plugins ----------------------------- From Osimis and University Hospital of Liège ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. toctree:: :maxdepth: 1 plugins/webviewer.rst plugins/dicomweb.rst plugins/postgresql.rst plugins/wsi.rst plugins/worklists-plugin.rst plugins/serve-folders.rst plugins/gdcm.rst plugins/stone-webviewer.rst .. _plugins-osimis: From Osimis ^^^^^^^^^^^ .. toctree:: :maxdepth: 1 plugins/mysql.rst plugins/transfers.rst plugins/google-cloud-platform.rst plugins/python.rst plugins/object-storage.rst plugins/odbc.rst plugins/osimis-webviewer.rst plugins/authorization.rst plugins/housekeeper.rst plugins/orthanc-explorer-2.rst plugins/delayed-deletion-plugin.rst .. _plugins-uclouvain: From UCLouvain ^^^^^^^^^^^^^^ .. toctree:: :maxdepth: 1 plugins/ohif.rst plugins/volview.rst plugins/tcia.rst plugins/indexer.rst plugins/neuro.rst plugins/multitenant-dicom.rst plugins/java.rst .. _plugins-contributed: Index of the contributed plugins -------------------------------- C/C++ plugins ^^^^^^^^^^^^^ * `AWS S3 storage plugin <https://github.com/radpointhq/orthanc-s3-storage>`__: This plugin by `Radpoint <https://radpoint.pl/>`__ makes Orthanc store its DICOM files into an `Amazon S3 bucket <https://en.wikipedia.org/wiki/Amazon_S3>`__. * `DWV Orthanc Plugin <https://github.com/ivmartel/dwv-orthanc-plugin>`__: This plugin by Yves Martelli is based on `dwv <https://github.com/ivmartel/dwv/wiki>`__ and extends Orthanc with a Web viewer of DICOM images. * Another Web viewer is provided courtesy of `Emsy Chan <https://groups.google.com/d/msg/orthanc-users/EC5Z2KaM4Hs/MG3KkzhCDAAJ>`__. * `VPI Reveal <https://www.vpireveal.com/>`__ provides a plugin to "write the DICOM records in a normal Windows-readable file hierarchy (patient-study-series-DICOM file) at a location called ``VPIStorage`` that can then be imported into VPI Reveal." `Check out their source code <https://github.com/jodogne/OrthancContributed/tree/master/Plugins/orthancVPIRevealPlugin>`__. * `Doc Cirrus <https://www.doc-cirrus.com/>`__ is working on `MongoDB <https://en.wikipedia.org/wiki/MongoDB>`__ database plugins. Check out their `source code <https://github.com/Doc-Cirrus/orthanc-mongodb>`__ and the `associated description <https://github.com/jodogne/OrthancContributed/tree/master/Plugins/orthanc-mongodb>`__. Python plugins ^^^^^^^^^^^^^^ * Julian Hartig maintains a `Python plugin <https://github.com/crispinus2/orthanc-gdt>`__ called ``orthanc-gdt``, in order to glue Orthanc to the `GDT interface most German AIS <https://en.wikipedia.org/wiki/XDT>`__ (Arztinformationssysteme - as opposed to e.g. the RIS used by radiologists) use for communicating with external applications and devices. This topic is further discussed on the `Orthanc Users forum <https://groups.google.com/d/msg/orthanc-users/NO7MnWzKsAc/5hEVxymWBQAJ>`__. * Stephen Douglas Scotti maintains an `integrated Docker package <https://github.com/sscotti/PACS_Integration>`__, that provides a portal application using Laravel (which demonstrates pagination and some other features), and some MPPS and MWL features. * Walco van Loon maintains `Orthanc Server Extensions <https://github.com/walkIT-nl/orthanc-server-extensions>`__ as *"A simple Orthanc python plugin based framework to extend Orthanc's feature set with testable python scripts."*. Check out the original announcement on the `Orthanc Users forum <https://groups.google.com/g/orthanc-users/c/q3Tncx3b6os/m/iFLq85fKAgAJ>`__. Rust plugins ^^^^^^^^^^^^ As the Rust language can produce shared libraries that are binary compatible with the `C ABI <https://en.wikipedia.org/wiki/Application_binary_interface>`__, it is possible to create plugins using Rust: * Andrew Webber provides `Rust plugins <https://github.com/andrewwebber/orthanc-rust-plugins>`__ showcasing integration with Orthanc, notably a S3 storage (CRUD) and a change notification. Check out the original announcement on the `Orthanc Users forum <https://groups.google.com/g/orthanc-users/c/bDNBLMqXlEk/m/sGgzS5ZVBwAJ>`__. Other ^^^^^ * Check out the `OrthancContributed repository on GitHub <https://github.com/jodogne/OrthancContributed/tree/master/Plugins>`__, that might contain plugins that are not tracked in this list. * **Important:** Do not hesitate to `contact us <https://www.orthanc-server.com/static.php?page=contact>`__ if you have developed a plugin so that we can promote it in the list above!