いろいろ

2019年7月 5日 (金)

DZ-D100 データ転送 daemon 作成

DZ-D100 の api と exiftool を使って,ruby で DZ-D100 から自動的に画像を取り込むデーモン dzd100.rb を作って,ファイルサーバ (ubuntu 16.04) 上で走らせた。

dzd100.rb は DZ-D100 (固定アドレスに設定) が wifi に現れるのを検出して,ファイルリストを調べ,ローカルよりも増えた画像があれば,ローカルにダウンロードする。さらに画像データに患者番号が埋め込まれていた場合は,患者別 documents folder にも画像をコピーする。

今までは,撮影後にメモリカードを 診察室の iMac に刺して,documents folder に画像を手でコピーしていたが,その必要が無くなって楽になった。

2019年7月 4日 (木)

Casio DZ-D100 API の解析

サポートに api の公開予定はないと言われて,ただ引き下がっている自分ではないので,購入した DZ-D100 でどんな api が使えるのか自分で解析してみた。

SessionOpen

本体の画像ファイルをダウンロードするのに SessionOpen が必要。SessionOpen すると,他端末からのアクセスは受け付けなくなる。arg に指定する数値は何でもよいようだ。

コマンド送信例

$ curl 'http://dzd100-address/casio_dc.cgi?cmd=SessionOpen&arg=0'

レスポンス

<?xml version="1.0"?>
<ccma>
<output>
<result>OK</result>
<operation name="SessionOpen">
</operation>
</output>
</ccma>

SessionClose

SessionClose すると,DZ-D100 の画面に「通信が切断されました」と表示される。SessionClose 後は他端末からのアクセスもできるようになる。

コマンド送信例

$ curl 'http://dzd100-address/casio_dc.cgi?cmd=SessionClose'

レスポンス

<?xml version="1.0"?>
<ccma>
<output>
<result>OK</result>
<operation name="SessionClose">
</operation>
</output>
</ccma>

CheckConnection

DZ-D100 は,起動後しばらく放置すると自動的に電源が切れ,通信も切れてしまう。通信を維持したい場合は,CheckConnection を一定時間毎に送り続ける必要がある。

コマンド送信例

$ curl 'http://dzd100-address/casio_dc.cgi?cmd=CheckConnection'

レスポンス

<?xml version="1.0"?>
<ccma>
<output>
<result>OK</result>
<operation name="CheckConnection">
</operation>
</output>
</ccma>

GetFileList

DZ-D100 に保存されている画像のリストを返す。なぜか最初に必ず NotExecuted が返ってくる。

コマンド送信例

$ curl 'http://dzd100-address/casio_dc.cgi?cmd=GetFileList&arg=All'

レスポンス

<?xml version="1.0"?>
<ccma>
<output>
<result>NotExecuted</result>
<operation name="GetFileList">
</operation>
</output>
</ccma>
<?xml version="1.0"?>
<ccma>
<output>
<result>OK</result>
<operation name="GetFileList">
<argument name="FileNumber" range="All">
<value>/DCIM/100CASIO/CIMG0001.JPG</value>
<value>/DCIM/100CASIO/CIMG0002.JPG</value>
<value>/DCIM/100CASIO/CIMG0003.JPG</value>
</argument>
</operation>
</output>
</ccma>

GetFileInfo

画像の基本的なデータを返す。これも最初になぜか NoExist が返ってくる。

コマンド送信例

$ curl 'http://dzd100-address/casio_dc.cgi?cmd=GetFileInfo&arg=/DCIM/100CASIO/CIMG0001.JPG'

レスポンス

<?xml version="1.0"?>
<ccma>
<output>
<result>NotExecuted</result>
<operation name="GetFileInfo">
<argument name="Reason">
<value>NoExist</value>
</argument>
</operation>
</output>
</ccma>
<?xml version="1.0"?>
<ccma>
<output>
<result>OK</result>
<operation name="GetFileInfo">
<argument name="/DCIM/100CASIO/CIMG0001.JPG">
<value name="type">JPEG</value>
<value name="size">4507328</value>
<value name="width">5184</value>
<value name="height">3888</value>
<value name="orientation">0</value>
<value name="thumb_size">4560</value>
<value name="thumb_width">160</value>
<value name="thumb_height">120</value>
<value name="thumb_orientation">0</value>
<value name="capture_date">20190618T110209</value>
</argument>
</operation>
</output>
</ccma>

data

jpeg 画像データがバイナリで返ってくる。OpenSession していない場合は何も返ってこない。

コマンド送信例

$ curl 'http://dzd100-address/casio_dc.cgi?data=/DCIM/100CASIO/CIMG0001.JPG&arg=Original' > test.jpg

2019年7月 3日 (水)

皮膚科専用カメラ Casio DZ-D100 購入

当院では開業以来,臨床写真の撮影に Nikon D40 + AF Micro Nikkor 60mm f2.8 + マクロスピードライトを使っていた。購入後10年以上たっており,そろそろ買い換えかなーと考えていた矢先,6月の日本皮膚科学会で,Casio が新開発した皮膚科専用カメラ DZ-D100 が紹介されていた。いろいろいじってみたところ,かなり使えそうだったので早速購入した。ちなみに,D40 は 624万画素,DZ-D100 は 2,016万画素で,隔世の感がある。でも高い(27インチ iMac が買える)

Casio DZ-D100 (左・中) と Nikon D40 (右)

DZ-D100 の魅力的だと思った点を挙げてみると,まずはその軽さがある。いままで使っていた D40 は全部で 1.6 kg,一方 DZ-D100 は 400 g である。さらに,1台で通常写真とダーモスコープ写真の両方を撮ることができ,通常モードでのマクロ撮影も可能である。

患者番号と医師名が画像に埋め込めるというのも大きい。起動時や撮影中に患者番号を入力すると,その後撮影した写真に患者番号が自動的に埋め込まれる。埋め込まれた情報は exif MakerNotes の Casio_Type2_0x311e (医師名),Casio_Type2_0x311f (患者番号) で参照できる。

$ exiftool -MakerNotes:* -s -u -g CIMG0001.JPG
---- MakerNotes ----
ObjectDistance                  : 0 m
Casio_Type2_0x2068              : 5184
Casio_Type2_0x2069              : 3888
Casio_Type2_0x206a              : 0.0012
Casio_Type2_0x206b              : 29.59
Casio_Type2_0x206c              : 640
Casio_Type2_0x206d              : 480
Casio_Type2_0x206e              : 0.029
Casio_Type2_0x206f              : 0.087
RecordMode                      : Unknown (102 0)
ReleaseMode                     : Normal
Casio_Type2_0x3029              : 8
Casio_Type2_0x311e              : dr1
Casio_Type2_0x311f              : 000001
Casio_Type2_0xf010              : ���1.01#6b#.�r.SICJVBNJ�����Q..,[...]

また,DZ-D100 は wifi でネットワークにつなぐことができ,windows のソフトを使うと wifi 経由で画像の取り込みができる。しかし,当然のことながら mac は非対応。api を教えてもらえれば自分でなんとかできると思って,サポートに問い合わせてみたが,api の公開予定はないとのことだった。

2019年2月 8日 (金)

11年目の運用まとめ

11年目は,地震でひどい目にあった以外はほとんど何もしておらず,システム的には非常に安定した1年であった。

  • データベースの PatientModel の件数
    dolphin=# select count(*) from d_patient;
     count
    -------
    31203
    (1 row)
    
  • データベースの ModuleModel の件数
    dolphin=# select count(*) from d_module;
      count
    ---------
     1204225
    (1 row)
    
  • Dolphin サーバの df。used が 17G→16G に減少。なんでだろう。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            977M     0  977M   0% /dev
    tmpfs           200M  3.0M  197M   2% /run
    /dev/xvda1       46G   16G   29G  36% /
    tmpfs           996M  4.0K  996M   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           996M     0  996M   0% /sys/fs/cgroup
    cgmfs           100K     0  100K   0% /run/cgmanager/fs
    tmpfs           200M     0  200M   0% /run/user/1001
    
  • orca サーバの df。used が 9.9G → 9.2G に減少。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            3.0G     0  3.0G   0% /dev
    tmpfs           601M  8.2M  593M   2% /run
    /dev/xvda1       46G  9.2G   35G  22% /
    tmpfs           3.0G  4.0K  3.0G   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           3.0G     0  3.0G   0% /sys/fs/cgroup
    cgmfs           100K     0  100K   0% /run/cgmanager/fs
    tmpfs           601M     0  601M   0% /run/user/1001
  • データベースの dump ファイルのサイズ
    dolphin_db.dump.gpg 2,344,895,298 
    orca_db.dump.gpg 267,320,968
    
  • スタンプ数
    $ grep -c stampInfo stamp.xml 
    2089
    

2018年2月 8日 (木)

10年目の運用まとめ

10年目は,受付マシンのアップグレード,WildFly 10High Sierraorca 5.0ubuntu 16.04 のアップグレードなど,アップグレード盛りだくさんであった。

トラブルでは,ATOK29のフリーズWindows の突然の再起動問題などがあったが,診療が止まるような大きなトラブルはなかった。

  • データベースの PatientModel の件数
    dolphin=# select count(*) from d_patient;
     count
    -------
     29182
    (1 row)
    
  • データベースの ModuleModel の件数
    dolphin=# select count(*) from d_module;
      count
    ---------
     1112801
    (1 row)
    
  • Dolphin サーバの df。used が 15G→17G に増加。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            950M     0  950M   0% /dev
    tmpfs           200M  3.1M  197M   2% /run
    /dev/xvda1       46G   17G   28G  37% /
    tmpfs           996M  4.0K  996M   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           996M     0  996M   0% /sys/fs/cgroup
    cgmfs           100K     0  100K   0% /run/cgmanager/fs
    tmpfs           200M     0  200M   0% /run/user/1001
    
  • orca サーバの df。used が 19G → 9.9G と大幅に減少??
    Filesystem      Size  Used Avail Use% Mounted on
    udev            2.9G     0  2.9G   0% /dev
    tmpfs           601M  8.2M  593M   2% /run
    /dev/xvda1       46G  9.9G   34G  23% /
    tmpfs           3.0G  4.0K  3.0G   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           3.0G     0  3.0G   0% /sys/fs/cgroup
    cgmfs           100K     0  100K   0% /run/cgmanager/fs
    tmpfs           601M     0  601M   0% /run/user/1001
    
    これはおかしい。そこで,過去の orca 容量の推移を調べてみた。
    2011年2月5.4Gver 4.5
    2012年2月6.4Gver 4.5
    2013年2月4.3Gver 4.6
    2014年2月5.9Gver 4.7
    2015年2月7.4Gver 4.7
    2016年2月12Gver 4.8
    2017年2月19Gver 4.8
    2018年2月9.9Gver 5.0

    orca 4.8 になってから急激に容量が増えていることがが分かる。今さら気付いた。 orz

    バックアップしてあった orca 4.8 を du で詳しく見ていったところ,/var/spool/cups が 17G を消費していることが判明した。Web で検索してみたところ,このディレクトリには cupsd の history が保存されるらしく,MaxJobs が 0 になっていると,際限なく history が保存されて,容量を圧迫するらしいことが分かった。

    早速 /etc/cups/cupsd.conf を調べてみると,設定ファイルの最後に取って付けたように MaxJobs 0 が記入されていた。改めて orca 4.8 のインストールドキュメントを確認してみると,MaxJobs を 0にするように書かれていたので,これを見て自分で記入したようだ。全然憶えていない。

    「この設定を行わないと大量の印刷ジョブを発行した(レセプト印刷など)際に印刷漏れが生じる恐れがあります」ということなので,MaxJobs はそのままに,毎朝の起動時に,/etc/rc.local で前日までの history を消去して対応することにした。

    #!/bin/sh -e
    # rc.local
    find /var/spool/cups/ -type f -print | xargs rm
    exit 0
    
  • データベースの dump ファイルのサイズ。orca のダンプ容量が倍以上増えている。これは version 5.0 でスキーマが追加になった影響か?
    dolphin_db.dump.gpg 2,196,115,957 
    orca_db.dump.gpg 253,455,550
    
  • 作成したスタンプ数。
    $ grep -c stampInfo stamp.xml 
    2031
    

使用 orca バージョンの推移

    ORCA履歴OSversion
    2008年 2月Debian EtchORCA 4.2
    2009年 8月Debian EtchORCA 4.4
    2010年 5月Ubuntu 8.04 HardyORCA 4.4
    2010年 6月Ubuntu 8.04 HardyORCA 4.5
    2012年 6月Ubuntu 8.04 HardyORCA 4.6
    2013年 1月Ubuntu 10.04 LucidORCA 4.6
    2013年 3月Ubuntu 10.04 LucidORCA 4.7
    2013年 9月Ubuntu 12.04 PreciseORCA 4.7
    2015年 3月Ubuntu 12.04 PreciseORCA 4.8
    2015年 4月Ubuntu 14.04 TrustyORCA 4.8
    2017年 12月Ubuntu 14.04 TrustyORCA 5.0
    2018年 1月Ubuntu 16.04 XenialORCA 5.0

使用マシンの比較

    2008年2月 開院時2018年2月 現在
    機種CPUOS機種CPUOS
    受付DELL
    Precision Workstation 340
    Optiplex GX280
    Pen4/2.4G
    Pen4/2.8G
    Windows XP Do-mu ポプラ nano 2台Celeron G3930/2.9GWindows 10
    掲示板
    BGM
    NEC MA10TPen3/1.0GWidows 2000 iMac 20" Late 2006C2D/2.16GMac OS X 10.6 Snow Leopard
    診察室1iMac 20" mid 2007C2D/2.0GMac OS X 10.5 Leopard
    java 1.5
    iMac 27" Late 2015Core i7-6700K/4.0GmacOS 10.13 High Sierra
    java 1.8
    診察室3NEC Versa ProPen4/1.8GWindows XP Do-mu ポプラ nanoCeleron G3930/2.9GWindows 10
    院長室iMac 20" Late 2006C2D/2.16GMac OS X 10.5 Leopard iMac 27" Late 2015Core i7-6700K/4.0GmacOS 10.13 High Sierra
    java 1.8
    サーバDo-mu コアくまC2D/2.53GUbuntu 8.04, Xen 3.2 改造Core i7-3770/3.4GUbuntu 16.04 Xen 4.6
    サーバ
    予備1
    Do-mu コアくまC2D/2.2GUbuntu 7.10, Xen 3.1 Do-mu コアくまC2D E4500/2.2GUbuntu 16.04 Xen 4.6
    サーバ
    予備2
    自作Pen4/2.6GUbuntu 7.10, Xen 3.1VirtualBoxUbuntu 16.04

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年1月20日 (金)

OS X Sierra

本日から Sierra (10.12.2)で診療開始。今のところ何も問題なし。

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年2月 5日 (金)

8年目の運用まとめ

8年目はサーバの rest 化,orca 4.8,java 1.8, el capitan へのアップグレードなどがあったが,大きなトラブルもなく過ごすことができた。ハードウェアでは,サーバ の HD を,メイン・バックアップ共 SSD (512G) にした。
トラブルでは,プリンタ故障→交換があったが,診療が止まるようなトラブルにはならなかった。

  • データベースの PatientModel の件数
    dolphin=# select count(*) from d_patient;
     count
    -------
     24422
    (1 row)
    
  • データベースの ModuleModel の件数
    dolphin=# select count(*) from d_module;
     count
    --------
     930690
    (1 row)
    
  • Dolphin サーバの df。去年から used が全然増えていないのは,多分,HD 交換でログが整理されたから。
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/xvda1       46G   14G   30G  32% /
    none            4.0K     0  4.0K   0% /sys/fs/cgroup
    udev            971M  4.0K  971M   1% /dev
    tmpfs           200M  184K  200M   1% /run
    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。7.4G → 12G に増加。
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/xvda1       46G   12G   32G  28% /
    none            4.0K     0  4.0K   0% /sys/fs/cgroup
    udev            469M  4.0K  469M   1% /dev
    tmpfs            99M  220K   99M   1% /run
    none            5.0M     0  5.0M   0% /run/lock
    none            495M     0  495M   0% /run/shm
    none            100M     0  100M   0% /run/user
    
  • データベースの dump ファイルのサイズ。
    dolphin_db.dump.gpg 1,883,168,267 
    orca_db.dump.gpg 90,200,961
    
  • 作成したスタンプ数。
    $ grep -c stampInfo stamp.xml 
    2104
    

2015年10月23日 (金)

El Capitan に移行

El Capitan に移行した。
  • El Capitan に移行したところ,プログラムはいじってないのに monsiaj の GUI 部品のデザインがフラットに変わった。Apple の java 用の L&F 部分が変わったということだろうか。
    YosemiteEl Capitan

    D01old

    D01new


  • OpenDolphin は,機能的には問題なく移行できたが,何カ所か GUI 部品の調整が必要になった。
    • デフォルトボタン,選択ボタンの色が青地に白になったために,ウインドウ状態,pressed / armed 状態,selected かどうか等で text の色を調整しなくてはならなくて,結構面倒くさかった。
    • JTextField の focus ring や文字の表示位置の調整をした。
El Capintan 移行に合わせて,Magic Trackpad を Magic Trackpad 2 に換えた。古い Magic Trackpad はクリックが難しい(上の方でクリックすると,てこの原理でものすごく力がいる)ので,タッチでクリックするように設定していたが,2 の方はどこでも軽くクリックできるので,普通にクリックで使えるようになった。クリック感がとてもよくて気に入っている。