OpenDolphin

Open Dolphin 2.7.0b を Win10 にインストールしてみた

上記の通りの内容です。サンプルの徳川さんをインスペクタに表示させてみるとこんな感じ。

こうなれば成功。実際にインストールしたのはかなり以前のことですが、リクエストがあったので、記憶が薄れないうちに書き留め。

<方法>

やり方は、基本的には高東ソフトウェア様の OpenDolphin Ver.2.5.12(2015-1-15) のインストール といっしょ。

ただし、後述するバグやソースコードの改変が面倒と感じるならば、ソースは本家ではなくここここから持ってきてください。(2018/6月 本家リポジトリの方で若干の update があったようですが、依然、診療行為のバグは取れていないようです)

まず、Maven, Postgres などの環境を整える。

ただ、せっかくなのでアプリケーションサーバは WildFly 10.0.0.Final (WF10)にしてみました。WF10 をNetBeans から起動するとなかなか終了してくれなかったりするので、war ファイルをテストする時はその都度 Chrome ブラウザで(IE11 だとなぜか管理画面が表示されない) 127.0.0.0:9990 にアクセスして管理画面からデプロイ。

WF10 への jdbc ドライバの登録は、

(WF10へのパス)\bin\jboss-cli.bat

でバッチファイルをコマンドプロンプトから起動した後、

connect
module add --name=org.postgresql --resources=C:(パス)\postgresql-(バージョン).jar --dependencies=javax.api,javax.transaction.api

でOK。データソースの登録は、 standalone-full.xml を直接編集した方が楽でしょう。

– standalone-full.xml の編集 –

そういうわけで、データソースの登録。私はこんな感じで設定。

<subsystem xmlns="urn:jboss:domain:datasources:4.0">
	<datasources>
		<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
			<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
			<driver>h2</driver>
			<security>
				<user-name>sa</user-name>
				<password>sa</password>
			</security>
			</datasource>
		<datasource jta="true" jndi-name="java:jboss/datasources/PostgresDS" pool-name="PostgresDS" enabled="true">
			<connection-url>jdbc:postgresql://localhost:5432/dolphin</connection-url>
			<driver>postgresql</driver>
			<security>
				<user-name>dolphin</user-name>
				<password>XXXXXXXX</password>
			</security>
		</datasource>
		<drivers>
			<driver name="h2" module="com.h2database.h2">
				<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
			</driver>
			<driver name="postgresql" module="org.postgresql"/>
		</drivers>
	</datasources>
</subsystem>

user-name や password はデータベース作成時のもので。

続いて、ロガーの登録。

<subsystem xmlns="urn:jboss:domain:logging:3.0">
	<console-handler name="CONSOLE">
		<level name="INFO"/>
		<formatter>
			<named-formatter name="COLOR-PATTERN"/>
		</formatter>
	</console-handler>
	<periodic-rotating-file-handler name="FILE" autoflush="true">
		<formatter>
			<named-formatter name="PATTERN"/>
		</formatter>
		<file relative-to="jboss.server.log.dir" path="server.log"/>
		<suffix value=".yyyy-MM-dd"/>
		<append value="true"/>
	</periodic-rotating-file-handler>
	<logger category="open.dolphin">
		<level name="INFO"/>
	</logger>
	<logger category="dolphin.claim">
		<level name="INFO"/>
	</logger>

level は、WARN でも問題ないはずですが、反応が薄く(笑)なりますので INFO にしてみました。

最後に、アドレスの設定。

<interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:192.168.XXX.XXX}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
        </interface>
</interfaces>

ここは問題ないでしょう。




– ソースの改変 –

ここらへんで、一回、

standalone.bat -server-config=standalone-full.xml

としてWF10を起動してみるとよいでしょう。問題なければ、管理画面から war ファイルをデプロイしてみましょう。

ソースそのままだと、Clob がどうしたこうしたで class がロードできないというようなエラーが出るはずです。どうやら、ソースが WF10 に対応していないようです。

なので、ソースに若干の修正。

調べると、common プロジェクトのエンティティで clob を使っているのは、

LetterText.java, NurseProgressCourse.java, PatientFreeDocumentModel.java, PatientMemoModel.java

の 4 ファイルなので、各ファイルの StringClobType という(現在では)推奨されていない表記を StringType に変更。例えば、LetterText.java であれば

@Entity
@Table(name = "d_letter_text")
public class LetterText extends InfoModel implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable=false)
    private String name;

    @Lob
    @Type(type="org.hibernate.type.StringClobType")
    private String textValue;

@Entity
@Table(name = "d_letter_text")
public class LetterText extends InfoModel implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable=false)
    private String name;

    @Lob
    @Type(type="org.hibernate.type.StringType")
    private String textValue;

に変更。
これで再度コンパイル、デプロイすると今度はうまくいくはずです。

クライアントは(一部不具合を除いて)特に大きな修正の必要はなかったかと思います。template や custome.properties などを準備しましょう。ついに、起動の瞬間。

java -jar OpenDolphin.jar dolphin

でログイン画面が立ち上がり、ドルフィン君がお出迎えしてくれると思います。

お疲れさまでした。

 

‥‥‥なのですが、細かい話をするとスタンプメーカーを起動した場合、診療行為とコメント系の組み合わせの取捨選択で一部不具合かなと思われる個所があります。設計の詳細がわからないため、きれいな形で直せなかったのですが、力技でごまかして動かしました(試しに使ってみる分にはまるで問題ない箇所です)。→ github

 

<謝辞>

素晴らしいソフトを開発され、オープンソースとして公開されているライフサイエンス コンピューティング株式会社 オープンドルフィンラボ 様に深く感謝いたします。

さらりと読んだだけですが、ソースにあたると「本当によくつくりこまれているな」という感想を持ちました。

また、ネット上で貴重な情報を提供している高東ソフトウェア様に深く感謝いたします。

<感想など>

・評価するだけであれば、『無料電子カルテ OpenDolphinパーフェクトガイド』で紹介されている Docker 版を使用するのが便利でしょう。

Docker版で実運用? チャレンジャーですが頑張って欲しいものです

・標準的にはサーバは Ubuntu 上などで稼働させるべきなのでしょうが、操作性という点でみるとやはり win 機の方が楽ですね。




ORCA との接続

ORCA Ver 5.0 とも接続させてみましたが問題なく通信できています。

 

 

せっかくなので iPad につないでみた

せっかくなので SuperEHRTouch というアプリを iPad にインストール、上記のサーバにつないでみましょう。

一応、接続はできましたが、スタンプツリーが読み込めなかったり、アプリが落ちたりとかなり不安定でした。それでもアプリは直観的で操作性にすぐれ閲覧用としてみても十分なクオリティではないでしょうか。 それにしても徳川さん栄養状態悪化の一途。

さらにクライアントから処方せんを打ち出してみた

訪問診療・往診などでは、訪問先で処方せんを発行できた方が便利なので、できないか検討。メニューアイテムとして復活させるのが簡単なんでしょうが、リフレクションが性に合わないのと処理の流れを追いたいという気持ちがあって 、今回は client プロジェクトの適当な位置から open.dolphin.hiro パッケージの PrescriptionMaker を直接呼び出すことにしてみました。 すると通常版にはないダイアログが出現。

出力先のディレクトリを調べると….

できてましたね、処方せんが。 ソースを読むとこのフォーマットを作った苦労のあとが窺いしれます。

新宿ヒロクリニックの担当者の方、ありがとう。

すごい!




なんちゃってクラウド化・多施設化

クラウドブームなので dolphin でもできないか検討。

デフォルトの 1.3.6.1.4.1.9414.70.1 のドルフィンクリニック(管理者 admin)の他に

追加で    1.3.6.1.4.1.9414.10.1 のイルカクリニックを登録(ついでに管理者 dolphin さんも登録しておく)。

クラウド上に設置したサーバに対して admin さんと dolphin さんが異なる場所から同時に接続を試みる。

するとサーバ側ではこんなログが取れる。

クライアントでもしっかりつながってました。

実運用では、セキュリティを高めるため VPN でつなぐなどやらなくてはいけないことはいろいろあるでしょうが、何もしなくてもクラウド化・多施設化ができるというのは便利ですね。

なお、現在は試験環境すら提供していません。さすがにクラウドマシンを常設するにはコストがかかるので(笑)。

ところで、クラウド上に飛ばしたカルテの各種データは、クラウドの管理者がどの程度把握できるのか?という疑問は当然出てくるかと思います。データ自体を暗号化しない限り、クラウド管理者からは「丸見え」、というのがその答えになります。クラウド上のデータの2次利用に関しては、ガイドラインに沿った制約があり、各クラウドサービス提供者によってもその取り扱いが異なってくると思われます。(Dolphin に限らず)クラウドを実利用される際には、一度、確認しておくことをおすすめします。

 

ファイルバックアップ

Dolphin は基本的に LAN 内で使うことを前提につくられているので、クラウド化でやったようにサーバとクライアントが同一 LAN 内にない場合、潜在的に通信障害のリスクが増す。

なので、OpenDolphin 2.7m ではクラアイントのホームフォルダに強制的にファイルバックアップを取ります。

例えば

 

のようなカルテを作成したとき、ユーザのホームディレクトリの OpenDolphin フォルダに BackUp フォルダとさらに 患者ID 子フォルダを作成し、その中に診察内容のテキスト文だけを記録した 作成時刻.txt というファイルをつくります。

 

 

上のカルテだと D_000001 フォルダ内に

とこんな感じのテキストファイル 2018-05-10-12-20.txt ができています。

こういってはなんですが、ドルフィンから他電子カルテに乗り換える時などにも役に立つでしょう。あんまり考えたくはないですが、決して大手とはいえない開発元がプロジェクトを急遽中止することも考えられるわけです。もしそうなっても慌てなくてすむようデータコンバートの手段は事前に準備しておくのがよいと思われます。

 

OpenOcean

OpenDolphin 2.7m を継承したのが、OpenOcean です。

インストール・デプロイ関係の記事は、

OpenOcean を Win10 にインストールする

OpenOcean/OpenDolphin をカスタマイズするために知っておいた方がよいこと

OpenOcean/OpenDolphin をカスタマイズするために知っておいた方がよいこと 2

 

などをご参照ください。ソースを使って Ocean や Dolphin を自力でビルド・カスタマイズしたい人向けです。

手っ取り早く使いたい人は、ビルド済み OpenOcean クライアントを

OpenOcean : 始め方/カスタマイズ

で公開しているので、そちらをご利用ください。Docker 版の Dolphin サーバにもつながると思います。(pro 版というのでしょうか商用版サーバとの接続は、試してないので不明です)

OpenOcean クライアントと Docker 版 OpenDolphin サーバをつなげる

 

完全にお約束はできませんが、OpenOcean は長期メンテを考えています。

 

 

 

 

クリックclose

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です