Skip to main content

Private tags

Block convention

DICOM private tags live in odd-numbered groups. Within a group, an application reserves a "block" by writing a creator string into element (gggg, 00XX) where XX is the block number (0x10 - 0xFF). Tags inside the reserved block then use elements (gggg, XXYY) where YY is the offset within the block.

To look a private tag up, you need three pieces of information:

  1. The group gggg.
  2. The block offset 0xYY (low byte of the element).
  3. The exact private creator string from the file.
d.lookup(0x0021, 0x08, "Siemens: Thorax/Multix FD Lab Settings")

Not:

d.lookup(0x0021, 0x1008, "Siemens: ...") # WRONG, this is the resolved element

Creator string canonicalization

Private creator strings are canonicalized via Unicode NFC normalization plus a lowercase fold before hashing into the index. Lookup accepts the original (cased, possibly non-NFC) string.

Block range note

This dictionary's compiler normalizes every private-tag element to element & 0xFF so that all entries are keyed by block offset. Some upstream sources stored the resolved element (0x1008) rather than the offset (0x08); these are corrected at compile time and deduplicated.

Vendor coverage

VendorTagsPDFs
Siemens Healthineers1,951439
GE HealthCare1,762257
Philips Healthcare791807
Canon Medical (incl. Toshiba)410284
Acuson / Siemens ultrasound21453
PDF-scraped subtotal5,1281,840
pydicom / GDCM community contributions9,432-
Total private14,560-
Public (PS3.6 standard)5,129-
Grand total19,521-

Counts reflect the post-dedup 0.2.0 dictionary.