Mercurial > hg > orthanc-dicomweb
view TODO @ 561:794dc1f9ea6e
speed-up ../series/../metadata route
author | Alain Mazy <am@osimis.io> |
---|---|
date | Wed, 26 Apr 2023 15:22:59 +0200 |
parents | ac897682535d |
children | cdc202779e94 |
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: - 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.985 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) - the content of series/.../metadata could also be obtained alternatively by calling tools/find that is, in this case: 9 times faster. However, right now, it might not return the response in "Full" json format. time curl http://localhost:8043/tools/find --data-binary '{"Level": "Instance", "Query": {"SeriesInstanceUID": "1.2.276.0.7230010.3.1.3.1215942821.4756.1664833048.11984"}, "Expand": true}' > /dev/null -> 0.178 second - alternate way: time curl http://localhost:8043/tools/lookup --data-binary '1.2.276.0.7230010.3.1.3.1215942821.4756.1664833048.11984' -> 0.016 second followed by time curl http://localhost:8043/series/fdd31453-fa62d8cb-b681823c-f294d34c-182bca4b/instances?full > /dev/null -> 0.083 second UPDATE: we are now using this method but, the full duration to call the /metadata route is -> 0.335 second (only 3x faster) - note that all measurements have been performed on a DB with a single series ! We should repeat that with a more realistic DB