How to disable Series C-FIND when using ctkDICOMQueryRetrieveWidget queries?

Operating system: Windows 11
Slicer version: 5.3.0-2022-11-27

I can’t find a way to do “Study level only” queries when using ctkDICOMQueryRetrieveWidget. The behaviour I would like to achieve is one where simple initial queries by date are a single operation that quickly returns a list of studies from a PACS server.

This use case doesn’t include the need to retrieve only some series from a study. It always downloads every series from selected studies. The user may download only one or a few studies so information about every series from every study is unecessary.

The drawback with how ctkDICOMQueryRetrieveWidget queries by default is that it may take several seconds to get a list of studies with anything more than a few dozen studies as it performs a Series C-FIND for every study that’s initially queried.

Is there a way to disable Series C-FIND when querying from the DICOM Query/Retrieve window?

I don’t believe there’s a way to configure that currently, but since you sound knowledgable about the DICOM part side of the problem the I think making the corresponding changes to the ctkDICOM implementation is probably not that difficult. Maybe you could take a look at the c++ code to get an idea what would be involved.

That did cross my mind but I’m not sure how I should proceed in this case specifically because CTK is not part of Slicer. That would involve compiling a custom CTK, right? I can compile it but I don’t know how to make my Slicer build point to it. Are there any resources I can take a look at to understand how Slicer bundles CTK and how I could swap it for my custom build? CTK seems to be deeply intertwined with Slicer during build and I’m not yet completely familiar with how exactly the whole cmake process works.

Yes, it’s actually quite easy. If you do a conventional Slicer build on any platform it will checkout and build CTK from source as part of the process. You can make your own fork of CTK and point Slicer to it during the build. From there you can edit the code and rebuild to test in Slicer. Then you can make a pull request to CTK and we can update Slicer to use the new version once it’s integrated (several of us work on both CTK and Slicer).

1 Like