Skip to main content
Version: v0.0.19

Dictionary

Public Dictionary namespace for @cosyte/dicom - Phase 1 deliverable.

D-10:

  • lookup - accepts either an 8-char hex tag ("00100010") or a keyword ("PatientName") and returns the typed DictionaryEntry or undefined.
  • byKeyword - keyword-only lookup; for cases where the caller has already validated the input shape and wants a narrower call.
  • uid - UID lookup (DICT-06).

No function throws on miss (D-10: "Returns the typed entry or undefined. No throws on miss."). Returned entries are deeply frozen - mutation attempts throw TypeError in strict mode (which all of @cosyte/dicom's emitted code runs under, given "use strict" is implicit for ES modules).

Example​

import { Dictionary } from "@cosyte/dicom";

// Tag or keyword, either way round, and `undefined` rather than a throw on a miss.
Dictionary.lookup("00100020")?.name; // "Patient ID"
Dictionary.byKeyword("Modality")?.tag; // "00080060"

// UIDs resolve to their registered name, so nobody hard-codes a SOP Class table.
Dictionary.uid("1.2.840.10008.5.1.4.1.1.2")?.name; // "CT Image Storage"

Interfaces​

DictionaryEntry​

One DICOM attribute as published in PS3.6 (Data Dictionary).

Example​

import { Dictionary } from "@cosyte/dicom";
const entry = Dictionary.lookup("00100010");
if (entry) {
// entry.keyword === "PatientName"
// entry.vr === ["PN"]
}

Properties​

keyword​

readonly keyword: string

name​

readonly name: string

repeatingGroup?​

readonly optional repeatingGroup?: boolean

true for repeating-group families ((50xx,xxxx), (60xx,xxxx): curves/overlays); the DictionaryEntry.tag field for these contains lowercase x placeholders, NOT a concrete 8-hex-char tag. Repeating-group entries are not surfaced by Dictionary.lookup(tag) for concrete tags.

retired​

readonly retired: boolean

tag​

readonly tag: string

vm​

readonly vm: string

vr​

readonly vr: readonly VR[]


UidEntry​

One DICOM UID as published in PS3.6 Annex A (Tables A-1 and A-2).

name is the normative UID Name, with two deliberate conveniences. Retirement is carried in retired rather than as the trailing (Retired) every retired Annex A row carries in its UID Name, and four transfer syntaxes carry the short form every DICOM toolkit prints rather than PS3.6's longer ...: Default Transfer Syntax for ... form. Every other name is the normative text.

Example​

import { Dictionary } from "@cosyte/dicom";
const ts = Dictionary.uid("1.2.840.10008.1.2.1");
if (ts) {
// ts.name === "Explicit VR Little Endian"
// ts.type === "TransferSyntax"
}

Properties​

name​

readonly name: string

retired​

readonly retired: boolean

type​

readonly type: "TransferSyntax" | "SOPClass" | "MetaSOPClass" | "WellKnownFrameOfReference" | "WellKnownSOPInstance" | "CodingScheme" | "ApplicationContext" | "ServiceClass" | "Other"

uid​

readonly uid: string

Type Aliases​

Tag​

Tag = string

8-character uppercase hex DICOM tag, e.g., "00100010" (Patient's Name).

For repeating-group attribute families ((50xx,xxxx) curves, (60xx,xxxx) overlays, etc.), the tag string preserves lowercase x placeholders verbatim

Example​

const tag: Tag = "00100010"; // Patient's Name

VR​

VR = "AE" | "AS" | "AT" | "CS" | "DA" | "DS" | "DT" | "FL" | "FD" | "IS" | "LO" | "LT" | "OB" | "OD" | "OF" | "OL" | "OV" | "OW" | "PN" | "SH" | "SL" | "SQ" | "SS" | "ST" | "SV" | "TM" | "UC" | "UI" | "UL" | "UN" | "UR" | "US" | "UT" | "UV"

The 33 standard DICOM Value Representations from PS3.5 §6.2 plus the 64-bit additions (OV, SV, UV) introduced in DICOM 2018.

Note that some attributes in the data dictionary list MULTIPLE possible VRs

  • see DictionaryEntry.vr (which is always an array, possibly empty for retired entries with no VR or special "See Note" entries).

Example​

const vr: VR = "PN"; // Person Name

Functions​

byKeyword()​

byKeyword(keyword): DictionaryEntry | undefined

Look up a DICOM attribute strictly by keyword ("PatientName").

Returns undefined for unknown keywords or malformed input. Use lookup if the input could be either a tag or a keyword.

Parameters​

keyword​

string

Returns​

DictionaryEntry | undefined

Example​

import { Dictionary } from "@cosyte/dicom";
const e = Dictionary.byKeyword("StudyInstanceUID");
// e?.tag === "0020000D"

lookup()​

lookup(tagOrKeyword): DictionaryEntry | undefined

Look up a DICOM attribute by tag ("00100010") or keyword ("PatientName").

Hex tag input is normalized to uppercase; keyword input is case-sensitive. Returns undefined for unknown tags, unknown keywords, malformed input, or tags from repeating-group families (those resolve via the family entry's repeatingGroup flag - see DictionaryEntry).

Parameters​

tagOrKeyword​

string

Returns​

DictionaryEntry | undefined

Example​

import { Dictionary } from "@cosyte/dicom";
const a = Dictionary.lookup("00100010"); // by tag
const b = Dictionary.lookup("PatientName"); // by keyword (DICT-04)
const c = Dictionary.lookup("not-real"); // undefined (D-10 no-throw)

uid()​

uid(uidValue): UidEntry | undefined

Look up a DICOM UID by its dotted-decimal value.

Covers PS3.6 Annex A whole: transfer syntaxes, SOP and Meta SOP Classes, well-known SOP Instances and Frames of Reference, coding schemes and the rest, current and retired alike. Returns undefined for unknown UIDs or malformed input. Used by parseDicom() (Phase 2) to render human-readable Transfer Syntax names (DICT-06).

Parameters​

uidValue​

string

Returns​

UidEntry | undefined

Example​

import { Dictionary } from "@cosyte/dicom";
const ts = Dictionary.uid("1.2.840.10008.1.2.1");
// ts?.name === "Explicit VR Little Endian"
// ts?.type === "TransferSyntax"