view TODO @ 576:26f7f795e379

Fix issue #216 (Requests fail due to bad parsing of the accept HTTP header (semi-colons))
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 28 Jun 2023 10:37:35 +0200
parents cdc202779e94
children c9cee5d78798 0354c92bbc63
line wrap: on
line source

* Implement capabilities: https://www.dicomstandard.org/using/dicomweb/capabilities/
  from https://groups.google.com/d/msgid/orthanc-users/c60227f2-c6da-4fd9-9b03-3ce9bf7d1af5n%40googlegroups.com?utm_medium=email&utm_source=footer

* /rendered at study level shall return all instances, not only one (https://groups.google.com/g/orthanc-users/c/uFWanYhV8Fs/m/ezi1iXCXCAAJ)
  Check /rendered at series level too.

* Implement serialization of DicomWeb jobs

* Add support for application/zip in /dicom-web/studies/ (aka sup 211: https://www.dicomstandard.org/docs/librariesprovider2/dicomdocuments/news/ftsup/docs/sups/sup211.pdf?sfvrsn=9fe9edae_2)

* Based on this discussion: https://discourse.orthanc-server.org/t/series-metadata-retrieval-is-very-long-even-with-configuration-optimization/3389 
  optimize studies/.../series/.../metadata route when "SeriesMetadata" is set 
  to "MainDicomTags" and "ExtraMainDicomTags" are configured according to recommandation 
  (from this setup: https://bitbucket.org/osimis/orthanc-setup-samples/src/master/docker/stone-viewer/docker-compose.yml).
  
  with a 600 instance series with SQLite - all timings are performed without verbose logs !!!!:
  - time curl http://localhost:8043/dicom-web/studies/1.2.276.0.7230010.3.1.2.1215942821.4756.1664826045.3529/series/1.2.276.0.7230010.3.1.3.1215942821.4756.1664833048.11984/metadata > /dev/null 
    -> 0.750 second because the plugin makes 600 calls to /instances/...?full 
    to retrieve all main dicom tags from the DB (but this also retrieves other 
    data like attachment info + instances metadata)
  - In "Experimental" mode, we are calling this route: 
    time curl "http://localhost:8043/series/fdd31453-fa62d8cb-b681823c-f294d34c-182bca4b/instances?full&requestedTags=0008,0005;0008,0008;0008,0012;0008,0013;0008,0016;0008,0018;0008,0023;0008,0033;0018,0050;0020,0012;0020,0013;0020,0032;0020,0037;0020,0052;0020,0100;0020,4000;0028,0004;0028,0008;0028,0010;0028,0011;0028,0030;0028,0100;0028,0101;0028,0103;0028,1050;0028,1051;0028,1052;0028,1053;0054,1330" > /dev/null
    -> 0.175 second
    BUT the total time required by the /metadata route is still around 0.9 second because we spend 600-700ms formating the output !!! (see TODO_OPTI in WadoRs.cpp)
    -> 0.835 second in "Experimental" mode (10% slower if tags are actually in DB of course !)
    -> 0.700 second in "MainDicomTags" mode (10% faster)
    FURTHER WORK: 
      - In the plugin SDK, we should probably have a method to convert DicomAsJson_Full to DicomWebJson without creating a ParsedDicomFile in between.
      - Or in the core: implement /series/.../instances?dicom-web-json (the core has the primitives to write dicom-web-json)
      - Even if we optimize the DB, the cost for the response serialization will still be very high and that's likely the first thing to work on !!!
     



  - note that all measurements have been performed on a DB with a single series !  We should repeat 
    that with a more realistic DB