Skip to content

Rtdose utils

rtdose_utils #

Functions:

Name Description
rtdose_reference_uids

Extracts referenced SOPInstanceUIDs from an RTDOSE file.

RTDOSERefPlanSOP #

Bases: str

Represents a SOPInstanceUID to a RTPLAN file in a RTDOSE file

RTDOSERefSeries #

Bases: str

Sometimes... they reference the SERIESUID as well (Head-Neck-Pet-CT...) but they also call it the SOPInstanceUID for some reason lol

dose.ReferencedImageSequence[0].ReferencedSOPInstanceUID

RTDOSERefStructSOP #

Bases: str

Represents a SOPInstanceUID to a RTSTRUCT file in a RTDOSE file

rtdose_reference_uids #

rtdose_reference_uids(
    rtdose: pydicom.dataset.Dataset,
) -> tuple[
    imgtools.dicom.dicom_metadata.modality_utils.rtdose_utils.RTDOSERefPlanSOP,
    imgtools.dicom.dicom_metadata.modality_utils.rtdose_utils.RTDOSERefStructSOP,
    imgtools.dicom.dicom_metadata.modality_utils.rtdose_utils.RTDOSERefSeries,
]

Extracts referenced SOPInstanceUIDs from an RTDOSE file.

Parameters:

Name Type Description Default

rtdose #

pydicom.dataset.Dataset

DICOM RTDOSE dataset as a pydicom Dataset.

required

Returns:

Type Description
tuple[imgtools.dicom.dicom_metadata.modality_utils.rtdose_utils.RTDOSERefPlanSOP, imgtools.dicom.dicom_metadata.modality_utils.rtdose_utils.RTDOSERefStructSOP, imgtools.dicom.dicom_metadata.modality_utils.rtdose_utils.RTDOSERefSeries]

A tuple containing: - plan_uid: RTDOSERefPlanSOP - Referenced RTPLAN SOPInstanceUID (empty string if not found) - struct_uid: RTDOSERefStructSOP - Referenced RTSTRUCT SOPInstanceUID (empty string if not found) - series_uid: RTDOSERefSeries - Referenced Series SOPInstanceUID (empty string if not found)

Source code in src/imgtools/dicom/dicom_metadata/modality_utils/rtdose_utils.py
def rtdose_reference_uids(
    rtdose: Dataset,
) -> tuple[RTDOSERefPlanSOP, RTDOSERefStructSOP, RTDOSERefSeries]:
    """Extracts referenced SOPInstanceUIDs from an RTDOSE file.

    Parameters
    ----------
    rtdose : Dataset
        DICOM RTDOSE dataset as a pydicom Dataset.

    Returns
    -------
    tuple[RTDOSERefPlanSOP, RTDOSERefStructSOP, RTDOSERefSeries]
        A tuple containing:
        - plan_uid: RTDOSERefPlanSOP - Referenced RTPLAN SOPInstanceUID (empty string if not found)
        - struct_uid: RTDOSERefStructSOP - Referenced RTSTRUCT SOPInstanceUID (empty string if not found)
        - series_uid: RTDOSERefSeries - Referenced Series SOPInstanceUID (empty string if not found)
    """

    # Extract plan UID
    plan_uid = RTDOSERefPlanSOP("")
    if (
        "ReferencedRTPlanSequence" in rtdose
        and rtdose.ReferencedRTPlanSequence
    ):
        plan_uid = RTDOSERefPlanSOP(rtdose.ReferencedRTPlanSequence[0].ReferencedSOPInstanceUID)  # fmt: skip

    # Extract structure set UID
    struct_uid = RTDOSERefStructSOP("")
    if ("ReferencedStructureSetSequence" in rtdose and rtdose.ReferencedStructureSetSequence):  # fmt: skip
        struct_uid = RTDOSERefStructSOP(rtdose.ReferencedStructureSetSequence[0].ReferencedSOPInstanceUID)  # fmt: skip

    # Extract series UID
    series_uid = RTDOSERefSeries("")
    if "ReferencedImageSequence" in rtdose and rtdose.ReferencedImageSequence:
        series_uid = RTDOSERefSeries(rtdose.ReferencedImageSequence[0].ReferencedSOPInstanceUID)  # fmt: skip

    return plan_uid, struct_uid, series_uid