あるディレクトリを再帰的に検索して dicom ファイルのタグ情報を 2 次元配列にします。
dcm4chee で処理されたファイルは拡張子がないのですが、ディレクトリ内には dicom ファイルしか存在しないので、再帰的に検索されたファイルだけを処理するようになっています。
import pydicom
import os
class Dicom:
def getDicomArr( self, sd ):
DicomArr = []
for root, dir, files in os.walk( sd ):
for file_ in files:
full_path = os.path.join(root, file_)
DicomArr.append( full_path )
return DicomArr
def getDicomInfo( self, dcmArr ):
dcmInfoArr = []
studyIDArr =[]
for eachFile in dcmArr:
ds = pydicom.read_file(eachFile)
studyID = ds[0x0020, 0x0010].value
if studyID not in studyIDArr:
studyDate = ds[0x0008, 0x0020].value
studyTime = ds[0x0008, 0x0030].value
modality = ds[0x0008, 0x0060].value
try:
studyDscr = ds[0x0008, 0x1030].value
except:
studyDscr = ''
ptName = str(ds[0x0010, 0x0010].value).replace('^', ' ')
karteNo = ds[0x0010, 0x0020].value
sex = ds[0x0010, 0x0040].value
birthday = ds[0x0010, 0x0030].value
age = ds[0x0010, 0x1010].value
institution = ds[0x0008, 0x0080].value
thisLineInfo = [ studyID, studyDate, studyTime, modality, studyDscr, ptName, karteNo, birthday, sex, age, institution ]
dcmInfoArr.append( thisLineInfo )
studyIDArr.append( studyID )
return dcmInfoArr
if __name__ == "__main__":
dcm = Dicom()
dcmArr = dcm.getDicomArr( '/var/www/html/DICOM/2017/12/18' )
infos = dcm.getDicomInfo( dcmArr )
print( infos )
結果は
[
['6662', '20171218', '115226', 'CT', 'Chest', 'HOGE', '21202690', '19391224', 'M', '077Y', 'SOME HP'],
['6660', '20171218', '101714', 'CT', 'Chest', 'HENO', '4700320', '19340413', 'M', '083Y', 'SOME HP'],
['6661', '20171218', '102842', 'CT', 'Chest', 'MOHENO', '20302361', '19540118', 'F', '063Y', 'SOME HP'],
['6659', '20171218', '094415', 'CT', 'Chest', 'FOO', '21702386', '19441212', 'F', '073Y', 'SOME HP'],
['6663', '20171218', '163328', 'CT', 'Abdomen', 'BOO', '20800293', '19671016', 'M', '050Y', 'SOME HP']
]
解説
あるディレクトリを再帰的に検索してすべてのファイルを配列化するのは、
def getDicomArr( self, sd ):
DicomArr = []
for root, dir, files in os.walk( sd ):
for file_ in files:
full_path = os.path.join(root, file_)
DicomArr.append( full_path )
return DicomArr