2017-06-27 8 views
0

私はpicicomを使ってdicomファイル(患者名)を読むことができますが、私のすべてのdicomファイルはi34、i67などの名前です(特定の順序やシーケンスはありません)。 私の問題:私はtxtファイルの患者名のリストを持っています。私はこのtxtファイルのすべての患者名をdicomファイルで検索したいのですが、dicomファイルのPatientNameを探しています。ファイルには、患者の情報の数を持っているそのうちの一つは、PatientNameある)Interate dicomファイル

Exemple:

txtファイル: ジョン ジョージ リンゴ ポール

DICOMファイル: I54 i98 i6 4 i12

私が欲しいもの: ジョンを取って、PatientNameの一致についてi54、i98、i64、i12を検索します。また、txtファイルのすべての名前に対して実行します。私は自分自身を明確にしたいと思っています。あらかじめThks!

EDITは、私はこのコードが、didntの仕事

import dicom 
import os 

dir = "/path/to/dir_where_dicom_file_are" 
txt = open('/path/to/txt_with_patientsnames.txt','r') 
for line in txt: 
    for sub, dirs, files in os.walk(dir): 
     names = line.strip() 
     for dcm in files: 
      ds = dicom.read_file(dir+dcm) #necessary for read dicom files        
      patient = ds.PatientName 
      if names in patient: 
      #do something 

私は20枚のDICOM画像のサンプルを取り、20名のサンプルを試してみてください。このサンプルの1つのdicomファイルしか1つの患者名に属していないので、私の出力は1つだけ一致するはずです。しかし、私はこのうち20試合の結果を得ています。どうしましたか?

答えて

0

問題は、私が最初の場所で間違っていたか知ってはいけない正直に言うとロジック(それがより具体的に欠如)

dir = "/path/where/dcm/files/are" 
arq = open('path/where/file with pacient names are/patient.txt','r') 
for linha in arq: 
    c = linha.strip() 
    for sub,p,a in os.walk(dir): 
     for dcm in a: 
      ds = dicom.read_file(dir+dcm) 
      pctname = ds.PatientName   
      if c in pctname: 
      #do something 

ました。

関連する問題