[Dcmlib] Backport on gdcm1.2 : CheckMandatoryElements

Jean-Pierre Roux Jean-Pierre.Roux at creatis.insa-lyon.fr
Fri Mar 10 10:55:09 CET 2006


Mathieu.

Je ne suis pas entierement d'accord avec les modifs  que tu as faites 
dans CheckMandatoryElements :

 0018|5100 [Patient Position] [HFS ]
n'est pas une info redondante : si un Patient est imagé une fouis en 
Head First, une autre fois en Feet First, il faudra bien qu'on aie 
l'info pour, par exemple, recaler les images.

Tu peux dire qu'elle n'a pas de sens si on cree une image from scratch, 
mais dans ses conditions,  0020|0037 [Image Orientation (Patient)] =  
[1\0\0\0\1\0 ] (ou quoi que soit d'aitre)n'a pas de sens non plus.

Et ce qui est sûr, c'est que si qq'un fabrique des vues MIP ou MPR a 
partir d'un serie d'images natives, 0020|0037 [Image Orientation 
(Patient)] n'aura pas cette valeur pour toutes les images.

D'autant moins que , dans ce cas 0008|0016  [SOP Class UID] *devra* valoir
 [1.2.840.10008.5.1.4.1.1.7 ]  ==>    [Secondary Capture Image Storage]

(l'option retenue autrefois, de forcer SOP Class UID a [Secondary 
Capture Image Storage] des qu'une image etait modifiée etait stupide; ce 
n'est pas une raison pour ne jamais utiliser cette valeur, lorsqu'elle 
doit l'etre.

GDCM ne pourra *jamais* deviner ce que l'utilisateur veut faire, c'est a 
l'utilisateur de le dire.

Dans la version CVS,  l'utilisateur a la possibilité de spécifier dans 
lequel des 4 cas suivants il se situe (il y aura, sans probleme, la 
possibilité d'affiner encore, si on en a besoin, ou de modifier la value 
par defaut USER_OWN_IMAGE, pour le moment), en utilisant la methode 
FileHelper::SetContentType( );

If he rewrites an image (after modifying the pixels with a mathematical 
function of the original image) he has to say :
myFileHelper.SetContentType(FILTERED_IMAGE);
--> SOP Class UID : unmodified
--> 'Image Type' : DERIVED\PRIMARY

If he rewrites an image (without modifying the pixels of the original 
image) he has to say :
myFileHelper.SetContentType(UNMODIFIED_PIXELS_IMAGE);
--> SOP Class UID : unmodified
--> 'Image Type' : unmodified

If he creates his own image ex-nihilo he has to say :
myFileHelper.SetContentType(USER_OWN_IMAGE);
-->SOP Class UID -> [Secondary Capture Image Storage]
--> 'Image Type' : DERIVED\PRIMARY  <-- I'd agree to modify it

If he creates a MIP image, or a MPR image from a Serie he has to say
myFileHelper.SetContentType(CREATED_IMAGE)
-->SOP Class UID -> [Secondary Capture Image Storage]
--> 'Image Type' : DERIVED\PRIMARY  <-- I'd agree to modify it

JP

--> Benoit : je parie que tu vas me dire que j'ai encore oublie la macro 
VTK qui permet de set le ContentType :-(





More information about the Dcmlib mailing list