レセコンソフト ORCA を巡るあれこれから ORCA Plus・OpenOcean へ
最近 ORCA (日本医師会がソースコードを配布・公開しているレセコンソフト)を触る機会が多かったので、ついでで画面っぽいものをつくってみる。
従来の GTK を使った画面構成
GTK というのは、Linux で GUI を使うときによく用いられるライブラリです。
えーと、 ORCA の構成がわかりにくいのは、この画面をサーバー側でつくってしまうから(正確には .xml に直してクライアントに送る)。
だから、クライアント側で画面構成を変更するというのは原則できない。また、この画面は COBOLで書かれた ORCA 本体の各機能と深く結びついている(COBOL で書かれた部分が一種のコントローラーにように振舞うわけですね)。
だから、クライアント側で画面構成を変更するというのは原則できない。また、この画面は COBOLで書かれた ORCA 本体の各機能と深く結びついている(COBOL で書かれた部分が一種のコントローラーにように振舞うわけですね)。
一般的にビュー(図のような画面、UI)とコントローラーが分離できていないと、大規模なシステムには不向きだとされている。
クリニックあたりで使っている分にはよかったんでしょうけど、という話かな。
(『ORCA Plus というレセコンユーティリティソフトをつくっていて気がついたんだが』あたりもご参考に)ところで、ORCA に関しては一家言持っている方も多いようで、某 SNS で元になった記事を公開したときは、みなさんあれこれコメントして色々教えてくれました。
「建て増し建て増しできているから、そろそろフレームワークを見直した方がいい」みたいな意見は多かったですね。
感心したのは「開発当初の基本設計思想は、クライアント・サーバシステムでもなく MVC(モデル・ビュー・コントローラ)でもなく汎用機アーキテクチャだった」というコメント。各種言語のウエブアプリ系のフレームワークが洗練されてきた今から見ると、全体の構成が「あれ?」というふうに感じたりもしますが、開発当初の状況を考慮すると「なるほどなー」という感じで納得しました。
銀行の勘定系システムや(電子化される前の)定期券発行システムみたいなノリで開発されていたわけですね。
銀行の勘定系システムや(電子化される前の)定期券発行システムみたいなノリで開発されていたわけですね。
フレームワークで一部 Web アプリ化する
では、適当なフレームワークを持ってきて最も単純な CRUD 操作を試してみるとどうなるか?
対象にしたのは、public スキーマの tbl_ptinf というテーブル。おそらくここが患者さんの基本情報を永続化しているテーブルだと思うので。
既にデータベースはあるのでモデルをつくるのは容易。データベースとやり取りする基本的なクラスもイマドキのフレームワークなら自動でつくってくれる。
モデルと1対1対応で申し訳ないが、適当なビューをつくりブラウザから見れるようにする。
モデルと1対1対応で申し訳ないが、適当なビューをつくりブラウザから見れるようにする。
もちろん「秋場太郎」さんはテスト患者さんです(以前に Mac に OpenDolphin をインストールしたときに使ったデータベースをそのまま流用)。
新規に患者さんを登録。
登録した後、最初の画面(登録患者全員書き出し)に戻ると・・・。
新規登録した「ウェブオルカ」さんがしっかりと表示されました。
(なお、これのデモ版は https://phazor.jp/TblPtinf/ で公開している。たぶん、期間限定になると思うが)
まあ、ただ、ORCA Ver 5.1 の場合、public スキーマのテーブルだけで 169、(データベースの)ビューが 62 もあるので、これらを管理しつつ、見栄えのするフロントエンド(ブラウザ画面)を作成するのは面倒でしょうね。
そのほか、テスト的なコマンドをいくつかアップしてます。
例えば、 ysearch というコマンドは、Mac OSX のターミナル上でそのまま ./ysearch のように打ち込むと保険収載されているすべての薬剤のコード番号(レセ電コードの方)と名称と薬価を表示します。
./ysearch XXX とすると名称に XXX を含む医薬品の同様の項目を打ち出します。
薬剤コードと薬価の確認程度にしか使えない単なるテストコマンドですが、クロスプラットフォームでも動きますよってことで。
orz
ORCA の一部機能有償化を意識したわけではないのですが、保険請求で使う各種マスターはデータベース化しておいた方がいいと思い、orz ( https://github.com/Hiroaki-Inomata/orz ) というリポジトリで一般公開してます(なお、マスターの2次利用は厚労省許可済み)。
今のところ(2020/8)医科でも薬科でも歯科でも使う薬剤マスターを提供。
薬剤師さんあたりから要望あったので。
薬剤師さんあたりから要望あったので。
そのほか、テスト的なコマンドをいくつかアップしてます。
例えば、 ysearch というコマンドは、Mac OSX のターミナル上でそのまま ./ysearch のように打ち込むと保険収載されているすべての薬剤のコード番号(レセ電コードの方)と名称と薬価を表示します。
./ysearch XXX とすると名称に XXX を含む医薬品の同様の項目を打ち出します。
やはりジェネリックは先発品に比べ安い。ただサイレース(一般名:フルニトラゼパム。ベンゾジアゼピン系の睡眠薬です)の注射剤は(思っていたより)高いなあという感想を持ちました。
プログラム自体は C/C++ の標準機能のみを使って書いたので、windows でも linux でもコンパイルできます。
試しに Linux(Ubuntu)でコンパイルしてみました。
同様に動作してますね。ただし、コマンド名は ysearchx としました。
windows(10)でもコンパイル。
これも同様に動作してますね。もちろん、コマンド名は ysearch.exe 。
なお windows では文字コードの変換をかけているので、その分だけ動作が遅いと思います。
ORCA 連携便利ツール系
調べるとユーティリティソフトなどもけっこうある。
『医療システム』(Place in the Sun)あたりを参照。ミドルウエアを自前で実装して、使うのは ORCA のデータベースのみってのはかなりユニークな構成ですね。FileMaker 派の方にはいいかもしれません。
『医療システム』(Place in the Sun)あたりを参照。ミドルウエアを自前で実装して、使うのは ORCA のデータベースのみってのはかなりユニークな構成ですね。FileMaker 派の方にはいいかもしれません。
私も ORCA Plus ってのを作成してます。
OpenOcean 2.0 → DolphORCA
ORCA Plus を某所で公開しながらつくっていたとき、「電子カルテも載せられませんか?」みたいなリクエストがあったので、とりあえずフロント(ブラウザ画面)のみつくってみました。まだ、機能も何もないのだが、UI はこれくらいシンプルな方がいいようだ。
結局、これらの残骸は DolphORCA プロジェクトに引き取られたのだった。
HorliX の開発経緯は、『Horos なんちゃって日本語化』・『HorliX Ver 0.0.1』・『解剖ちゃん HorliX』あたりに書いてます。
『HORLIX -WIKIPEDIA 風解説-』、『HorliX -wikipedei 風解説- の解説』なども参考になると思います。
『HORLIX -WIKIPEDIA 風解説-』、『HorliX -wikipedei 風解説- の解説』なども参考になると思います。
コメント