jpg ファイルを dicom に変換して dcm4chee にインポートするプロセスを、sftp じゃなくて NAS をマウントして操作します。
その方がよほど簡単です。
NAS を read-only でマウントする
NAS をマウントすると便利なのですが、もともとのファイルやディレクトリを破壊してしまわないか不安です。
そこで、read-only で NAS をマウントします。
sudo mount -t nfs -o ro 192.168.0.21:/volume1/MMR_PKG /mnt/nas/MMR_PKG
mmr.sql3 のコピー
これもとても簡単。
def mmrDL( self ):
shutil.copyfile("/mnt/nas/MMR_PKG/mmr.sql3", "/var/www/html/MMR_PKG/mmr.sql3")
jpg ファイルのコピー
def jpgDL(self):
files = os.listdir( self.mmrRemoteDir)
for remote_file in files:
if 'snap' in remote_file:
copyfrom = self.mmrRemoteDir + '/' + remote_file
localfile = '/var/www/html/MMR_PKG/jpgtmp/' + remote_file
shutil.copyfile( copyfrom, localfile)
処理する範囲をテキストファイルから読み込む
これもデータベースからじゃなくて、テキストファイルを作ってそれを読み込ませる方が簡単です。
例えば、処理したい検査IDの最初と最後を以下のようなテキストファイルに記録します。
17540
36400
そして python で読み込みます。
def readfile(self):
nums = []
with open('/var/www/html/MMR_PKG/log/studyID.txt', 'r', encoding='utf-8') as fin:
for line in fin.readlines():
try:
num = int(line)
except ValueError as e:
print(e, file=sys.stderr)
continue
nums.append(num)
return nums
if __name__ == "__main__":
ids = dcm.readfile()
startID = ids[0]
endID = ids[1]
このようにすると、startID には 17540、endID には 36400 がセットされます。
そうして while ループで回せばいいと思います。
studyID = startID
while studyID < endID:
print(studyID)
dcm.setVal( studyID )
if dcm.exist_remotedir() :
dcm.delDir( '/var/www/html/MMR_PKG/jpgtmp' )
dcm.setVal( studyID )
dcm.jpgDL()
dcm.set_imgArr()
dcm.createDir()
dcm.createDcm()
studyID += 1