自前の dicom 閲覧システムクライアント

pacs とは全然違うシステムなので、「自前の dicom 閲覧システム」などと書いてます。

linux mint 19.1 のローカルマシーンに flask を設定して、サーバーにアクセスして dicom ファイルを閲覧するのですが、ローカルの linux mint の設定が少し面倒なので半自動化しました。

ほとんどのアプリをシェルスクリプトで

apache2、mysql、java、python、flask、pymysql、weasis を自動で設定します。

allappset.sh

#!/bin/bash

# 解凍
cd ~/autoset
tar -zxvf appfile.tar.gz

# python 設定
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
sudo update-alternatives --config python

# java 設定
cd ~/autoset/appfile
sudo mkdir /usr/local/java
sudo mv jdk1.8.0_231 /usr/local/java
sudo update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_231/bin/java 2
sudo update-alternatives --config java
sudo sed -i -e '$a export JAVA_HOME=/usr/local/java/jdk1.8.0_231' /etc/profile
sudo sed -i -e '$a export PATH=$PATH:$JAVA_HOME/bin' /etc/profile
source /etc/profile
#sudo update-alternatives --install "/usr/bin/java" "java" "$JAVA_HOME/bin/java" 2
sudo update-alternatives --install "/usr/bin/javac" "javac" "$JAVA_HOME/bin/javac" 2
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "$JAVA_HOME/bin/javaws" 2
#sudo update-alternatives --set java $JAVA_HOME/bin/java
sudo update-alternatives --set javac $JAVA_HOME/bin/javac
sudo update-alternatives --set javaws $JAVA_HOME/bin/javaws

# pip3-python
cd ~/autoset/appfile/pip3-python
sudo dpkg -i python-pip-whl_9.0.1-2.3~ubuntu1.18.04.5_all.deb
sudo dpkg -i python3-keyrings.alt_3.0-1_all.deb
sudo dpkg -i python3-wheel_0.30.0-0.2_all.deb
sudo dpkg -i python3-asn1crypto_0.24.0-1_all.deb
sudo dpkg -i libc-dev-bin_2.27-3ubuntu1.5_amd64.deb
sudo dpkg -i python3-lib2to3_3.6.9-1~18.04_all.deb
sudo dpkg -i libc6-dev_2.27-3ubuntu1.5_amd64.deb
sudo dpkg -i python3-distutils_3.6.9-1~18.04_all.deb
sudo dpkg -i python3-cryptography_2.1.4-1ubuntu1.4_amd64.deb
sudo dpkg -i libstdc++-7-dev_7.5.0-3ubuntu1~18.04_amd64.deb
sudo dpkg -i python3-pip_9.0.1-2.3~ubuntu1.18.04.5_all.deb
sudo dpkg -i libexpat1-dev_2.2.5-3ubuntu0.7_amd64.deb
sudo dpkg -i python3-setuptools_39.0.1-2_all.deb
sudo dpkg -i python3-secretstorage_2.3.1-2_all.deb
sudo dpkg -i dh-python_3.20180325ubuntu2_all.deb
sudo dpkg -i python3-keyring_10.6.0-1_all.deb
sudo dpkg -i g++-7_7.5.0-3ubuntu1~18.04_amd64.deb
sudo dpkg -i libpython3.6-dev_3.6.9-1~18.04ubuntu1.7_amd64.deb
sudo dpkg -i g++_4%3a7.4.0-1ubuntu2.3_amd64.deb
sudo dpkg -i python3.6-dev_3.6.9-1~18.04ubuntu1.7_amd64.deb
sudo dpkg -i libpython3-dev_3.6.7-1~18.04_amd64.deb
sudo dpkg -i build-essential_12.4ubuntu1_amd64.deb
sudo dpkg -i python3-dev_3.6.7-1~18.04_amd64.deb

# python-flask
cd ~/autoset/appfile/python-flask
sudo dpkg -i libjs-jquery_3.2.1-1_all.deb
sudo dpkg -i python3-werkzeug_0.14.1+dfsg1-1ubuntu0.1_all.deb
sudo dpkg -i python3-simplejson_3.13.2-1_amd64.deb
sudo dpkg -i python3-asn1crypto_0.24.0-1_all.deb
sudo dpkg -i python3-blinker_1.4+dfsg1-0.1_all.deb
sudo dpkg -i python3-jinja2_2.10-1ubuntu0.18.04.1_all.deb
sudo dpkg -i javascript-common_11_all.deb
sudo dpkg -i python3-itsdangerous_0.24+dfsg1-2_all.deb
sudo dpkg -i python3-cryptography_2.1.4-1ubuntu1.4_amd64.deb
sudo dpkg -i python3-flask_0.12.2-3ubuntu0.1_all.deb
sudo dpkg -i python3-openssl_17.5.0-1ubuntu1_all.deb

# pymysql
cd ~/autoset/appfile/pymysql
pip3 install PyMySQL-1.0.2-py3-none-any.whl

# apache2
cd ~/autoset/appfile/apache2
sudo dpkg -i libapr1_1.6.3-2_amd64.deb
sudo dpkg -i apache2-data_2.4.29-1ubuntu4.22_all.deb
sudo dpkg -i libaprutil1_1.6.1-2_amd64.deb
sudo dpkg -i liblua5.2-0_5.2.4-1.1build1_amd64.deb
sudo dpkg -i libaprutil1-ldap_1.6.1-2_amd64.deb
sudo dpkg -i libaprutil1-dbd-sqlite3_1.6.1-2_amd64.deb
sudo dpkg -i apache2-utils_2.4.29-1ubuntu4.22_amd64.deb
sudo dpkg -i apache2-bin_2.4.29-1ubuntu4.22_amd64.deb
sudo dpkg -i apache2_2.4.29-1ubuntu4.22_amd64.deb

# mysql 5.7
cd ~/autoset/appfile/mysql
sudo dpkg -i mysql-common_5.8+1.0.4_all.deb
sudo dpkg -i libaio1_0.3.110-5ubuntu0.1_amd64.deb
sudo dpkg -i libevent-core-2.1-6_2.1.8-stable-4build1_amd64.deb
sudo dpkg -i libhtml-template-perl_2.97-1_all.deb
sudo dpkg -i mysql-client-core-5.7_5.7.33-0ubuntu0.18.04.1_amd64.deb
sudo dpkg -i mysql-server-core-5.7_5.7.33-0ubuntu0.18.04.1_amd64.deb
sudo dpkg -i libevent-2.1-6_2.1.8-stable-4build1_amd64.deb
sudo dpkg -i mysql-client-5.7_5.7.33-0ubuntu0.18.04.1_amd64.deb
sudo dpkg -i mysql-server-5.7_5.7.33-0ubuntu0.18.04.1_amd64.deb

# weasis
cd ~/autoset/appfile
sudo chmod -R 777 /var/www/html
sudo mv weasis /var/www/html
mkdir /tmp/dcmtemp

実行は以下のようにします。


cd ~/allset
./allappset.sh

python、java のバージョン選択画面では 2 を選択します。

この後で実行するのは、deployment.properties の編集・java のコントロールパネル設定・IP アドレスの固定の 3 つだけです。

deployment.properties の編集


sudo nano ~/.java/deployment/deployment.properties

一番最後の行に、以下を追加。


deployment.expiration.check.enabled = false

java のコントロールパネル設定

java のコントロールパネルを起動して設定します。


/usr/local/java/jdk1.8.0_231/bin/ControlPanel

細かい設定方法は、ここに。

IP アドレスの固定

これは GUI で行った方が無難です。

sudo netplan apply では IP アドレスは反映されないので、linux mint を再起動します。

IP アドレスを固定したら、サーバーの mysql において以下のようにしてユーザー登録します。


mysql> create user 'heno'@'192.168.0.8' identified by 'moheno';
mysql> grant select on pydcmdb.* to 'heno'@'192.168.0.8' ;

ローカルの linux mint からサーバーの mysql にログイン。


mysql -h 192.168.0.102 -u heno -p

ログインできたら成功です。

起動の確認

javaws で jnlp ファイルを起動できるか確認。


javaws /var/www/html/weasis/weasisStart.jnlp

自作の flask が動くかどうかを確認。


cd /var/www/html/weasis/flask
./flask.sh

ローカルで flask が起動したら「localhost:5000」でアクセスします。

なんの問題もなく閲覧できます。

LAN ケーブルがカテゴリ5 でかなり遅いので、外来の NAS に dicom 保存場所を確保して、いずれカテゴリ8に変更してみようかと思っています。

あとは、flask 上で起動や終了、その他のデータベースとの連携を考えていけばいいと思います。