@@ -5134,58 +5134,63 @@ def __init__(
51345134
51355135 """
51365136 super ().__init__ ()
5137+
5138+ if len (datasets ) == 0 :
5139+ raise ValueError (
5140+ "Argument 'datasets' must contain at least one item."
5141+ )
5142+
51375143 library_item = ContainerContentItem (
51385144 name = codes .DCM .ImageLibrary ,
51395145 relationship_type = RelationshipTypeValues .CONTAINS
51405146 )
51415147 library_item .ContentSequence = ContentSequence ()
5142- if datasets is not None :
5143- groups = collections .defaultdict (list )
5144- for ds in datasets :
5145- modality = _get_coded_modality (ds .SOPClassUID )
5146- image_item = ImageContentItem (
5147- name = CodedConcept (
5148- value = '260753009' ,
5149- meaning = 'Source' ,
5150- scheme_designator = 'SCT'
5151- ),
5152- referenced_sop_instance_uid = ds .SOPInstanceUID ,
5153- referenced_sop_class_uid = ds .SOPClassUID ,
5154- relationship_type = RelationshipTypeValues .CONTAINS
5148+ groups = collections .defaultdict (list )
5149+ for ds in datasets :
5150+ modality = _get_coded_modality (ds .SOPClassUID )
5151+ image_item = ImageContentItem (
5152+ name = CodedConcept (
5153+ value = '260753009' ,
5154+ meaning = 'Source' ,
5155+ scheme_designator = 'SCT'
5156+ ),
5157+ referenced_sop_instance_uid = ds .SOPInstanceUID ,
5158+ referenced_sop_class_uid = ds .SOPClassUID ,
5159+ relationship_type = RelationshipTypeValues .CONTAINS
5160+ )
5161+ descriptors = ImageLibraryEntryDescriptors (ds )
5162+
5163+ image_item .ContentSequence = ContentSequence ()
5164+ image_item .ContentSequence .extend (descriptors )
5165+ if 'FrameOfReferenceUID' in ds :
5166+ # Only type 1 attributes
5167+ shared_descriptors = (
5168+ modality ,
5169+ ds .FrameOfReferenceUID ,
51555170 )
5156- descriptors = ImageLibraryEntryDescriptors (ds )
5157-
5158- image_item .ContentSequence = ContentSequence ()
5159- image_item .ContentSequence .extend (descriptors )
5160- if 'FrameOfReferenceUID' in ds :
5161- # Only type 1 attributes
5162- shared_descriptors = (
5163- modality ,
5164- ds .FrameOfReferenceUID ,
5165- )
5166- else :
5167- shared_descriptors = (
5168- modality ,
5169- )
5170- groups [shared_descriptors ].append (image_item )
5171-
5172- for shared_descriptors , image_items in groups .items ():
5173- image = image_items [0 ]
5174- group_item = ContainerContentItem (
5175- name = codes .DCM .ImageLibraryGroup ,
5176- relationship_type = RelationshipTypeValues .CONTAINS
5171+ else :
5172+ shared_descriptors = (
5173+ modality ,
51775174 )
5178- group_item .ContentSequence = ContentSequence ()
5179-
5180- if 'FrameOfReferenceUID' in image :
5181- group_item .ContentSequence .append (
5182- UIDRefContentItem (
5183- name = codes .DCM .FrameOfReferenceUID ,
5184- value = shared_descriptors [1 ],
5185- relationship_type = RelationshipTypeValues .HAS_ACQ_CONTEXT # noqa: E501
5186- )
5175+ groups [shared_descriptors ].append (image_item )
5176+
5177+ for shared_descriptors , image_items in groups .items ():
5178+ image = image_items [0 ]
5179+ group_item = ContainerContentItem (
5180+ name = codes .DCM .ImageLibraryGroup ,
5181+ relationship_type = RelationshipTypeValues .CONTAINS
5182+ )
5183+ group_item .ContentSequence = ContentSequence ()
5184+
5185+ if 'FrameOfReferenceUID' in image :
5186+ group_item .ContentSequence .append (
5187+ UIDRefContentItem (
5188+ name = codes .DCM .FrameOfReferenceUID ,
5189+ value = shared_descriptors [1 ],
5190+ relationship_type = RelationshipTypeValues .HAS_ACQ_CONTEXT # noqa: E501
51875191 )
5188- group_item .ContentSequence .extend (image_items )
5192+ )
5193+ group_item .ContentSequence .extend (image_items )
51895194 if len (group_item ) > 0 :
51905195 library_item .ContentSequence .append (group_item )
51915196
0 commit comments