1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| di = dcmread(path)
with open(outputfile, 'w') as f:
f.write(di)
# récupére les tag dicom intéressant
with open(outputfile, "r") as f:
temporaire = []
for ligne in f:
temp = str(ligne).lstrip()
if (temp[:12] == "(0008, 0104)" or temp[:12] == "(0008, 0100)" or temp[:12] == "(0040, a30a)"):
temporaire.append(temp)
# ordonne les infos pour être compréhensible facilement
temporaire2 = []
for i in range(1, len(temporaire)):
if temporaire[i][:12] == "(0040, a30a)":
# ligne -6 c'est le tagdicom du groupe de la mesure
tmp = temporaire[i-6].split("'")
if tmp[1] == '121410': # code d'une non mesure
temporaire2.append('')
else:
temporaire2.append(tmp[1])
# ligne -5 c'est le nom groupe de la mesure
tmp = temporaire[i-5].split("'")
if tmp[1] == 'User chosen value': # valeur text d'une non mesure
temporaire2.append('')
else:
temporaire2.append(tmp[1])
# ligne -4 le tag dicom de la mesure
tmp = temporaire[i-4].split("'")
temporaire2.append(tmp[1])
# ligne -3 le nom de la mesure
tmp = temporaire[i-3].split("'")
temporaire2.append(tmp[1])
# ligne i la valeur mesurée
tmp = temporaire[i].split("'")
temporaire2.append(tmp[1])
# ligne -1 l'unité de mesure
tmp = temporaire[i-1].split("'")
if tmp[1] == 'no units':
temporaire2.append('')
else:
temporaire2.append(tmp[1])
# transforme le dernier fichier txt en un CSV pour une meilleur compréhension
nom_fichier = nom_fichier + '.csv'
with open(nom_fichier, 'w') as out_file:
writer = csv.writer(out_file)
writer.writerow(('code DICOM paramère', 'Nom paramètre',
'Code DICOM mesure', 'Valeur mesurée',
'Mesure', 'Unité mesure'))
for i in range(0, len(temporaire2), 6):
writer.writerow((temporaire2[i],
temporaire2[i+1],
temporaire2[i+2],
temporaire2[i+3],
temporaire2[i+4],
temporaire2[i+5])) |
Partager