« 2013年2月 | トップページ | 2013年4月 »

2013年3月

2013年3月29日 (金)

ネットワークカード購入

CPU をアップグレードして性能はアップしたのであるが,on board LAN (Realtek 8168) のドライバで,めんどくさいことになってしまっていた。結局,ネットワークカードを別に購入して対応することにした。購入したカードは「インテル Gigabit CT Desktop Adapter EXPI9301CT」というもの。lspci によると 82574L というチップらしい。

  1. on board LAN を使うために設定した内容を,すべて元に戻す。
  2. ネットワークカードを装着。
  3. BIOS で on board LAN を disable する。
  4. 起動。

何も設定しなくても ether がつかえるようになった。安いマザーボードを選んだばっかりに「安物買いの・・」になってしまったが,ネットワークカードは今後マザーボードを変えてもずっと使えるだろうからよしとする。

2013年3月27日 (水)

ベンチマーク

新しいサーバで速度比較してみた。i7-3770 激速。

CPUi7-3770@3.4
SSD
C2D E7200@2.53
SSD
C2D E4500@2.2
HD
大量カルテ読み込み6.8秒9.1秒-
dolphin サーバのデータベースダンプ3分43秒6分9秒-
orca データチェック27秒49秒1分16秒
orca レセプト作成1分17秒2分14秒2分51秒

orca も 4.6 より,4.7 の方が速くなっているようだ。

2013年3月26日 (火)

サーバの CPU アップグレード

CPU(Core i7-3770 @3.40G) とマザーボード(ASUS P8B75-M)を買ってきて,サーバマシンをアップグレードした。マザーボードは一番安いものを買ってきたのであるが,そのままでは ether が使えないことが判明した。調べてみたら web に ubuntu 関連のトラブル報告がたくさん上がっており,事前によく調べておけばよかったと後悔した。

 P8B75-M の ether チップは,realtek RTL8111/8168B というものであるが,ubuntu で用意されている r8169 というドライバが対応しておらず,メーカーからドライバをダウンロードして,自分でコンパイルする必要がある。

  1. 使えない r8169 をブラックリストに登録する。/etc/modprobe.d/blacklist.conf に r8169 の1行を加える。
  2. Realtekからドライバ(LINUX driver for kernel 3.x and 2.6.x and 2.4.x version 8.035.00)をダウンロードする。
  3. 展開する。
    $ tar xvjf r8168-8.025.00.tar.bz2
    
  4. コンパイル,インストール。これで,/lib/modules/3.2.0-xx-generic/kernel/drivers/net/ethernet/realtek/ にドライバ r8168.ko がインストールされる。
    $ cd realtek8168/r8168-8.035.00
    $ make clean modules
    $ sudo make install
    
  5. /etc/modules/etc/initramfs-tools/modules に r8168 の1行を加える。
  6. depmod する。
    $ sudo depmod -a
    
  7. initramfs のアップデート
    $ sudo update-initramfs -v -u -k `uname -r`
    
  8. リブートする。
  9. r8168 が eth0 でアップせず eth1 になっている場合は,/etc/udev/rules.d/70-persistent-net.rules の対応行を削除してリブートする。

aptitude upgrade して,カーネル 3.2.0-xx の xx が変わった場合,コンパイルから再度設定する必要がある。めんどくさいことになってしまった。

2013年3月13日 (水)

カルテ編集時の診療行為送信

OpenDolphin-1.3.0 では,カルテ保存時に orca にデータを送るかどうかについて,最初のカルテ保存時,既存のカルテ編集時のそれぞれについて,送信するかしないかを設定できるようになっており,当院では「保存時に送信」「編集時は送信しない」という設定にしてある。この設定は保存時のダイアログの「診療行為を送信する」チェックボックスで切り替えることができて,当院カスタマイズではスペースバーで on/off できるようにしてある。

Savedialog2

 この設定では,例えば,カルテを保存して orca にデータを送ってしまった後,すぐに「やっぱり薬もだしておいてください」と言われた場合,

  1. 処方を入れてカルテを修正する。
  2. 保存ダイアログでスペースバーを押して「診療行為を送信する」にチェックマークを入れる。
  3. 保存ボタンをおすと,orca にデータが送られる。
という手順を踏む。当院では orca の claim 設定で「再送(外来)受信」を「有」に設定してあるので,これで orca の中途終了データは,後から送ったデータで置き換わることになる。

 しかし,たまに編集後に「診療行為を送信する」のチェックを忘れてしまい,「先生!カルテには処方箋があるのに,orca から処方箋が出ません!」となってしまうことがあった。そこで,orca に中途終了データがある場合は,編集時でも「診療行為を送信する」が自動的にチェックされるようにした。

 orca の中途終了データの有無の確認のために orca の tbl_wksryact を見に行くという素人丸出しの荒技を使った。

KarteEditor.java

private SaveParams getSaveParams(boolean joinAreaNetwork) {
 :
  } else if (modify) {
    logger.debug("saveFromModify");
    if (sendClaim) {
      // modify 時に既に中途終了データがあれば sendClaim = true にする                
      OrcaMasterDao dao = SqlDaoFactory.createOrcaMasterDao();
      ArrayList entries = dao.getWksryactEntries(getContext().getPatient().getPatientId());
      if (entries.isEmpty()) {
        sendClaim = Project.getSendClaimModify();
      } else {
        sendClaim = Project.getSendClaim();
      }

2013年3月 8日 (金)

orca version 4.7 api (xml2) 対応

現在当院では,診療内容送信に claim ではなく,orca api を使っている。orca api は version 4.7 から,新しく xml2 という形式が使えるようになったので,orca バージョンアップに合わせて OpenDolphin も xml2 対応とした。今後の orca api は,xml2 のみのサポートとなっていくらしい。

OrcaApi.java

OrcaApi.getInstance() で OrcaApi のインスタンスを返す。OrcaMasterDao に version 4.7 判定ルーチンを入れてある。

OrcaApi47.java

OrcaApi の実体。OrcaApi に setContext(Chart) してから send(DocumentModel) または send(RegisteredDiagnosisModel) すると orca にデータが送られる。

OrcaApiElementXml2.java

orca に送る xml を jdom の element で作る。

orca 4.6 と 4.7 で気付いた違い

  • orca 4.6 では,公費単独などで HealthInsurance がない場合に限って,あらかじめ診療内容を送った後に病名だけ送ると,先に送っておいた診療内容の中途データがクリアされてしまうという仕様があった。送信した診療内容をキャッシュしておいて,クリアされた後に再送する workaround を作っていたが,orca 4.7 ではこれが不要になった。
  • orca 4.6 では,診療内容なしで病名だけ送ったとき「「登録対象のデータがありません(22)」というメッセージが返ってきていたが,orca 4.7 では「病名登録処理終了(00)」が返ってくるようになった。

2013年3月 7日 (木)

monsiaj-20130115 の改造

orca 4.7 移行にあたって,今まで使っていた monsiaj-20120806 が使えなくなってしまった。最新版の monsiaj-20130115 を使うことにしたが,例によってソースをダウンロードして改造して使用している。ソースは bitbucket さんにアップした。主な変更点は以下の通り。

 

build.xml

build.xml の javac のプロパティーに encoding="utf-8" を入れないとビルドできなかった。

<javac srcdir="${src.dir}" destdir="${build.dir}" source="1.6"
  target="1.6" encoding="utf-8"
  debug="${javac.debug}" debuglevel="${javac.debuglevel}">

JavaApplicationStub

最初の起動時,/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/
JavaApplicationStub
を複製して,名前を JMAReceipt に変更して,オリジナルの resources/JMAReceipt と入れ替えないと動かなかったが,1回動いてしまうと,オリジナルの JMAReceipt に戻しても動くようになった。謎である。

 

CListMarshaller.java

罫線が出るように改造

 

PandaTable.java

診療行為画面に PandaTable が導入されたのに伴って,編集時の操作感覚が変わってしまっていた。4.6 に近い感覚になるように変更した。

  1. シングルクリックでセルを選択,選択されたセルは自動的に編集モードになる。
    addFocusListener(new FocusListener() {
    
      public void focusGained(FocusEvent e) {
        // do nothing
        //pns フォーカスを取ったら必ず編集する
        editCell();
      }
     :
     :
    //pns 選択が起きたら必ず編集する
    @Override
    public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
      super.changeSelection(rowIndex, columnIndex, toggle, extend);
      if (isEditing()) {
        // selection が変わったので前の editor は消す
        getCellEditor().cancelCellEditing();
      } else {
        // 非編集状態なら editor を立ち上げる
        editCell();
      }
    }
        
    //pns セル編集時に CellEditor にフォーカスさせる editCell
    private void editCell() {
      editCellAt(getSelectedRow(), getSelectedColumn());
            
      final DefaultCellEditor ce = (DefaultCellEditor)getDefaultEditor(Object.class);        
      SwingUtilities.invokeLater(new Runnable(){
        @Override
        public void run() {
          ce.getComponent().requestFocusInWindow();
        }
      });
    }
    
    
  2. 親の PandaTable にキーイベントをそのまま送ると,上下の矢印キーで上下のセル移動,タブまたはシフト+タブで左右のセル移動となる。
    ce.getComponent().addKeyListener(new KeyListener() {
      public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
          PandaTable.this.setEnterPressed(true);
    
        //pns 上下キーとタブの KeyEvent は,親の Table に伝える
        } else if (e.getKeyCode() == KeyEvent.VK_DOWN
            || e.getKeyCode() == KeyEvent.VK_UP
            || e.getKeyCode() == KeyEvent.VK_TAB) {
          Component parent = ((Component) e.getSource()).getParent();
          KeyEvent pass = new KeyEvent(parent, e.getID(), e.getWhen(), e.getModifiers(), e.getKeyCode(), e.getKeyChar());
          parent.dispatchEvent(pass);
          e.consume();
        }
      }
    
  3. セルの高さ調整。これは monsia.pandatable.rowheight でセットすることもできる。
    int rowheight = 20; //pns テーブルの高さをコンパクトに
    if (System.getProperty("monsia.pandatable.rowheight") != null) {
      rowheight = Integer.parseInt(System.getProperty("monsia.pandatable.rowheight"));
    }
    
  4. mac では isCompositionEnabled() はサポートされておらず,Exception を出してしまうので,mac の場合は途中で帰る。
    protected boolean processKeyBinding(KeyStroke ks, KeyEvent e, int condition, boolean pressed) {
      boolean retValue = super.processKeyBinding(ks, e, condition, pressed);
            
      //pns "isCompositionEnabled()" で mac は止まる
      if (SystemEnvironment.isMacOSX()) { return retValue; } 
    

ダウンロード

lucid orca 4.7 にアップグレード

lucid orca 4.6 でしばらく運用して問題はないようだったので,ついに当院も orca 4.7 にアップグレードした。ただ,まだ precise ではなく lucid なので,周回遅れである。システムパッケージリリース情報にしたがってアップグレードした。

  1. xen dom-U の upgrade
    $ sudo aptitude update
    $ sudo aptitude upgrade
    
  2. orca 4.6 を最新の状態までプログラム更新する。
  3. マスタ更新で最新のマスタに更新する。
  4. スキーマチェックする。これでアップグレード準備は完了。
    $ wget http://ftp.orca.med.or.jp/pub/etc/jma-receipt-dbscmchk.tgz
    $ sudo bash jma-receipt-dbscmchk.sh
    現在のスキーマバージョンは4.6.0です。
     :
    --------------------------------------------------------
      データベースの整合性チェックは正常に終了しました。
    --------------------------------------------------------
    
  5. apt-line の更新。4.6 になっていたところを 4.7 に書き換える。
    deb http://ftp.orca.med.or.jp/pub/ubuntu lucid4.7 jma
    deb-src http://ftp.orca.med.or.jp/pub/ubuntu lucid4.7 jma
    deb http://ftp.orca.med.or.jp/pub/ubuntu lucid-common jma
    deb-src http://ftp.orca.med.or.jp/pub/ubuntu lucid-common jma
    
  6. apt-get でアップグレード
    # apt-get update 
    # apt-get dist-upgrade -dy
    # apt-get install jma-receipt
    # apt-get dist-upgrade
    # jma-setup
    # reboot
    
  7. クライアントから接続し,プログラム更新とマスタ更新。
  8. データベーススキーマチェック。
    $ sudo bash jma-receipt-dbscmchk.sh
    現在のスキーマバージョンは4.7.0です。
     :
    --------------------------------------------------------
      データベースの整合性チェックは正常に終了しました。
    --------------------------------------------------------
    
  9. 帳票の再インストール。
    • jma-std-kanjyasyukei-4.7.0-ver1.tgz
    • jma-std-checkhyo-syukeihyo-4.7.0-ver2.tgz
    $ for d in `ls` ; do cd $d ; sudo bash install.sh ; cd ../ ; done
    
  10. sky.sh 様の帳票。(いつも使わせて頂いてありがとうございます)
    tbl_jyurrk.db の削除が必須とのこと。
    $ sudo rm /usr/local/site-jma-receipt/record/tbl_jyurrk.db
    $ sudo rm /usr/lib/jma-receipt/site-lib/record/tbl_jyurrk.db
    $ wget http://www.sky.sh/orca/etc/chohyo-2.9.0.tar.gz
    $ tar xvzf chohyo-2.9.0.tar.gz
    $ cd chohyo-2.9.0
    $ sudo bash chohyo_install.sh
    スカイ・エス・エイッチカスタマイズ帳票コピー終了!!
    
  11. 地方公費
    wget http://ftp.orca.med.or.jp/pub/chihoukouhi/p01-hokkaido.4.7.0.ver02.tgz
    
  12. claim サーバの立ち上げ設定(dpkg-reconfigure)は,設定が引き継がれており不要だった。

4.6 のデータベースダンプを 4.7 で読み込む必要が生じた場合は,以下のようにする。

  • dump の読み込み
    $ dropdb orca
    $ createdb -lC -Ttemplate0 -EEUC-JP orca
    $ pg_restore -d orca orca_db.dump
    $ sudo jma-setup
    
  • jma-setup 終了後,orca を立ち上げてプログラム更新をしてから,スキーマチェックしてエラーのないことを確認。

当院の orca 歴。

  1. 2008年 2月 etch 4.2 (1年 6ヶ月使用)
  2. 2009年 8月 etch 4.4 (9ヶ月使用)
  3. 2010年 5月 hardy 4.4 (1ヶ月使用)
  4. 2010年 6月 hardy 4.5 (2年使用)
  5. 2012年 6月 hardy 4.6 (7ヶ月使用)
  6. 2013年 1月 lucid 4.6 (2ヶ月使用)
  7. 2013年 3月 lucid 4.7 (今ここ)

« 2013年2月 | トップページ | 2013年4月 »