# New Feature: visual DICOM browser

**URL:** <https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874>\
**Category:** Support\
**Tags:** feature, dicombrowser, dicom\
**Created:** [January 19, 2024, 3:32pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874 "2024-01-19T15:32:04Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Davide\_Punzo](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/davide_punzo/32/66104_2.png) [@Davide\_Punzo](https://discourse.slicer.org/u/Davide_Punzo)\
**Post date:** [January 19, 2024, 3:32pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/1 "2024-01-19T15:32:04Z")

</div>

## Description

The visual DICOM browser provides a new user interface for quick viewing and retrieval of patient images stored on remote DICOM servers. The new tool is optimized for clinical workflows where the focus is on all the images of a single patient - as opposed to the existing DICOM browsing experience, which was more suitable for bringing together images from many patients.

Both server and local content are located at the same place and are visualized by thumbnails. All data is retrieved in the background using classic DIMSE networking (most commonly used protocols in hospitals), in multiple concurrently running threads. The currently supported operations are:

- Browsing and filtering with thumbnails of content of local DICOM database and multiple remote DICOM servers.
- Query/Retrieve data from servers (DIMSE `C-FIND`, `C-GET`, `C-MOVE` SCU). All the operations are done in background and in parallel. Downloaded data is automatically cached in the local DICOM database. A unique feature is the possibility to retrieve images using C-GET protocol (suitable for cases when many Slicer instances are running in docker containers) with a clinical PACS that only supports C-MOVE protocol (most clinical PACS), via a proxy server (such as the free Orthanc).
- Import data from local files.
- Receive data sent from remote PACS (DIMSE `C-STORE` SCP).
- Send data to remote PACS (DIMSE `C-STORE` SCU).
- Quick browsing of all DICOM metadata and pixel data.
- Remove data from local database (not from server).

| Visual DICOM Browser | Settings |
| --- | --- |
| ![ScreenshotVisualDICOMBrowser](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/f/8/f88bb3a966b466304744e7e8a23a63067f3f5a7e.png) | ![ScreenshotSettings](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/d/2/d2da5998f58e4cf668dabe7f4468f7668ed7dee7.png) |

## How to use

The new interface is available in the `DICOM` module. To enable the new browsing experience toggle the `Show experimental visual DICOM browser` option in the dropdown menu of the `Show DICOM database` button:

 ![SlicerActivateVisualDICOMBrowser](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/a/6/a60b5a8be109f4f5ffeb606e9b9b69d9a9a7e7b1.png)

## Feedback

We have tested the widget mostly on Linux and Windows on multiple servers (Orthanc, [www.dicomserver.co.uk](http://www.dicomserver.co.uk), and some clinical PACS). It would be great to get feedback how the browser performs in different environments.

Developement is still ongoing, and a comprehensive roadmap is available [here](https://github.com/commontk/CTK/issues/1162). We are looking forward to receiving error reports or any comments and suggestions for further improvements.

## For developers

Example scripts for accessing the widget logic from Python can be found [here](https://github.com/commontk/CTK/pull/1165#issue-2078249761)

## References

[PW40 Project](https://projectweek.na-mic.org/PW40_2024_GranCanaria/Projects/SlicerVisualDICOMBrowser/)  
[CTK PR1](https://github.com/commontk/CTK/pull/1142)  
[CTK PR2](https://github.com/commontk/CTK/pull/1165)  
[Slicer PR](https://github.com/Slicer/Slicer/pull/7525)  
[Roadmap](https://github.com/commontk/CTK/issues/1162)

---

<div class="post-metadata">

**Author:** ![fedorov](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/fedorov/32/14_2.png) [@fedorov](https://discourse.slicer.org/u/fedorov)\
**Post date:** [January 19, 2024, 6:40pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/2 "2024-01-19T18:40:51Z")

</div>

Are there plans to support this interface for DICOMweb accessible servers?

I do not work with DIMSE servers, but would be very interested to try this out with DICOMweb!

---

<div class="post-metadata">

**Author:** ![Davide\_Punzo](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/davide_punzo/32/66104_2.png) [@Davide\_Punzo](https://discourse.slicer.org/u/Davide_Punzo)\
**Post date:** [January 19, 2024, 6:56pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/3 "2024-01-19T18:56:32Z")

</div>

Hey Andrey. It’s one of our long term enh in the [roadmap](https://github.com/commontk/CTK/issues/1162). I agree that it would be critical to have also dicomweb. The issue is that the new widget is fully written in C++ at ctk level and there is no clear supported C++ dicomweb library. We will also explore other ways (e.g. python libraries )

During the project week (see [Project Description | NA-MIC Project Weeks](https://projectweek.na-mic.org/PW40_2024_GranCanaria/Projects/SlicerVisualDICOMBrowser/)) we plan to get feedback and discuss future plans and probably dicomweb will one of the main discussion item.

Ultimately it will depend on people interest and funds 🙂

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [January 20, 2024, 1:16pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/4 "2024-01-20T13:16:46Z")

</div>

> [@Davide\_Punzo](#):
>
> The issue is that the new widget is fully written in C++ at ctk level and there is no clear supported C++ dicomweb library

We could move MITK’s C++ DICOMweb implementation to CTK and use it in this browser. Classic DIMSE support was prioritized over DICOMweb implementation because DICOMweb is still very rarely supported by hospital PACS. If there is a confirmed need then it would not be huge work to add DICOMweb, because the framework is designed to support multiple protocols (DIMSE, DICOMweb, and custom PACS/cloud provider protocols).

---

<div class="post-metadata">

**Author:** ![Davide\_Punzo](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/davide_punzo/32/66104_2.png) [@Davide\_Punzo](https://discourse.slicer.org/u/Davide_Punzo)\
**Post date:** [January 20, 2024, 1:51pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/5 "2024-01-20T13:51:09Z")

</div>

> [@lassoan](#):
>
> If there is a confirmed need then it would not be huge work to add DICOMweb, because the framework is designed to support multiple protocols (DIMSE, DICOMweb, and custom PACS/cloud provider protocols).

yes, indeed the framework is already set for it, we just need the C++ dicomweb library.

---

<div class="post-metadata">

**Author:** ![drvarunagarwal](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/drvarunagarwal/32/8914_2.png) [@drvarunagarwal](https://discourse.slicer.org/u/drvarunagarwal)\
**Post date:** [January 26, 2024, 10:42am UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/6 "2024-01-26T10:42:00Z")

</div>

hi,

I am using slicer 5.7.0

I am not getting this option or dropdown menu in show DICOM database button

Please advise how to enable

thanks

---

<div class="post-metadata">

**Author:** ![Davide\_Punzo](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/davide_punzo/32/66104_2.png) [@Davide\_Punzo](https://discourse.slicer.org/u/Davide_Punzo)\
**Post date:** [January 26, 2024, 12:10pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/7 "2024-01-26T12:10:59Z")

</div>

Hello @drvarunagarwal,

I appreciate your prompt report, and I am sorry for the inconvenience. @Sam_Horvath and @jcfr are currently addressing a minor issue with the Windows binaries. For further details, please refer to the ongoing discussion at: [Slicer build error on Windows on the dashboard](https://discourse.slicer.org/t/slicer-build-error-on-windows-on-the-dashboard/33967)

Meanwhile, the MacOS and Linux binaries are fully functional – I’ve personally tested the Linux version, and it works seamlessly. If you’re using either of those systems, feel free to download and use them. We anticipate resolving the Windows binary concern by early next week. Thank you for your understanding.

Furthermore, in today Slicer preview (Linux and MacOS) we have released a refreshed UI that comes with a dedicated Jobs list:

Please, let us know if you have any comments or suggestions.

Thanks again for your time

---

<div class="post-metadata">

**Author:** ![Davide\_Punzo](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/davide_punzo/32/66104_2.png) [@Davide\_Punzo](https://discourse.slicer.org/u/Davide_Punzo)\
**Post date:** [January 26, 2024, 12:21pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/8 "2024-01-26T12:21:51Z")

</div>

@drvarunagarwal

on the other hand if you download the current 5.7.0 windows binaries

![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/1/d/1d01333b1f98ed7cb34f1178ee269be5f8fcca82.png)

you do have access to the visual DICOM browser (previous week version):

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/9/1/91f5d16c01423893bf1a18d07d302fcb26cae244.png)

Please be sure to have the binaries from 2024-01-22.  
It could be worth to wait anyway few more days to try the latest version.

---

<div class="post-metadata">

**Author:** ![Davide\_Punzo](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/davide_punzo/32/66104_2.png) [@Davide\_Punzo](https://discourse.slicer.org/u/Davide_Punzo)\
**Post date:** [January 26, 2024, 5:54pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/9 "2024-01-26T17:54:53Z")

</div>

@drvarunagarwal the current Windows version

![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/5/6/56169f001f210998cc99a06e6076af0b625b3d88.png)

includes the latest version of the visual DICOM browser.

---

<div class="post-metadata">

**Author:** ![fedorov](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/fedorov/32/14_2.png) [@fedorov](https://discourse.slicer.org/u/fedorov)\
**Post date:** [January 26, 2024, 5:58pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/10 "2024-01-26T17:58:43Z")

</div>

> [@lassoan](#):
>
> If there is a confirmed need then it would not be huge work to add DICOMweb

Just to be clear, I don’t want to say there is a confirmed need from my side. It’s just that I do not work with any DIMSE servers, and I am not going to set one up for the sake of testing this. With DICOMweb support, testing of this functionality would become trivial using, for example, Google Healthcare API.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [January 26, 2024, 6:06pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/11 "2024-01-26T18:06:03Z")

</div>

The browser can be tested with local DICOM files - thumbnail display, searching and filtering, etc.

To try the PACS connection features, you can use the [Medical Connections DICOM test server](https://www.medicalconnections.co.uk/kb/Public-DICOM-Server). This server is preconfigured in Slicer by default, you just need to enable Query/Retrieve for this server in the Settings section.

---

<div class="post-metadata">

**Author:** ![fedorov](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/fedorov/32/14_2.png) [@fedorov](https://discourse.slicer.org/u/fedorov)\
**Post date:** [January 26, 2024, 6:10pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/12 "2024-01-26T18:10:24Z")

</div>

In my view, one of the interesting testing scenarios would be to try it out against a database that has a non-trivial amount of heterogeneous data across the range of manufacturers/modalities etc. That’s not something that can be done using local files or that test server. But could be done with the DICOMweb server we have in IDC that has \>50TB of data. Or with a smaller subset of that.

In any case, if you guys want to test it using such a subset using other means, I am happy to answer any questions related to selecting and downloading data from IDC!

---

<div class="post-metadata">

**Author:** ![Davide\_Punzo](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/davide_punzo/32/66104_2.png) [@Davide\_Punzo](https://discourse.slicer.org/u/Davide_Punzo)\
**Post date:** [January 26, 2024, 6:18pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/13 "2024-01-26T18:18:30Z")

</div>

It would be indeed very nice to test with IDC (i.e. check perfomances with very large datasets).

let’s talk at the project week. In general, I agree that having a DICOMweb C++ library would definitely make this new infrastructure more flexible.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [January 26, 2024, 6:28pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/14 "2024-01-26T18:28:01Z")

</div>

This new DICOM browser is optimized for clinical workflows (you focus on a single patient and access complete history of that patient) and not for exploring research databases (where you don’t know what patient you want to see and often want to aggregate data over multiple patients). For example, in the visual DICOM browser there is very limited set of patient search&filter features, because the clinician knows the one single patient he is dealing with; while in a research database browser a big part is to find relevant set of cases.

But thank you @fedorov for the offer. As @Davide_Punzo wrote, large databases can be useful for performance testing and optimization. After DICOMweb support is added we could also see if the browser can be adapted to work conveniently for non-clinical/non-patient-oriented workflows on research databases.

---

<div class="post-metadata">

**Author:** ![fedorov](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/fedorov/32/14_2.png) [@fedorov](https://discourse.slicer.org/u/fedorov)\
**Post date:** [October 9, 2025, 3:53pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/15 "2025-10-09T15:53:23Z")

</div>

As a quick followup, we relatively recently opened public access to IDC data (now over 90TB) via [DICOMweb](https://www.dicomstandard.org/using/dicomweb) interface. Access details are documented in this article: [DICOM stores | IDC User Guide](https://learn.canceridc.dev/data/organization-of-data/dicom-stores).

---

<div class="post-metadata">

**Author:** ![Davide\_Punzo](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/davide_punzo/32/66104_2.png) [@Davide\_Punzo](https://discourse.slicer.org/u/Davide_Punzo)\
**Post date:** [October 9, 2025, 4:33pm UTC](https://discourse.slicer.org/t/new-feature-visual-dicom-browser/33874/16 "2025-10-09T16:33:46Z")

</div>

That’s great! Unfortunately we still didn’t implement dicomweb capabilities into CTK. I don’t think it’s too complicated to implement in C++, but we had always other priorities in last year. Full roadmap is at:

> <https://github.com/commontk/CTK/issues/1230>
>
> \- \[\] \*\*1.\*\* Implement sending in C++ in CTK (i.e., adding \`ctkDICOMSendJob\`, \`c…tkDICOMSendWorker\`, and \`ctkDICOMSend\` with underlying DIMSE \`DcmStorageSCU\`). This would allow the use of the background/parallel operations infrastructure for SEND as well.
> \- \[\] \*\*2.\*\* Add DICOMweb support.
> \- \[\] \*\*3.\*\* Handle the jobs queue in the scheduler by file (so we can restart the jobs/workers at application restart).
> \- \[\] \*\*4.\*\* Add data streaming from visual browser series widgets to Slicer volume nodes.
> \- \[\] \*\*5.\*\* Add support for DICOM frame set (\[GitHub issue\](https://github.com/Slicer/Slicer/issues/8102), \[discussion\](https://discourse.slicer.org/t/new-frame-set-table-in-the-dicom-database/35012)).
> \- \[\] \*\*6.\*\* Test loading of series with an extra “localizer” slice (\[discussion link 1\](https://discourse.slicer.org/t/problems-during-dicom-import/9060/31?u=lassoan), \[discussion link 2\](https://github.com/Slicer/Slicer/blob/1f7bb55e84af9eaa8993ea3dd305413f83680721/Modules/Scripted/DICOMPlugins/DICOMScalarVolumePlugin.py#L290-L314)). Test also Fluoro acquisitions.
> \- \[\] \*\*7.\*\* Restore the old advanced/examine UI for loading a series in the visual DICOM browser.
> \- \[\] \*\*8.\*\* Improve the visual DICOM browser (and CTK in general) to use \`styleSheet\` instead of \`QPalette\` for dynamic color changes. Ideally, the solution should:
> 1. Use one unique style file containing the stylesheet for all CTK classes.
> 2. Change the color of Qt widgets in CTK dynamically with the Property Selector (e.g., \[Dynamic Properties and Stylesheets\](https://wiki.qt.io/Dynamic\_Properties\_and\_Stylesheets)).
> 3. Allow custom Slicer apps to change the style by simply rewriting and reloading the style file.
> \- \[\] \*\*9.\*\* Add a writing lock static variable in the \`ctkDICOMDatabase\` class.
> \- \[\] \*\*10.\*\* Implement smart management of inserts and memory when retrieving a series (e.g., add a customizable \`framesBatchLimit\` variable).
> \- \[\] \*\*11.\*\* Add infrastructure to set the maximum number of concurrent workers per server (currently, it is per job type).
> \- \[\] \*\*12.\*\* Update retry time delay to be exponential with a factor of 2/3 (with some randomness). The current default of 100ms is insufficient for server recovery. Replace the maximum number of retries (default: 3) with a maximum waiting time (defined in the GUI server settings). Add a timeout warning in the UI and ensure the string is clear.
> \- \[\] \*\*13.\*\* Allow disabling automatic prefetch of the full series (current behavior). If the option is active, retrieval of all frames should occur only when selected series are manually loaded.
> \- \[\] \*\*14.\*\* Replace the Patients list as tabs in the tab control of the Patient widgets with the old widget from the \`ctkDICOMBrowser\` (first one, only the patient list). Add an option to switch between them.
> \- \[\] \*\*15.\*\* Improve UI clarity regarding querying PACS servers vs. filtering the local database.
> \- \[\] \*\*16.\*\* Address UI performance issues when importing a large number of patients (\>500, \>5000 series).
> \- \[\] \*\*17.\*\* Add a button to enable full-screen mode in the visual DICOM browser.
> \- \[\] \*\*18.\*\* Apply thumbnail size settings changes without requiring a restart.
> \- \[\] \*\*19.\*\* Add a feature for force download of series/study:
> - Add a checkable setting (default: False). If any study is 3 hours old (based on DICOM study date), force redownload every time a query is performed (not for local search).
> - Enable monitoring (right-click action) for a configurable time. Automatically fetch and update the UI if any series or instances in a series are uploaded to PACS. Add UI icons to indicate updates. For series, check if new instances have been added to the PACS.
> \- \[\] \*\*20.\*\* Add a feature to check a folder containing DICOM files when clicking the query/retrieve lens button. If files are present, import them and clean the folder. Create a lock file in the DICOM folder with the PID of the session accessing/deleting the files. Investigate using a watcher for automatic import. Treat the local folder as a "local connection" (like a server) to allow adding multiple folders in settings. Ensure the infrastructure is protocol-independent.
> \- \[\] \*\*21.\*\* Fix rendering for Segmentation DICOM objects in the \`ctkThumbnail\` class.
> \- \[\] \*\*22.\*\* Add an option in settings to order series in the study widget by modality.
> \- \[\] \*\*23.\*\* Automatically load the source volume when loading a segmentation.
> \- \[\] \*\*24.\*\* Show a popup warning when loading a series that is unsupported (or supported with an extension).
> 
> 
> References: 
> 
> \- old roadmap: https://github.com/commontk/CTK/issues/1162

I am currently focusing on point (14-16) → UI refactoring and perfomances.
