DicomBrowser.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:DicomBrowser 作者: ericspod 项目源码 文件源码
def fillTagModel(model,dcm,regex=None):
    '''Fill a QStandardItemModel object `model' with a tree derived from tags in `dcm', filtering by pattern `regex'.'''
    try:
        regex=re.compile(str(regex),re.DOTALL)
    except:
        regex='' # no regex or bad pattern

    def _datasetToItem(parent,d):
        '''Add every element in `d' to the QStandardItem object `parent', this will be recursive for list elements.'''
        for elem in d:
            value=_elemToValue(elem)
            tag='(%04x, %04x)'%(elem.tag.group,elem.tag.elem)
            parent1 = QtGui.QStandardItem(str(elem.name))
            tagitem = QtGui.QStandardItem(tag)

            if isinstance(value,str):
                try:
                    value=value.decode('ascii')
                    if '\n' in value or '\r' in value: # multiline text data should be shown as repr
                        value=repr(value)
                except:
                    value=repr(value)

                if not regex or re.search(regex,str(elem.name)+tag+value) is not None:
                    parent.appendRow([parent1,tagitem,QtGui.QStandardItem(value)])

            elif value is not None and len(value)>0:
                parent.appendRow([parent1,tagitem])
                for v in value:
                    parent1.appendRow(v)

    def _elemToValue(elem):
        '''Return the value in `elem', which will be a string or a list of QStandardItem objects if elem.VR=='SQ'.'''
        value=None
        if elem.VR=='SQ':
            value=[]
            for i,item in enumerate(elem):
                parent1 = QtGui.QStandardItem('%s %i'%(elem.name,i))
                _datasetToItem(parent1,item)
                if not regex or parent1.hasChildren(): # discard sequences whose children have been filtered out
                    value.append(parent1)
        elif elem.name!='Pixel Data':
            value=str(elem.value)

        return value        

    _datasetToItem(model,dcm)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号