dicom のファイル構造を解析

dcm4chee で保存されている dicom ファイルを解析するためには、どれくらいのファイルがそこにあるのかを知る必要があります。dcm4chee は「2017/12/1/9」というような構造をしているので、以下のようなシェルスクリプトを作成すると、その構造が一瞬でわかります。

scandir.sh

#!/bin/bash

cd /var/www/html
for file in `\find 'DICOM/2017' -mindepth 3 -maxdepth 3 -type d`; do
    echo $file
done

結果は


DICOM/2017/12/7
DICOM/2017/12/2
DICOM/2017/12/1
DICOM/2017/12/29
DICOM/2017/12/11
DICOM/2017/12/6
DICOM/2017/12/19
DICOM/2017/12/5
DICOM/2017/12/20
DICOM/2017/12/26
DICOM/2017/12/28
DICOM/2017/12/25
DICOM/2017/12/8
DICOM/2017/12/27
DICOM/2017/12/18
DICOM/2017/12/22
DICOM/2017/12/21
DICOM/2017/12/14
DICOM/2017/12/4
DICOM/2017/12/15
DICOM/2017/12/9
DICOM/2017/12/12
DICOM/2017/12/16
DICOM/2017/12/13
DICOM/2017/12/31

これで、2017年にインポートされ構築された日にちでの dicom ファイルを収納しているディレクトリの一覧ができました。
(ここには12月分しかないのでこのようになります)

最初は時刻までと思いましたが、日にちまででいいと思います。

配列格納した後、mysql に書き込む

まずはデータベースとテーブルの作成。


mysql> CREATE DATABASE dcmdir;

mysql> USE dcmdir;

mysql> CREATE TABLE `dirlist` (
  `thisID` int AUTO_INCREMENT,
  `path` varchar(50) NOT NULL,
  `hizuke` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `analysis` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `time` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (thisID)
) ;

次のようなシェルスクリプトを作成。

dir1.sh

#!/bin/bash

MYSQL="mysql -vvv -u root -ppassword dcmdir"

declare -a dirarr=()
cd /var/www/html
for file in `\find 'DICOM' -mindepth 3 -maxdepth 3 -type d`; do
    dirarr+=( $file )
done
# mysqlにinsert
i=0
for e in ${dirarr[@]}; do
    $MYSQL <<EOF
    INSERT INTO dirlist (path) VALUES ('$e');
EOF
    let i++
done

実行すると以下のようなデータが作成されます。