Ubuntu18.04LTS、MySQLが稼働している環境。
以下のリンクを参考に進めていけば標準的な設定で構築できる。
https://github.com/dcm4che/dcm4chee-arc-light/wiki/Installation
secure-uiバージョンのauto install scriptを参考にすると、より柔軟に対応できそう。
https://groups.google.com/d/msg/dcm4che/NNxvs0b8aTg/jDkWr_g5CAAJ
このスクリプトそのままではうまくインストールできない(はず)。
スクリプトの途中で
rm -rf /opt/dcm4chee*
が実行されるので、dcm4chee環境を持っている場合は注意。
下記のファイル群が最新であったため、これらを使用した。
dcm4chee-arc-light
WildFly
Weasis
ApacheDirectoryStudio
ApacheDirectoryStudio-2.0.0.v20180908-M14-linux.gtk.x86_64.tar.gz
OpenLDAP
OpenLDAPはdynamic runtime configuration engineを使う方法で設定。
slapd.confなどは触らずOpenLDAP with dynamic runtime configuration以下で説明されているコマンドを使っていく。
modify-baseDN.ldif
dn: olcDatabase={1}hdb,cn=config
を
dn: olcDatabase={1}mdb,cn=config
に変更する。
slapd_setup_basic.ldif
userPassword:
の後に
slappasswd -s PASSWORD
で出力される文字列
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
を
userPassword:{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
のように記載する。
Apache Directory Studioを使ってLDAPに接続する際には、元の文字列PASSWORDを使う。
WildFly
mysql-connector-java
cp /usr/share/java/mysql-connector-java-5.1.45.jar /opt/wildfly/modules/com/mysql/main/
/opt/wildfly/modules/com/mysql/main/module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.45.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
scripts
/usr/local/bin/pacs_start.sh
#!/bin/bash
USERID=1000
if [ "$EUID" -ne "$USERID" ]
then echo -e "\n \e[33m Please run as user HOGE \e[39m \n"
exit
else
echo -e "\nStarting Wildfly ..."
/opt/wildfly/bin/standalone.sh -b=0.0.0.0 -bmanagement=0.0.0.0 -c dcm4chee-arc.xml >> /opt/wildfly/standalone/log/server.log 2>&1 &
disown
sleep 10
echo -e "\nWildfly started, log is in /opt/wildfly/standalone/log/server.log"
fi
/usr/local/bin/pacs_stop.sh
#!/bin/bash
USERID=1000
if [ "$EUID" -ne "$USERID" ]
then echo -e "\n \e[33m Please run as user HOGE \e[39m \n"
exit
else
echo -e "\nStopping Wildfly ..."
/opt/wildfly/bin/jboss-cli.sh --connect command=:shutdown
sleep 10
for p in `ps -ef | grep wildfly | awk '{print $2}' | tr '\n' ' '`
do
kill -9 $p
done
fi
Weasis
weasisは3.5.4-rc以降 dicom:rs というコマンドが使用でき、weasis-pacs-connectorの面倒な手続きが必要なくなる。
Invoke Image Display Patient URL
weasis://$dicom:rs --url "http://HOSTNAME:8080/dcm4chee-arc/aets/DCM4CHEE/rs" -r "&patientID={}" --query-ext "&includedefaults=false" --
accept-ext="transfer-syntax=*"&target=_self
Invoke Image Display Study URL
weasis://$dicom:rs --url "http://HOSTNAME:8080/dcm4chee-arc/aets/DCM4CHEE/rs" -r "&studyUID={}" --query-ext "&includedefaults=false" --
accept-ext="transfer-syntax=*"&target=_self
DICOMファイルが保存されるディレクトリは
/opt/wildfly/standalone/data/fs1
'19/10/31
('19/12/15 修正)
環境に応じて、適宜変更してください。
コマンドの意味を理解して利用すること。例文中のHOGEは作業をしているアカウントのユーザーネーム。
ApacheDirectoryStudio以外は全てターミナル内での作業になる。
MySQLのインストール
% sudo apt install mysql-server
% sudo mysql_secure_installation
MySQLの設定の参考に
https://onobutaonnsenn.naturum.ne.jp/e3203250.html
https://weblabo.oscasierra.net/mysql-57-init-setup/
dcm4chee-arc-lightの準備
% cd /opt
% sudo unzip ~/Downloads/dcm4chee-arc-5.19.0-mysql.zip
% sudo chown -R HOGE:HOGE /opt/dcm4chee-arc-5.19.0-mysql
% sudo ln -s /opt/dcm4chee-arc-5.19.0-mysql /opt/dcm4chee
% cd dcm4chee
detabaseの作成
% sudo mysql -u root -p<root-password>
mysql> create database pacsdb;
mysql> grant all on pacsdb.* to 'pacs' identified by 'DBPassWord';
mysql> quit
% mysql -u pacs -pDBPassWord pacsdb < /opt/dcm4chee/sql/create-mysql.sql
OpenLDAPのインストール、設定
% sudo apt install slapd ldap-utils
設定時に入力するldapのadminパスワードをldap-passとする。
% sudo systemctl start slapd
% sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/dcm4chee/ldap/slapd/dicom.ldif
% sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/dcm4chee/ldap/slapd/dcm4che.ldif
% sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/dcm4chee/ldap/slapd/dcm4chee-archive.ldif
% sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /opt/dcm4chee/ldap/slapd/dcm4chee-archive-ui.ldif
modify-baseDN.ldif の編集
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=dcm4che,dc=org
-
replace: olcRootDN
olcRootDN: cn=admin,dc=dcm4che,dc=org
-
% sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f modify-baseDN.ldif
コンソール出力の最終行が
modifying entry "olcDatabase={1}mdb,cn=config"
となっていることを確認。
ldapmodify: invalid format (line 8) entry: "olcDatabase={1}mdb,cn=config"
がでる場合は、ファイル内の各スペースが半角になっているか、無駄なスペースが入っていないか確認する。
% slappasswd -s ldap-pass
で出力された
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
を以下のファイルのuserPassword:の後に記載する。
slapd_setup_basic.ldifの作成
dn: dc=dcm4che,dc=org changetype: add objectClass: top objectClass: dcObject objectClass: organization o: Example Organisation name dc: dcm4che dn: cn=admin,dc=dcm4che,dc=org changetype: add objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
% ldapmodify -x -W -D cn=admin,dc=dcm4che,dc=org -H ldapi:/// -f slapd_setup_basic.ldif
ApacheDirectoryStudio
% cd ~/
% sudo apt install default-jre libmysql-java
% tar xzvf Downloads/ApacheDirectoryStudio-2.0.0.v20180908-M14-linux.gtk.x86_64.tar.gz
% ./ApacheDirectoryStudio/ApacheDirectoryStudio &
参考
https://www.unix-power.net/networking/post-593
以下のパラメーターでサーバーに接続
Network Parameter: Hostname: localhost Port: 389 Authentication Parameter: Bind DN or user: cn=admin,dc=dcm4che,dc=org Bind password: ldap-pass
左ツリー・ビューの dc=dcm4che, dc=org を右クリックして現れるコンテキストメニューからimport→LDIF import...で以下のファイルをインポートする。init-baseDN.ldifは必要ないようだ。
/opt/dcm4chee/ldap/init-config.ldif
/opt/dcm4chee/ldap/default-config.ldif
/opt/dcm4chee/ldap/default-ui-config.ldif
/opt/dcm4chee/ldap/add-vendor-data.ldif
WildFly
% cd /opt
% sudo unzip ~/Downloads/wildfly-18.0.0.Final.zip
% sudo chown -R HOGE:HOGE /opt/wildfly-18.0.0.Final
% sudo ln -s /opt/wildfly-18.0.0.Final /opt/wildfly
% cp -r /opt/dcm4chee/configuration/dcm4chee-arc /opt/wildfly/standalone/configuration
% cp /opt/wildfly/standalone/configuration/standalone-full.xml /opt/wildfly/standalone/configuration/dcm4chee-arc.xml
% cd /opt/wildfly
% unzip /opt/dcm4chee/jboss-modules/dcm4che-jboss-modules-5.19.0.zip
% unzip /opt/dcm4chee/jboss-modules/jai_imageio-jboss-modules-1.2-pre-dr-b04.zip
% unzip /opt/dcm4chee/jboss-modules/jclouds-jboss-modules-2.1.2-noguava.zip
% unzip /opt/dcm4chee/jboss-modules/ecs-object-client-jboss-modules-3.0.0.zip
% unzip /opt/dcm4chee/jboss-modules/jdbc-jboss-modules-1.0.0-mysql.zip
mysql-connector-java
% cp /usr/share/java/mysql-connector-java-5.1.45.jar /opt/wildfly/modules/com/mysql/main/
/opt/wildfly/modules/com/mysql/main/module.xmlの編集
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
<resources>
<resource-root path="mysql-connector-java-5.1.45.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
/opt/wildfly/standalone/configuration/dcm4chee-arc/ldap.propertiesの編集
java.naming.security.credentialsをldapのadminパスワードに変更する。
java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
java.naming.ldap.attributes.binary=dicomVendorData
java.naming.provider.url=ldap://localhost:389/dc=dcm4che,dc=org
java.naming.security.principal=cn=admin,dc=dcm4che,dc=org
java.naming.security.credentials=ldap-pass
別のターミナルで以下のコマンドを入力しwildflyを立ち上げる。
% /opt/wildfly/bin/standalone.sh -c dcm4chee-arc.xml
/opt/dcm4chee/cli/add-data-source-mysql.cliの編集
/subsystem=datasources/jdbc-driver=mysql:add(driver-module-name=com.mysql,driver-name=mysql)
data-source add --name=pacsds --driver-name=mysql --jndi-name=java:/PacsDS \
--connection-url=jdbc:mysql://localhost:3306/pacsdb?useSSL=false&requireSSL=false \
--user-name=pacs --password=DBPassWord
元のコンソールで以下のコマンドを入力する
% /opt/wildfly/bin/jboss-cli.sh -c --file=/opt/dcm4chee/cli/add-data-source-mysql.cli
% /opt/wildfly/bin/jboss-cli.sh -c --file=/opt/dcm4chee/cli/add-jms-queues.cli
JBossの管理クライアントに入る
% /opt/wildfly/bin/jboss-cli.sh -c
以下のコマンドを実行する。
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:undefine-attribute(name=hung-task-threshold)
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=long-running-tasks,value=true)
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=core-threads,value=2)
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=max-threads,value=100)
[standalone@localhost:9990 /] /subsystem=ee/managed-executor-service=default:write-attribute(name=queue-length,value=0)
[standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:undefine-attribute(name=hung-task-threshold)
[standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:write-attribute(name=long-running-tasks,value=true)
[standalone@localhost:9990 /] /subsystem=ee/managed-scheduled-executor-service=default:write-attribute(name=core-threads,value=2)
[standalone@localhost:9990 /] deploy /opt/dcm4chee/deploy/dcm4chee-arc-ear-5.19.0-mysql.ear
[standalone@localhost:9990 /] quit
deployがエラーなく終了すれば、ブラウザーで
http://localhost:8080/dcm4chee-arc/ui2
にアクセスできる。
/usr/local/bin/pacs_start.shを作成
#!/bin/bash
USERID=1000
if [ "$EUID" -ne "$USERID" ]
then echo -e "\n \e[33m Please run as user HOGE \e[39m \n"
exit
else
echo -e "\nStarting Wildfly ..."
/opt/wildfly/bin/standalone.sh -b=0.0.0.0 -bmanagement=0.0.0.0 -c dcm4chee-arc.xml >> /opt/wildfly/standalone/log/server.log 2>&1 &
disown
sleep 10
echo -e "\nWildfly started, log is in /opt/wildfly/standalone/log/server.log"
fi
% sudo chmod +x /usr/local/bin/pacs_start.sh
% /usr/local/bin/pacs_start.sh
でdcm4chee-arc-lightサーバーを起動することができる。
必要なAEを登録することで使用可能となる。
Menu > Configuration > AE List > Registaer new application entity (+ボタン)
サーバーとしてきちんと使いたいときは
http://csdicom.blogspot.com/2019/02/install-dcm4chee-archive-light-5x.html
の「保存場所の変更」「自動実行」を参考に調整するといいかと。
70.10. 保存場所
デフォルトは ${wildfly}/standalone/data/fs1 なので /data/にブラウザで変更
http://localhost:8080/dcm4chee-arc/ui2/
configration>Device>Dcm4Chee>Extension>ArchiveDrive>StorageDescriptor>StrageURI
file:///data/
70.20. 保存形式
保存形式はデフォルトでは送信日時だったのでstudydateに変更
>storageProperty
pathFormat=00080020,date,yyyy}/{00080020,date,MM}/{00080020,date,dd}/{0020000D,hash}/{0020000E,hash}/{00080018,hash}
------------- '19/12/21 追記 --------------------------------------
こちらでも上記を参考に起動方法を変更しました。
% sudo useradd wildfly
% sudo mkdir /etc/wildfly
% sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/
/etc/wildfly/wildfly.confの編集
# The configuration you want to run
WILDFLY_CONFIG=dcm4chee-arc.xml
# The mode you want to run
WILDFLY_MODE=standalone
# The address to bind to
WILDFLY_BIND=0.0.0.0
% sudo cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/wildfly.service
% sudo cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/
% cd /opt
% sudo chown -R wildfly:wildfly wildfly
% sudo chown -R wildfly:wildfly wildfly-18.0.0.Final
% sudo chown -R wildfly:wildfly dcm4chee
% sudo chown -R wildfly:wildfly dcm4chee-arc-5.19.0-mysql
% sudo systemctl enable wildfly
% sudo systemctl start wildfly
-------------- '19/12/21 追記ここまで ----------------------------
既存のdcmファイルを登録
使い慣れているので、ここではDCMTKのdcmsendを使う。
% sudo apt install dcmtk
Hostname : localhost
Port : 104
AE Title : DCMSEND
上記のパラメーターでAEを登録すれば、下記コマンドで送ることができる。
dcmsend -v +v -aet DCMSEND -aec DCM4CHEE localhost 11112 *.dcm
weasis
Menu > Configuration > Devices > dcm4chee-arc > Device Extensions > Archive Device > Attributes
Invoke Image Display Patient URL
weasis://$dicom:rs --url "http://HOSTNAME:8080/dcm4chee-arc/aets/DCM4CHEE/rs" -r "&patientID={}" --query-ext "&includedefaults=false" --
accept-ext="transfer-syntax=*"&target=_self
Invoke Image Display Study URL
weasis://$dicom:rs --url "http://HOSTNAME:8080/dcm4chee-arc/aets/DCM4CHEE/rs" -r "&studyUID={}" --query-ext "&includedefaults=false" --
accept-ext="transfer-syntax=*"&target=_self
/opt/wildfly/bin/add-user.shを実行しManagement Userを追加。http://localhost:9990/のHAL Management Consoleに入れるようにしておく。
Deployments > Deploy an Application > add からweasis-pacs-connector.warをDeployした後ui2を再読込すると、眼のアイコンのOpen study in the viewerが出現する。
各クライアントにWeasisをインストールすれば、閲覧可能となる。
% sudo dpkg -i ~/Downloads/weasis_3.5.4-rc-1_amd64.deb
-------2023/11/15 追記--------------
{{qidoBaseURL}}を実際のURLに置き換える
IID_PATIENT_URL=weasis://$dicom:rs --url "http://URL:8080{{qidoBasePath}}" -r "patientID={{patientID}}" --query-ext "&includedefaults=false"
"IID_STUDY_URL=weasis://$dicom:rs --url "http://URL:8080{{qidoBasePath}}" -r "studyUID={{studyUID}}" --query-ext "&includedefaults=false"
-------2023/11/15 ここまで--------------
Oviyam2のインストール
WildFlyとTomCat9を同時に動かすことになるのでかなり無駄な感じがするが、確認のためにOviyam2.7もインストールしてみた。
% sudo apt install tomcat9
/var/lib/tomcat9/conf/tomcat-users.xml
<!-- この行を削除
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="admin"/>
<user username="tomcat" password="1PASSWORD" roles="tomcat"/>
<user username="both" password="2PASSWORD" roles="tomcat,role1"/>
<user username="role1" password="3PASSWORD" roles="role1"/>
<user username="admin" password="4PASSWORD" roles="admin"/>
--> この行を削除
コメント状態を解除し、adminを加える。
/var/lib/tomcat9/conf/server.xml
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="18443" />
WildflyとバッティングしないようにPort番号を変更する。
% cd Downloads/
% unzip Oviyam-2.7.3-bin.zip
% cd Oviyam-2.7.3-bin
% sudo cp tomcat/*.jar /var/lib/tomcat9/lib
% sudo cp Oviyam-2.7.3-bin/oviyam2.war /var/lib/tomcat9/webapps
% sudo systemctl start tomcat9
oviyam2の削除
% sudo apt purge tomcat9
% sudo rm -rf /var/lib/tomcat9
Orthancだと簡単にDICOMサーバーをたてられるようなので、今度試してみよう。
http://talesofkingarch.blogspot.com/2018/08/setting-up-orthanc-server-on-ubuntu-16.html