diff --git a/element.go b/element.go index 03f67fc6..bfae3bed 100644 --- a/element.go +++ b/element.go @@ -23,6 +23,7 @@ type Element struct { RawValueRepresentation string `json:"rawVR"` ValueLength uint32 `json:"valueLength"` Value Value `json:"value"` + TagName string `json:"tagName"` } // Equals returns true if this Element equals the provided target Element, @@ -44,13 +45,9 @@ func (e *Element) Equals(target *Element) bool { } func (e *Element) String() string { - var tagName string - if tagInfo, err := tag.Find(e.Tag); err == nil { - tagName = tagInfo.Keyword - } return fmt.Sprintf("[\n Tag: %s\n Tag Name: %s\n VR: %s\n VR Raw: %s\n VL: %d\n Value: %s\n]\n\n", e.Tag.String(), - tagName, + e.TagName, e.ValueRepresentation.String(), e.RawValueRepresentation, e.ValueLength, @@ -161,6 +158,7 @@ func NewElement(t tag.Tag, data any) (*Element, error) { ValueRepresentation: tag.GetVRKind(t, rawVR), RawValueRepresentation: rawVR, Value: value, + TagName: tagInfo.Name, }, nil } @@ -178,8 +176,14 @@ func mustNewPrivateElement(t tag.Tag, rawVR string, data any) *Element { log.Panic(fmt.Errorf("error creating value: %w", err)) } + var tagName string + if tagInfo, err := tag.Find(t); err == nil { + tagName = tagInfo.Name + } + return &Element{ Tag: t, + TagName: tagName, ValueRepresentation: tag.GetVRKind(t, rawVR), RawValueRepresentation: rawVR, ValueLength: 0, diff --git a/read.go b/read.go index 5366c332..1b8a951b 100644 --- a/read.go +++ b/read.go @@ -861,7 +861,15 @@ func (r *reader) readElement(d *Dataset, fc chan<- *frame.Frame) (*Element, erro return nil, fmt.Errorf("readElement: error when reading value for element %v: %w", t, err) } - return &Element{Tag: *t, ValueRepresentation: tag.GetVRKind(*t, vr), RawValueRepresentation: vr, ValueLength: vl, Value: val}, nil + info, err := tag.Find(*t) + var tagName string + if err != nil { + tagName = "Unknown" + } else { + tagName = info.Name + } + + return &Element{Tag: *t, TagName: tagName, ValueRepresentation: tag.GetVRKind(*t, vr), RawValueRepresentation: vr, ValueLength: vl, Value: val}, nil } // Read an Item object as raw bytes, useful when parsing encapsulated PixelData.