Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

how to handle duplicated attributes?

28 views
Skip to first unread message

dicomLearner

unread,
Oct 27, 2009, 4:05:40 PM10/27/09
to
I am using Enhanced CT Image IOD Modules. I found the Table C.8-131
(Common CT/MR Image Description Macro) are included at least twice:
one in Table C.8-117 and one in Table C.8-114. There are also few
other duplicated attributes. What I should do for those duplicated
attributes? just use them in one place and ignore all others?
thanks,

David Clunie

unread,
Oct 27, 2009, 4:42:26 PM10/27/09
to

You need to provide these attributes at both levels.

One set (Table C.8-114) is included to describe the common features
of the entire multi-frame image (in the Enhanced CT Image Module).

The other set are provided for each frame in the CT Image Frame Type
Macro (Table C.8-117).

The fact that there is much information in common is reflected by
the factoring out into a single macro that is shared by invocations
at both these levels, image and frame.

In general, for enhanced objects you will find three levels of
information:

- that about the entire multi-frame image
- per-frame information that is shared by all frames
- per-frame information that differs between frames

I suggest that you look at some existing implementations of CT
multi-frame objects. See for example:

http://www.pixelmed.com/#PixelMedNEMAEnhancedCTMRTestTool
ftp://medical.nema.org/MEDICAL/Dicom/Multiframe/

Also, be sure to validate the objects you make, both with my dciodvfy
tool (which does the basic DICOM validation), and the dedicated
enhanced multiframe validator in my pixelmed toolkit:

http://www.dclunie.com/dicom3tools/dciodvfy.html
http://www.dclunie.com/pixelmed/software/

Make sure you use the most recent version of the pixelmed validator
from "http://www.dclunie.com/pixelmed/software/", rather than the
older snapshot in the NEMA tools.

David

dicomLearner

unread,
Oct 28, 2009, 11:13:09 AM10/28/09
to

really appreciate your help.
thanks

dicomLearner

unread,
Nov 11, 2009, 2:27:10 PM11/11/09
to

>  http://www.dclunie.com/dicom3tools/dciodvfy.html
>  http://www.dclunie.com/pixelmed/software/
>
> Make sure you use the most recent version of the pixelmed validator
> from "http://www.dclunie.com/pixelmed/software/", rather than the
> older snapshot in the NEMA tools.
>
> David

Thank you for your validators. They are really useful tools.

I have some questions about them.

For the validator within pixelmed, it doesn't allow an empty sequence
even that sequence is type 2. For example in PS3.3 Table C.7.6.17-1
Multi-Frame Dimension Module Attributes, the Dimesion Organization
Sequence and Dimension Index Sequenece are both type 2. That means we
can have ZERO or more items inside the sequence. Your validator
requires Dimension Orgainzation UID and Dimension Index Pointer must
present. Then requires Dimension Index Values (0020,9157) of Table C.
7.6.16-3 must present. I think it may not be necessary in some cases.

Same thing for Acquision Context Sequence (0040,0555) of Acquisition
Context Module, which is type 2 and all sub attributes could be
absence.

I think your dciodvfy.exe tool doesn't treat CT Table Dynamics
Sequence (0018, 9308) correctly. I have an ORIGINAL and SPIRAL scan
but it tells me the Table Speed, Table Feed per Rotation and Spiral
Pitch Factor should not present because conditions are not satisfied
but they are actually.

thanks,
James

David Clunie

unread,
Nov 13, 2009, 8:12:24 AM11/13/09
to
Hi James

Send me an example file that is causing the problem, and I
will investigate the validator behavior.

David

David Clunie

unread,
Nov 16, 2009, 12:33:30 PM11/16/09
to
Hi James

Thanks for the file.

> > For the validator within pixelmed, it doesn't allow an empty sequence
> > even that sequence is type 2. For example in PS3.3 Table C.7.6.17-1
> > Multi-Frame Dimension Module Attributes, the Dimesion Organization
> > Sequence and Dimension Index Sequenece are both type 2. That means we
> > can have ZERO or more items inside the sequence. Your validator
> > requires Dimension Orgainzation UID and Dimension Index Pointer must
> > present. Then requires Dimension Index Values (0020,9157) of Table C.
> > 7.6.16-3 must present. I think it may not be necessary in some cases.
>
> > Same thing for Acquision Context Sequence (0040,0555) of Acquisition
> > Context Module, which is type 2 and all sub attributes could be
> > absence.

I think you are probably making a classic mistake with Type 2 sequences;
there is a difference between an empty (zero length) sequence, which is
legal and the validators like, and a sequence that has a single empty
item, which is illegal (since it triggers the type 1 requirements
for attributes within that "empty" item).

In the example that you sent, the Acquisition Context Sequence (0040,0555)
does contain an empty item, which is illegal:

% andump test.dcm
...
(0x0040,0x0555) SQ Acquisition Context Sequence VR=<SQ> VL=<0xffffffff> []
(0xfffe,0xe000) NONE Item VR=<> VL=<0x0000> []
(0xfffe,0xe0dd) NONE Sequence Delimitation Item VR=<> VL=<0x0000> []
...

Instead you should encode either an empty variable length sequence:

(0x0040,0x0555) SQ Acquisition Context Sequence VR=<SQ> VL=<0xffffffff> []
(0xfffe,0xe0dd) NONE Sequence Delimitation Item VR=<> VL=<0x0000> []

or an empty fixed length sequence

(0x0040,0x0555) SQ Acquisition Context Sequence VR=<SQ> VL=<0x00000000> []

You should be able to do the same with the Dimension-related Type 2
sequences.

That said, I strongly recommend that you populate the Dimension
stuff properly, since this is very beneficial to the recipient.

> > I think your dciodvfy.exe tool doesn't treat CT Table Dynamics
> > Sequence (0018, 9308) correctly. I have an ORIGINAL and SPIRAL scan
> > but it tells me the Table Speed, Table Feed per Rotation and Spiral
> > Pitch Factor should not present because conditions are not satisfied
> > but they are actually.

You correct, the dciodvfy tool is not capable of handling conditions based
on attributes in other per-frame functional group macro sequence items. This
defect will not be corrected any time soon, if ever, though it could
probably be improved not to report spurious errors even if it cannot detect
genuine errors in this respect.

So you should use the PixelMed validator to address concerns about the
structure of enhanced family IODs, and if PixelMed is happy with it and
the some of the dciodvfy errors do not make sense, judiciously disregard
them.

David

0 new messages