DICOM Tutorials

Although the world is full of suffering, it is also full of the overcoming of it. ~ Helen Keller

Background

This is a series of articles on the DICOMĀ® standard which plays a crucial role in nearly all diagnostic medicine-related workflows such as modality imaging, image transfer, image storage, procedures, printing, and interpretation. I hope this series of articles is useful to programmers and other information technology personnel who are new to this field by providing a quick and yet broad understanding necessary of the fundamentals before they attempt to build DICOM applications or participate in any DICOM-related initiatives. Also, a quick disclaimer that I do not serve on the DICOM standards committee. So, you should to refer to the standard itself and its latest recommendations before starting any project involving this standard.

Overview Tutorials

DICOM Programming with Java

01 DICOM Basics using Java - Making Sense of the DICOM File 02 DICOM Basics using Java - Creating a DICOM File 03 DICOM Basics using Java - Extracting Image Data 04 DICOM Basics using Java - Viewing DICOM Images 05 DICOM Basics using Java - Understanding DICOM Directory 06 DICOM Basics using Java - Orthanc DICOM Server 07 DICOM Basics using Java - Understanding Association/Negotiations 08 DICOM Basics using Java - Understanding DICOM Verification (C-ECHO) 09 DICOM Basics using Java - Handling Transient Errors during Communications 10 DICOM Basics using Java - Query and Retrieve Operations (C-FIND) 11 DICOM Basics using Java - Query and Retrieve Operations (C-MOVE) 12 DICOM Basics using Java - Query and Retrieve Operations (C-GET) 13 DICOM Basics using Java - Store Service (C-STORE) 14 DICOM Basics using Java - Storage Commitment Service 15 DICOM Basics using Java - Modality Worklist (MWL) 16 DICOM Basics using Java - Modality Performed Procedure Step (MPPS) 17 DICOM Basics using Java - Anonymization and De-identification 18 DICOM Basics using Java - Understanding DICOM Structured Reports 19 DICOM Basics using Java - Understanding Print Operations 20 DICOM Basics using Java - Introduction to DICOMweb 21 DICOM Basics using Java - Transfer Syntax and Compression 22 DICOM Basics using Java - Character Set Handling 23 DICOM Basics using Java - Private Tags 24 DICOM Basics using Java - Digital Signatures 25 DICOM Basics using Java - Secure Communications (TLS) 26 DICOM Basics using Java - Encapsulated Documents 27 DICOM Basics using Java - Presentation States (GSPS) 28 DICOM Basics using Java - Key Object Selection (KOS) 29 DICOM Basics using Java - Segmentation Objects 30 DICOM Basics using Java - Waveforms (ECG, EEG) 31 DICOM Basics using Java - Multi-modality Examples 32 DICOM Basics using Java - Radiation Therapy (RT) Objects

DICOM Programming with .NET

01 DICOM Basics using .NET and C# - Making Sense of the DICOM File 02 DICOM Basics using .NET and C# - Creating a DICOM File 03 DICOM Basics using .NET and C# - Extracting Image Data 04 DICOM Basics using .NET and C# - Viewing DICOM Images 05 DICOM Basics using .NET and C# - Reading DICOM Directories 06 DICOM Basics using .NET and C# - Writing DICOM Directories 07 DICOM Basics using .NET and C# - Orthanc DICOM Server 08 DICOM Basics using .NET and C# - Understanding Association/Negotiations 09 DICOM Basics using .NET and C# - Understanding DICOM Verification (C-ECHO) 10 DICOM Basics using .NET and C# - Handling Transient Errors during Communications 11 DICOM Basics using .NET and C# - Query and Retrieve Operations (C-FIND) 12 DICOM Basics using .NET and C# - Query and Retrieve Operations (C-MOVE) 13 DICOM Basics using .NET and C# - Query and Retrieve Operations (C-GET) 14 DICOM Basics using .NET and C# - Store Service (C-STORE) 15 DICOM Basics using .NET and C# - Storage Commitment Service 16 DICOM Basics using .NET and C# - Understanding Worklists and MPPS 17 DICOM Basics using .NET and C# - Understanding DICOM Structured Reports 18 DICOM Basics using .NET and C# - Understanding Print Operations 19 DICOM Basics using .NET and C# - Understanding DICOMweb 20 DICOM Basics using .NET and C# - Transfer Syntax and Compression 21 DICOM Basics using .NET and C# - Character Set Handling 22 DICOM Basics using .NET and C# - Private Tags 23 DICOM Basics using .NET and C# - Digital Signatures 24 DICOM Basics using .NET and C# - Secure Communications (TLS) 25 DICOM Basics using .NET and C# - Encapsulated Documents 26 DICOM Basics using .NET and C# - Presentation States (GSPS) 27 DICOM Basics using .NET and C# - Key Object Selection (KOS) 28 DICOM Basics using .NET and C# - Segmentation Objects 29 DICOM Basics using .NET and C# - Waveforms (ECG, EEG) 30 DICOM Basics using .NET and C# - Multi-modality Examples 31 DICOM Basics using .NET and C# - Radiation Therapy (RT) Objects

Other Topics on DICOM

Interactive Learning

Test Your Knowledge

Challenge yourself with our comprehensive DICOM quiz to reinforce your understanding of medical imaging standards.

Take the Quiz

Resources

Additional Considerations

For the Java tutorials in the DICOM programming series, I use the freely available and easy to use PixelMed Java DICOM Library. For the .NET tutorials in the DICOM programming series, I use another freely available and open source toolkit called Fellow Oak (fo-dicom) DICOM Library. Although I like these implementations, you should be aware that there are a number of other toolkits (such as dcm4che, DicomObjects and DCMTK which are as good if not better in some respects) on the market. You should be able to follow along easily with any other toolkit (open source or otherwise) if you wish to do so as many of the DICOM-related concepts I explain in my tutorials are implemented by all these toolkits in some form or the other.

Disclaimer

I want to make a disclaimer about these articles. I do not serve on the DICOM standards committee. Therefore, I must caution you to take the information provided here with a grain of salt, and ultimately refer to the standard itself and its latest recommendations before starting any project involving the standard. For more information about the standard, you can visit its main site here.

If you have any questions or comments regarding these articles/tutorials, please feel free to send me an email. Please note that I may not get back to you right away due to work and other commitments.