Introduction and Acknowledgements
- A new DICOM infrastructure was put in place beginning with Slicer 4.0.
- DICOM data is stored in a local data base, which is based on SQLite.
- DICOM data can be imported from disk into this data base.
- DICOM data can be created from the scene contents and exported to DICOM files.
- DICOM data can be retrieved from a PACS system after proper configuration of Slicer.
- DICOM data can be loaded into Slicer from the local database. A graphical user interface with display of thumbnails is available for data selection.
- Plans for the near future, include support for storing data from slicer into the data base and uploading data from the data base into a PACS system.
DICOM is a widely used and sophisticated set of standards for digital radiology (see the References section for more information). Slicer provides support for a subset of DICOM functionality, with the particular features driven by the needs of clinical research.
To organize the data and avoid redundant calculations, Slicer keeps a DICOM Database of information about the DICOM data. You can have multiple databases on your computer at a time, and switch between them if, for example, they include data from different research projects. Each database is simply a directory on your local disk that has a few SQLite files and subdirectories to store image data. Don't manually modify the contents of these directories. DICOM data can enter the database either through manual import or via a DICOM network transfer. Modules may also populate the DICOM database with the results of computation.
By right clicking on a Patient, Study, or Series, you can delete the entry from the DICOM database. Note that to avoid accidental data loss, slicer does not delete the corresponding image data files.
By selecting a Study and right clicking to get a context menu, you can choose to Export data from Slicer into DICOM. The metadata from the select study will be automatically filled in to the Export dialog and you can select a Slicer volume to export. Note that you should exercise extreme caution when working with these files in clinical situations, since non-standard or incorrect DICOM files can interfere with clinical operations. You can also choose to encapsulate the current MRML scene (via an MRB file) inside a DICOM dataset, which will be treated as a DICOM Secondary Capture document (note that the export feature has not been widely tested and should be considered experimental).
DICOM Data on the File System
The basic steps are as follows:
- Click the Import button in the DICOM Browser
- Select the folder which contains the data
- Optionally select the Copy option so that the files are copied into the database directory. Otherwise they will only be referenced in their original locaion.
Note that the DICOM standard does not specify how files will be organized on disk, so if you have DICOM data from a CDROM or otherwise transferred from a scanner, you cannot in general tell anything about the contents from the file or directory names. However once the data is imported to the database, it will be organized according the the DICOM standard Patient/Study/Series hierarchy.
Data in the scene
Data in the scene can be exported to the DICOM database:
- Select data to be exported in Subject Hierarchy module or initiate export from DICOM browser
- Edit tags for exportables
- Exported files are added to the DICOM database
DICOM is also a network communication standard. Slicer supports a DICOM Listener, DICOM Query/Retrieve interface, and a DICOM Send option. Note that in order to use these features, you must coordinate with the operators of the other DICOM nodes with which you wish to communicate. For example, you must work out agreement on such topics as network ports and application entity titles (AE Titles). Be aware that not all equipment supports all networking options, so configuration may be challenging and is often difficult to troubleshoot.
Port 104 is the standard DICOM port. All ports below 1024 require root access on unix-like systems (Linux and Mac). So you can run slicer with the sudo command to be able to open the port for the DICOM Listener. Or you can use a different port, like 11112. You need to configure that on both sides of the connection. You can only have one process at a time listening on a port so if you have a listener running the second one won't start up. Also if something adverse happens (a crash) the port may be kept open an you need to either kill the storescp helper process (or just reboot the computer) to free the port. Consult the Error Log for diagnostic information.
DICOM Loading/Saving and Plugins
A main function of the DICOM module is to map from acquisition data organization into volume representation. That is, DICOM files typically describe attributes of the image capture, like the sequence of locations of the table during CT acquisition, while Slicer operates on image volumes of regularly spaced pixels. If, for example, the speed of the table motion is not consistent during an acquisition (which can be the case for some contrast 'bolus chasing' scans, Slicer's DICOM module will warn the user that the acquisition geometry is not consistent and the user should use caution when interpreting analysis results such as measurements.
From a developer perspective, the DICOM module exposes a plug-in architecture that allows acquisition-specific and modality-specific interpretation of DICOM data. From a user perspective this means that often Slicer will be able to suggest multiple ways of interpreting the data (such as reading DICOM files as a Diffusion dataset or as a scalar volume. When it is computable by examining the files, the DICOM module will select the most likely interpretation option by default. As of this release, standard plugins include scalar volumes and diffusion volumes, while extensions are available for segmentation objects, RT data, and PET/CT data. More plugins are expected for future versions. It is a long-term objective to be able to represent most if not all Slicer's data in the corresponding DICOM data objects as the standard evolves to support them.
- See the RSNA 2012 Training on Visualization for description and sample data (Direct link to slides as pdf).
Referring to the "DICOM in use" image in the top left of this page, the most important controls for day-to-day use are highlighted with gray callouts. The are described here in the order you are likely to use them.
- Database Directory allows you to select a location on disk for a local database of DICOM files. You may have several directories to organize your data, and the currently selected on will be displayed in the DICOM Browser.
- Import Button allows you to select a directory to be parsed for DICOM data. The results are stored in the currently selected DICOM Database.
- Patient Selection shows patients in the database. You can multi-select patients.
- Study Selection shows studies for the currently selected patients. You can mult-select studies.
- Series Selection shows series for the currently selected patient studies. You can multi-select series.
- Search Box Each patient/study/series can be filtered by typing in these fields.
- Examine Button Runs each of the DICOM Plugins on the currently selected series and offers the result in the Load Options table.
- Plugin Options You can choose which plugins will be checked when examining the selected series.
- Load Options displays the possible interpretations of the data based on the current plugins. The most likely plugin results are selected by default. You can override the defaults if you want to load the data in a different way. There will not always be a one-to-one mapping of selected series to load options.
- Load Button loads the currently selected load options into slicer.
- Header Button displays a text dump of the DICOM objects in the current series selection.
- DICOM export dialog can be opened from
- Subject Hierarchy: action named "Export to DICOM..." appears in right-click context menu for series and studies, the selected node is automatically selected in the export tree
- DICOM browser: via the Export button in the toolbar (has been there but was be disabled), no selection is made in the export tree
- The user can export one or more series, or the entire scene. This selection is made by the radio button on the top.
- 1. Select node: Modified subject hierarchy tree in which the user selects the series or study to export.
- 2. Select export type: Once the user selected a node, the DICOM plugins generate exportables for the series they can export. The list of the results appear in this section, grouped by plugin. The confidence number will be the average of the confidence numbers for the individual series for that plugin.
- 3. Edit DICOM tags:
- Pseudo-tags: the "tags" are not real DICOM tags with (XXXX,YYYY) identifiers, they are just concepts ("pseudo-tags"), that the DICOM plugins prompt to the user to fill out. It has been decided to go this way, as (1) It would be extremely hard to program the whole DICOM tag structure into Slicer, (2) It would not be particularly useful, as most tags will be auto-populated by the DICOM plugin, and just some need to be edited by the user, and (3) The plugins can expose other export options in this list (e.g. compession, naming convention)
- The DICOM tag editor consists of a list of tables. Tables for the common tags for the patient and study on the top, and the tags for the individual series below them (see image about tag editor below).
- Save tags on export: Checkbox to allow saving the tags back to the MRML nodes as attributes. Off by default because it is expected that in most cases these values are temporary for the export session.
- Output folder: Choose output folder. By default it is the current DICOM database. If not changed (or changed to a Slicer DICOM database folder), then the data is saved in a temporary folder (just like with the old exporter), and added to the database with copy function on. If changed to a non-database folder, then the data is saved into that folder, but it is added to the DICOM database anyway, with copy feature off (link to data only).
- Export button: Export starts. In case of error, the message is displayed in red on the left side of the dialog in the line of the "Save tags on export" checkbox. The error message stays there until something is changed.
- Loading Data Can read scalar volume DICOM data, bypassing the database.
- Reporting Extension reads and write DICOM Segmentation Objects (label maps).
- SlicerRT reads and write DICOM Radiation Therapy Objects and provides tools for processing them.
- LongitudinalPETCT reads all PET/CT studies for a selected patient and provides tools for tracking metabolic activity detected by PET tracers.
- See the Slicer DICOM FAQ
- The DICOM Homepage: http://dicom.nema.org/
- DICOM on wikipedia: http://en.wikipedia.org/wiki/DICOM
- A useful tag lookup site: http://dicomlookup.com/
- A hyperlinked version of the standard: http://dabsoft.ch/dicom/
- A handy book about DICOM: http://www.amazon.com/Digital-Imaging-Communications-Medicine-DICOM/dp/3642108490/ref=dp_ob_title_bk
Information for Developers
The overall DICOM Implementation in 3D Slicer consists of two main bodies of code embedded within the application. CTK code is responsible for the implementation of the DICOM database and networking layer. The CTK code is implemented C++ and follows the Qt style. The DICOM Module exposes this functionality to slicer users, and provides hooks through which other module can register DICOM Plugins to handle the conversion of specific DICOM data objects into the corresponding MRML representation. Once the data is in slicer, it can be operated on via the standard slicer mechanisms.