annotate TODO @ 5809:023a99146dd0 attach-custom-data

merged find-refactoring -> attach-custom-data
author Alain Mazy <am@orthanc.team>
date Tue, 24 Sep 2024 12:53:43 +0200
parents 8279eaab0d1d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5080
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
1 TODO_CUSTOM_DATA branch
5084
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
2 - add REVISIONS in AttachedFiles + Metadata in SQLite since we change the DB schema
5083
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents: 5081
diff changeset
3 - add revisions and customData in all Database plugins
75e949689c08 PluginDatabaseV4 to handle customData
Alain Mazy <am@osimis.io>
parents: 5081
diff changeset
4 - check if we can play with GlobalProperty_DatabasePatchLevel instead of upgrading the DB version !
5080
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
5 - upgrade DB automatically such that it does not need a specific launch with --update , add --downgrade + --no-auto-upgrade command lines
5084
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
6 - refuse to instantiate a PluginStorage3 if a DBv4 is not instantiated !
5080
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
7 - handle all TODO_CUSTOM_DATA
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
8 - check /attachments/... routes for path returned
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
9 - AdvancedStoragePlugin
5084
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
10 - show warning if a tag is missing when generating the path from tags (+ option to disable this warning)
5080
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
11 - generate path from tags from resource (CreateAttachment)
5084
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
12 - add an instanceId or parentSeriesId arg in CreateInstance ?
5081
c673997507ea advanced storage cont
Alain Mazy <am@osimis.io>
parents: 5080
diff changeset
13 - implement a 'legacy' root path to group all files with missing tags or path too long
5085
79f98ee4f04b cosmetic
Alain Mazy <am@osimis.io>
parents: 5084
diff changeset
14 - avoid error AdvancedStorage - Path to the default storage area should be an absolute path '"OrthancStorage"' when using PG and no StorageDirectory has been defined
5084
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
15 - document that, once you have used the AdvancedStoragePlugin and stored DICOM files, you can not downgrade Orthanc to a previous Orthanc
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
16 without loosing access to the DICOM files
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
17 - write integration test for advanced-storage:
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
18 - launch 1.11.2
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
19 - upload 1 file
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
20 - launch 1.12.0 with advanced-storage plugin with a non default namingScheme
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
21 - upload 1 file
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
22 - access + delete initial file
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
23
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
24 - write integration test for transitions from one DB to the other (for each DB plugin):
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
25 - launch 1.11.2,
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
26 - upload 2 files,
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
27 - launch 1.12.0,
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
28 - access + delete one file,
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
29 - upload one file,
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
30 - launch 1.11.2 again,
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
31 - access + delete last 2 files
9770d537880d added support for revision in SQLite + avoid upgrading DB version
Alain Mazy <am@osimis.io>
parents: 5083
diff changeset
32
5080
d7274e43ea7c allow plugins to store a customData in the Attachments table to e.g. store custom paths without requiring an external DB
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
33
2163
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2162
diff changeset
34 =======================
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2162
diff changeset
35 === Orthanc Roadmap ===
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2162
diff changeset
36 =======================
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37
4707
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4662
diff changeset
38 For higher-level ideas in the roadmap, please first read the
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4662
diff changeset
39 "Contributing to Orthanc" section of the Orthanc Book:
5432
59e3b6f8c5be migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5409
diff changeset
40 https://orthanc.uclouvain.be/book/contributing.html
4707
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4662
diff changeset
41
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42
4978
2cfa50d8eb60 Speed-up handling of DicomModalitiesInStudy in C-Find and tools/find queries
Alain Mazy <am@osimis.io>
parents: 4954
diff changeset
43 Some features are being funded by an OpenCollective one-time donations.
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
44 selected features are marked with priorities ((1) - higher, (2) - medium, (3) - nice to have)
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
45
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
46 =======
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
47 General
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48 =======
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
49
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50 * Configure an user-defined site UID root if generating DICOM UIDs
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 ("FromDcmtkBridge::GenerateUuid()")
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 * Improve handling of errors in the command queue:
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53 https://groups.google.com/d/msg/orthanc-users/--njEbqcDDI/rBu8XL-Mm-cJ
2178
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2163
diff changeset
54 * Support partial file retrieval in Orthanc::HttpClient
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2163
diff changeset
55 * Support retry counter in Orthanc::HttpClient
4662
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4654
diff changeset
56 * Option to enable DNS lookups in DICOM:
5432
59e3b6f8c5be migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5409
diff changeset
57 https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.9.3/OrthancFramework/Sources/OrthancFramework.cpp#l88
4643
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
58 * Toolbox::ComputeMD5() fails on files larger than 4GB
4841
Alain Mazy <am@osimis.io>
parents: 4837
diff changeset
59 * Add an option to run Orthanc in read-only mode both for DICOM and for Rest API.
5450
9ffd6d18daf3 log lines now contain the thread name
Alain Mazy <am@osimis.io>
parents: 5432
diff changeset
60 * Logging: add more specific information to contextualize the logs.
5166
Alain Mazy <am@osimis.io>
parents: 5165
diff changeset
61 For a DICOM Transfer, that would be nice to include the modality in the context + a study identifier or a job id.
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
62 * (1) Accept extra DICOM tags dictionaries in the DCMTK format '.dic' (easier to use than declare
4885
Alain Mazy <am@osimis.io>
parents: 4877
diff changeset
63 them in the Orthanc configuration file). Even the standard dictionaries could be
Alain Mazy <am@osimis.io>
parents: 4877
diff changeset
64 overriden by these custom dictionaries.
5013
Alain Mazy <am@osimis.io>
parents: 5010
diff changeset
65 * Add configurations to enable/disable warnings:
Alain Mazy <am@osimis.io>
parents: 5010
diff changeset
66 - Modifying an instance while keeping its original SOPInstanceUID: This should be avoided!
5034
Alain Mazy <am@osimis.io>
parents: 5033
diff changeset
67 - Modifying a study while keeping its original StudyInstanceUID: This should be avoided!
5391
Alain Mazy <am@osimis.io>
parents: 5388
diff changeset
68 * Store the job registry in a dedicatd table in DB ?
Alain Mazy <am@osimis.io>
parents: 5388
diff changeset
69 https://discourse.orthanc-server.org/t/performance-issue-when-adding-a-lot-of-jobs-in-the-queue/3915/2
Alain Mazy <am@osimis.io>
parents: 5388
diff changeset
70 Note: that might also be the right time to have a central jobs registry when working
Alain Mazy <am@osimis.io>
parents: 5388
diff changeset
71 with multiple Orthanc instances on the same DB.
5727
Alain Mazy <am@orthanc.team>
parents: 5687
diff changeset
72 Note: the json serialization of a job "content" can be very large -> compress it before saving it to DB ?
5400
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
73 * Right now, some Stable events never occurs (e.g. when Orthanc is restarted before the event is triggered).
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
74 Since these events are used to e.g. generate dicom-web cache (or update it !), we should try
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
75 to make sure these events always happen.
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
76 - Generate the events when setting IsStable=true when starting an Orthanc (ok for SQLite) ?
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
77 - Also consider the use case of an Orthanc cluster that is being scaled-down just after one Orthanc instance
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
78 has received a few instances -> we can not only check for missing stable events at startup since no Orthanc will start.
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
79 We would need to maintain the list of "unstable" resources in DB instead of memory only.
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
80 * In prometheus metrics, implement Histograms or Exponential Histograms to measure durations. Right now, we only provide
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
81 "average" durations that are not very relevant
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
82 (https://opentelemetry.io/docs/specs/otel/metrics/data-model/#histogram)
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
83 - for job durations (+ have one histogram for each job)
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
84 - for HTTP request handling
Alain Mazy <am@osimis.io>
parents: 5391
diff changeset
85 - ...
5409
Alain Mazy <am@osimis.io>
parents: 5408
diff changeset
86 * Investigate if one could fix KeepAlive race conditions:
Alain Mazy <am@osimis.io>
parents: 5408
diff changeset
87 https://discourse.orthanc-server.org/t/socket-hangup-with-rest-api/4023/3
5557
87c0fbc8f457 todo: cache invalidation
Alain Mazy <am@orthanc.team>
parents: 5556
diff changeset
88 * The DICOM file cache shall keep a MD5 of the cached file and compare it with MD5
87c0fbc8f457 todo: cache invalidation
Alain Mazy <am@orthanc.team>
parents: 5556
diff changeset
89 from the DB. That would allow 2 orthancs in a swarm to realize when the other
87c0fbc8f457 todo: cache invalidation
Alain Mazy <am@orthanc.team>
parents: 5556
diff changeset
90 Orthanc has updated the file:
87c0fbc8f457 todo: cache invalidation
Alain Mazy <am@orthanc.team>
parents: 5556
diff changeset
91 https://discourse.orthanc-server.org/t/instances-id-content-api-results-are-different-in-docker-swarm-replicas-of-orthanc/4582
5559
462b8f8a619c todo private tags in ExtraMainDicomTags
Alain Mazy <am@orthanc.team>
parents: 5557
diff changeset
92 * Allow saving PrivateTags in ExtraMainDicomTags.
462b8f8a619c todo private tags in ExtraMainDicomTags
Alain Mazy <am@orthanc.team>
parents: 5557
diff changeset
93 Note: they can actually be stored but they then appear as "Unknown Tag & Data" in the responses.
462b8f8a619c todo private tags in ExtraMainDicomTags
Alain Mazy <am@orthanc.team>
parents: 5557
diff changeset
94 If we try to add the PrivateCreator in the ExtraMainDicomTags, then, the DICOMWeb plugin fails to initialize because the private tags are not known.
4643
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
95
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
96 ============================
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
97 Documentation (Orthanc Book)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
98 ============================
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
99
4928
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
100 * Write a getting started guide (step by step) for each platform to replace
5432
59e3b6f8c5be migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5409
diff changeset
101 https://orthanc.uclouvain.be/book/users/cookbook.html :
4928
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
102 - Ubuntu/Debian
5742
078b724dcbf8 if frame decoding fails, transcode to LittleEndianExplicit using plugins and decode with built-in decoder
Alain Mazy <am@orthanc.team>
parents: 5741
diff changeset
103 - Windows (done)
4928
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
104 - OSX
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
105 - Docker on Linux
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
106 Each step by step guide should contain:
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
107 - get binaries
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
108 - launch
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
109 - open explorer
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
110 - edit configuration file
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
111 - restart and observe changes
Alain Mazy <am@osimis.io>
parents: 4927
diff changeset
112
4645
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4644
diff changeset
113 * Explain how log rotation can be achieved (no built-in support in Orthanc)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4644
diff changeset
114 * Explain how to interface with Mirth/NextGen Connect
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4644
diff changeset
115 https://en.wikipedia.org/wiki/NextGen_Connect
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4644
diff changeset
116 * How to reproduce issues by replacing Orthanc with storescp or wlmscpfs
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4644
diff changeset
117 * How to capture TCP traffic of DICOM protocol using tcpdump and Wireshark
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4644
diff changeset
118 * Add more configurations of viewers (Weasis, Slicer...):
5432
59e3b6f8c5be migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5409
diff changeset
119 https://orthanc.uclouvain.be/book/integrations.html
4648
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4645
diff changeset
120 * Discuss HL7 in a dedicated page:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4645
diff changeset
121 https://groups.google.com/d/msg/orthanc-users/4dt4992O0lQ/opTjTFU2BgAJ
4728
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4727
diff changeset
122 https://groups.google.com/g/orthanc-users/c/Spjtcj9vSPo/m/ktUArWxUDQAJ
4812
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
123
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
124
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
125 ================
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
126 Orthanc Explorer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
127 ================
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
128
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
129 * Option to tune the number of results for a local lookup:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
130 https://groups.google.com/g/orthanc-users/c/LF39musq02Y/
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4808
diff changeset
131
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
132
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133 ========
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134 REST API
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135 ========
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136
5014
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5013
diff changeset
137 ----------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5013
diff changeset
138 Short-term
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5013
diff changeset
139 ----------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5013
diff changeset
140
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5013
diff changeset
141
3967
5b731d898bee refresh TODO
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3672
diff changeset
142 --------
5b731d898bee refresh TODO
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3672
diff changeset
143 Mid-term
5b731d898bee refresh TODO
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3672
diff changeset
144 --------
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
145
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
146 * (1) Archive jobs: Resume downloads using "range requests":
4478
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4467
diff changeset
147 https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
148 * (3) Create DICOM from DICOMweb JSON ("application/dicom+json")
4459
16392fe89ce0 new mutex to protect registration of REST callbacks: restCallbackRegistrationMutex_
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4452
diff changeset
149 with "/tools/create-dicom"
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
150 * (2) Create multi-frame images with /tools/create-dicom (by adding a
4644
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4643
diff changeset
151 "MultiFrame" flag to avoid creating a series), or modify PixelData
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4643
diff changeset
152 of a multi-frame image:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4643
diff changeset
153 https://groups.google.com/g/orthanc-users/c/y3-xa_GcdLM/m/m0Kr5G5UPAAJ
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
154 * (1) Specify the transfer syntax in /tools/create-dicom
5055
Alain Mazy <am@osimis.io>
parents: 5053
diff changeset
155 https://groups.google.com/g/orthanc-users/c/o15Dekecgds/m/xmPE2y3bAwAJ
5305
50e73f7db661 todo palette PNG in create-dicom
Alain Mazy <am@osimis.io>
parents: 5304
diff changeset
156 * Support Palette PNG in /tools/create-dicom:
50e73f7db661 todo palette PNG in create-dicom
Alain Mazy <am@osimis.io>
parents: 5304
diff changeset
157 https://discourse.orthanc-server.org/t/404-on-tools-create-dicom-endpoint-with-specific-png/3562
5649
Alain Mazy <am@orthanc.team>
parents: 5626
diff changeset
158 * Support creation of DICOM files from MP4 in /tools/create-dicom.
Alain Mazy <am@orthanc.team>
parents: 5626
diff changeset
159 Sample python code: https://github.com/salimkanoun/OrthancGif/blob/new-organisation/python/create_dicom_video.py.
Alain Mazy <am@orthanc.team>
parents: 5626
diff changeset
160 We would need to extract frame rate + dimension from the MP4 which would
Alain Mazy <am@orthanc.team>
parents: 5626
diff changeset
161 require ffmpeg or a similar library -> can not be done in the Orthanc core.
Alain Mazy <am@orthanc.team>
parents: 5626
diff changeset
162 -> keep it for a python plugin
Alain Mazy <am@orthanc.team>
parents: 5626
diff changeset
163 -> or require the payload to include rows/columns/cinerate/...
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
164 * (1) In the /studies/{id}/anonymize route, add an option to remove
4478
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4467
diff changeset
165 secondary captures. They usually contains Patient info in the
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4467
diff changeset
166 image. The SOPClassUID might be used to identify such secondary
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4467
diff changeset
167 captures.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4467
diff changeset
168 * Support "/preview" and "/matlab" for LUT color images
5541
Alain Mazy <am@osimis.io>
parents: 5481
diff changeset
169 * /preview should be able to display a dose report:
Alain Mazy <am@osimis.io>
parents: 5481
diff changeset
170 https://discourse.orthanc-server.org/t/orthanc-image-preview-shows-empty-image/4459
4803
Alain Mazy <am@osimis.io>
parents: 4787
diff changeset
171 * Try to transcode files if a simple decoding fails:
Alain Mazy <am@osimis.io>
parents: 4787
diff changeset
172 https://groups.google.com/g/orthanc-users/c/b8168-NkAhA/m/Df3j-CO9CgAJ
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
173 * (2) Ranges of DICOM tags for "Keep" and "Remove" in ".../modify" and ".../anonymize":
4644
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4643
diff changeset
174 https://groups.google.com/g/orthanc-users/c/6dETktKo9v8/m/b0LUvSfwAgAJ
5006
Alain Mazy <am@osimis.io>
parents: 5002
diff changeset
175 * return error code/reason in HTTP response if resubmit/cancel/pause fails ...
5008
59491402f8f1 todo: more info in jobs
Alain Mazy <am@osimis.io>
parents: 5007
diff changeset
176 * filter /changes by type e.g: /changes?filter=StablePatient
59491402f8f1 todo: more info in jobs
Alain Mazy <am@osimis.io>
parents: 5007
diff changeset
177 https://groups.google.com/g/orthanc-users/c/r20kDb0axms/m/2tzbQzYJAgAJ
59491402f8f1 todo: more info in jobs
Alain Mazy <am@osimis.io>
parents: 5007
diff changeset
178 * save more details in jobs e.g: the resources being sent/exported ...
59491402f8f1 todo: more info in jobs
Alain Mazy <am@osimis.io>
parents: 5007
diff changeset
179 https://groups.google.com/g/orthanc-users/c/rDDusFG5Lco/m/TzTUjWXLAQAJ
5386
Alain Mazy <am@osimis.io>
parents: 5385
diff changeset
180 https://discourse.orthanc-server.org/t/some-confusion-about-jobs-function/3887
5133
7dacd2c3c009 todo: jobs ordering
Alain Mazy <am@osimis.io>
parents: 5114
diff changeset
181 * allow filtering/ordering on the /jobs route:
7dacd2c3c009 todo: jobs ordering
Alain Mazy <am@osimis.io>
parents: 5114
diff changeset
182 https://groups.google.com/g/orthanc-users/c/hsZ1jng5rIg/m/8xZL2C1VBgAJ
5367
Alain Mazy <am@osimis.io>
parents: 5366
diff changeset
183 * add an "AutoDeleteIfSuccessful": false option when creating jobs
Alain Mazy <am@osimis.io>
parents: 5366
diff changeset
184 https://discourse.orthanc-server.org/t/job-history-combined-with-auto-forwarding/3729/10
5742
078b724dcbf8 if frame decoding fails, transcode to LittleEndianExplicit using plugins and decode with built-in decoder
Alain Mazy <am@orthanc.team>
parents: 5741
diff changeset
185 * Allow skipping automatic conversion of color-space in transcoding/decoding.
5314
0b8068aa7142 revert 5306:155637655710: re-enable automatic conversion from YBR to RGB
Alain Mazy <am@osimis.io>
parents: 5307
diff changeset
186 The patch that was initialy provided was breaking the IngestTranscoding.
5481
Alain Mazy <am@osimis.io>
parents: 5450
diff changeset
187 This might require a DCMTK decoding plugin ?
5314
0b8068aa7142 revert 5306:155637655710: re-enable automatic conversion from YBR to RGB
Alain Mazy <am@osimis.io>
parents: 5307
diff changeset
188 https://discourse.orthanc-server.org/t/orthanc-convert-ybr-to-rgb-but-does-not-change-metadata/3533/9
5382
Alain Mazy <am@osimis.io>
parents: 5367
diff changeset
189 * Implement a 'commit' route to force the Stable status earlier.
Alain Mazy <am@osimis.io>
parents: 5367
diff changeset
190 https://discourse.orthanc-server.org/t/expediting-stability-of-a-dicom-study-new-api-endpoint/1684
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
191
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
192 ---------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
193 Long-term
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
194 ---------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
195
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
196 * Stick to the JSONapi or JAREST guidelines for a "v2" of the API:
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
197 https://groups.google.com/forum/#!msg/orthanc-users/Bag-SwEE9ZI/-w7QXI6p7-oJ
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
198 http://www.admiraalit.nl/jarest/
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
199
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
200
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
201 =====
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
202 DICOM
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
203 =====
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
204
3383
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3335
diff changeset
205 --------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3335
diff changeset
206 Mid-term
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3335
diff changeset
207 --------
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
208
4452
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4448
diff changeset
209 * Support C-GET SCU (note that C-GET SCP was introduced in Orthanc 1.7.0)
3335
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3300
diff changeset
210 * Support "Retrieve AE Title" (0008,0054) in C-FIND:
5432
59e3b6f8c5be migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5409
diff changeset
211 - On SCP side: done by https://orthanc.uclouvain.be/hg/orthanc/rev/1ec3e1e18f50
3472
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3465
diff changeset
212 - On SCU side:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3465
diff changeset
213 https://groups.google.com/d/msg/orthanc-users/wPl0g5mqZco/5X1Z8tEzBgAJ
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
214 * Check Big Endian transfer syntax in ParsedDicomFile::EmbedImage and
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
215 DicomImageDecoder
3384
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3383
diff changeset
216 * Strict hierarchical C-FIND:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3383
diff changeset
217 https://groups.google.com/d/msg/orthanc-users/VBHpeGVSNKM/tkaVvjWFBwAJ
4986
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
218 * report DIMSE error codes in Rest API and job status for /store /query /move /retrieve
5114
c387ebeb67b5 todo: move progress repot
Alain Mazy <am@osimis.io>
parents: 5107
diff changeset
219 * report progress report of C-Move operation in jop progress. There are
c387ebeb67b5 todo: move progress repot
Alain Mazy <am@osimis.io>
parents: 5107
diff changeset
220 progress callbacks available in DIMSE_moveUser
c387ebeb67b5 todo: move progress repot
Alain Mazy <am@osimis.io>
parents: 5107
diff changeset
221 https://groups.google.com/g/orthanc-users/c/c8cGnA7FzsE/m/BSs66D8wBwAJ
4986
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
222 * Log outgoing C-Find queries
5687
Alain Mazy <am@orthanc.team>
parents: 5649
diff changeset
223 * Support other Transfer Syntaxes in the Worklist plugin:
Alain Mazy <am@orthanc.team>
parents: 5649
diff changeset
224 https://discourse.orthanc-server.org/t/could-you-please-create-an-option-to-set-the-transfer-syntax-in-the-worklist-plugin-currently-little-endian-explicit-is-fixed/4871
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
225
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
226 ---------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
227 Long-term
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
228 ---------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
229
4885
Alain Mazy <am@osimis.io>
parents: 4877
diff changeset
230 * Support extended association (e.g. for C-Find relational queries):
2405
85a22aad7dfe todo: extended association
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2377
diff changeset
231 https://groups.google.com/d/msg/orthanc-users/xD4d3mpc6ms/srF7E2goAAAJ
3465
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3390
diff changeset
232 * Support C-MOVE-CANCEL:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3390
diff changeset
233 https://groups.google.com/d/msg/orthanc-users/KnduYBFd06A/o86cl5SeCAAJ
5626
72dcf3a8d7d5 todo: Combine StudyDate + StudyTime in C-Find matching
Alain Mazy <am@orthanc.team>
parents: 5597
diff changeset
234 * Combine StudyDate + StudyTime in C-Find matching (also for the worklist plugin with
72dcf3a8d7d5 todo: Combine StudyDate + StudyTime in C-Find matching
Alain Mazy <am@orthanc.team>
parents: 5597
diff changeset
235 ScheduledProcedureStartTime & Date).
72dcf3a8d7d5 todo: Combine StudyDate + StudyTime in C-Find matching
Alain Mazy <am@orthanc.team>
parents: 5597
diff changeset
236 We should first filter in SQL by StudyDate only, combine it with StudyTime into a single
72dcf3a8d7d5 todo: Combine StudyDate + StudyTime in C-Find matching
Alain Mazy <am@orthanc.team>
parents: 5597
diff changeset
237 DateTime string and filter again in C++.
72dcf3a8d7d5 todo: Combine StudyDate + StudyTime in C-Find matching
Alain Mazy <am@orthanc.team>
parents: 5597
diff changeset
238 https://discourse.orthanc-server.org/t/performin-find-within-orthanc-for-time-frames/4704
5755
Alain Mazy <am@orthanc.team>
parents: 5742
diff changeset
239 * Worklist plugin: support MPPS
Alain Mazy <am@orthanc.team>
parents: 5742
diff changeset
240 https://github.com/orthanc-server/orthanc-setup-samples/blob/master/python-samples/worklist-with-mpps.py
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
241
3967
5b731d898bee refresh TODO
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3672
diff changeset
242 --------------------
5b731d898bee refresh TODO
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3672
diff changeset
243 Internationalization
5b731d898bee refresh TODO
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3672
diff changeset
244 --------------------
3218
9a83d94b2a1e kanji encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3153
diff changeset
245
9a83d94b2a1e kanji encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3153
diff changeset
246 * Support multiple specific character sets (cf. "SCSH32" in orthanc-tests)
3223
c94f23198946 unit testing japanese
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3221
diff changeset
247 - http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.12.html#sect_C.12.1.1.2
c94f23198946 unit testing japanese
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3221
diff changeset
248 - Japanese test: http://dicom.nema.org/MEDICAL/dicom/2017c/output/chtml/part05/sect_H.3.2.html
5385
Alain Mazy <am@osimis.io>
parents: 5382
diff changeset
249 https://discourse.orthanc-server.org/t/garbled-characters-when-i-uploaded-japanese-patient-name/3204/5
3218
9a83d94b2a1e kanji encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3153
diff changeset
250 * Support Supplementary Kanji set (ISO 2022 IR 159)
3261
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3239
diff changeset
251 * Create DICOM files with multibyte encodings (Korean, JapaneseKanji, SimplifiedChinese)
3218
9a83d94b2a1e kanji encoding
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3153
diff changeset
252
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
253
4467
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
254 ===========
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
255 Performance
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
256 ===========
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
257
4927
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
258 * (2) DicomMap: create a cache to the main DICOM tags index
Alain Mazy <am@osimis.io>
parents: 4926
diff changeset
259 * (3) Check out rapidjson: https://github.com/miloyip/nativejson-benchmark
4978
2cfa50d8eb60 Speed-up handling of DicomModalitiesInStudy in C-Find and tools/find queries
Alain Mazy <am@osimis.io>
parents: 4954
diff changeset
260 * For C-Find results: we could store the computed tags
4944
f377d5643538 new Warnings configuration + InstanceAvailability tag
Alain Mazy <am@osimis.io>
parents: 4928
diff changeset
261 in metadata on some events like NewSeries + DeletedSeries (same for other computer tags).
f377d5643538 new Warnings configuration + InstanceAvailability tag
Alain Mazy <am@osimis.io>
parents: 4928
diff changeset
262 OtherTags that could be saved in Metadata as well:
f377d5643538 new Warnings configuration + InstanceAvailability tag
Alain Mazy <am@osimis.io>
parents: 4928
diff changeset
263 - ModalitiesInStudy
f377d5643538 new Warnings configuration + InstanceAvailability tag
Alain Mazy <am@osimis.io>
parents: 4928
diff changeset
264 - all computed counters at series/study/patient level
f377d5643538 new Warnings configuration + InstanceAvailability tag
Alain Mazy <am@osimis.io>
parents: 4928
diff changeset
265 - RequestAttributesSequence (sequence that must be included in all DicomWeb QIDO-RS for series)
4467
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
266
4986
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
267 * Long-shot & not sure it is even feasible at all: try to reduce memory usage by implementing streaming
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
268 when receiving DICOM instances from the Rest API or from DICOM and store files directly to disk as they
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
269 are received. Note that this would likely require rewriting large parts of Orthanc. Note sure that
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
270 would be compatible with Transcoding.
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
271 Use case: receiving 10 1GB instances in parallel can consume up to 20 GB
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
272 Alternative option 1: write an "external application/plugin" that would take care of these receptions, write the
5096
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
273 file at the right place and send a signal to Orthanc to "adopt" the file.
4986
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
274 Alternative option 2: declare a memory resource (X GB) that is available for reception. Every time
5096
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
275 Orthanc starts receiving a file, it reserves the memory or twice the memory (through a Semaphore)
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
276 if no memory is available, it waits and possibly timeouts returning a 503 or DIMSE A700 (out of resources).
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
277 This would at least protect from "out of memory" crashes.
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
278 Alternative option 3: Configure DCMTK to "stream" DICOM files on a temporary file on disk. Pass the file handle
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
279 to Orthanc and/or the Storage plugin (instead of passing a memory buffer) -> the object-storage plugin could
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
280 "stream" the file to the storage. The HTTP server could also "stream" its response from file handles.
Alain Mazy <am@osimis.io>
parents: 5055
diff changeset
281 Transcoding should be "file based" too.
5404
Alain Mazy <am@osimis.io>
parents: 5400
diff changeset
282 * To investigate: usage of mapped_file (not only in the indexer plugin):
Alain Mazy <am@osimis.io>
parents: 5400
diff changeset
283 https://discourse.orthanc-server.org/t/patch-for-orthanc-indexer-plugin-crashing-on-big-non-dicom-files/3849/7
4986
Alain Mazy <am@osimis.io>
parents: 4978
diff changeset
284
4624
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4478
diff changeset
285 ========
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4478
diff changeset
286 Database
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4478
diff changeset
287 ========
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4478
diff changeset
288
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4478
diff changeset
289 * Integration test searching for "\" and "%" in PatientName, PatientID...
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4478
diff changeset
290
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4478
diff changeset
291
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
292 =======
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
293 Plugins
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
294 =======
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
295
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
296 ---
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
297 SDK
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
298 ---
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
299
4212
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4144
diff changeset
300 * Implement PluginsJob::GetOutput() to allow user-defined jobs to provide output:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4144
diff changeset
301 https://groups.google.com/g/orthanc-users/c/GZ7u0bTTVoo/m/Z7iTNTi2BgAJ
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
302 * Add plugins for normalized operations (notably so as to support
4645
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4644
diff changeset
303 Print SCU/SCP, cf. "dcmprscp"):
3570
f05887b1d1bf Replaced broken url with url from wayback archive
Tomas Zubiri <me@tomaszubiri.com>
parents: 3472
diff changeset
304 https://web.archive.org/web/20170923150432/https://www.medicalconnections.co.uk/kb/DICOM_Print_Service
3153
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2975
diff changeset
305 * Provide access to the Orthanc::DicomUserConnection class in plugins:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2975
diff changeset
306 https://groups.google.com/d/msg/orthanc-users/ycDA1xPuTRY/nsT2_GOtEgAJ
3390
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3384
diff changeset
307 * Provide a C++ callback similar to "ReceivedInstanceFilter()" in Lua
5432
59e3b6f8c5be migration to UCLouvain servers
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5409
diff changeset
308 https://orthanc.uclouvain.be/book/users/lua.html#filtering-incoming-dicom-instances
3390
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3384
diff changeset
309 https://groups.google.com/d/msg/orthanc-users/BtvLTE5Ni8A/vIMhmMgfBAAJ
4912
45d6ce72a84e fix linking of Sanitizer sample plugin
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4892
diff changeset
310 * Update the SDK to handle buffer sizes > 4GB (all sizes are currently coded in uint32_t)
5106
75fd2d35f053 TODO: Get SCP in SDK
Alain Mazy <am@osimis.io>
parents: 5103
diff changeset
311 * Add a C-Get SCP handler: OrthancPluginRegisterGetCallback
5107
43461cc99838 TODO cont
Alain Mazy <am@osimis.io>
parents: 5106
diff changeset
312 https://groups.google.com/g/orthanc-users/c/NRhPkYX9IXQ/m/mWS11g0jBwAJ
5165
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5133
diff changeset
313 * Add a primitive for user authentication (to generate 401 HTTP status, whereas
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5133
diff changeset
314 the "RegisterIncomingHttpRequestFilter()" can only generate 403 HTTP status)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5133
diff changeset
315 https://groups.google.com/g/orthanc-users/c/ymtaAmgSs6Q/m/PqVBactQAQAJ
5408
Alain Mazy <am@osimis.io>
parents: 5404
diff changeset
316 * Add an index on the UUID column in the DelayedDeletion plugin:
Alain Mazy <am@osimis.io>
parents: 5404
diff changeset
317 https://discourse.orthanc-server.org/t/delayeddeletion-improvement-unique-index-on-pending-uuid-column/4032
Alain Mazy <am@osimis.io>
parents: 5404
diff changeset
318
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
319
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
320 ----------------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
321 Ideas of plugins
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
322 ----------------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
323
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
324 * DICOM-RT primitives (RT-STRUCT, RT-PLAN, RT-DOSE)
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
325 * Converter to/from NIfTI
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
326 * Decode JPEG2k with grok: https://github.com/GrokImageCompression/grok
2251
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2247
diff changeset
327 * Generate dynamic HTTP content using Lua:
2199
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2178
diff changeset
328 https://groups.google.com/d/msg/orthanc-users/KompazkxRSs/5Rh03mzgDAAJ
2251
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2247
diff changeset
329 * More generally, expose more callbacks of the plugin SDK in Lua:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2247
diff changeset
330 https://groups.google.com/d/msg/orthanc-users/_FbiRHuXPGM/J-OAv7zaCAAJ
3300
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3261
diff changeset
331 * Configuration interface plugin
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
332
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
333
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
334 ===
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
335 Lua
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
336 ===
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
337
5016
c89ffa13173e Lua: new "SetHttpTimeout" function
Alain Mazy <am@osimis.io>
parents: 5015
diff changeset
338 * Configure HTTP headers from Lua (in RestApiPost(), RestApiPut()
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
339 and RestApiDelete().
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
340 https://groups.google.com/forum/#!msg/orthanc-users/WNnW187OILM/6XX_bm96BwAJ
5387
Alain Mazy <am@osimis.io>
parents: 5349
diff changeset
341 * Retrieve HTTP status from calls to HttpGet, HttpPost, ...
Alain Mazy <am@osimis.io>
parents: 5349
diff changeset
342 https://discourse.orthanc-server.org/t/how-to-get-http-status-code-from-httppost/1263/4
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
343
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
344
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
345 ================
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
346 Code refactoring
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
347 ================
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
348
2207
6dc3bdb4088b Fix handling of encodings in C-FIND for worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2202
diff changeset
349 * Avoid direct calls to FromDcmtkBridge (make most of its
6dc3bdb4088b Fix handling of encodings in C-FIND for worklists
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 2202
diff changeset
350 methods private), go through ParsedDicomFile wherever possible
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
351
4459
16392fe89ce0 new mutex to protect registration of REST callbacks: restCallbackRegistrationMutex_
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4452
diff changeset
352
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
353 =================
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
354 Platform-specific
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
355 =================
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
356
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
357 ---------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
358 Packaging
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
359 ---------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
360
4467
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
361 * RHEL through EPEL (as of 2021, CentOS seems to be over):
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
362 http://fedoraproject.org/wiki/EPEL_Package_Maintainers
4643
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
363 * Fedora: Are DICOM dictionaries correctly located?
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
364 https://groups.google.com/g/orthanc-users/c/YB_LTBuUQNA/m/3H1xsrZJDgAJ
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
365
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
366 ------------------------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
367 Big-endian architectures
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
368 ------------------------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
369
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
370 * Check the generated 16bpp PNG images
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
371
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
372 -----------------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
373 Microsoft Windows
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
374 -----------------
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
375
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
376 * Add compatibility with non-ASCII paths (Orthanc expresses its paths
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
377 as UTF-8 strings, but Windows expects them to be translated to the
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
378 system locale)
5053
Alain Mazy <am@osimis.io>
parents: 5036
diff changeset
379 * Fix error message when stopping the service:
Alain Mazy <am@osimis.io>
parents: 5036
diff changeset
380 https://groups.google.com/g/orthanc-users/c/NyrwUJ9N6Ec/m/sTZIcWvaAgAJ
Alain Mazy <am@osimis.io>
parents: 5036
diff changeset
381
2162
d738945c25cd migrating TODO from Trello
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
382
3672
ea8c1c0e81eb Fix issue #65 (Logging improvements)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3570
diff changeset
383 ====
ea8c1c0e81eb Fix issue #65 (Logging improvements)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3570
diff changeset
384 Misc
ea8c1c0e81eb Fix issue #65 (Logging improvements)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3570
diff changeset
385 ====
ea8c1c0e81eb Fix issue #65 (Logging improvements)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3570
diff changeset
386
4643
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
387 -----------------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
388 Maintenance tools
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
389 -----------------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
390
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
391 * Standalone tool to detect corrupted files:
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
392 https://groups.google.com/g/orthanc-users/c/KASEJ9Gx3vQ/m/MIJFJdRhAwAJ
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
393 * Standalone tool to detect orphan files in OrthancStorage
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
394
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
395 ----------------------------------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
396 Code quality and integration tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
397 ----------------------------------
4459
16392fe89ce0 new mutex to protect registration of REST callbacks: restCallbackRegistrationMutex_
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4452
diff changeset
398
4467
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
399 * Have a look at openQA (cf. GNU Health)
4643
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4624
diff changeset
400 * Add integration tests for LUT
4926
Alain Mazy <am@osimis.io>
parents: 4912
diff changeset
401 * Add more complex testing scenarios like data-migration, change of
Alain Mazy <am@osimis.io>
parents: 4912
diff changeset
402 configuration files, multiple orthanc interacting togethers with various
Alain Mazy <am@osimis.io>
parents: 4912
diff changeset
403 config. This should probably look like the python toolbox tests ...
5304
Alain Mazy <am@osimis.io>
parents: 5208
diff changeset
404 - add a test to validate Modalities and Peers stored in DB are not lost
Alain Mazy <am@osimis.io>
parents: 5208
diff changeset
405 while upgrading from one version to the other (Sylvain)
5349
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5337
diff changeset
406 * On Ubuntu 20.04, accesses to unitialized memory are sometimes
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5337
diff changeset
407 reported in libgjpeg by valgrind, if running the following command
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5337
diff changeset
408 (this is probably unrelated to Orthanc):
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 5337
diff changeset
409 $ ./Start.sh --force Orthanc.test_bitbucket_issue_141 Orthanc.test_create_pdf Orthanc.test_decode_brainix_as_jpeg
4926
Alain Mazy <am@osimis.io>
parents: 4912
diff changeset
410
3672
ea8c1c0e81eb Fix issue #65 (Logging improvements)
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 3570
diff changeset
411
4467
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
412 ---------------------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
413 External applications
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
414 ---------------------
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
415
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
416 * Create REST bindings with Slicer
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 4464
diff changeset
417 * Create REST bindings with Horos/OsiriX