Source code for dicom_dre.profiles.lds
"""LDS (Limited Data Set) de-identification profile.
Derives from default. All dates are preserved via VR inspection
at apply-time. The PatientAge cap is also overridden to keep the value.
"""
import dataclasses
from pydicom.tag import Tag
from dicom_dre.actions import keep
from dicom_dre.profile import DeidProfile
from dicom_dre.profiles.config import ProfileSettings
from dicom_dre.profiles.default import default_profile
[docs]
def lds_profile(
settings: ProfileSettings | None = None,
*,
deid_method: str = "DICOM-PS3.15E-Basic-LDS",
) -> DeidProfile:
"""Construct an LDS profile. All dates are preserved via VR inspection."""
base = default_profile(
settings,
deid_method=deid_method,
preserve_dates=True,
)
# Preserve PatientAge unchanged (LDS does not cap age)
updated_rules = dict(base.rules)
updated_rules[Tag(0x0010, 0x1010)] = keep() # PatientAge
# LDS preserves temporal info that the default profile removes.
updated_rules[Tag(0x0008, 0x0201)] = keep() # TimezoneOffsetFromUTC
updated_rules[Tag(0x0018, 0x700C)] = keep() # DateOfLastDetectorCalibration
return dataclasses.replace(
base,
name="LDS",
rules=updated_rules,
preserve_dates=True,
modifies_dates=False,
deid_options=frozenset({"113105", "113108"}),
)