2016年6月28日火曜日

第8回 WEB電子カルテのインストール

ライブラリ

前回でWEB電子カルテ開発環境の構築も完了し、サンプルサーブレットを開発してみました。いよいよ今回からWEB電子カルテシステムをインストールします。これは、「WEB電子カルテシステム開発環境インストールマニュアル」(初版)のP.43「2-7.eclipse開発環境の作成」から記載されている手順に従って行っていきます。作成するのは「emrs」という名のTomcatプロジェクトです。
WEB電子カルテではいくつかのライブラリを使います。
2-8. Struts 1.3.10(java Webアプリケーションのフレームワーク)
2-9. Log4j 1.2.17(javaプログラム用のログAPI)
2-10-1. Seasar2(java言語でソフトウェアを開発するためのフレームワーク)
2-10-2. S2Tiger 2.4.48
2-11. commons-lang 2.6(Javaのjava.langパッケージを拡張するライブラリ)
2-12. JDBC (javaと関係データベースの接続のためのAPI)
などです。これらの多くはW先生いただいたデータ一式の中の「\構築用ソフトウェア\work\ソフトウェア」(W先生作)あるいは「初版WEB型電子カルテ\開発環境PC」(こっちがオリジナル)というフォルダおよびその中にあるフォルダ内に入っていますが、一部は自分でダウンロードしなければならないものもあります。
次に、これはインストールマニュアルにはないのでよくわからないのですが、W先生のドキュメントによれば、Jfree(グラフ表示に関するライブラリ)やhttpcomponents-client-4.1.3(javaプログラムからHttpでサーバにアクセスして情報取得するライブラリ) をWEB-INF/libにコピーしています。

設定ファイル

struts-config.xmlとweb.xml

次に設定ファイルをコピーします。コピーする設定ファイルは「\構築用ソフトウェア\work\ソフトウェア」(W先生作)あるいは「\初版WEB型電子カルテ\配布データ\開発環境\各設定ファイル\WEB-INF」(こっちがオリジナル)の中にあるstruts-config.xmlとweb.xmlです。

content.xml

また、インストールマニュアルには書いてありませんが、W先生のドキュメントにはcontent.xmlが出てきます。編集内容を見るとどうもこれはJDBCの設定のように思えます。編集する際にurlとusername、passwordには注意しましょう。書いてある通りに入力してもデータベースにはつながりません。現在インストールしているマシンの環境に合わせて設定する必要があります。

AccessLogService.dicon, emrs.property, log4j.xml

これらはW先生からいただいた電子カルテ一式の「\構築用ソフトウェア\work\emrsファイル\src」の中にあるので、マニュアルに従ってコピーします。

プログラムソース

WEB電子カルテシステムのjavaプログラムソースは、マニュアルではCVSから取得するようになっている。しかし、これにはパスワード認証が必要で、パスワードを知らないと取得できない。そこで、W先生からいただいたソースプログラムを使う。ソースプログラムは「\構築用ソフトウェア\work\emrsファイル\src」内にあるので、これをプロジェクトへコピーする。

JSPファイル

JSPファイルは若宮先生からいただいた電子カルテ一式の「\構築用ソフトウェア\work\emrsファイル\jsp」内にあるので、それをプロジェクトにコピーする。

emrs.propertyの編集

WEB電子カルテシステムの認証はORCAの認証機能を利用します。 これはそのためのORCA認証のサーバ、ポート番号を設定しているファイルです。次のように記載してください。
#====================== ORCA認証 ==========================
#サーバ
Orca.Auth.Server=172.16.108.250
#ポート番号
Orca.Auth.Port=8000

#====================== 一覧件数 ==========================
#病名検索
MaxCount.ByomeiSearch=100
このファイルの用途についてはjavaのソースプログラムweb.karte.common/OrcaAuth.javaやweb.karte.common/CommonProperty.javaを見てください。なお、172.16.108.250はorcakumwに立てたORCAサーバのIPアドレスです。

データベースの作成

2つのデータベースemrsdb, orcaを作成してバックアップデータからリカバリをする。データベースのバックアップは、W先生からいただいた電子カルテ一式の「\構築用ソフトウェア\emrs\backup\db」内にある。

emrsdb

orca
 
なお、WEB電子カルテシステムからデータベースへのアクセスはJDBCを用いて行うが、その設定をeclipseのServersプロジェクト内にあるcontext.xmlで行う。context.xmlは、Tomcatでデータベースにアクセスするためのデータソースの定義等を行うファイルらしい。このサイトがわかりやすい。
<?xml version="1.0" encoding="UTF-8"?>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

<Resource name="jdbc/emrsdb" 
 auth="Container" 
 type="javax.sql.DataSource" 
 driverClassName="org.postgresql.Driver" 
 url="jdbc:postgresql://172.16.111.12*:5432/emrsdb" 
 username="postgres" 
 password="postgres" 
 maxActive="20" 
 maxldle="10" 
 maxWait="-1"/>

<Resource name="jdbc/orca" auth="Container" 
 type="javax.sql.DataSource" 
 driverClassName="org.postgresql.Driver" 
 url="jdbc:postgresql://172.16.111.12*:5432/orca" 
 username="orca" 
 password="orca" 
 maxActive="20" 
 maxldle="10" 
 maxWait="-1"/>

</Context>
このリストで、urlには使用しているPCのIPを書く。ただし、本番環境へ移した場合には、それぞれのデータベースが動いているサーバのIPアドレスに変更する。W先生のドキュメントには「Tomcat6のときに配置していたemrs.xmlは使用せず・・・」という記述がある。実際、W先生からいただいた電子カルテ一式の「\構築用ソフトウェア\work\emrsファイル」内にはemrs.xmlというファイルがあり、中身はこれと同じJDBCの設定です。以前はここで設定していたのですね。それにしてもTomcatの設定ファイルは複雑怪奇です。

index.htmの配置

W先生のドキュメントによるとindex.htm(index.xmlと書いてあるが多分index.htmの間違いだろう)を\WebContentにコピーするようになっている。しかし、オリジナルのマニュアルにはindex.htmについては何も書かれていない。そもそもTomcatプロジェクトには\WebContentはない。これは動的Webプロジェクトで作られるフォルダだ。Tomcatプロジェクトだとindex.htmをどこへ配置すればよいのだろう?

2016年6月23日木曜日

第6回,7回 WEB電子カルテ開発環境の構築

今回は、いよいよWEB電子カルテシステム開発環境の構築を行います。まず、この作業の位置づけについて説明します。WEB電子カルテシステムはサーブレットとJSPで作られたWebアプリケーションです。このWebアプリケーションはApache Tomcat上で動きます。最終的にはLinuxのサーバ上で稼働させます。ORCAサーバと同じサーバ上で稼働させることを考えています。しかし、不慣れなLinux上での開発よりもいつも使っているWindows上での開発の方がスムーズに進むだろうということでWindows上に開発環境を構築します。本番環境(Linuxサーバ)への移行は、開発環境で作成したwarファイルと呼ばれるJavaアプリケーション一式を格納したアーカイブをTomcatのwebappsというディレクトリへコピーするだけで簡単にできます。
WEB電子カルテシステム開発環境の構築手順は以下の通りです。
  1. Javaインストール
  2. eclipseインストール
  3. Tomcatインストール
  4. Postgresqlインストール
  5. サンプルサーブレットの作成
JavaはランタイムであるJREだけでなく開発キットであるJDKも必要です。eclipseは統合開発環境で、アプリケーションのビルドだけでなくTomcatと連動させて開発マシン上で実行させながらデバッグできます。Tomcatは開発したWEB電子カルテシステムを動かすだけでなく開発時のデバッグでも利用するためにインストールします。PostgresqlはWEB電子カルテシステムやORCAが使用するデータベースです。WEB電子カルテシステムの開発には必ずしもORCAサーバは必要ありませんが、ORCAが使用するデータベースは必要です。そこで、Windows上にPostgresqlをインストールして、WEB電子カルテシステムおよびORCAが使用するデータベース(それぞれemrsdb、orca)をリストアして利用できるようにします。
次に開発環境を構築するために必要な資料は
  1. WEB電子カルテシステム開発環境インストールマニュアル
  2. 開発環境用Windows設定
の2つです。「WEB電子カルテシステム開発環境インストールマニュアル」は株式会社エスエスワイが2011年に作成したものです。内容が古いのでこのとおり作業することは無理です。そのため、W先生が補助資料を作ってくれています。それが「開発環境用Windows設定」です。したがって、これら2つの資料を見比べながらの作業となります。ただし、「開発環境用Windows設定」が作成されてからも時間が経っていますので、最終的にはネットで最新情報を調べながら構築作業を進めていく必要があります。
Postgresqlのインストールまで終わったら、構築した開発環境を使って簡単なWebアプリを作ってみます。 この作業は次のサイトを見ながら行います。
Eclipseでサーブレット開発環境を作る (Tomcat編) - nifty
しかし、 このサイトも少し古い(2014年)ので、ソフトウェアのバージョンが低いため、このとおりに作業を進めることはできません。最新の情報をネットで調べながら作業を進める必要があります。
より新しい解説サイトとして
Webアプリ向け開発手順
というのもあります。これはほぼ現在のバージョンに近いのでわかりやすいと思います。
ところで,これらのサイトはプロジェクトを作成する際に動的Webプロジェクトを新規作成します。ところが,WEB電子カルテシステムのマニュアルではTomcatプロジェクトを新規作成しています。これらはいったいどこがどう違うのでしょうか?それについて書かれたサイトがありました。
Tomcatプロジェクトと動的Webプロジェクトの違い
どうやら, 両方ともサーブレットを作成するという意味では同じようです。ただし,フォルダ構成などが違うようです。TomcatプロジェクトはeclipseにTomcatプラグインを入れてサーブレットを開発するというスタイルで,以前はこの方法しかなかったようです。しかし,新しいバージョンのeclipseにはWTP(Web Tools Platform)というもの(eclipseアドオンセットというらしい)が入っており,これを使うとTomcatプラグインがなくても動的Webプロジェクトを利用してサーブレットを開発することができるようです。何だかいろいろと複雑ですね。やはりeclipseは歴史があるだけに,初心者にはかなり敷居が高いです。ちなみにこのTomcatプロジェクトですが,作成するにはTomcatの設定が必要です。
  1. メニューから「ウィンドウ」→「設定」
  2. 表示されたダイアログの左のメニューから「Tomcat」をクリック
  3. 右側からTomcatバージョンを選びTomcatホームを設定する
これで,Tomcatプロジェクトを作成できるようになります。Tomcatプロジェクトの作成は次のようにします。
  1. メニューから「ファイル」→「新規」→「プロジェクト」を選択
  2. 「Java」→「Tomcatプロジェクト」を選択して「次へ」
Tomcatプロジェクトを使ったサーブレットの作成例はたくさん紹介されていますが,例えばこれなどを参考にするとよいでしょう。しかし,気を付けないといけないことがあります。Tomcatプロジェクトで作成したサーブレットをテストするとき,Apache Tomcat8.0 Tomcat8 Properties(%Tomcat%\bin\Tomcat8w.exe)を実行してTomcatを起動しておく必要があります。何故かeclipseからTomcatを起動してもうまく動きません(404エラー)。

2016年6月14日火曜日

第5回目 ORCAクライアント

ORCAクライアントを使って患者登録と病名登録を行ってみた。病名登録では病名検索して病名を入力するが,入力した病名の病名コードが表示されない。これは何故だろう?表示はされないが,データとしてはしっかり入っているらしい。これについては,下記のツールで,患者番号が1の患者の病名情報を見てみるとよい。

ORCA 日医標準レセプトAPI