OpenDolphin

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

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

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

<方法>

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

ただし、後述するバグやソースコードの改変が面倒と感じるならば、ソースは本家ではなくここここから持ってきてください。

まず、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 にしてみました。

さらに、キューの登録。

<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0">
            <name="default">
                <security-setting name="#">
                    <role name="guest" delete-non-durable-queue="true" create-non-durable-queue="true" consume="true" send="true"/>
                </security-setting>
                <address-setting name="#" message-counter-history-day-limit="10" page-size-bytes="2097152" max-size-bytes="10485760" expiry-address="jms.queue.ExpiryQueue" dead-letter-address="jms.queue.DLQ"/>
                <http-connector name="http-connector" endpoint="http-acceptor" socket-binding="http"/>
                <http-connector name="http-connector-throughput" endpoint="http-acceptor-throughput" socket-binding="http">
                    <param name="batch-delay" value="50"/>
                </http-connector>
                <in-vm-connector name="in-vm" server-id="0"/>
                <http-acceptor name="http-acceptor" http-listener="default"/>
                <http-acceptor name="http-acceptor-throughput" http-listener="default">
                    <param name="batch-delay" value="50"/>
                    <param name="direct-deliver" value="false"/>
                </http-acceptor>
                <in-vm-acceptor name="in-vm" server-id="0"/>
                <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
                <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
                <jms-queue name="dolphinQueue" entries="java:jboss/exported/jms/queue/dolphin"/>

この設定は江東ソフトウェア様のものを踏襲。

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

<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 でつなぐなどやらなくてはいけないことはいろいろあるでしょうが、何もしなくてもクラウド化・他施設化ができるというのは便利ですね。

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

 

ファイルバックアップ

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

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

例えば

 

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

 

 

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

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

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

 

 

 

 

クリックclose

コメントを残す

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