Skill Tracer
Skills › Scientific Agent Skills › pydicom › common_tags.md

common_tags.md

299 lines · skills/pydicom/references/common_tags.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# DICOM data elements, tags, and privacy review
2
3This is a working guide, not a complete DICOM dictionary or an attribute
4confidentiality profile. pydicom 3.0.2 bundles the 2024c public dictionary; use
5the live DICOM PS3.3/PS3.6 and the selected IOD when correctness depends on a
6newer edition.
7

DICOM data elements, tags, and privacy review

This is a working guide, not a complete DICOM dictionary or an attribute confidentiality profile. pydicom 3.0.2 bundles the 2024c public dictionary; use the live DICOM PS3.3/PS3.6 and the selected IOD when correctness depends on a newer edition.

Raw lines 1 to 7
8## Privacy boundary
9
10DICOM metadata and pixels may contain PHI. Do not print a complete `Dataset`,
11serialize the full dataset to JSON, or copy arbitrary values into logs. Tag
12names that appear technical can still identify a person through site-specific
13values, free text, private data, UIDs, dates, devices, or linkage with external
14records.
16DICOM PS3.15 Annex E says that applying attribute actions does not guarantee
17that the Information Object is de-identified. A valid workflow must select a
18profile/options for its context and include expert verification and
19re-identification risk review.

Privacy boundary

DICOM metadata and pixels may contain PHI. Do not print a complete Dataset, serialize the full dataset to JSON, or copy arbitrary values into logs. Tag names that appear technical can still identify a person through site-specific values, free text, private data, UIDs, dates, devices, or linkage with external records.

DICOM PS3.15 Annex E says that applying attribute actions does not guarantee that the Information Object is de-identified. A valid workflow must select a profile/options for its context and include expert verification and re-identification risk review.

Raw lines 8 to 20
21## pydicom access model
23```python
24from pydicom import dcmread
25from pydicom.tag import Tag
27ds = dcmread(
28 "authorized/input.dcm",
29 stop_before_pixels=True,
30 specific_tags=["SOPClassUID", "Modality", "Rows", "Columns"],
33modality = ds.get("Modality", "UNSPECIFIED")
34element = ds.get_item(Tag(0x0008, 0x0016))
35```
37- Keyword access (`ds.Modality`) returns the value and raises `AttributeError`
38 when absent.
39- `ds.get("Modality", default)` is safer for optional elements.
40- Tag indexing (`ds[0x0008, 0x0016]`) returns a `DataElement`; read `.value`
41 only when authorized.
42- A tag consists of a 16-bit group and 16-bit element.
43- Standard public tags generally use even groups. Private data uses odd groups
44 and private creator blocks.
45- `Dataset` contains `DataElement` objects. A value with VR `SQ` is a
46 `Sequence` of nested `Dataset` items.

pydicom access model

from pydicom import dcmread
from pydicom.tag import Tag

ds = dcmread(
    "authorized/input.dcm",
    stop_before_pixels=True,
    specific_tags=["SOPClassUID", "Modality", "Rows", "Columns"],
)

modality = ds.get("Modality", "UNSPECIFIED")
element = ds.get_item(Tag(0x0008, 0x0016))
  • Keyword access (ds.Modality) returns the value and raises AttributeError when absent.
  • ds.get("Modality", default) is safer for optional elements.
  • Tag indexing (ds[0x0008, 0x0016]) returns a DataElement; read .value only when authorized.
  • A tag consists of a 16-bit group and 16-bit element.
  • Standard public tags generally use even groups. Private data uses odd groups and private creator blocks.
  • Dataset contains DataElement objects. A value with VR SQ is a Sequence of nested Dataset items.
Raw lines 21 to 47
48## Narrow technical allowlist
50The following values are commonly useful for bounded technical inventory.
51They do not make an entire record safe to disclose.
53| Tag | Keyword | VR | Technical use |
54|---|---|---|---|
55| (0008,0016) | SOPClassUID | UI | Identifies the standardized SOP Class |
56| (0008,0060) | Modality | CS | Modality code |
57| (0002,0010) | TransferSyntaxUID | UI | File encoding/compression |
58| (0028,0002) | SamplesPerPixel | US | Samples per pixel |
59| (0028,0004) | PhotometricInterpretation | CS | Pixel color/monochrome interpretation |
60| (0028,0006) | PlanarConfiguration | US | Color sample layout |
61| (0028,0008) | NumberOfFrames | IS | Declared frames |
62| (0028,0010) | Rows | US | Rows per frame |
63| (0028,0011) | Columns | US | Columns per frame |
64| (0028,0100) | BitsAllocated | US | Storage bits per sample |
65| (0028,0101) | BitsStored | US | Meaningful bits per sample |
66| (0028,0102) | HighBit | US | Highest stored bit |
67| (0028,0103) | PixelRepresentation | US | Unsigned (0) or signed (1) |
68| (0028,0301) | BurnedInAnnotation | CS | Declared burned-in annotation status |
69| (0028,0302) | RecognizableVisualFeatures | CS | Declared recognizable-feature status |
70| (0028,2110) | LossyImageCompression | CS | Whether lossy compression occurred |
72`BurnedInAnnotation=NO` is a declaration, not proof that pixels are clean.
73Absence, `YES`, or another value requires review. Even `NO` does not address
74recognizable facial/anatomic features or matching against source images.

Narrow technical allowlist

The following values are commonly useful for bounded technical inventory. They do not make an entire record safe to disclose.

TagKeywordVRTechnical use
(0008,0016)SOPClassUIDUIIdentifies the standardized SOP Class
(0008,0060)ModalityCSModality code
(0002,0010)TransferSyntaxUIDUIFile encoding/compression
(0028,0002)SamplesPerPixelUSSamples per pixel
(0028,0004)PhotometricInterpretationCSPixel color/monochrome interpretation
(0028,0006)PlanarConfigurationUSColor sample layout
(0028,0008)NumberOfFramesISDeclared frames
(0028,0010)RowsUSRows per frame
(0028,0011)ColumnsUSColumns per frame
(0028,0100)BitsAllocatedUSStorage bits per sample
(0028,0101)BitsStoredUSMeaningful bits per sample
(0028,0102)HighBitUSHighest stored bit
(0028,0103)PixelRepresentationUSUnsigned (0) or signed (1)
(0028,0301)BurnedInAnnotationCSDeclared burned-in annotation status
(0028,0302)RecognizableVisualFeaturesCSDeclared recognizable-feature status
(0028,2110)LossyImageCompressionCSWhether lossy compression occurred

BurnedInAnnotation=NO is a declaration, not proof that pixels are clean. Absence, YES, or another value requires review. Even NO does not address recognizable facial/anatomic features or matching against source images.

Raw lines 48 to 75
76## Instance, relationship, and spatial elements
78These values are technically important but can enable linkage or reveal
79individual context. Do not emit them in default reports.
81| Tag | Keyword | Privacy/semantic concern |
82|---|---|---|
83| (0008,0018) | SOPInstanceUID | Instance identifier; may support linkage |
84| (0020,000D) | StudyInstanceUID | Study-level linkage |
85| (0020,000E) | SeriesInstanceUID | Series-level linkage |
86| (0020,0052) | FrameOfReferenceUID | Spatial/reference linkage |
87| (0008,1155) | ReferencedSOPInstanceUID | Cross-instance relationship |
88| (0020,0032) | ImagePositionPatient | Patient-coordinate position |
89| (0020,0037) | ImageOrientationPatient | Patient-coordinate orientation |
90| (0028,0030) | PixelSpacing | Physical sample spacing |
91| (0018,0050) | SliceThickness | Nominal reconstructed thickness |
92| (0018,0088) | SpacingBetweenSlices | Center-to-center spacing when defined |
94Do not sort a series only by `SliceLocation` or assume `SliceThickness` equals
95inter-slice spacing. Reconstruct geometry from the applicable IOD, orientation,
96position, frame functional groups, and validated series membership.
98For the Image Plane Module with BIPED or absent Anatomical Orientation Type,
99patient coordinates increase left, posterior, and toward the head (LPS).
100`PixelSpacing = [row_spacing, column_spacing]` in mm. For zero-based NumPy
101indices `[row, column]`, the pixel center is:
103```text
104ImagePositionPatient
105 + column * PixelSpacing[1] * ImageOrientationPatient[:3]
106 + row * PixelSpacing[0] * ImageOrientationPatient[3:]
107```
109For a consistent parallel stack, sort positions projected onto the cross product
110of the two orientation vectors, then check duplicates, spacing, orientation,
111Frame of Reference, and acquisition dimensions. Series membership alone does
112not separate time points/echoes/diffusion directions. Enhanced multi-frame
113ordering uses Dimension Index Values and frame functional groups. A PNG does
114not retain patient geometry; resampling/rotation requires corresponding affine
115updates and interpolation appropriate to the data. QUADRUPED conventions differ.

Instance, relationship, and spatial elements

These values are technically important but can enable linkage or reveal individual context. Do not emit them in default reports.

TagKeywordPrivacy/semantic concern
(0008,0018)SOPInstanceUIDInstance identifier; may support linkage
(0020,000D)StudyInstanceUIDStudy-level linkage
(0020,000E)SeriesInstanceUIDSeries-level linkage
(0020,0052)FrameOfReferenceUIDSpatial/reference linkage
(0008,1155)ReferencedSOPInstanceUIDCross-instance relationship
(0020,0032)ImagePositionPatientPatient-coordinate position
(0020,0037)ImageOrientationPatientPatient-coordinate orientation
(0028,0030)PixelSpacingPhysical sample spacing
(0018,0050)SliceThicknessNominal reconstructed thickness
(0018,0088)SpacingBetweenSlicesCenter-to-center spacing when defined

Do not sort a series only by SliceLocation or assume SliceThickness equals inter-slice spacing. Reconstruct geometry from the applicable IOD, orientation, position, frame functional groups, and validated series membership.

For the Image Plane Module with BIPED or absent Anatomical Orientation Type, patient coordinates increase left, posterior, and toward the head (LPS). PixelSpacing = [row_spacing, column_spacing] in mm. For zero-based NumPy indices [row, column], the pixel center is:

ImagePositionPatient
  + column * PixelSpacing[1] * ImageOrientationPatient[:3]
  + row    * PixelSpacing[0] * ImageOrientationPatient[3:]

For a consistent parallel stack, sort positions projected onto the cross product of the two orientation vectors, then check duplicates, spacing, orientation, Frame of Reference, and acquisition dimensions. Series membership alone does not separate time points/echoes/diffusion directions. Enhanced multi-frame ordering uses Dimension Index Values and frame functional groups. A PNG does not retain patient geometry; resampling/rotation requires corresponding affine updates and interpolation appropriate to the data. QUADRUPED conventions differ.

Raw lines 76 to 116
117## Direct and quasi-identifiers
119The following examples are not exhaustive. PS3.15 Table E.1-1 and the chosen
120options control action selection, including nested occurrences.
122| Tag | Keyword | Typical risk |
123|---|---|---|
124| (0010,0010) | PatientName | Direct identifier |
125| (0010,0020) | PatientID | Direct/local identifier |
126| (0010,0021) | IssuerOfPatientID | Identifier namespace |
127| (0010,0030) | PatientBirthDate | Date/quasi-identifier |
128| (0010,0032) | PatientBirthTime | Time/quasi-identifier |
129| (0010,0040) | PatientSex | Patient characteristic |
130| (0010,1010) | PatientAge | Patient characteristic |
131| (0010,1020) | PatientSize | Patient characteristic |
132| (0010,1030) | PatientWeight | Patient characteristic |
133| (0010,1040) | PatientAddress | Direct identifier |
134| (0010,2154) | PatientTelephoneNumbers | Direct identifier |
135| (0010,4000) | PatientComments | Free text |
136| (0008,0050) | AccessionNumber | Order/study linkage |
137| (0020,0010) | StudyID | Local study identifier |
138| (0040,1001) | RequestedProcedureID | Order linkage |
139| (0040,0009) | ScheduledProcedureStepID | Workflow linkage |
140| (0008,0090) | ReferringPhysicianName | Person identifier |
141| (0008,1050) | PerformingPhysicianName | Person identifier |
142| (0008,1070) | OperatorsName | Person identifier |
143| (0008,0080) | InstitutionName | Organization identifier |
144| (0008,0081) | InstitutionAddress | Organization/location identifier |
145| (0008,1010) | StationName | Device/site identifier |
146| (0018,1000) | DeviceSerialNumber | Device identifier |
147| (0008,1030) | StudyDescription | Potential free text |
148| (0008,103E) | SeriesDescription | Potential free text |
149| (0018,1030) | ProtocolName | Site/user-entered text |
151Required IOD type matters. A PS3.15 action can remove (`X`), zero (`Z`),
152replace with a valid dummy value (`D`), replace a UID consistently (`U`), keep
153(`K`), or clean (`C`), with conditional combinations. Blind deletion can make
154an instance non-conformant.

Direct and quasi-identifiers

The following examples are not exhaustive. PS3.15 Table E.1-1 and the chosen options control action selection, including nested occurrences.

TagKeywordTypical risk
(0010,0010)PatientNameDirect identifier
(0010,0020)PatientIDDirect/local identifier
(0010,0021)IssuerOfPatientIDIdentifier namespace
(0010,0030)PatientBirthDateDate/quasi-identifier
(0010,0032)PatientBirthTimeTime/quasi-identifier
(0010,0040)PatientSexPatient characteristic
(0010,1010)PatientAgePatient characteristic
(0010,1020)PatientSizePatient characteristic
(0010,1030)PatientWeightPatient characteristic
(0010,1040)PatientAddressDirect identifier
(0010,2154)PatientTelephoneNumbersDirect identifier
(0010,4000)PatientCommentsFree text
(0008,0050)AccessionNumberOrder/study linkage
(0020,0010)StudyIDLocal study identifier
(0040,1001)RequestedProcedureIDOrder linkage
(0040,0009)ScheduledProcedureStepIDWorkflow linkage
(0008,0090)ReferringPhysicianNamePerson identifier
(0008,1050)PerformingPhysicianNamePerson identifier
(0008,1070)OperatorsNamePerson identifier
(0008,0080)InstitutionNameOrganization identifier
(0008,0081)InstitutionAddressOrganization/location identifier
(0008,1010)StationNameDevice/site identifier
(0018,1000)DeviceSerialNumberDevice identifier
(0008,1030)StudyDescriptionPotential free text
(0008,103E)SeriesDescriptionPotential free text
(0018,1030)ProtocolNameSite/user-entered text

Required IOD type matters. A PS3.15 action can remove (X), zero (Z), replace with a valid dummy value (D), replace a UID consistently (U), keep (K), or clean (C), with conditional combinations. Blind deletion can make an instance non-conformant.

Raw lines 117 to 155
156## Dates and times
158Common date/time elements include:
160| Tag | Keyword | VR |
161|---|---|---|
162| (0008,0012) | InstanceCreationDate | DA |
163| (0008,0013) | InstanceCreationTime | TM |
164| (0008,0020) | StudyDate | DA |
165| (0008,0030) | StudyTime | TM |
166| (0008,0021) | SeriesDate | DA |
167| (0008,0031) | SeriesTime | TM |
168| (0008,0022) | AcquisitionDate | DA |
169| (0008,0032) | AcquisitionTime | TM |
170| (0008,002A) | AcquisitionDateTime | DT |
171| (0008,0023) | ContentDate | DA |
172| (0008,0033) | ContentTime | TM |
174VR syntax:
176- `DA`: `YYYYMMDD`
177- `TM`: `HHMMSS.FFFFFF` with permitted truncation
178- `DT`: `YYYYMMDDHHMMSS.FFFFFF&ZZXX` with permitted truncation
180Date/time handling is not solved by replacing every value with a constant.
181Review:
183- whether full dates or modified dates are allowed by the selected PS3.15
184 option;
185- one consistent shift across the intended longitudinal scope;
186- leap days, range limits, partial precision, time zones, and midnight
187 crossings;
188- standalone `TM` values that cannot be shifted safely without a paired date;
189- interval preservation and external event linkage;
190- IOD Type 1/2 requirements and scientific utility.
192Record the policy and caveats without logging original values.

Dates and times

Common date/time elements include:

TagKeywordVR
(0008,0012)InstanceCreationDateDA
(0008,0013)InstanceCreationTimeTM
(0008,0020)StudyDateDA
(0008,0030)StudyTimeTM
(0008,0021)SeriesDateDA
(0008,0031)SeriesTimeTM
(0008,0022)AcquisitionDateDA
(0008,0032)AcquisitionTimeTM
(0008,002A)AcquisitionDateTimeDT
(0008,0023)ContentDateDA
(0008,0033)ContentTimeTM

VR syntax:

  • DA: YYYYMMDD
  • TM: HHMMSS.FFFFFF with permitted truncation
  • DT: YYYYMMDDHHMMSS.FFFFFF&ZZXX with permitted truncation

Date/time handling is not solved by replacing every value with a constant. Review:

  • whether full dates or modified dates are allowed by the selected PS3.15 option;
  • one consistent shift across the intended longitudinal scope;
  • leap days, range limits, partial precision, time zones, and midnight crossings;
  • standalone TM values that cannot be shifted safely without a paired date;
  • interval preservation and external event linkage;
  • IOD Type 1/2 requirements and scientific utility.

Record the policy and caveats without logging original values.

Raw lines 156 to 193
194## UIDs: replace instance relationships, not semantics
196UID VR is `UI`, but not every UID is an identifier to pseudonymize.
198Usually structural/semantic and preserved:
200- Transfer Syntax UID
201- SOP Class UID and Referenced SOP Class UID
202- coding/context/template UIDs defined by standards
203- implementation UID handling according to rebuilt File Meta Information
205Often instance/reference linkage requiring profile-directed, consistent
206replacement:
208- Study, Series, SOP Instance, and Frame of Reference UIDs
209- Device UID (PS3.15 default action U; explicit retention options may apply)
210- Referenced SOP Instance UIDs in sequences
211- synchronization, concatenation, tracking, specimen, and transaction UIDs
213Use one-to-one replacement over the declared scope. A keyed deterministic
214mapping can maintain consistency, but the key/map is sensitive. Replacing UIDs
215does not itself prevent pixel or metadata matching and must not create false
216confidence.

UIDs: replace instance relationships, not semantics

UID VR is UI, but not every UID is an identifier to pseudonymize.

Usually structural/semantic and preserved:

  • Transfer Syntax UID
  • SOP Class UID and Referenced SOP Class UID
  • coding/context/template UIDs defined by standards
  • implementation UID handling according to rebuilt File Meta Information

Often instance/reference linkage requiring profile-directed, consistent replacement:

  • Study, Series, SOP Instance, and Frame of Reference UIDs
  • Device UID (PS3.15 default action U; explicit retention options may apply)
  • Referenced SOP Instance UIDs in sequences
  • synchronization, concatenation, tracking, specimen, and transaction UIDs

Use one-to-one replacement over the declared scope. A keyed deterministic mapping can maintain consistency, but the key/map is sensitive. Replacing UIDs does not itself prevent pixel or metadata matching and must not create false confidence.

Raw lines 194 to 217
218## Sequences and recursive traversal
220Identifiers may occur at any nesting depth:
222```python
223def visit(dataset):
224 for element in dataset:
225 if element.VR == "SQ":
226 for item in element.value:
227 visit(item)
228 else:
229 review(element.tag, element.keyword, element.VR)
230```
232Bound recursion depth and total elements for untrusted files. Do not print
233values from the callback. pydicom's `Dataset.walk()` is also recursive by
234default, and `remove_private_tags()` uses recursive traversal.

Sequences and recursive traversal

Identifiers may occur at any nesting depth:

def visit(dataset):
    for element in dataset:
        if element.VR == "SQ":
            for item in element.value:
                visit(item)
        else:
            review(element.tag, element.keyword, element.VR)

Bound recursion depth and total elements for untrusted files. Do not print values from the callback. pydicom's Dataset.walk() is also recursive by default, and remove_private_tags() uses recursive traversal.

Raw lines 218 to 235
236## Private data
238Private elements use odd group numbers and a private creator block. Their
239semantics are vendor-defined and names may be unknown or non-unique. Access by
240tag or `PrivateBlock`, not by the descriptive display name.
242```python
243private_count = sum(1 for element in ds.iterall() if element.tag.is_private)
244```
246`Dataset.remove_private_tags()` recursively removes private elements, but:
248- private removal alone is not de-identification;
249- standard elements, sequences, pixels, graphics, and overlays still matter;
250- some private elements may be scientifically necessary;
251- the PS3.15 Retain Safe Private Option requires evidence that retained
252 elements are safe and removal/processing of all others.
254Default to remove or reject private data. Explicit retention needs a reviewed
255allowlist and provenance.

Private data

Private elements use odd group numbers and a private creator block. Their semantics are vendor-defined and names may be unknown or non-unique. Access by tag or PrivateBlock, not by the descriptive display name.

private_count = sum(1 for element in ds.iterall() if element.tag.is_private)

Dataset.remove_private_tags() recursively removes private elements, but:

  • private removal alone is not de-identification;
  • standard elements, sequences, pixels, graphics, and overlays still matter;
  • some private elements may be scientifically necessary;
  • the PS3.15 Retain Safe Private Option requires evidence that retained elements are safe and removal/processing of all others.

Default to remove or reject private data. Explicit retention needs a reviewed allowlist and provenance.

Raw lines 236 to 256
257## Pixel, graphics, and structured content
259Potential identifying content is not limited to `(7FE0,0010) PixelData`:
261- Float/Double Float Pixel Data
262- overlays in repeating `60xx` groups
263- retired curves in `50xx` groups
264- presentation-state graphics and annotations
265- Structured Report text/content items
266- waveforms, encapsulated documents, spectra, and other bulk content
267- full-face images and recognizable head/neck reconstructions
269The PS3.15 Clean Pixel Data, Clean Recognizable Visual Features, Clean
270Graphics, and Clean Structured Content options address different risks.
271Human review may be required, and cleaning can impair utility.

Pixel, graphics, and structured content

Potential identifying content is not limited to (7FE0,0010) PixelData:

  • Float/Double Float Pixel Data
  • overlays in repeating 60xx groups
  • retired curves in 50xx groups
  • presentation-state graphics and annotations
  • Structured Report text/content items
  • waveforms, encapsulated documents, spectra, and other bulk content
  • full-face images and recognizable head/neck reconstructions

The PS3.15 Clean Pixel Data, Clean Recognizable Visual Features, Clean Graphics, and Clean Structured Content options address different risks. Human review may be required, and cleaning can impair utility.

Raw lines 257 to 272
273## DICOM JSON
275`Dataset.to_json()` and `to_json_dict()` preserve DICOM element content.
276Binary data is either base64 `InlineBinary` or represented by `BulkDataURI`.
277Therefore:
279- JSON is not a safe metadata summary;
280- full JSON can contain the same PHI as the source dataset;
281- a bulk-data handler must enforce storage and retrieval authorization;
282- pydicom 3.0.2 documents JSON support as beta.
284Use `scripts/extract_metadata.py` for allowlisted aggregate inventory.

DICOM JSON

Dataset.to_json() and to_json_dict() preserve DICOM element content. Binary data is either base64 InlineBinary or represented by BulkDataURI. Therefore:

  • JSON is not a safe metadata summary;
  • full JSON can contain the same PHI as the source dataset;
  • a bulk-data handler must enforce storage and retrieval authorization;
  • pydicom 3.0.2 documents JSON support as beta.

Use scripts/extract_metadata.py for allowlisted aggregate inventory.

Raw lines 273 to 285
Runs code scripts/extract_metadata.py :284
286## Sources (verified 2026-10-01)
288- [pydicom 3.0.2 dataset basics](https://pydicom.github.io/pydicom/stable/tutorials/dataset_basics.html)
289- [pydicom core elements](https://pydicom.github.io/pydicom/stable/guides/user/base_element.html)
290- [pydicom private elements](https://pydicom.github.io/pydicom/stable/guides/user/private_data_elements.html)
291- [pydicom DICOM JSON tutorial](https://pydicom.github.io/pydicom/stable/tutorials/dicom_json.html)
292- [DICOM PS3.3 2026d, Information Object Definitions](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/PS3.3.html)
293- [DICOM PS3.3 Image Pixel Module](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.3.html)
294- [DICOM PS3.3 Image Plane Module](https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.7.6.2.html)
295- [DICOM PS3.15 Table E.1-1 actions](https://dicom.nema.org/medical/dicom/current/output/chtml/part15/chapter_E.html)
296- [DICOM PS3.5, Data Structures and Encoding](https://dicom.nema.org/medical/dicom/current/output/chtml/part05/PS3.5.html)
297- [DICOM PS3.5 private elements](https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_7.8.2.html)
298- [DICOM PS3.6, Data Dictionary](https://dicom.nema.org/medical/dicom/current/output/chtml/part06/PS3.6.html)
299- [DICOM PS3.15 2026d, Annex E confidentiality profiles](https://dicom.nema.org/medical/dicom/current/output/html/part15.html)