Mercurial > hg > orthanc-book
view Sphinx/source/contributing.rst @ 978:e7a3b3d76f1c
documentation of new options in Python plugin 4.1
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 31 Aug 2023 19:35:02 +0200 |
parents | 2f8ee0aef0a6 |
children | 46e2941b57dd |
line wrap: on
line source
.. _contributing: Contributing to Orthanc ======================= .. toctree:: :hidden: unanswered-forum.rst .. note:: Here are the main features we would like to get soon implemented as free and open-source code in the Orthanc ecosystem. To make this happen, **we need your support**! * **Orthanc Core**: - Continue improving the :ref:`Orthanc Explorer 2 <orthanc-explorer-2>` User Interface - Support of DICOM C-GET SCU * **Stone Web viewer**: - Save/load annotations - Internationalization/translations - MPR volume rendering - Viewer dedicated to nuclear medicine and radiotherapy - Rendering of DICOM GSPS * **Plugins**: - :ref:`Worklist plugin <worklist>` to interface with REST API, HL7 or Mirth Please `get in touch with Sébastien Jodogne's research lab <https://uclouvain.be/fr/repertoires/sebastien.jodogne>`__ if you want to use such features in the context of **research projects or scientific publications**, or `get in touch with the Orthanc Team <info@orthanc.team>`__ if you want to **financially sponsor** these developments. If you find Orthanc useful and wish to contribute to its development, here are some tasks you can take in charge that would greatly help us: * **Non-coding tasks**: - Use Orthanc in the real life. ;) - Advertise about Orthanc, notably on social networks (we are active on `Facebook <https://www.facebook.com/orthancdicom/>`__ and `Twitter <https://twitter.com/OrthancServer>`__). - Answer our `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 <https://link.springer.com/article/10.1007/s10278-018-0082-y>`__ in your research work. - Answer questions posted to the `mailing list <https://groups.google.com/forum/#!forum/orthanc-users>`_. - **Important**: A page list the :ref:`old questions that are not fully answered yet <unanswered_forum>`. Consider answering these topics too! - Improve the text of the `Orthanc Book and REST API documentation <https://hg.orthanc-server.com/orthanc-book/file/default>`__ (check out the instructions provided in the `README file <https://hg.orthanc-server.com/orthanc-book/file/default/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). - Index external contributions inside the `Links.md <https://github.com/jodogne/OrthancContributed/blob/master/Links.md>`_ file. * **Maintenance tasks**: - Report problems together with sample DICOM images and possible workarounds on the dedicated `issue tracker <http://bugs.orthanc-server.com/>`_. - Package Orthanc and its associated plugins for more UNIX or GNU/Linux distributions (e.g. Ubuntu PPA, RHEL/`EPEL <https://fedoraproject.org/wiki/EPEL>`__, CentOS, openSUSE...). - Take ownership of the now-orphaned `Fedora package <https://src.fedoraproject.org/rpms/orthanc>`__. Check out the related `issue 1677806 <https://bugzilla.redhat.com/show_bug.cgi?id=1677806>`__ and `issue 1843127 <https://bugzilla.redhat.com/show_bug.cgi?id=1843127>`__. - Take care of :ref:`Debian/Ubuntu backporting <debian-packages>`. - Share your maintenance scripts or sample code inside the "`Orthanc Contributed <https://github.com/jodogne/OrthancContributed>`_" public GitHub repository, via pull requests. - Help with the integration of Orthanc together with our friend free and open-source projects, notably `GNU Health <https://www.orthanc-server.com/resources/orthanccon2019/GNUHealthCon-02-AxelBraun.pdf>`__, but also `OpenEMR <https://community.open-emr.org/t/project-pacs-server-integration/13706/15>`__, `GNUmed <https://en.wikipedia.org/wiki/GNUmed>`__... * **Coding tasks**: - Have a look at the TODO file containing our `official roadmap <https://hg.orthanc-server.com/orthanc/file/default/TODO>`__. - The Orthanc project will happily accept patches in the core of Orthanc and in its associated official plugins. Please read the :ref:`dedicated FAQ entry <cla>`. - Interface Orthanc with other software (e.g. 3D Slicer, Matlab/Octave, Python, Horos, dicompyler...). Check the `already supported frameworks <https://www.orthanc-server.com/static.php?page=resources>`_. - Develop :ref:`C/C++/Python plugins extending the Orthanc core <plugins>`. Here are some ideas of possible plugins: + Create a :ref:`more advanced Web interface <improving-interface>` than the built-in Orthanc Explorer. + Extend the :ref:`sample modality worklist plugin <worklist>` so that it manages the worklists (i.e. add/remove items) with a REST API or HL7 messages, instead of reading them from some folder on the filesystem. + `Encapsulate a video into a DICOM file <https://stackoverflow.com/questions/28698888/creating-h-264-avc-dicom-file-with-dcmtk/28737338#28737338>`__ by calling some REST route, similarly to the ``/tools/create-dicom`` :ref:`route to encapsulate PDF <pdf>`. + Similarly to video and PDF (cf. item above), `wrap/unwrap a STL (3D mesh) to/from a DICOM file <http://dicom.nema.org/medical/dicom/2020b/output/chtml/part03/sect_A.85.html>`__ by calling some REST route. This is notably useful for dentistry (dental implants) or orthopaedics, yet even cutting-edge research about 3D-printing of organs. In complement, provide a `FreeCAD extension <https://twitter.com/sjodogne/status/1299632772915625984>`__ to import/export such STL files from/to Orthanc. + Create a plugin to edit DICOM files (add, update or remove DICOM tags). + Create samples of :ref:`Python plugins <python-plugin>` to take care of HL7 messages, especially for :ref:`merging patients <split-merge>` (which is a `typical HL7 event <https://twitter.com/ZeClint/status/1192086039160086529?s=20>`__ to be handled by the PACS, not by the RIS). Reference: Events ``Axx`` of Chapter 3 ("Patient Administration") in the HL7 v2.9 specification. ``ADT`` messages have also been `discussed in the past on the Orthanc forum <https://groups.google.com/g/orthanc-users/c/Spjtcj9vSPo/m/ktUArWxUDQAJ>`__. + Create a `DICOM proxy <https://groups.google.com/g/orthanc-users/c/15dYEm4Tguw/m/PoldpTOQAQAJ>`__ (to share a single connection on a PACS by several DICOM clients/viewers), or a `DICOMweb proxy <https://groups.google.com/g/orthanc-users/c/AQ6qs0TgO6I/m/WxdOVEeKBAAJ>`__ (to turn a DICOM-only PACS into a DICOMweb server). This could be done as a :ref:`Python plugin <python-plugin>` by wrapping the C-FIND and C-MOVE callbacks in the Python API. + Get involved in the call for ideas by Salim Kanoun about a `DICOM router built on the top of Orthanc <https://groups.google.com/g/orthanc-users/c/tx7E1RQuKIY/m/_GsrRZljBgAJ>`__. - Always remember that he **recommended way of contributing to the source code of Orthanc is by creating C/C++/Python plugins, or by creating external software that use the REST API**. If the current plugin SDK is insufficient for you to develop some feature as a plugin, do not hesitate to request an extension to the Orthanc SDK on the `mailing list <https://groups.google.com/forum/#!forum/orthanc-users>`_. * **Financial support**: - Check out our :ref:`FAQ about donations <donations>`. - Since February 2022, you are invited to fund the Orthanc project through its `Open Collective <https://opencollective.com/orthanc>`__ page. The funds collected there will help us maintain Orthanc, release new features and answer questions on the Orthanc Users Group. - Buying professional services is also a good way to make the Orthanc project sustainable in the long term. Check out the :ref:`professional services provided by our community <support-freelancers>`.