Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/highdicom/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -3980,10 +3980,14 @@ def _include_sequence(seq):
instance_sequence = (
ref_series.ReferencedSOPSequence
)
else:
elif 'ReferencedInstanceSequence' in ref_series:
instance_sequence = (
ref_series.ReferencedInstanceSequence
)
else:
# This is invalid according to the standard, but
# has been observed in some data
instance_sequence = []

for ref_ins in instance_sequence:
instance_data.append(
Expand Down
14 changes: 14 additions & 0 deletions tests/test_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -1439,3 +1439,17 @@ def test_imread_from_dicom_bytes_io_lazy():
# Two reads to ensure opening/closing is handled
im.get_frame(1)
im.get_frame(2)


def test_imread_missing_referenced_instances():
# Test for the case where a ReferencedSeriesSequence is present but does
# not list instances. This is not valid by the standard but is observed and
# we should be tolerant to it
dcm = get_testdata_file('eCT_Supplemental.dcm', read=True)

# Add ReferencedSeriesSequence without any referenced instances
ref_series = pydicom.Dataset()
ref_series.SeriesInstanceUID = UID()
dcm.ReferencedSeriesSequence = [ref_series]

Image.from_dataset(dcm, copy=False)