[Tutor] Parsing DICOMRT file

Bryan Fodness bryan.fodness at gmail.com
Thu Dec 13 00:12:05 CET 2007


Thanks for the immediate response!

On Dec 12, 2007 5:57 PM, John Fouhy <john at fouhy.net> wrote:

> On 13/12/2007, Bryan Fodness <bryan.fodness at gmail.com> wrote:
> > I am new to doing anything like this.  I have looked at
> > http://www.leadtools.com/SDK/Medical/DICOM/ltdc1.htm and am
> > not sure how to proceed.
>
> I haven't much experience here, but this is how I'd proceed, I think:
>
> 1. Start by reading the file.  It's binary data (I guess) so there's
> no point in reading lines.:
>  rawData = open('file.dcm', 'rb').read()
>
> 2. Write a function to parse the preamble:
>
>  def parsePreamble(data):
>    preamble = data[:128]
>    dicm = data[128:132]
>
>    # you might need to read up on encodings and things to make sure
> this test is valid
>    if dicm == 'DICM':
>      return preamble, 132
>    else:
>      raise NotAPreambleException
>
> 3. Write functions to parse data elements.  The functions are going to
> try to parse a data element starting at a particular position, and if
> successful, return the position of the end of the element.
>
>  def parseDataelement(data, start):
>    # do stuff -- the web page you linked didn't have enough information
> here
>    return element, pos
>
> 4. Parse the whole thing;
>
>  def parseDICOM(data):
>    elements = []
>    try:
>      preamble, next = parsePreamble(data)
>    except NotAPreambleException:
>      preamble, next = None, 0
>
>    while True:
>      element, next = parseDataElement(data, next)
>      elements.append(element)
>      # you will need some way of breaking out of this loop, either by
> checking the structure of
>      # element for an end condition, or by parseDataElement raising
> an exception.
>
>    return elements # and maybe preamble too if you want it
>
> HTH!
>



-- 
"The game of science can accurately be described as a never-ending insult to
human intelligence." - João Magueijo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20071212/f3d1c632/attachment.htm 


More information about the Tutor mailing list