[Dcmlib] Re: [Gdcm2] [Fwd: Attributes in a derived image (e.g. MPR)]

Jean-Pierre Roux Jean-Pierre.Roux at creatis.insa-lyon.fr
Thu Jan 19 14:15:59 CET 2006


Hi!
Since a lot of people seem to really wonder what they actually have to 
write in the header of Dicom images of their own,
I describe what gdcm does.
It's at least as clever -well, say : at least no more stupid- than what 
other people do.

--------------------------------------------------------------------------------------------------------------

We have to deal with 4 *very* different cases :
-1) user created ex nihilo his own image and wants to write it as a 
Dicom image.
-2) user modified the pixels of an existing image.
-3) user created a new image, using existing images (eg MIP, MPR, 
cartography image)
-4) user anonymized an image without processing the pixels.

gdcm::FileHelper::CheckMandatoryElements() deals automatically with 
these cases :

case 1)2)3)4)
0008 0012 Instance Creation Date
0008 0013 Instance Creation Time
0008 0018 SOP Instance UID
are *always* created with the current values; user has *no* possible 
intervention on
them.

'Serie Instance UID'(0x0020,0x000e)
'Study Instance UID'(0x0020,0x000d) are kept as is if already exist,
                                    created  if it doesn't.
 The user is allowed to create his own Series/Studies,
     keeping the same 'Serie Instance UID' / 'Study Instance UID' for 
various images
 Warning :    
 The user shouldn't add any image to a 'Manufacturer Serie'
     but there is no way no to allowed him to do that
    
 None of the 'shadow elements', if any, are droped out.
    
case 1)
'Modality' (0x0008,0x0060)       is defaulted to "OT" (other) if missing.
'Study Date', 'Study Time' are defaulted to current Date and Time.
 
case 1)2)3)
'Media Storage SOP Class UID' (0x0002,0x0002)
'SOP Class UID'               (0x0008,0x0016) are set to
                                               [Secondary Capture Image 
Storage]
'Image Type'                  (0x0008,0x0008) is forced to  
"DERIVED\PRIMARY"
'Conversion Type'             (0x0008,0x0064) is forced to 'SYN' 
(Synthetic Image)

case 2)4)
If 'SOP Class UID' exists in the native image  ('true DICOM' image)
    we create the 'Source Image Sequence' SeqEntry (0x0008, 0x2112)   
    --> 'Referenced SOP Class UID' (0x0008, 0x1150)
         whose value is the original 'SOP Class UID'
    --> 'Referenced SOP Instance UID' (0x0008, 0x1155)
         whose value is the original 'SOP Class UID'

case 3)
TODO : find a trick to allow user to pass to the writter the list of the 
Dicom images
          or the Series, (or the Study ?) he used to created his image
          (MIP, MPR, cartography image, ...)
           These info should be stored (?) in
          0008 1110 SQ 1 Referenced Study Sequence
          0008 1115 SQ 1 Referenced Series Sequence
          0008 1140 SQ 1 Referenced Image Sequence
      
case 4)
When user *knows* he didn't modified the pixels, (he just anonymize the 
image, for instance)
(he may ask the writer to keep some informations unchanged :
'Media Storage SOP Class UID' (0x0002,0x0002)
'SOP Class UID'               (0x0008,0x0016)
'Image Type'                  (0x0008,0x0008)
'Conversion Type'             (0x0008,0x0064)
He has to use gdcm::FileHelper::SetKeepMediaStorageSOPClassUID(true)
If he doesn't we are in case 2)
(probabely name 'SetKeepMediaStorageSOPClassUID' has to be changed)


-------------------------------------------------------------------------------------------------------------------------
Bellow follows the full description (hope so !) of the consistency 
checks performed
by gdcm::FileHelper::CheckMandatoryElements()


-->'Media Storage SOP Class UID' (0x0002,0x0002)
-->'SOP Class UID'               (0x0008,0x0016) are set to
                                               [Secondary Capture Image 
Storage]
   (Potentialy, the image was modified by user, and post-processed;
    it's no longer a 'native' image)
  Except if user told he wants to keep MediaStorageSOPClassUID,
  when *he* knows he didn't modify the image (e.g. : he just anonymized 
the file)

--> 'Image Type'  (0x0008,0x0008)
     is forced to  "DERIVED\PRIMARY"
     (The written image is no longer an 'ORIGINAL' one)
  Except if user told he wants to keep MediaStorageSOPClassUID,
  when *he* knows he didn't modify the image (e.g. : he just anonymized 
the file)
  
 -->  Conversion Type (0x0008,0x0064)
     is forced to 'SYN' (Synthetic Image)
  Except if user told he wants to keep MediaStorageSOPClassUID,
  when *he* knows he didn't modify the image (e.g. : he just anonymized 
the file)
           
--> 'Modality' (0x0008,0x0060)  
    is defaulted to "OT" (other) if missing.  
    (a fully user created image belongs to *no* modality)
     
--> 'Media Storage SOP Instance UID' (0x0002,0x0003)
--> 'Implementation Class UID'       (0x0002,0x0012)
    are automatically generated; no user intervention possible

--> 'Serie Instance UID'(0x0020,0x000e)
--> 'Study Instance UID'(0x0020,0x000d) are kept as is if already exist
                                             created  if it doesn't.
     The user is allowed to create his own Series/Studies,
     keeping the same 'Serie Instance UID' / 'Study Instance UID'
     for various images
     Warning :    
     The user shouldn't add any image to a 'Manufacturer Serie'
     but there is no way no to allowed him to do that
            
--> If 'SOP Class UID' exists in the native image  ('true DICOM' image)
    we create the 'Source Image Sequence' SeqEntry (0x0008, 0x2112)
   
    --> 'Referenced SOP Class UID' (0x0008, 0x1150)
         whose value is the original 'SOP Class UID'
    --> 'Referenced SOP Instance UID' (0x0008, 0x1155)
         whose value is the original 'SOP Class UID'
   
--> Bits Stored, Bits Allocated, Hight Bit Position are checked for 
consistency
--> Pixel Spacing     (0x0028,0x0030) is defaulted to "1.0\1.0"
--> Samples Per Pixel (0x0028,0x0002) is defaulted to 1 (grayscale)

--> Imager Pixel Spacing (0x0018,0x1164) : defaulted to Pixel Spacing value

--> Instance Creation Date, Instance Creation Time are forced to current 
Date and Time

--> Study Date, Study Time are defaulted to current Date and Time
   (they remain unchanged if they exist)

--> Patient Orientation : (0x0020,0x0020), if not present, is deduced from
    Image Orientation (Patient) : (0020|0037) or from
    Image Orientation (RET)     : (0020 0035)
  
--> Study ID, Series Number, Instance Number, Patient Orientation (Type 2)
    are created, with empty value if there are missing.

--> Manufacturer, Institution Name, Patient's Name, (Type 2)
    are defaulted with a 'gdcm' value.
   
--> Patient ID, Patient's Birth Date, Patient's Sex, (Type 2)
--> Referring Physician's Name  (Type 2)
    are created, with empty value if there are missing. 



-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
Gdcm-developers mailing list
Gdcm-developers at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gdcm-developers



More information about the Dcmlib mailing list