# Inconsistency in "Attributes"?

**URL:** <https://discourse.slicer.org/t/inconsistency-in-attributes/8659>\
**Category:** Support\
**Tags:** dicom\
**Created:** [October 3, 2019, 1:53pm UTC](https://discourse.slicer.org/t/inconsistency-in-attributes/8659 "2019-10-03T13:53:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![unnmdnwb3](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/unnmdnwb3/32/4527_2.png) [@unnmdnwb3](https://discourse.slicer.org/u/unnmdnwb3)\
**Post date:** [October 3, 2019, 1:53pm UTC](https://discourse.slicer.org/t/inconsistency-in-attributes/8659/1 "2019-10-03T13:53:29Z")

</div>

Hi everyone,

I had to implement a check, if a file to import has dicom-data associated.  
Hence, I took a look at the example in the [script repository](https://www.slicer.org/wiki/Documentation/Nightly/ScriptRepository#How_to_access_tag_of_a_volume_loaded_from_DICOM.3F_For_example.2C_get_the_patient_position_stored_in_a_volume:).

However, I tried different approaches, which resulted in (for me) unexpected results.

**Node:**

```auto
ID: 2555
DataNode: vtkMRMLScalarVolumeNode
Name (from DataNode): TestName
Parent: 2557
Children: 
OwnerPluginName: Volumes
Expanded: true
UIDs:
  DICOM:2.16.840.1.114033.0.20170412.2476798.0.1
  DICOMInstanceUID:2.16.840.1.114033.0.20170412.2476798.0.1.1
Attributes:
  DICOM.Modality:PT
  DICOM.ReferencedInstanceUIDs:
  DICOM.SeriesNumber:1000

```

**Function:**

```auto
>> shNode = slicer.vtkMRMLSubjectHierarchyNode.GetSubjectHierarchyNode(slicer.mrmlScene)

>>> attribute = shNode.GetItemAttribute(2555, 'DICOM.instanceUIDs')
>>> attribute
''

>>> attribute = shNode.GetItemDataNode(2555).GetAttribute('DICOM.instanceUIDs')
>>> attribute
'2.16.840.1.114033.0.20170412.2476798.0.1.1'

```

The same applies to attribute names:

```auto
>>> names = shNode.GetItemDataNode(2555).GetAttributeNames()
>>> names
('DICOM.instanceUIDs',)

>>> names = shNode.GetItemAttributeNames(2555)
>>> names
('DICOM.Modality', 'DICOM.ReferencedInstanceUIDs', 'DICOM.SeriesNumber')

```

Hence, the behaviour is as it follows:

- `shNode.GetItemAttribute(id, attribute)`: _returns_ **Attributes**
- `node.GetAttribute(attribute)`: _returns_ **UIDs**

For me as a user, this was kind of surprising. Is this intended behaviour, did I miss something?

Thanks in advance! 🙂

---

<div class="post-metadata">

**Author:** ![cpinter](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/cpinter/32/7995_2.png) [@cpinter](https://discourse.slicer.org/u/cpinter)\
**Post date:** [October 3, 2019, 1:58pm UTC](https://discourse.slicer.org/t/inconsistency-in-attributes/8659/2 "2019-10-03T13:58:55Z")

</div>

Subject hierarchy is a hierarchy of data nodes containing items pointing to nodes. Data nodes are MRML nodes containing data. The two contain very different information. Some DICOM info is stored in both for convenience and tracking prevalence.

Learn about subject hierarchy  
[https://www.slicer.org/wiki/Documentation/Nightly/Modules/Data](https://www.slicer.org/wiki/Documentation/Nightly/Modules/Data)  
[https://www.slicer.org/wiki/Documentation/Labs/SubjectHierarchy](https://www.slicer.org/wiki/Documentation/Labs/SubjectHierarchy)

Learn about MRML nodes  
[http://apidocs.slicer.org/master/classvtkMRMLNode.html](http://apidocs.slicer.org/master/classvtkMRMLNode.html)

---

<div class="post-metadata">

**Author:** ![unnmdnwb3](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/unnmdnwb3/32/4527_2.png) [@unnmdnwb3](https://discourse.slicer.org/u/unnmdnwb3)\
**Post date:** [October 3, 2019, 3:36pm UTC](https://discourse.slicer.org/t/inconsistency-in-attributes/8659/3 "2019-10-03T15:36:35Z")

</div>

hi @cpinter,

Thank you for the answer! Okay, I didn’t get the differentiation between `item` and `node`… thanks for pointing that out. 🙂

Cheers!
