電子カルテ

当院では,電子カルテとして,オープンソースの OpenDolphin 1.3.0(デジタルグローブ社)を使用させていただいています。素晴らしいソフトをオープンソースで公開されているデジタルグローブ社には,とても感謝しています。

 どんな素晴らしい電子カルテも,実際に運用するには個々の医院に合わせたカスタマイズが必要だと思います。その場合,オープンソースなら,自院のためだけに自由にカスタマイズすることができます。このブログでは,OpenDolphin を当院で運用するにあたって,色々カスタマイズした内容を公開しています。


  • カスタマイズしたソースは公開しています
  • デジタルグローブ社はライフサイエンスコンピューティング(株)と合併し,現在同社のオープンドルフィンラボとなっています
  • 本家オープンドルフィンラボの OpenDolphin は既に ver. 2.x になっています

2017年3月11日 (土)

受付のキーボード壊れる

受付で使っていたキーボード (Justy JKB-109B)が朝から入力を受け付けなくなった。15年前くらいに買ったキーボードで,開業当時から受付で酷使を続けてきたものである。ここまでよくがんばってくれたと思う。Do夢さんに行って,同じキーボードを買おうと思ったら,Justyさんはもう倒産してしまっているらしく,代わりに AOTECH のキーボード(AOK-112UPW)を購入した。

2017年3月10日 (金)

受付マシンを Windows 10 にアップグレード

OpenDolphin を大幅に変更したのに伴って,受付用の Windows バージョンも mac バージョンに合わせて書き直した。受付では Windows 7 を使っていたが,この機会に Windows 10 にアップグレードした。昨年の無料アップグレード期間のうちに,がんばって別のハードディスクにアップグレードしておいたので,ハードディスクを取り替えるだけで Windows 10 マシンになった。

Win1

Win2

2017年3月 9日 (木)

Independence from Quaqua

思い返せば,OpenDolphin 改造の最初の段階が Quaqua の導入であった。それ以来ずっと使用していて,本家が更新されなくなってからは自分で細々とメンテナンスをしていたが,今回少しがんばって Quaquaから独立した。

Mac の java は,JTabbedPane に wrap モードがない。スタンプ箱のようにタブ項目がたくさんある場合,wrap がない方がデザイン的にはすっきりするが,実用的にはタブは最初から全部見えた方がいいと思う。この JTabbedPane の wrap 表示が Quaqua 導入の目的の1つであった(下の画像の左)。その後,mac native design に似せた tabbed pane らしきものを独自に作ったため(下の画像の右),quaqua の JTabbedPane は使わなくなっていた。

Diagnosis2    Diagnow

もう一つ quaqua の機能で大きかったのが JSheet であった。これもそれっぽいものを java で作って置き換えた。Modal にするのに undecorated JDialog を使ったら,owner window が inactive になってしまってちょっとみっともない。Modal な JWindow ができればよいのだが,今後の検討課題とする。

Jsheet

その他のいろいろな見た目の細かいところも,UI と renderer を作って対応した。

  • JTable,JList,JTree のストライプ表示,selection color の active / inactive 切換

    Treeactive Treeinactive

  • JButton の default button 文字色の active / inactive 切換

    Buttonactive Buttonnonactive

  • JTextField の枠

    Textfield

2017年3月 7日 (火)

WaitingListImpl の年齢と生年月日を分離

受付リストの生年月日表示を,年齢と生年月日に分けた。
上が分離前,下が分離後。ちょっと見やすくなったかもしれないが微妙。

Age

2017年2月23日 (木)

TransferHandler#getVisualRepresentation から setDragImage へ

Java 1.6 の時代から,Drag & Drop の際に,ドラッグ中のイメージを表示するのに,PatchedTransferHandler を使って,getVisualRepresentation を使用していた。
 しかし,最近 PatchedTransferHandler が頻繁に InvalidDnDOperationException ("Drag and drop in progress" exception) を出すようになったため,TransferHandler のソースを読んで解決策を探っていたところ,TransferHandler#setDragImage なるメソッドがあることに気付いた。調べてみたら Java 1.7 からこんな素敵なメソッドが標準で用意されていたのであった。早速,これを使ってソースリファクタリングして,PatchedTransferHandler は引退となった。
 なお,Windows では TransferHandler#setDragImageOffset の offset 方向が Mac と逆になるのに気付いて,そんなところにも文化の違いがあるのだなと思った。
 ちなみに,最近はダブルクリックCodeHelper での入力が多く,Drag & Drop はほとんど使わなくなってしまっている。

2017年2月 9日 (木)

9年目の運用まとめ

9年目はクライアントの結構大きな改造,OS X Sierra へのアップグレード, Retina iMac の購入プリンタの更新などがあった。トラブルとしては,Orca がメモリ不足で止まったのが最大のトラブルだったが,downtime は5分くらいで済んだ。あとは Ethernet が突然つながらなくなったり,iMac のヒンジが折れたりしたが,診療には影響がなかった。
いよいよ今月から OpenDolphin 運用 10年目に突入である。

  • データベースの PatientModel の件数
    dolphin=# select count(*) from d_patient;
     count
    -------
     26879
    (1 row)
    
  • データベースの ModuleModel の件数
    dolphin=# select count(*) from d_module;
     count
    --------
     1023447
    (1 row)
    
  • Dolphin サーバの df。used が 14G→15G に増加。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            971M  4.0K  971M   1% /dev
    tmpfs           200M  196K  200M   1% /run
    /dev/xvda1       46G   15G   30G  33% /
    none            4.0K     0  4.0K   0% /sys/fs/cgroup
    none            5.0M     0  5.0M   0% /run/lock
    none            997M     0  997M   0% /run/shm
    none            100M     0  100M   0% /run/user
    
  • Orca サーバの df。used が 12G → 19G に増加。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            3.0G  4.0K  3.0G   1% /dev
    tmpfs           601M  228K  601M   1% /run
    /dev/xvda1       46G   19G   25G  43% /
    none            4.0K     0  4.0K   0% /sys/fs/cgroup
    none            5.0M     0  5.0M   0% /run/lock
    none            3.0G     0  3.0G   0% /run/shm
    none            100M     0  100M   0% /run/user
    
  • データベースの dump ファイルのサイズ。
    dolphin_db.dump.gpg 2,046,631,802 
    orca_db.dump.gpg 101,284,291
    
  • 作成したスタンプ数。CodeHelper の改造に伴って,スタンプを整理したため,昨年の 2104 から減少した。
    $ grep -c stampInfo stamp.xml 
    1984
    

2017年2月 7日 (火)

カレンダーの改造

カレンダーのコードを大幅に改造した。
  • 年月は,インスペクタのタイトル部分に西暦と,薄くバックグランドで和暦も出すようにした。1ヶ月送り(Mdfb2Mdfb1)だけでなく,1週送り(Mdb2Mdb1)もできるようにした。ボタンクリックだけでなく,マウスホイールでも1週毎にスクロールできるようにした。イベントを表すバックグランドは円で出すようにした。

    Calendar1

    3週戻したところ。ピンクは受診日。

    Calendar2_2

  • 休日データベースを更新して,自院の休日も出るようにした(自分だけ使うものなので当然ハードコード)。ToolTip で休日名も出るようにした。

    Obon_3

  • Mdejectで1年分のカレンダーが出るようにした。

    Oneyear_2

  • インスペクタのカレンダー(LiteCalendarPanel/CalendarCardPanel系)と CareMapDocument のカレンダー(SimpleCalendarPanel系)が,別々のシステムになっていたのを,今回作成したカレンダーパッケージで統一した。

    Caremap_2

2017年2月 6日 (月)

DiagnosisInspector の ToolTipText

DiagnosisInspector で開始日/終了日を,年号で ToolTip 表示するようにした。

Tooltips

ToolTip 情報を見ながら書類を書いているときなどに ToolTip が消えてしまうとストレスたまるので,ToolTip を自動で消えないようにした。
// ToolTip を自然に消えないようにする
ToolTipManager manager = ToolTipManager.sharedInstance();
manager.setDismissDelay(Integer.MAX_VALUE);

2017年1月31日 (火)

Dock のアイコンに待ち人数表示

カルテ画面に待ち人数のバッジ表示をするようにしていたが,これをドックのアイコンにも表示するようにした。
// Dock のアイコンにバッジを出す
com.apple.eawt.Application app = com.apple.eawt.Application.getApplication();
app.setDockIconBadge(waitingCount == 0? null: String.valueOf(waitingCount));

Screenshot

2017年1月23日 (月)

デザインの結構大幅な変更

  • メインウインドウに常に検索フィールドが出るようにした。検索フィールド(CompletableSearcField)は,バックグランドに薄く「患者検索」という文字が出るようになっていて,この文字は検索語を入力すると消える。
    ほとんど出番がなくなった更新ボタンは,ステータスバーの左端に持っていった。

    Mainwindow

  • 患者検索フィールドに入力すると,自動的に患者検索パネルに切り替わる。
    検索語を入力するとフィールドの右端に X がでて,ここをクリックすると検索語がクリアされるようになっている。

    Mainwindow2

  • インスペクタ画面。アイコンをシックな白黒アイコン(DefaultIcon ver 2.0)に変えた。
    ツールパネルに病名検索フィールドを付けた。

    Inspector

  • 病名スタンプをここから検索して入力することができる。コードヘルパーのスタンプ検索入力を知ってから,入力スタイルが一変してしまった。入力するものが決まっているときは,検索入力の方がずっと速い。一方,迷いながら入力するような時はスタンプ箱の方が便利である。

    Inspector1   Inspector2_2

  • メニューとスタンプ箱のアイコンも白黒のシックなものにした。

    Menu   Stampbox

«OS X Sierra