pydicom
Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM m
By davila7 · 379 installs
npx skills add davila7/claude-code-templates --skill pydicom
Source repository · Upstream listing
Pydicom
Overview
Pydicom is a pure Python package for working with DICOM files, the standard format for medical imaging data. This skill provides guidance on reading, writing, and manipulating DICOM files, including working with pixel data, metadata, and various compression formats.
When to Use This Skill
Use this skill when working with:
Medical imaging files (CT, MRI, X ray, ultrasound, PET, etc.)
DICOM datasets requiring metadata extraction or modification
Pixel data extraction and image processing from medical scans
DICOM anonymization for research or data sharing
Converting DICOM files to standard image formats
Compressed DICOM data requiring decompression
DICOM sequences and structured reports
Multi slice volume reconstruction
PACS (Picture Archiving and Communication System) integration
Installation
Install pydicom and common dependencies:
For handling compressed DICOM files, additional packages may be needed:
Core Workflows
Reading DICOM Files
Read a DICOM file using pydicom.dcmread() :
Key points:
dcmread() returns a Dataset object
Access data elements using attribute notation (e.g., ds.PatientName ) or tag notation (e.g., ds[0x0010, 0x0010] )
Use ds.file meta to access file metadata like Transfer Syntax UID
Handle missing attributes with getattr(ds, 'AttributeName', default value) or hasattr(ds, 'AttributeName')
Working with Pixel Data
Extract and manipulate image data from DICOM files:
Working with color images:
Multi frame images (videos/series):
Converting DICOM to Image Formats
Use the provided dicom to image.py script or convert manually:
Use the script: python scripts/dicom to image.py input.dcm output.png
Modifying Metadata
Modify DICOM data elements:
Anonymizing DICOM Files
Remove or replace patient identifiable information:
Use the provided script: python scripts/anonymize dicom.py input.dcm output.dcm
Writing DICOM Files
Create DICOM files from scratch:
Compression and Decompression
Handle compressed DICOM files:
Common transfer syntaxes:
ExplicitVRLittleEndian Uncompressed, most common
JPEGBaseline8Bit JPEG lossy compression
JPEGLossless JPEG lossless compression
JPEG2000Lossless JPEG 2000 lossless
RLELossless Run Length Encoding lossless
See references/transfer syntaxes.md for complete list.
Working with DICOM Sequences
Handle nested data structures:
Processing DICOM Series
Work with multiple related DICOM files:
Helper Scripts
This skill includes utility scripts in the scripts/ directory:
anonymize dicom.py
Anonymize DICOM files by removing or replacing Protected Health Information (PHI).
dicom to image.py
Convert DICOM files to common image formats (PNG, JPEG, TIFF).
extract metadata.py
Extract and display DICOM metadata in a readable format.
Reference Materials
Detailed reference information is available in the references/ directory:
common tags.md : Comprehensive list of commonly used DICOM tags organized by category (Patient, Study, Series, Image, etc.)
transfer syntaxes.md : Complete reference of DICOM transfer syntaxes and compression formats
Common Issues and Solutions
Issue: "Unable to decode pixel data"
Solution: Install additional compression handlers: uv pip install pylibjpeg pylibjpeg libjpeg python gdcm
Issue: "AttributeError" when accessing tags
Solution: Check if attribute exists with hasattr(ds, 'AttributeName') or use ds.get('AttributeName', default)
Issue: Incorrect image display (too dark/bright)
Solution: Apply VOI LUT windowing: apply voi lut(pixel array, ds) or manually adjust with WindowCenter and WindowWidth
Issue: Memory issues with large series
Solution: Process files iteratively, use memory mapped arrays, or downsample images
Best Practices
1. Always check for required attributes before accessing them using hasattr() or get()
2. Preserve file metadata when modifying files by using save as() with write like original=True
3. Use Transfer Syntax UIDs to understand compression format before processing pixel data
4. Handle exceptions when reading files from untrusted sources
5. Apply proper windowing (VOI LUT) for medical image visualization
6. Maintain spatial information (pixel spacing, slice thickness) when processing 3D volumes
7. Verify anonymization thoroughly before sharing medical data
8. Use UIDs correctly generate new UIDs when creating new instances, preserve them when modifying
Documentation
Official pydicom documentation: https://pydicom.github.io/pydicom/dev/
User Guide: https://pydicom.github.io/pydicom/dev/guides/user/index.html
Tutorials: https://pydicom.github.io/pydicom/dev/tutorials/index.html
API Reference: https://pydicom.github.io/pydicom/dev/reference/index.html
Examples: https://pydicom.github.io/pydicom/dev/auto examples/index.html