現在、内視鏡画像は jpg ファイルをサーバー上で展開して閲覧していますが、それを dicom ファイル化して dcm4chee にインポートして閲覧します。
とても面倒なプロセスなので、ほとんどすべてを全自動で実行したいと思います。
そのプロセスを記録しておきます。
NASから mmr.sql3 を sftp ダウンロードする
まずは、内視鏡に関するデータが記録されている mmr.sql3 を NAS から ubuntu にダウンロードします。
これは、mmr.mdb を linux で開いて sqlite3 に書き込んだものです。
最初は scp だったのですが、どうも sftp の方が簡単そうなので sftp にします。

このプログラムが動くためには NAS 側で sftp を有効にする必要があります。
「コントロールパネル」→「ファイルサービス」→「ftp」→「sftpを有効にする」にチェックを入れます。
そうして ubuntu のコマンドラインから以下のように打ち込みログインできることを確認。
処理すべき検査 ID はテキストファイルから読み込む
処理すべき検査IDはデータベースを使って決定することばかり考えていましたが、テキストファイルを利用した方が簡単だと思います。
以下のような内容のテキストファイルを作成し、
python で読み込むようにしました。
検査IDから必要な変数をセットする
検査IDが決まったら、mmr.sql3 から必要なデータを抽出して変数にセットします。
リモートファイルが存在するかどうか
リモートファイルが存在しない場合は sftp で持ってこれないので、存在するかどうかを確認する必要があります。
セットされた変数の中で「self.mmrRemoteDir」に jpg ファイルその他のデータが保存されています。
「self.mmrRemoteDir」で ftp 接続して保存ディレクトリがなければ False を返すので、検査 ID + 1 にして検索を続行します。
jpg ファイルをローカルに sftp ダウンロード
「self.mmrRemoteDir」の中には不必要なファイルもあるので、必要なものだけをダウンロードします。
「if ‘snap’ in remote_file:」で「snap」という文字列を含むファイルだけがダウンロードされます。
ダウンロードされた jpg ファイルをリストアップ
jpg ファイルは常に ubuntu の「/var/www/html/MMR_PKG/jpgtmp」にダウンロードされてくるので、その中を調べてファイル名をリストアップします。
ファイル名からディレクトリを作成
新しいファイル構造は「/var/www/html/ES_DCM」下に作成します。
「/var/www/html/ES_DCM/2018/03/25/25416」のような感じです。
jpg ファイルから dicom ファイルを作成する
リストアップされた画像ファイル情報を元に、jpg から dicom ファイルを作成します。
dcm4chee にインポートする
シェルスクリプトを作成して python から起動します。
dicom ファイルは1ヶ所に集めてからインポートする方が遥かに高速です。
シェルスクリプトが動くためには、dcm4chee が起動している必要があります。
シェルスクリプトが正常に終了すれば「result.returncode」には「0」が返されます。
log を記録する
これまで log はほとんど記録してきませんでした。
しかし、log を記録した方がいろいろと便利です。