view TODO @ 2375:3ec85ff48374

New security-related options: "DicomAlwaysAllowEcho"
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 25 Aug 2017 16:45:08 +0200
parents 2208e0230b08
children 32bea64e070b
line wrap: on
line source

=======================
=== Orthanc Roadmap ===
=======================

The wishlist from Orthanc users is available on Trello:
https://trello.com/b/gcn33tDM/orthanc-wishlist


=======
General
=======

* Configure an user-defined site UID root if generating DICOM UIDs
  ("FromDcmtkBridge::GenerateUuid()")
* Support "/preview" and "/matlab" for LUT color images
* Improve handling of errors in the command queue:
  https://groups.google.com/d/msg/orthanc-users/--njEbqcDDI/rBu8XL-Mm-cJ
* Support partial file retrieval in Orthanc::HttpClient
* Support retry counter in Orthanc::HttpClient
* Option to enable DNS lookups in DICOM: https://goo.gl/woa35Z


============
Dependencies
============

* Switch to CivetWeb because of licensing issues with recent
  versions of Mongoose (versions > 3.8 are GPLv2 and not GPLv2+):
  https://www.mail-archive.com/mongoose-users@googlegroups.com/msg00625.html
* Switch from libiconv to libICU (http://site.icu-project.org/download),
  as recommended by Boost:
  http://www.boost.org/doc/libs/1_64_0/libs/locale/doc/html/building_boost_locale.html


========
REST API
========

----------
Short-term
----------

* Create multi-frame images with /tools/create-dicom (by adding a
  "MultiFrame" flag to avoid creating a series)
* In the POST /instances, add a ?force=true query arguments to force Orthanc to replace 
  the uploaded file even if it already exists in Orthanc.  This is useful when transcoding
  an image outside Orthanc and reuploading it.  Since it has the same ids, its Orthanc ID
  will be the same as the previous one.
* In the /studies/{id}/anonymize route, add an option to remove secondary captures.
  They usually contains Patient info in the image.  The SOPClassUID might be used to
  identify such secondary captures.

---------
Long-term
---------

* Stick to the JSONapi or JAREST guidelines for a "v2" of the API:
  https://groups.google.com/forum/#!msg/orthanc-users/Bag-SwEE9ZI/-w7QXI6p7-oJ
  http://www.admiraalit.nl/jarest/


=====
DICOM
=====

----------
Short-term
----------

* Support C-GET: 
  http://dclunie.blogspot.be/2016/05/to-c-move-is-human-to-c-get-divine.html
* Check Big Endian transfer syntax in ParsedDicomFile::EmbedImage and
  DicomImageDecoder

---------
Long-term
---------

* Support DICOM TLS (cf. "--enable-tls" in storescp)
* Support Storage Commitment:
  https://groups.google.com/forum/#!msg/orthanc-users/VZOn8St65jw/s8kg_OHesj0J


=======
Plugins
=======

---
SDK
---

* Image transcoding API
* Add plugins for normalized operations (notably so as to support
  Print SCU/SCP):
  https://www.medicalconnections.co.uk/kb/DICOM_Print_Service

----------------
Ideas of plugins
----------------

* Complex anonymization, with recursive mapping of UIDs
  https://bitbucket.org/sjodogne/orthanc/issues/46/
* DICOM-RT primitives (RT-STRUCT, RT-PLAN, RT-DOSE)
* Converter to/from NIfTI
* MySQL database plugin
* Decode JPEG2k with grok: https://github.com/GrokImageCompression/grok
* Generate dynamic HTTP content using Lua:
  https://groups.google.com/d/msg/orthanc-users/KompazkxRSs/5Rh03mzgDAAJ
* More generally, expose more callbacks of the plugin SDK in Lua:
  https://groups.google.com/d/msg/orthanc-users/_FbiRHuXPGM/J-OAv7zaCAAJ
* Authorization plugin for the DICOM protocol:
  https://groups.google.com/d/msg/orthanc-users/Wv-QEwTE0IA/rvJxoOjcAQAJ


===
Lua
===

* Configure HTTP headers from Lua (in HttpGet(), HttpPost(),
  HttpPut(), HttpDelete(), RestApiGet(), RestApiPost(), RestApiPut()
  and RestApiDelete().
  https://groups.google.com/forum/#!msg/orthanc-users/WNnW187OILM/6XX_bm96BwAJ


===========
Performance
===========


============
Orthanc Book
============


================
Code refactoring
================

* Use Semaphore::Locker everywhere (instead of explicit
  Release() and Acquire())
* Avoid direct calls to FromDcmtkBridge (make most of its 
  methods private), go through ParsedDicomFile wherever possible


=================
Platform-specific
=================

---------
Packaging
---------

* CentOS and RHEL through EPEL:
  http://fedoraproject.org/wiki/EPEL_Package_Maintainers

------------------------
Big-endian architectures
------------------------

* Check the generated 16bpp PNG images

-----------------
Microsoft Windows
-----------------

* Add compatibility with non-ASCII paths (Orthanc expresses its paths
  as UTF-8 strings, but Windows expects them to be translated to the 
  system locale)


=====================
External applications
=====================

* Create REST bindings with Slicer
* Create REST bindings with Horos/OsiriX