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