Plugins

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 Web viewer plugin 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 (PostgreSQL, MySQL, SQL Server…).

  • Creating new REST APIs on the top of the Orthanc built-in API (as in in the official 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 invited to contribute to the C/C++ part of Orthanc by creating third-party plugins. A specific section of the Orthanc Book explains how to create new Orthanc plugins.

Index of the contributed plugins

C/C++ plugins

Python plugins

  • Julian Hartig maintains a Python plugin called orthanc-gdt, in order to glue Orthanc to the GDT interface most German AIS (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.

  • Stephen Douglas Scotti maintains an integrated Docker package, 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 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.

Rust plugins

As the Rust language can produce shared libraries that are binary compatible with the C ABI, it is possible to create plugins using Rust:

  • Andrew Webber provides 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.

Other