OpenDolphin

OpenDolphin-1.3をMacOSX Tiger上で構築する記録です。1台のMac上にサーバも構築してみようと考えています。このブログでは、元町皮ふ科様のサイトを参考に、それを忠実に(?)再現しようとした試みです。 バイブルサイトのURIは、こちらです。

2008年8月16日土曜日

再びjboss-4.2.3.GAに挑戦

一応システムとしては一通り完成しましたが、現在臨床から離れているので、実際にカルテを書いてみると言っても、何だか実感がわきません。で、以前失敗していたjboss-4.2.3.GA上でサーバを走らせる事に挑戦してみました。

まずは、きちんと動いているOpenDolphin-1.3をソースディレクトリごとコピーして、あらたにOpenDolphin-1.3-jboss4.2を作成、NetBeansプロジェクトに読み込みました。

以前に、OpenDolphin-1.3/libディレクトリに入っていたjarライブラリを、jboss-4.2.3.GA/client以下の相当するライブラリと入れ替えてみるところまでは以前行っていましたが、それだけではうまく行きませんでした。
今回は、たんねんにjboss以下のディレクトリをlibディレクトリに注目してみていったところ、jboss-4.2.3.GA/server/libなんかにも同名のライブラリが入っています。同じものかと思いましたが、シンボリックリンクなどではないようです。ファイルの大きさを較べてみたところ、どうやら別物のようです。jbossのことをほとんど理解していませんので、どちらのライブラリを読み込めば良いのか分かりませんでしたが、jboss-4.2.3.GA/lib以下に一通り揃っていましたので、まずはこちらを使用する事にしました。

とりあえず、相当するjarファイルをすべて入れ替えてみたところ、NetBeans上でエラーが表示されています。
どうやら、javax.ejb.EJBAccessExceptionが見当たらないと言っています。

これをキーワードにググって見たところ、どうやらjboss-ejb3x.jarをライブラリに読み込まなければ行けないようです。そして、このjarファイルをライブラリに登録したところ、NetBeansの警告は消え、無事にビルド終了。
できたopenDolphin-1.3.earをjboss-4.2.3.GA/server/default/deploy以下にコピーしてjbossを起動し、クライエントを立ち上げて接続してみたところ、無事に接続できました。

疑問点、未解決問題

  1. 実はjems版jboss-4.0.5.GAにもjboss-ejb3x.jarというファイルがあるのですが、こちらはライブラリに登録しなくてもビルドが通って無事にOpenDolphinサーバが動いていました。4.2.3.GAでは、何故必要になったのかが釈然としません。
  2. 4.2.3.GA版のopenDolphin-1.3.earでデータベースの初期化ができるかどうか確認していません。

という事で、jboss-4.2.5.GA版のearファイルをこちらに置いています。
ファイル置き場にGoogle Page Creatorを用いていましたが、どうやら今年いっぱいでサービスが終了するとの事で、Google Sitesに移りました。こちらにも置いています。

追記:
jboss-4.2.3.GAに付属のライブラリでコンパイルしたopenDolphin-1.3.earに接続するためには、同ライブラリを用いてビルドしたクライアントが必要です。デジタルグローブ社で配布されているjarファイルでは"SerialVersionUID"が違うというエラーが出てきます。

2008年8月7日木曜日

その後分かったことの追加

久しぶりにエントリーを追加しますが、その後分かったことを追加しておきたいと思います。
  1. このブログにはじめて日本からアクセスがありました。と同時にGoogle検索でも比較的上位に出てくるようになってしまいました。
    このブログを最初からご覧の方はお分かりと思いますが、このサイトは私がバイブルとしている元町皮ふ科様のサイトを忠実にフォローしているだけです。そこで、ブログの説明にその旨を明記しました。
  2. 実は、OpenDolphinクライエント自体は、本家デジタルグローブ様のサイトで配布されています。
    このクライエントの設定を変更すれば、自前サーバにも接続は可能です。ということで、最低限自前で導入が必要なのはサーバ環境ということになります。
    私の環境でビルドした、OpenDolphin-1.3.earをここにアップしておきます。
    *Google Sitesにも同じファイルを置いています。
    PostgreSQLのバージョンが元町皮ふ科様のサイトと異なっています。また、データベース初期化のターゲットアドレスをどこに設定してビルドしたか忘れてしまいましたので、ご使用には注意してください。
  3. 実は、我が家で導入したORCAのPCで、無線LANがうまく動きませんでしたので不便なところに固定になってしまいました。そういったわけで、ORCAのjavaクライエントをMacBookに導入し接続してみましたが、ほとんど問題なく利用できています。
ということで、現在の我が家の環境を整理しておきますと、
Debian Etch: ORCA本体
MacBook: ORCA java client, JBoss Server with Opendolphin server, OpenDolphin Client
といった感じです。

2008年7月31日木曜日

ORCAとOpenDolphinの連携 (成功編)

ソースを眺めてみましたが、私の能力では原因が分かりませんでした。
Debian側からSYNを投げているのは確実ですので、MacBook側でどう対応しているのかを視点を変えてみてみました。
MacOSXでは、パケットキャプチャにtcpdumpが使えます。私の環境ではネットワークインターフェースはen1でしたので、
tmiura$ sudo tcpdump -i en1 > tcpdump.txt
として、キャプチャ結果をテキストファイルに落としてみました。どうやらMacBook側にSYNパケットは届いているようです。

ここで、はたと困ってしまいましたが、こういう場合はネットワークの設定を見直すのが基本のようです。pingは通るので、とりあえずTCP接続はできているようです。しかし、セキュリティソフトを入れていますし、へんなところでアクセス制限をしていないか洗い直してみました。

結果、恥ずかしながらMacOS側でfirewallの設定をしていた事を忘れてしまっていました。firewallをオフにしたところ、無事ORCAから受付情報の受診に成功しました。

これでいよいよOpenDolphinでカルテを開く事ができます。ついでに、スタンプの登録もできそうです。

次回からいよいよ、実際にOpenDolphinを使ってみたいと思います。

ORCAとOpenDolphinの連携 (原因究明編)

前回は、OpenDolphin-1.2.5のユーザーズマニュアルを参考にORCAとOpenDolphinの連携のためのセッティングを行ってきましたが、失敗してしまいました。
ORCA上でも受付情報の送信が「遮断」と出ていますので、送信自体が失敗しているようです。

で、いろいろ調べてみますと、どうやら株式会社デジタルグローブ社のウェブサイトに「Dolphin-ORCA連携」というページがあるではありませんか。
こちらに、より詳細な設定が記載されていました。
主な違いは、jma-receiptサーバのセッティングでしたが、これはOpenDolphinからの情報を受け取る方ですので、とりあえず受け付け情報がOpenDolphinにわたらない原因ではなさそうです。

一応、情報の内容としては、ウェブページの方が新しそうでしたので、ウェブページに準拠してセッティングを変更してみましたが、やはり受付情報の受け渡しがうまく行きません。

よくわからなかったので、Debian側にWiresharkをインストールしパケットをキャプチャしてみました。結果、どうやらDebian側から192.168.0.5にSYNパケットは投げられていますが、それに対する応答が無いようです。

ここで、どうやってソケット接続をしているのかソースにあたってみようと言う無謀な試みに出ました。ここで、おかしな事に気がつきました。
Dolphin側では30秒ごとに新規受付があるかどうか確認しているとの事ですが、ORCAのClaimでは、どうやら受付登録時にその情報を送信しているだけのようです。つまり、DolphinがClaimを介してORCAにその都度問い合わせをしているのであれば、Claimに情報を要求するようなシステムが必要になるはずです。でも、どうやらそういった仕組みはなさそうです。
では、30秒ごとの確認ってなに???

で、ソースを見てみた感じの推測ですが、OpenDolphinでソケットサーバを用意しておいて、ORCAから送信される受付完了のClaim送信を受信しているようです。それをいったんOpenDolphinで自前のデータベースに登録して、30秒ごとにOpenDolphinが自前のデータベースに検索をかけているという事のようです。

この仕組みからすると、ORCAが受付完了の情報をClaim送信する際に、OpenDolphin側のClaimサーバが起動していなければ、その情報はOpenDolphin側に受け渡されない事になります。で、OpenDolphinのClaimサーバは、OpenDolphinのクライアントに含まれていますので、つまりOpenDolphinを起動する前の受付情報はOpenDolphinに渡されない事になりそうです。

この辺は、もしOpenDolphin側のClaimサーバをOpenDolphinクライアントと分離できれば、たとえばORCA起動PCで同時に立ち上げておけば受付情報が抜ける問題については解決できそうです。
もしくは、どうせOpenDolphinはORCAが無いと導入が難しいので、Claimという粗結合を廃して直接ORCAのデータベースをたたいて情報を得るようにしてしまえば良いと思うのですが、、、。

話はそれましたが、Javaでは具体的にソケット通信の詳細をコーディングしているわけではなさそうなので、なぜOpenDolphinがSYNに応答しないのか分かりませんでした。

ORCAとOpenDolphinの連携 (失敗編)

ORCAのインストールが、以外にあっさり終わってしまったのには驚きでした。Debianをインストールした事のある人なら、難なく導入できそうです。まあ、運用の方が大変なわけですが、、、。
そこで、今回はいよいよORCAとOpenDolphinの連携のセッティングをしていきます。

まずは、株式会社デジタルグローブ様のサイトにあるOpenDolphin-1.2.5ユーザーズガイドにそって設定をしていきます。具体的には、「第3章 ORCAとの接続」です。

まずは、環境を、
MacBook (MacOS 10.4.11 Tiger)
OpenDolphin server : JBoss-4.0.5
OpenDolphin client
IP address : 192.168.0.5/24

VAIO PCG-V505 (Debian Etch)
ORCA (jma-receipt)
IP address : 192.168.0.8/24

1) まずはORCAを導入したDebian側のPostgreSQLの設定を変更します。

1-1) /etc/postgresql/postgresql.confの編集で、tcpip_socket = ONを追加するように記載されています。が、Debianでは、confファイルのパスが異なっていますし、設定の記載方法もPostgreSQL8.*では異なっているようです。
/etc/postgresql/8,1/main/postgresql.conf
をvimやgeditなどで編集します。編集部分は以下です
#Listen_addresses = 'localhost'

Listen_addresses = 'localhost, 192.168.0.8'

1-2) 次に同じディレクトリにあるpg_hba.confファイルに以下の記述を追加します。
host all all 192.168.0.0/24 trust
以上の設定で、192.168.0.0/24ネットワークからORCAのPostgreSQLに直接接続できるようになります。
どうやらOpenDolphinのクライエントから直接ORCAのPostgreSQLに接続して情報を得るようです。受付情報などは、Claimを利用していると明記されていますので、これはスタンプの作成などに使われるのでしょうか?

以上の設定が終わったら、postgresユーザもしくはスーパーユーザでpostgreSQLを再起動しておきます。

2) 次にORCAのクライエントから、「CLAIM接続情報」の各項目を設定します。

3) 最後にOpenDolphinの設定画面でレセコンの設定を行います。

詳しくは、株式会社デジタルグローブのサイトからこちらのマニュアルをダウンロードしてみてください。

OpenDolphin-1.2.5ユーザーズマニュアル

以上の設定を終えて、ORCA上で患者情報を登録、受付をしてみましたが、OpenDolphinに受付情報が送られてきません、、、。
ん〜。どうしたものでしょうか?

2008年7月28日月曜日

ORCA編 -ORCAのインストール-

前回のエントリーでDebianのインストールができましたので、いよいよORCAのインストールに移りたいと思います。

ORCAの本家サイト

といっても、本家サイトからソースをダウンロードしてきて、./configure & makeなんてする必要は無く、/etc/apt/sources.listにORCAのサイトを追記してaptitude一発ですね。特にエラーもなく終了。続いて同じPCにクライエントもインストール(こちらもaputitude一発)しました。
具体的な手順は、こちらのPDFファイルに忠実に従いました。

一通りインストール完了後、
oruser@debian:~$ glclient -dialog &
で、ORCAクライエントが立ち上がりました。設定したユーザーおよびパスワードを入力すると、無事にORCAが立ち上がりました。

ORCA編 -Debian etchのインストール-

今回から別のPCにORCAを導入していきます。
導入するPCは、古いVAIO PCG-V505です。
PentiumII 2GHz, Memory 512M
出荷時からC, Dドライブ(いずれもNTFS)に分けられており、CドライブにはWindowsXPがプリインストールされていました。
Dドライブが15Gほど開いていましたので、このDドライブを小さくして、開いた領域にDebianをインストールしようという計画です。

まずは、現在使用中のDドライブの大きさを変更しなければなりません。
遠い昔の記憶ですが、fdiskを使ってパティションの変更をしていたのですが、どうやらNTFSに対応していないらしく、ググって見たところ最近はGPartedというソフトウェアを使うのがはやりのようです。
GParted本家サイト
ここからLiveCDのisoファイルを落としてきてCDに焼き、このliveCDから起動してDドライブを短縮し新たにDebianをインストールする領域を確保する事ができます。GUIで直感的に作業できますが、パーティションをいじりますので、直感で作業するのはやめたほうが良いと思います。最終的に、ext3ファイルシステムで10G, スワップに2Gほど確保しました。

次にDebianのインストールCDを準備します。
Debian本家サイト
本家サイトよりnetinst CDをダウンロードし、ORCAのインストール説明に詳細があるようにインストールをしていきます。
異なる点は、パーティションの割当の部分くらいです。

以下にちょっとトラブった点について記載しておきます。
  1. 最初はブータブルCDを700MBのCD-Rに焼いていましたが、なぜかVAIOで認識しません。古いのでCD-Rが壊れてるのかとも思いましたが、遠い記憶をたどって、おそらくVAIOのCD-Rが650MBのCD-Rまでしか対応していなかった可能性を思い出しました。近くで650MBのCD-Rを売っていませんでしたので、手元にあったDVD-Rに焼いてインストールしました。
  2. ブートローダのGRUBのインストールに失敗しました。しょうがないのでliloを入れたのですが、再起動するとLinuxしか立ち上がってきません。昔はいろいろとメニューが出てきたような記憶があるのですが、、、。ちょっと調べてみると、LILOの後で[Ctrl]を押すとメニューが出てくるようです。実際に元々インストールしていたWindowsが無事に立ち上がる事が確認できました。
以上で、ORCAをインストールするためのDebianPCが完成したようです。

自己紹介

ちょっとしたTipsのメモです。