view Sphinx/source/faq/worklist.rst @ 1013:ab270400aae1

python: overriding core API
author Alain Mazy <am@osimis.io>
date Tue, 09 Jan 2024 11:50:17 +0100
parents 05b106383b2a
children
line wrap: on
line source

.. _worklist:

Does Orthanc support worklists?
===============================

Orthanc supports DICOM Modality Worklists (MWL) through its `plugin
SDK
<https://github.com/jodogne/OrthancContributed/tree/master/Plugins>`__.
In other words, Orthanc can act as a worklist server (C-Find SCP), but
an user-defined plugin must be provided to answer a list of worklists
given a MWL query.

The rationale for using plugins instead of providing a built-in MWL
mechanism, is that the way worklists are generated is very specific to
the clinical flows and to the manufacturer of your `RIS system
<https://en.wikipedia.org/wiki/Radiology_information_system>`__.
Indeed, depending on the situation, worklists can be generated either
from HL7 messages, from calls to a Web service (e.g. through FHIR), or
from a direct access to some RIS database. It is thus up to the
Orthanc user to provide the worklist generator that is best suited for
her use.

A :ref:`sample plugin <worklists-plugin>` is available in the source
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
<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
<https://orthanc.uclouvain.be/sdk/group__DicomCallbacks.html#ga23080c4e871b8428ede61d9841c10d76>`__
that is related to the management of worklists.

Custom MWL plugin can also be implemented using :ref:`Python plugins
<python_worklists>`.  This is especially useful to easily create
bridges between Orthanc, HL7 messages, RIS systems and `FHIR
<https://www.hl7.org/fhir/overview.html>`__ stores. Indeed, Python
provides many tools to handle HL7 or FHIR such as `python-hl7 library
<https://python-hl7.readthedocs.io/en/latest/>`__.