2015年7月21日火曜日

Oviyam2のインストール

これまでPACSサーバ(dcm4chee)のインストールとDicomビューア(weasis)をインストールしてきましたが,今回はもう一つ他のDicomビューアであるOviyam2をインストールします.Oviyamは,WebベースのDICOMビューアで,標準とDICOMプロトコルを使って患者一覧を取得し,特定のシリーズやスタディを検索してJPEG形式でブラウザに表示できます.Oviyamはdcm4cheeはもちろんのこと,WADOをサポートしているDICOMサーバであればどのようなPACSサーバとも連携できます.
Oviyamは,JBoss上で動くJavaアプリケーションなので,warファイル(oviyam2.war)をdeployディレクトリへコピーするだけでインストールは完了です.Oviyamは下記URLからダウンロードできます.現時点での最新バージョンは2.1です.
http://sourceforge.net/projects/dcm4che/files/Oviyam/
Oviyamへは下記URLでアクセスします.
http://172.16.108.100:8080/oviyam2/
weasisがインストールされ,動いていれば,特に問題なくインストールできるでしょう.なお,最初に上記URLへアクセスしたとき,連携するPACSサーバの設定が必要になります.設定内容についてはインストールマニュアルに従って行うだけです.

2015年7月15日水曜日

スケジュールが押し気味なので作り直しました

PACSサーバのインストールに手間取り,スケジュールが押し気味なので,スケジュールを作り直しました.
今度は,卒論提出までのスケジュールを組みました.とにかく,夏休みに入る前にはサーバの構築を終え,夏休み期間中にマニュアルの作成を行い,夏休みが明けたら構築したシステムのテストを実施します.そして,実際の現場で運用評価を行い,その文書化を経ていよいよ卒論の執筆です.予定よりも1か月ずれ込みました.そのため,卒論に割ける時間が約1か月と短縮しました.もう,後がありません.気を引き締めてやっていきましょう.

2015年7月10日金曜日

やはりバージョンごとにデータベースは分けることにする

今回のエラーの原因は,データベースのバージョンによる不整合だった.やはり,ここはバージョンごとにデータベースを分かることにする.その方が余計なトラブルに巻き込まれずに済む.バージョンアップによるデータベースの移行についてはまた必要なときに考えることとしよう.
そこで,ここにdcm4cheeのバージョンごとにデータベースを分かる方法についてまとめておく.まず,データベース名は以下のとおりとする.
PACS用データベース:pacsdbXXXX
ARR用データベース:arrdbXXXX
ここで,XXXXはdcm4cheeのバージョンである.たとえば,dcm4chee-2.17.1-mysqlならばXXXX=2171とする.以下は,バージョン2.17.1を例にして説明する.

データベースの作成方法

データベースpacsdb2171の作成

$ mysql -uroot -p
mysql> create database pacsdb2171;
mysql> grant all on pacsdb2171.* to 'pacs'@'localhost' identified by 'pacs';
mysql> \q
# cd /usr/local/app/dcm4chee-2.17.1-mysql/sql
# mysql -upacs -ppacs pacsdb2171 < create.mysql

データベースarrdb2171の作成

$ mysql -uroot -p
mysql> create database arrdb2171;
mysql> grant all on arrdb2171.* to 'arr'@'localhost' identified by 'arr';
mysql> \q

$ cd [dcm4chee-arr-mysql.ddlがあるディレクトリ]
$ mysql -uarr -parr arrdb2171 < dcm4chee-arr-mysql.ddl

※arrdb2171は初回起動時に自動的に作成されるので最後の2行はなくても良い.

設定ファイルの変更

JBossの設定ファイルで接続するデータベース名を指定しているので,そこを変更する.

修正するファイル:/usr/local/app/dcm4chee-2.17.1-mysql/server/default/deploy/pacs-mysql-ds.xml

<datasources>
  <local-tx-datasource>
    <jndi-name>pacsDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/pacsdb2171</connection-url>

修正するファイル:/usr/local/app/dcm4chee-2.17.1-mysql/server/default/deploy/arr-mysql-ds.xml

<datasources>
  <local-tx-datasource>
    <jndi-name>arrDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/arrdb2171</connection-url>

画像格納ディレクトリを削除する

# rm -rf /usr/local/app/dcm4chee-2.17.1-mysql/server/default/archive

DICOM画像をPACSサーバへ転送する


# /usr/local/dcm4che/bin/dcmsnd DCM4CHEE@localhost:11112 /home/w3412042/OSIRIS

dcm4cheeのディレクトリ階層構造



2015年7月9日木曜日

dcm4chee-2.18.Xのデータベースpacsdbは2.17.Xのものとは違うらしい

昨日のゼミで原因がわからなかった以下のエラーについて,やっと原因が判明した.

2015-07-08 14:41:52,997 INFO  -> (main) [org.jboss.deployment.EARDeployer] Started J2EE application: file:/usr/local/app/dcm4chee-2.18.0-mysql/server/default/deploy/dcm4chee-web-ear-3.0.4-mysql.ear
2015-07-08 14:41:52,998 ERROR -> (main) [org.jboss.deployment.scanner.URLDeploymentScanner] Incomplete Deployment listing:

--- Incompletely deployed packages ---
org.jboss.deployment.DeploymentInfo@cd286966 { url=file:/usr/local/app/dcm4chee-2.18.0-mysql/server/default/deploy/dcm4chee-wado-service.xml }
  deployer: org.jboss.deployment.SARDeployer@3adc2c8
  status: Deployment FAILED reason: - nested throwable: (java.lang.reflect.InvocationTargetException)
  state: FAILED
  watch: file:/usr/local/app/dcm4chee-2.18.0-mysql/server/default/deploy/dcm4chee-wado-service.xml
  altDD: null
  lastDeployed: 1436334099282
  lastModified: 1436334099000
  mbeans:

--- MBeans waiting for other MBeans ---
ObjectName: persistence.units:ear=dcm4chee-web-ear-3.0.4-mysql.ear,unitName=dcm4chee-arc
  State: FAILED
  Reason: javax.persistence.PersistenceException: org.hibernate.HibernateException: Missing table: published_study
ここで,最後のメッセージに注目していただきたい.「Missing table: published_study」とある.そう,テーブルpublished_studyがないということだ.我々は2.17.1をインストールして動作を確認後,データベースをそのままにしてシステムだけバージョン2.18.1に上げようとしていた.しかし,2.17.Xと2.18.Xではデータベースpacsdbの構造が違うのだ.少なくとも2.17.Xにはpublished_studyという名のテーブルなどない.これは,実際に確認済みである.また,/sql/create.mysqlにpacsdbを作るSQL(というかDDL)があるが,その中身を比較したところ,確かに2.17.1にはなかったpublished_studyのcreate table文が2.18.1にはあった.
そこで,いったんpacsdbを削除し,再度作り直すとエラーは消えた.
$ mysql -uroot -p
mysql> create database pacsdb;
mysql> grant all on pacsdb.* to 'pacs'@'localhost' identified by 'pacs';
mysql> \q
# cd /usr/local/app/dcm4chee-2.18.1-mysql/sql
# mysql -upacs -ppacs pacsdb < create.mysql
それだけのことだった.そのそれだけのことでこれだけハマってしまった.データベースは作り直さなくてもよいはずだという固定観念が今回のトラブルを呼んだようだ.しかし,本番のデータベースの場合,移行する方法はあるのだろうか.今回はテストだからいったん削除して再度作り直したけれども・・・.
さらに,2.17.Xと2.18.Xを併存させるには一体どうすればよいのだろうか?まさか,データベースを別々に持つ?そんな馬鹿な・・・.

2015年7月8日水曜日

dcm4cheeバージョンアップで出た問題

dcm4chee-2.18.0-mysql

dcm4cheeを2.17.1から2.18.0へバージョンアップした.その結果,次のようなエラーが出た.
2015-07-01 23:57:20,880 ERROR -> (main) [org.jboss.deployment.MainDeployer] Could not create deployment: file:/usr/local/app/dcm4chee-2.18.0-mysql/server/default/deploy/dcm4chee-wado-service.xml
2015-07-01 23:57:31,511 ERROR -> (main) [org.jboss.deployment.scanner.URLDeploymentScanner] Incomplete Deployment listing:
2015-07-01 23:57:39,662 WARN  -> (http-0.0.0.0-8080-4) [org.dcm4chee.web.common.license.ae.AELicenseProviderManager] No AELicenseProvider found for name: null
2015-07-01 23:57:39,748 ERROR -> (http-0.0.0.0-8080-4) [org.dcm4chee.web.common.secure.SecureTab] Can't instantiate Panel for panel
このうち,最初のエラーはJAI image IO libraryの問題で,dcm4cheeにバンドルされている32bit版を64bit版に変えればよい.しかし,現時点で64bit版がダウンロードできなくなっている.そこで,以前ダウンロードして保存していたjai_imageio-1_1-lib-linux-amd64.tar.gzを使うことで解決できる.
2番目のエラーはpacsdbのスキーマが2.17.Xから2.18.Xにバージョンアップしたときに変更しているために生じたエラーである.今回,2.17.1で作成したデータベースをそのまま使用していたためこのエラーが起きた.本来であればpacsdbは作り直さなければならなかったのである.
問題は最後のエラーである.このエラーメッセージで検索したところ,次のようなページが見つかった.
http://stackoverflow.com/questions/29752448/dcm4chee-linux-oracle-installation
これによれば, マニュアルのステップ5,特にdeploy/arr-xxx-ds.xmlファイルの編集についての部分に従えと書いてある.そこで,検索してみると「the Audit Record Repositoryのインストール方法」というのが見つかった.これによれば,
dcm4cheeのバージョンによって対応するarrのファイルが異なります。2.17.3からはarrのバージョンは3.0.12になります。2.17.2では3.0.11です。
ということであった.したがって,マニュアルのステップ5をdcm4chee-arr-3.0.12を使ってやり直す必要がある.このとき,以下の修正を$DCM4CHEE_HOME/bin/install_arr.shに対して行ってやる必要がある.
  • VERS=3.0.11 → VERS=3.0.12
  • dcm4che-core-2.0.25.jar → dcm4che-core-2.0.27.jar

ログを見る習慣

システムのデバッグにはログは必須である.エラーが発生してもログを見なければ何もわからない.ログを見ても分からないことは多いが,しかし,頼りはログだけである.だからログを見る習慣を身につけることが問題解決のためには最も重要になる.dcm4cheeのログ以下のファイルである.
$DCM4CHEE_HOME/server/default/log/server.log
ログを見る最良の方法は,ログ専用のコンソールを一つ準備し(といってもTeratermを1つ起動するだけだが),そこに以下のコマンドを入力する.
tail -f  $DCM4CHEE_HOME/server/default/log/server.log
ここで,tailコマンドは指定したファイルの最後の何行かを画面に表示するコマンドで,-f はファイルの内容を常に監視し,表示を更新するオプションである.