« 2016年6月 | トップページ | 2016年11月 »

2016年7月

2016年7月 9日 (土)

プリンタ更新

処方箋を印刷していた HL-5450DN が,印刷後に用紙の角がカールするようになったり,文字がにじんでしまったりするようになっていた。何とか使えるレベルではあったが,さらに,時々紙送りに失敗してエラーを出して止まってしまうようになったため,そろそろ限界と考えて,新しいプリンタを買った。ページカウントは 54,578。

当院の初代プリンタ HL-5250DN は14万ページの名機だったが,2代目の HL-5450DN は1台目は9万ページ,今回の2台目は5万ページでの交代となった。既に HL-5450DN は廃番になっていたため,3代目プリンタとして HL-L5100DN を購入した。30万ページの高耐久性をうたっているが,どれくらいがんばってくれるか楽しみである。

Photo 2 3
初代 (HL-5250DN) 2代目 (HL-5450DN) 3代目 (HL-L5100DN)
2008年〜2013年 2013年〜2016年 2016年〜

2016年7月 8日 (金)

スタンプ箱ポップアップから病名入力

スタンプ箱の傷病名ツリーのポップアップから病名入力できるようにした。病名を選択してポップアップすると,その時に開いているカルテの一覧が表示され,そのカルテに選択した病名を送ることができる。病名入力の際に,ドラッグ移動距離を大幅に減らすことができた。

Popup

2016年7月 7日 (木)

診療中に ORCA の印刷止まる

午後の診療開始直後,受付から処方箋,領収書,診療明細が印刷されなくなったという連絡あり。orca サーバを再起動してみたが症状は変わらず。処方箋を印刷しようとすると syslog にわけの分からない dump が出てくる。患者さんが結構待っていたのでかなり焦ったが,ここは冷静に頭を医者モードからコンピュータ管理者モードに切り替えてトラブルシューティングを開始した。

まずは orca の cups にブラウザでアクセス,プリンタにテストプリントを送ってみたところ正常にプリントされた。当院では,処方箋等は cups のバックエンドに送って,バックアップマシンにカーボンコピーを残しつつプリンタに送る様に設定している。そこで,orca のプリント出力先を,ダイレクトにプリンタに送るようにしてみたところ,プリントされるようになった。とりあえずこれで診療を乗り切った。

患者さんが切れてから cups のログを見てみた。

E [14:06:50 +0900] Unable to fork /usr/lib/cups/filter/foomatic-rip - Cannot allocate memory.
E [14:06:50 +0900] [Job 224056] Unable to start filter "foomatic-rip" - Success.
E [14:06:50 +0900] [Job 224056] Stopping job because the scheduler could not execute a filter.
E [14:06:51 +0900] Unable to fork /usr/lib/cups/backend/socket - Cannot allocate memory.
E [14:06:51 +0900] [Job 224059] Stopping job because the sheduler could not execute the backend.
E [14:06:52 +0900] Unable to fork /usr/lib/cups/backend/pdf - Cannot allocate memory.
E [14:06:52 +0900] [Job 224058] Stopping job because the sheduler could not execute the backend.
cups がメモリ不足で止まっていたようだった。そこで,メモリを調べてみると。
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0 911564  23084  13584 165496   17  106   124   134   77   67  1  0 99  0  0
$ free -t
             total       used       free     shared    buffers     cached
Mem:       1013348     991528      21820      39876      13628     166520
-/+ buffers/cache:     811380     201968
Swap:      1048572     911536     137036
Total:     2061920    1903064     158856
血の気が引いた。慌てて最新 orca の必要メモリを調べてみたら,4GB 以上,最低 2GB となっていた。以前から orca には 1GB しか割り当てていなかったため,スワップ領域を食い尽くして,ギリギリの状態で動いていたようだ。

緊急に容量を工面して,orca のために 3GB 用意した。これでプリンタ出力先をバックエンドに戻しても問題なく印刷されるようになり,その後の業務も問題なく終了。

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 404244 124896 528624    0    0    23    23   63   56  1  0 99  0  0
$ free -t
             total       used       free     shared    buffers     cached
Mem:       3069452    2665032     404420      64548     124904     528628
-/+ buffers/cache:    2011500    1057952
Swap:      1048572          0    1048572
Total:     4118024    2665032    1452992

業務終了後,メモリを買ってきて造設 (DDR3メモリずいぶん安くなってた)。余裕をもってトータル 16G にして,orca には推奨の 4GB を割り当てた。メモリ増設後の1日業務終了後,かなりの余裕。

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1148244 147516 679468    0    0     4    21   77   68  1  0 99  0  0 
$ free -t
             total       used       free     shared    buffers     cached
Mem:       4097504    2949632    1147872     141864     147524     679532
-/+ buffers/cache:    2122576    1974928
Swap:      1048572          0    1048572
Total:     5146076    2949632    2196444
2010年には 4GB で湯水のようにメモリが使えると喜んでいたのに,今や orca だけで 4GB である。

2016年7月 1日 (金)

Retina iMac 対応

結構高いので,昨年からどうしようかと悩んでいたが,ついに物欲に負けて Retina iMac 27 インチモデルを購入した。OpenDolphin に細かい修正を加えて Retina 対応した。

  • JTable のグリッドを表示すると,グリッドが2ドット幅になって,しかも少しずれてしまう。 workaround を探していたところ,レンダラの print(Graphics)を Override して,以下のように,はみ出して線を引くと1ドット幅の線が描けるのに気付いた。通常の解像度ではこの線は表示されない。
    // grid for retina iMac
    @Override
    public void paint (Graphics graphics) {
      super.paint(graphics);
      Graphics g = graphics.create();
      g.setColor(Color.WHITE);
      g.drawLine(0, getHeight(), getWidth(), getHeight());
      g.dispose();
    }
    
    左が JTable のグリッドを表示したもの,右が上記のコードで1ドット幅の線を引いたもの。

    Scr5

    どうもバグを利用している感がある。

  • JavaFX のフォントが今ひとつ汚くて,ヒラギノ丸ゴシックでごまかしていたが,Retina にしたら "Hiragino Sans" できれいに表示されるようになった。
  • コマンドラインから起動したときには自動的に Retina 対応になるが,*.app から起動するときは,パッケージ内の info.plist に以下のキーを追加する必要がある。
    <key>NSHighResolutionCapable</key>
    <true/>
    
    これは,appbundler-1.0.jar の代わりに appbundler-1.0ea.jar を使うと自動的に入れてくれる。

画面の違いは想像以上に明らかで,Retina を見た後で普通の画面を見ると,ボケボケに見えてしまう。初めて PC-98XL の画面を見せてもらった時の感動を思い出した。

受付リスト (下が Retina)

文字のくっきり度が全然違った。

Scr1

JavaFX で作った SchemaEditor (下が Retina)

SchemaEditor のアイコンを SVG で作っていたので,retina にして違いが際立った。

Scr3

« 2016年6月 | トップページ | 2016年11月 »