Difference between revisions of "Documentation/Nightly/Modules/DICOM"

From Slicer Wiki
Jump to: navigation, search
(Moved to readthedocs)
Tags: 2017 source edit, Replaced
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<noinclude>{{documentation/versioncheck}}</noinclude>
+
<noinclude>{{documentation/versioncheck}}
{{Clear|right}}{{TOC right}}
+
</noinclude>
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-header}}
 
<!-- ---------------------------- -->
 
  
<!-- ---------------------------- -->
+
{{documentation/banner
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}
+
| text = [https://slicer.readthedocs.io/en/latest/user_guide/modules/dicom.html This page has been moved to read-the-docs.]
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}
+
| background-color = 8FBC8F }}
{{documentation/{{documentation/version}}/module-introduction-row}}
 
:'''Author(s)/Contributor(s):''' Steve Pieper (Isomics Inc.), Michael Onken (Offis), Marco Nolden (DFKZ), Julien Finet (Kitware), Stephen Aylward (Kitware), Nicholas Herlambang (AZE), Alireza Mehrtash (BWH), Csaba Pinter (PerkLab, Queen's)<br>
 
: '''Acknowledgements:''' This work is part of the [http://www.na-mic.org/ National Alliance for Medical Image Computing] (NA-MIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149, and by Quantitative Image Informatics for Cancer Research (QIICR) (U24 CA180918) <br>
 
: '''Contact:''' Steve Pieper, <email>pieper@bwh.harvard.edu</email><br>
 
{{documentation/{{documentation/version}}/module-introduction-row}}
 
{{documentation/{{documentation/version}}/module-introduction-logo-gallery
 
|{{collaborator|logo|isomics}}|{{collaborator|longname|isomics}}
 
|{{collaborator|logo|namic}}|{{collaborator|longname|namic}}
 
|{{collaborator|logo|nac}}|{{collaborator|longname|nac}}
 
|{{collaborator|logo|ctk}}|{{collaborator|longname|ctk}}
 
|{{collaborator|logo|qiicr}}|{{collaborator|longname|qiicr}}
 
|Image:DICOM-OFFIS-logo.png|DICOM-OFFIS
 
}}
 
{{documentation/{{documentation/version}}/module-introduction-end}}
 
 
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Module Description}}
 
{{documentation/{{documentation/version}}/module-description}}
 
 
 
*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.
 
 
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Use Cases}}
 
This module is used for DICOM import and export.
 
 
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Screenshots}}
 
 
 
{|
 
|[[image:DICOM Screenshot-1 1204-11-17-10-36.png|thumb|380px|DICOM module in use]]
 
|[[Image:Form_224.png|thumb|380px|DICOM Query dialog]]
 
|[[Image:DICOM Horizontal View 2014-11-17-09-35.png|thumb|380px|Horizontal table view]]
 
|}
 
{|
 
|[[Image:DICOM-3 2014-11-17-10-42.png‎|thumb|380px|DICOM Browser in Advanced Mode (Control plugins and access to load options)]]
 
|[[Image:DICOM4 2014-11-17-09-38.png|thumb|380px|DICOM Meta Data Browser (DICOM header viewer)]]
 
|[[Image:DICOM-5 2014-11-17-10-46.png|thumb|380px|More options (change local database directory and table display density)]]
 
|}
 
{|
 
|[[Image:20141103_DICOM_Export_Dialog.png|thumb|380px|DICOM Export Dialog]]
 
|[[Image:DICOM-Preferences.png|thumb|380px|DICOM Preferences]]
 
|}
 
 
 
=DICOM Concepts=
 
 
 
DICOM is a widely used and sophisticated set of standards for digital radiology (see the [[#References|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.
 
 
 
 
 
=DICOM Organization=
 
 
 
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 [http://sqlite.org/ 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 Networking=
 
 
 
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.
 
 
 
== Connection Ports ==
 
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 [[documentation/{{documentation/version}}/SlicerApplication/ErrorLog|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 [[Documentation/{{documentation/version}}#Diffusion|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, of Slicer's data in the corresponding DICOM data objects as the standard evolves to support them.
 
 
 
<!-- Tutorials ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Tutorials}}
 
* See [http://www.na-mic.org/Wiki/index.php/RSNA_2012#3D_Interactive_Visualization_of_DICOM_images the RSNA 2012 Training on Visualization] for description and sample data (Direct link to [http://www.na-mic.org/Wiki/images/6/66/3DVisualizationDICOM_RadiologyApplications_SoniaPujol_RSNA2012.pdf slides as pdf]).
 
* [https://pieper.github.io/content/handson/#/DICOM This screen capture animation] shows how to import and load DICOM data (also includes inspection of the file contents, which is an optional step).
 
 
 
 
 
 
 
 
 
 
 
<!-- Panels ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Panels}}
 
 
 
==DICOM import==
 
 
 
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==
 
 
 
===How to export data from the Slicer scene to DICOM files===
 
* Open Data module, go to Subject Hierarchy tab (it is the tab shown by default)
 
* Make sure the data nodes that you want to export are in a DICOM-compliant hierarchy: parent of the data node is a Study, parent of the study is a Subject. To create a hierarchy, right-click in an empty area of the tree, select "Create new subject", then right-click on the newly created subject and select "Create child study", then drag-and-drop your data nodes under this study.
 
* Right-click on the data node to be exported and click "Export to DICOM..." to display DICOM export window (you can also show it by clicking "Export" button in the toolbar of DICOM browser module)
 
* Choose Output folder: By default, files are written into the folder where Slicer DICOM database is located.
 
* Click Export button: Export may take a few minutes. 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.
 
 
 
===Advanced options===
 
* DICOM export window can be also opened from the DICOM browser, by clicking "Export" button in the toolbar
 
* Export mode:
 
** Export series: export one or more selected series, to be viewed on a standard DICOM-compliant viewer
 
** Export entire scene: save the entire Slicer scene into a DICOM secondary capture file; the content can be stored on a DICOM archival system but can only be edited in Slicer
 
* 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.
 
* Editing DICOM tags:
 
** 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)
 
** "Tags" in the displayed table are not written directly to DICOM tags, they are just used by the DICOM plugins to fill DICOM tags in the exported files. This allows much more flexibility and DICOM plugins can auto-populate some information and plugins can expose other export options in this list (e.g. compression, naming convention).
 
** Save tags to scene: Checkbox to allow saving the tags back to the MRML nodes as attributes.
 
* Import exported data: if checked, the exported files are added to Slicer's DICOM database.
 
* The Edit->Preferences->DICOM page can be used to select options
 
** Generic
 
*** Load referenced series will give you the option of easily loading, for example, the master volume of a segmentation when you open the segmentation.  This can also be made to happen automatically.
 
** Scalar Volume
 
*** You can choose what back-end library to use (currently GDCM, DCMTK, or GDCM with DCMTK fallback with the last option being the default.  This is provided in case some data is unsupported by one library or the other.
 
*** Acquisition geometry regularization option supports the creation of a nonlinear transform that corrects for things like missing slices or gantry tilt in the acquisition
 
*** Autoloading subseries by time is an option break up some 4D acquisitions into individual volume, but is optional since some volumes are also acquired in time unites and should not be split.
 
 
 
=Troubleshooting=
 
 
 
==How to obtain DICOM metadata==
 
 
 
* Open DICOM browser
 
* Select the data set that you want to load by clicking on a series (item in the listbox in the bottom)
 
* Click Metadata button
 
* Click Copy Metadata button
 
* Paste the copied text to any text editor
 
* '''Remove patient name, birthdate, ID, and all other patient identifiable information'''
 
* Copy-paste remaining text to Slicer forum post or email
 
 
 
<!-- Similar modules ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Similar modules}}
 
* [[Documentation/{{documentation/version}}/SlicerApplication/LoadingData|Loading Data]] Can read scalar volume DICOM data, bypassing the database.
 
* [[Documentation/{{documentation/version}}/Extensions/Reporting|Reporting Extension]] reads and writes DICOM Segmentation Objects (label maps).
 
* [[Documentation/{{documentation/version}}/Extensions/Reporting|SlicerRT]] reads and write DICOM Radiation Therapy Objects and provides tools for processing them.
 
* [[Documentation/{{documentation/version}}/Extensions/Reporting|LongitudinalPETCT]] reads all PET/CT studies for a selected patient and provides tools for tracking metabolic activity detected by PET tracers.
 
 
 
 
 
<!-- References ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|References}}
 
See the [http://commontk.org CTK web site] for more information on the internals of the DICOM implementation.  This tool uses the [http://dicom.offis.de DCMTK DICOM library].
 
 
 
=== Useful links ===
 
* See the [[Documentation/{{documentation/version}}/FAQ/DICOM|Slicer DICOM FAQ]]
 
* The DICOM Homepage: http://dicom.nema.org/
 
* DICOM on wikipedia: http://en.wikipedia.org/wiki/DICOM
 
* Clean and simple DICOM tag browser: http://dicom.innolitics.com
 
* 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
 
 
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-section|Information for Developers}}
 
 
 
 
 
[[Image:DICOM-architecture.png|thumb|580px|DICOM module architecture.]]
 
 
 
The overall DICOM Implementation in 3D Slicer consists of two main bodies of code embedded within the application.  [http://commontk.org 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.
 
 
 
<!-- ---------------------------- -->
 
{{documentation/{{documentation/version}}/module-footer}}
 
<!-- ---------------------------- -->
 

Latest revision as of 19:02, 2 November 2020

Home < Documentation < Nightly < Modules < DICOM