こんにちは、あんどうです。
最近、お医者さんからの案件で電子カルテを触ってみる機会があったため、オープンソースの電子カルテ「OpenDolphin」とレセコン「ORCA」を試してみたのですが、連携する際に苦戦したので経緯や解決策をメモしておきます。
需要は少ないと思いますが、世の中にはもしかしたら同じ問題にぶつかる人もいらっしゃるかもしれないので、基本的には自分用のメモとして残しておきます。*1
やりたかったこと
ORCAで受付を行った際にOpenDolphinへデータの連携
環境
- サーバー:ubuntu16.04
- クライアント:Mac/Win/Linuxどれでも対応できるように
- ORCA:サーバーにインストール(のちにDockerコンテナ化)
- OpenDolphin:Dockerで設置
問題
ORCAで患者を登録し、受付が完了した際にOpneDolphinでデータが受信ができなかった。(閉塞となっていた)
原因
おそらく直接的な原因としては、公式で提供されているOpenDolphinのイメージでは5002番のポートが開いていなかったことによってORCA→OpenDolphinのデータ連携が出来ない状態になっていたようです。
解決策
GithubにあったOpenDolphinの設定を変えた上で自前でビルドすることで解決しました。
以下は経緯と手順のメモとなります。
経緯と手順のメモ
ORCA
- ORCAのインストールはDockerでも公式でもOK
- DBへのアクセス権は設定する必要がある(postgresql.conf と pg_hba.conf の編集)
- 医者・患者のデータは登録しておく必要がある
Open Dolphin
- こちらの参考ページでは操作している端末のIPを指定しているため、公式のDockerイメージだとクライアント経由で通信することになってそう(未調査)
- サーバー間で通信するためにはport5002で受け付けるようにcustom.propertiesの操作が必要になる
- しかし、公式のDockerイメージではcustom.propertiesは読み込み専用になっており、操作不可だったためDockerイメージから手を加える必要がある
- ところが、Githubに置いてあるDockerfileはそのままだとビルドに失敗する
- エラーを見ていくと、OpenDolphinのビルド時に使っていたFROMイメージ(jboss/wildfly)のバージョンがずれていることが原因のよう
- そこで、jdkやwildflyのバージョンを下げた(バージョンを下げるのは気乗りしないが、今回はモックアップ作成のために動かすことが目的なのでOK)
- また、custom.propertiesのコードを変更し、bindIPを0.0.0.0にした(ここはdockerのコンテナに割り当てたIPで良いはず)
- ここまでで5002で受付はOK。ドルフィン側のDBに登録されていることも確認。しかし、患者のデータはドルフィンのUIに出てこなかった
- ドルフィンDBを確認したところ、ドルフィンの医療機関コードは1.3.6.1.4.1.9414.70.1に固定であるのに対し 公式のgithubにあるドルフィンイメージ内のcustom.propertiesでは1.3.6.1.4.1.9414.2.1となっていた
- そこで、このIDを1.3.6.1.4.1.9414.70.1に合わせたところ、動作した
修正後のDockerfileはこんな感じです。
gist.github.com
以上です。
まとめ
OpenDolphinのGithubは4ヶ月前にも更新されているけれど、DockerImageの方はメンテナンスされてないのが問題だったみたい。 今回はバージョンを下げて対応したけれど、本来であれば最新のソースが動くコンテナイメージを作るべき。
参考にしたページ
ORCA Project: 日医標準レセプトソフト Ubuntu 16.04 LTS(Xenial Xerus)のインストールドキュメント(HTML版)
受付から送って受付情報が閉塞で表示される - OpenDolphin - シンプルな電カル OpenDolphin の導入を支援します
GitHub - dolphin-dev/OpenDolphin: Open Source EHR Application
*1:お問い合わせいただきましても返答出来かねますのでご了承ください