« 2008年7月 | トップページ | 2008年9月 »

2008年8月

2008年8月28日 (木)

メモのタイトル

当院では,文書や写真は全て情報フォルダに入れて管理している。その情報フォルダ (/Volumes/documents/${id}) に文書が入っているときは「文書あり」,検査が入っているときは「検査あり」,写真があるときは「写真あり」と,メモのタイトルに表示する。さらに,そこをクリックすると,ファインダで対応するフォルダが開く。

Photo_2 Photo_2 添書や検査結果などが入っている場合,「文書あり」または「検査あり」と出る。
Photo Photo_4 写真(jpg)ファイルが入っている場合は「写真あり」とでる。
  • client/PatientInspector.java の編集
    private void layoutRow(JPanel content, String itype) {
        
    if (itype.equals("メモ")) {
    
    ////↓ もし関連文書(/Volumes/documents/${id})があれば,メモタイトルを変える
    String path = "/Volumes/documents/" + context.getKarte().getPatient().getPatientId();
    File infoFolder = new File (path); 
    // jpeg ファイルフィルタ
    FileFilter ffjpg = new FileFilter() {
        public boolean accept (File file) {
            return file.getName().toLowerCase().endsWith(".jpg");
        }
    };
    // 検査 ファイルフィルタ
    FileFilter ffexam = new FileFilter() {
        public boolean accept (File file) {
            return file.getName().toLowerCase().contains("検査");
        }
    };
    
    // 情報ファイルのフォルダがあるかどうか
    if (infoFolder.exists()) {
        int flg = 0;
        String mTitle = "メモ";
        Color mColor = Color.black;                
        
        // jpg があれば,第1ビットをたてる
        if (infoFolder.listFiles(ffjpg).length > 0) flg = flg | 1;
        // 検査ファイル があれば,第2ビットをたてる
        if (infoFolder.listFiles(ffexam).length > 0) flg = flg | 2;
    
        switch (flg) {
        case 0: // 写真,検査以外の物(添書等)
            mTitle = "メモ [文書あり]";
            mColor = Color.blue;
            break;
                
        case 1: // jpg だけ
            mTitle = "メモ [写真あり]";
            mColor = Color.red;
            break;
                
        case 2: // 検査 がある
            mTitle = "メモ [検査あり]";
            mColor = Color.red;
            break;
        
        case 3: // 写真も検査もある
            mTitle = "メモ [写真・検査あり]";
            mColor = Color.red;
            break;
        }
    
        memoInspector.getPanel().setBorder(BorderFactory.createTitledBorder(
            BorderFactory.createEtchedBorder(),
            mTitle,
            TitledBorder.LEFT,
            TitledBorder.TOP,
            new Font ("SansSerif",Font.BOLD,12),
            mColor));
        // mouse click でフォルダを開く
        memoInspector.getPanel().addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                (new KickAppleScript()).openPatientFolder(path);
            }
        });
    } else {
        // フォルダ自体がない
        memoInspector.getPanel().setBorder(BorderFactory.createTitledBorder("メモ"));
    }
    ////↑ここまで
    
    content.add(memoInspector.getPanel());
    bMemo = true;
    
  • ついでにサイズ微調整
    private void initComponents() {
     ・
     ・
    ////↓   サイズ微調整
      docHistory.getPanel().setPreferredSize(new Dimension(prefW, 350));
      patientVisitInspector.getPanel().setPreferredSize(new Dimension(prefW, 190));
      patientVisitInspector.getPanel().setMinimumSize(new Dimension(prefW, 190));
      patientVisitInspector.getPanel().setMaximumSize(new Dimension(prefW, 190));
      memoInspector.getPanel().setPreferredSize(new Dimension(prefW, 70));
      memoInspector.getPanel().setPreferredSize(new Dimension(prefW, 70));
    ////↑
    
  • client/KickAppleScript.java の作成
    package open.dolphin.client;
    
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    /**
     *
     */
    public class KickAppleScript {
        
        private String aScriptPath = "/Applications/AppleScript/scripts/";
            
        public KickAppleScript() {
        }
    
        public void openPatientFolder(String path) {
            StringBuffer cmd = new StringBuffer();
            cmd.append("/usr/bin/osascript ");
            cmd.append(aScriptPath);
            cmd.append("dolphin.scpt ");
            cmd.append(path);
            try {
                Runtime.getRuntime().exec(cmd.toString());
            } catch (IOException ex) {
                Logger.getLogger(KickAppleScript.class.getName()).log(Level.SEVERE, null, ex);
            }
    
        }
    }
    
  • /Applications/AppleScript/scripts/dolphin.scpt の作成
    on run argv
    	set POSIXPath to item 1 of argv
    	set targetFolder to (POSIX file POSIXPath)
    	
    	if (count of argv) is equal to 0 then return
    	tell application "Finder"
                    select folder targetFolder
    		open selection
    		set win to Finder window 1
    		set toolbar visible of win to false
    		set current view of win to flow view
    		set bounds of win to {900, 60, 1600, 800} --x1, y1, x2, y2
    	end tell
    end run
    

2008年8月 9日 (土)

当院のコンピュータ

受付

メインDELL Precision Workstation 340,Pen4/2.4G,Windows XP(中古)
ORCA クライアント,Dolphin クライアントが走っている。添書や検査結果等の文書はスキャナで取り込んで,全てファイルサーバに転送する。クライアントには個人情報等の大切なデータは残らないようになっている。
サブNEC MA10T,Pen3/1G,Windows 2000(中古)
院内掲示板表示とBGM担当。メインが故障したときにすぐに代替できるように,ORCA クライアントもセットアップしてある。

 

診察室

医師用iMac 20" C2D/2.0G,Mac OS X (新品)
アルミボディーの新品マシン。当院唯一のメーカー製新品で,薄いキーボードが自慢。ORCA と Dolphin のクライアントを走らせている。臨床写真や添書,検査結果等の書類はファイルサーバに保存し,そのサーバをデスクトップにマウントして,OS のファインダで検索したり閲覧したりするようにしている。
看護師用NEC Versa Pro, Pen4/1.8G , Windows XP(中古)
ノートマシン。看護師さんがカルテを閲覧するのに使用。

 

院長室

メインiMac 20" C2D/2.16G, Mac OS X (中古)
白いボディーの中古品。この時代の iMac もかっこいいと思う。液晶の品質も新しい iMac よりいいような気がする。キーボード欠品のものを安く入手。診察室のマシンが故障した場合,すぐに代替できるようにセットアップしてある。
サブ Macintosh SE
改造の限りを尽くし,現在は G3/233MHz の Mac OS 9 マシンとなっている。さすがに現在は置物になっている。

 

サーバ室

メインショップブランド C2D/2.53G,Ubuntu 8.04 (64bit) + Xen3.2
ORCA サーバ,Dolphin サーバ,ファイルサーバ(いずれも Debian Etch)を Xen の Dom-U として走らせている。各サーバは,イメージファイルではなく,物理パーティション上に構築してある。全ての重要なデータはサーバマシンに保存して,クライアントには残さないようにしている。個人情報が入るマシンなので,カギのかかるサーバ室に隠してある。
サブ1ショップブランド C2D/2.2G,Ubuntu 7.10 (64bit) + Xen3.1
毎日診療終了後に Xen の Dom-U を丸ごとバックアップしてある。メインが故障した場合,診察室のターミナルからこのマシンに入って Dom-U を立ち上げれば,メインと全く同じサーバが立ち上がるので,クライアント側でネットワーク等の設定変更を全くしなくてもすぐに診療継続できる。なお,バックアップとしては,毎日データベースの dump をとり,圧縮・暗号化して自宅サーバにも保管している。このマシンはメインで使っていたが,使用開始後9ヶ月で1回メモリが壊れた。新しいメインマシンの購入に合わせて,サブマシンになってもらった。
サブ2自作 Pen4/2.6G,Ubuntu 7.10 + Xen 3.1
一度メインマシンが故障してサブマシンで運用していたが,その時,これが壊れたらどうしようとすごく不安になったので,バックアップマシンを増やした。このマシンは普段スイッチは切ってあり,メインが故障してサブ1で運用するはめになった時だけ動かすことにした。

« 2008年7月 | トップページ | 2008年9月 »