dvha-edit

Simple DICOM tag editor built with wxPython and pydicom


Keywords
dicom, wxpython, pydicom, pyinstaller
License
MIT
Install
pip install dvha-edit==0.7.post1

Documentation

DVH Analytics screenshot

DVHA DICOM Editor

Simple DICOM tag editor built with wxPython and pydicom

  • Executables provided, which require no installation
  • Create templates for routine tag editing
  • Search for DICOM tags by keyword
  • Dynamically define new DICOM tag values based on:
    • File paths
    • Initial DICOM tag values
    • DICOM compliant UIDs
      • Lookup DICOM prefixes
      • Set entropy source for UID generation
      • Maintain cross-file UID links
    • Randomly generated numbers
PyPi Version LGTM Python Code Quality

Source-Code Installation

To install via pip:

pip install dvha-edit

If you've installed via pip or setup.py, launch from your terminal with:

dvhaedit

If you've cloned the project, but did not run the setup.py installer, launch DVHA DICOM Editor with:

python dvhaedit_app.py

Dynamic Value Setting

Users can dynamically define new DICOM tag values based on file path or initial DICOM tag values.

Available Functions

  • File path / Tag Value:
    • file[n]: the nth component of the file path
    • val: DICOM tag value
  • Enumeration:
    • fenum[n]: an iterator based on file[n]
    • venum: an iterator based on val
  • DICOM UID
    • fuid[n] and vuid: same as fenum/venum, except the enumeration value is replaced with a DICOM compliant UID
  • Random Number
    • frand[n] and vrand: same as DICOM UID functions except the value is a random integer

Examples

For a directory /some/file/path/ANON0001/ containing files file_1.dcm, file_2.dcm:

  • Directory:
    • NOTE: file extensions are removed
    • some_string_*file[-1]*
      • some_string_file_1
      • some_string_file_2
    • *file[-2]*_AnotherString
      • ANON0001_AnotherString
      • ANON0001_AnotherString
  • File Enumeration:
    • some_string_*fenum[-1]*
      • some_string_1
      • some_string_2
    • *fenum[-2]*_AnotherString
      • 1_AnotherString
      • 1_AnotherString
  • Value Enumeration:
    • NOTE: Assume these two files have the same StudyInstanceUID but different SOPInstanceUIDs
    • *file[-2]*_*venum* used with SOPInstanceUID tag
      • ANON0001_1
      • ANON0001_2
    • *file[-2]*_*venum* used with StudyInstanceUID tag
      • ANON0001_1
      • ANON0001_1

MultiValue Tags

Some DICOM tags point to multiple values (i.e., MultiValue pydicom class). As of DVHA DICOM Editor v0.6, a new DICOM tag value can be interpreted as a list if it begins with [, ends with ], and uses , (comma-space) as a separator (this is the same format as python's str representation of a list). Do not add quotes to make an item a string. All value typing is handled by pydicom.

Example

The DICOM tag ImageOrientationPatient (0020, 0037) is a list of 6 integers. If you want this orientation to be head first-supine (HFS), it's value should be set to [1, 0, 0, 0, 1, 0].

=========================== =======================
Orientation                 ImageOrientationPatient
=========================== =======================
Feet First Decubitus Left   [0, 1, 0, 1, 0, 0]
Feet First Decubitus Right  [0, -1, 0, -1, 0, 0]
Feet First Prone            [1, 0, 0, 0, -1, 0]
Feet First Supine           [-1, 0, 0, 0, 1, 0]
Head First Decubitus Left   [0, -1, 0, 1, 0, 0]
Head First Decubitus Right  [0, 1, 0, -1, 0, 0]
Head First Prone            [-1, 0, 0, 0, -1, 0]
Head First Supine           [1, 0, 0, 0, 1, 0]
=========================== =======================
https://arxiv.org/ftp/arxiv/papers/1406/1406.0014.pdf Table 1