いろいろ

2025年1月31日 (金)

オン資PCインストール忘備録

使用機器

Maxtang NX-N100

  • CPU: Intel(R) N100 800MHz, RAM 8GB
  • Windows 10 IoT Enterprise LTSC 21H2

通常ネットワークでの作業

  1. OqsComApp アカウントの作成
    家族とその他のユーザー>その他のユーザーをこのPCに追加>このユーザーのサインイン情報がありません>Microsoft アカウントを持たないユーザーを追加する
  2. PCに名前を付ける:システム詳細情報>このPCの名前を変更
  3. 自動ログイン設定
    netplwiz で「ユーザーがこのコンピューターを使うには、ユーザー名とパスワードの入力が必要」が出なかった。
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device\DevicePasswordLessBuildVersion2 から、0 に変更
  4. 不要なアプリを全て削除
  5. IPv4 固定:ネットワークとインターネット>イーサネット>アダプターのオプションを変更する
  6. スリープしないようにする:システム>電源とスリープ
  7. リモートデスクトップの使用:システム>リモートデスクトップ
  8. リモートデスクトップでアクセスしたときに、キーボードが ASCII 配列になってしまうのを直す HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411\Layout FileKBDJPN.DLL から kbd106.dll に変更
  9. リモートデスクトップで mac のかな/英数キーを有効にする
    いろいろいじっているうちに、うまく切り替わるようになったが、何が有効だったのか不明
  10. 背景画像の設定:個人設定>背景
  11. Edge のタブページをできるだけ空白に
    設定>スタート・・・>新しいタブページ>起動時 about:blank を開く
  12. .NET Framework4.8 のインストール:既にインストールされていた
  13. パスワード保存の設定
    Microsoft Edge 管理用テンプレートを適用する
    1. 管理用テンプレートをダウンロードしてインストール
      Microsoft Edge Enterprise ランディング ページのWindows 64-bit のポリシーの分かりにくいリンクをクリック、ダウンロードファイルをダブルクリック、出てきた zip を展開、MicrosoftEdgePolicyTemplates フォルダが展開される
    2. 展開されたフォルダの windows\admx を開く
    3. msedge.admxc:\Windows\PolicyDefinitions にコピー
    4. en-USja-JP に、対応するフォルダの msedge.adml をコピー
  14. UltraVNC のインストール
    インストール後、デバイスマネージャ>操作>レガシーハードウェアの追加>一覧から選択>ディスプレイアダプタ>uvnc bvba

オン資ネットワークでの作業

05_01_医療機関等向けセットアップ手順書(医療情報閲覧用端末編)

  1. DNS 設定
    IPv4: 空欄、IPv6: 2404:1a8:f583:d00::53:1, 2404:1a8:f583:d00::53:2
  2. https://www.lineauth.mnw に接続
    「接続がプライベートではありません」の警告>無理矢理接続で、回線認証済みが表示
  3. MPKIクライアントのインストール
    https://cert.obn.managedpki.ne.jp/p/s からダウンロード、「Microsoft Defender SmartScreen は CybertrustManagerPKIClient.msi をスキャンすることができませんでした」というメッセージが出るが、保存>実行する。タイムアウト待ちでダウンロード、実行に時間がかかる。このファイルは、オン資サイトにもあった (CybertrustManagedPKIClient.zip)。
  4. ブラウザ設定ツール (InternetPropertySetting.zip):解凍して管理者として実行
  5. プロキシサーバの設定
    設定>ネットワークとインターネット>プロキシ>手動プロキシセットアップ
    設定後、シェルを管理者として実行
    PS C:\Users\OqsComApp> netsh winhttp import proxy source=ie
    PS C:\Users\OqsComApp> netsh winhttp show proxy
    
  6. 時刻の設定
    設定>時刻と言語>別のタイムゾーンの時計を追加>インターネット時刻>設定の変更
    サーバ: ntp.base.oqs-pdl.org
  7. 認証局の電子証明書をインストールする
    証明書右クリック>PFXのインストール>現在のユーザー>次へ>パスワード入力、チェックボックスは全ての拡張プロパティを含めるのみ>自動的に証明書ストアを選択>警告ダイアログこの証明書をインストールしますか:はい
    Edge>設定>プライバシー>証明書の管理 証明書が表示される
  8. グループポリシーの編集
    管理用テンプレート>Microsoft Edge - 既定の設定(ユーザーはオーバーライドできます)>パスワードマネージャーと保護>該当の設定を有効にする
  9. レジストリ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge\PasswordManagerEnabled の値を、0 から 1 に変更。
    その後、edge://policy で、PasswordManagerEnabled が false から true に変わっていることを確認。

01_01_医療機関等向けセットアップ手順書(資格確認端末)

  1. 顔認証ライブラリのインストール
    • OQSFaceApp_v4.0.3.zip を解凍して、OqsInstall.exe を実行する。インストール終了後、再起動ダイアログが出る。
    • Edge の設定で、拡張機能を選択
    • 左下の「開発者モード」を有効化する
    • c:\Program FIles\OQS-Auth\ext\delegate.crx を Edge にドロップ
      「目視確認用アプリケーションを Microsoft Edge に追加しますか」>追加
      同様に、nopinauth.crxpinauth.crx を追加する
    • 開発者モードを無効化する
  2. OQSComApp_v4.0.1.zip. を解凍して、OqsInstall.exe を実行する。
  3. OQSDistroApp_v2.1.0.zip. を解凍して、contents\setup\OQSDistroApp.msi を実行
    QqsInstall.exe ではインストールできない)
    デスクトップに「オンライン資格確認接続確認ツール」「オンライン資格確認配信アプリケーション」ができる。接続確認ツールを実行してしばらく待つと、設定していないサービス以外は OK の結果が出る。配信アプリケーションを起動すると、配信サーバへの接続確認、配信実績の確認などができる。
  4. 配信アプリケーションタスクの登録:OQSDistroApp\tools
    タスク スケジューラ>タスクスケジューラライブラリ>タスクのインポート>C:\Program Files\OQS\OQSDistroApp\tools\OQS_exec_distroappstart.xml>ユーザーまたはグループの変更>OqsComApp>パスワード入力>再起動
    同フォルダの OQS_exec_distroappstop_periodic.xml については、マニュアルに記載なし
  5. オンライン資格確認配信アプリケーション管理ツールで配信実績の確認
    [Information]
    Status=サーバー接続待ち [再開予定時刻:2025/01/25 12:58:24]
    MedicalInstitutionCode=0110123456
    TerminalID=oqs-terminal
    TerminalModel=ALN50
    TerminalOS=Microsoft Windows 10 IoT Enterprise LTSC
    UserAccount=User\OqsComApp
    
  6. 連携アプリアカウント設定:管理者カウント(マスターではない)でログインして作成
    このアカウントは、req を監視して、データが入ったら認証するために使うアカウント。オン資PCに設定する。
    資格情報マネージャー>Windows 資格情報>汎用資格情報の追加>資格情報の入力
    • アドレス:OQS_LOGIN_KEY、ユーザー名:R0ORCA4、パスワード
    • アドレス:OQS_MEDICAL_INSTITUTION_CODE、ユーザ名:OQS_Admin、パスワード:10桁医療機関コード
  7. 連携アプリケーションの定期起動の設定:OQSComApp\tools
    • 消し忘れファイル機能定期実行用タスク (OQS_exec_comappdelfile_periodic
    • 消し忘れファイル機能PC起動時実行用タスク(OQS_exec_comappdelfile_running
    • 連携アプリ定期実行用タスク (OQS_exec_comappstart
    タスク スケジューラー>タスクスケジューラライブラリ>タスクのインポート>C:\Program Files\OQS\OQSComApp\tools\OQS_exec_comappdelfile_periodic >ユーザー又はグループの変更>選択するオブジェクト OqsComApp>パスワード入力
    残り2ファイルも同様にインポートする
  8. 顔認証アカウントの作成:認証機器(マイナタッチ/HI-CARA)に設定する F0xxxxx という ID
    新しい認証機器を買ったら設定する。設定データは PC に保存される。
  9. マイナタッチのセットアップ
    HI-CARA の前にインストール。後だと、インストーラが止まってしまった。
    RDP だと、ホストの USB が認識されなくて、インストールできないので注意。
    • Setup_mynaconsole_1.1.1.exe を実行。デスクトップや、ダウンロードフォルダから起動する。
    • USB を接続して、マイナタッチの電源を入れる。本体から出ている USB はカードリーダで、本体のスイッチが入っていなくても認識される。
    • カードリーダ管理>接続デバイスで初期化>受付3、F0xxxxxx>保存>再起動
      ここの F0xxxxxx は、PC に保存される。新しい ALMEX をつないでも、DEVICE ID は変わらない。
    • 動作環境設定>うさぎ病院>保存>再起動
    • カードリーダ管理>アカウント設定>パスワード入力>初期設定>接続開始>しばし待つ>本体アップデート開始
    • アップデート終わって30秒待つと初期画面表示
  10. HI-CARA セットアップ:FaceAuthenticatorAppSetup.zip を展開、実行
  11. フォルダの共有設定 (C:\OQS\almex, face, req, res)
    プロパティ>共有>OqsComApp ユーザーで共有有効化

2023年2月 6日 (月)

15年目の運用まとめ

2020年9月にクラウドファンディングで手に入れた天体望遠鏡 eVscope が届いてから、天体観測が面白すぎてプログラムコードにほとんど触れていなかった。2年ぶりの運用まとめ。

  • データベースの PatientModel の件数
    dolphin=# select count(*) from d_patient;
     count
    -------
    38302
    (1 row)
    
  • データベースの ModuleModel の件数
    dolphin=# select count(*) from d_module;
      count
    ---------
     1542061
    (1 row)
    
  • dolphin サーバの df。used は 23G で少し増えている。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            961M     0  961M   0% /dev
    tmpfs           199M  464K  199M   1% /run
    /dev/xvda1       46G   23G   21G  53% /
    tmpfs           993M   16K  993M   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           993M     0  993M   0% /sys/fs/cgroup
    tmpfs           199M     0  199M   0% /run/user/1001
    
  • orca サーバの df。used が 20G で大分増えた。
    Filesystem                 Size  Used Avail Use% Mounted on
    udev                       3.0G     0  3.0G   0% /dev
    tmpfs                      606M  1.2M  605M   1% /run
    /dev/xvda1                  46G   20G   24G  46% /
    tmpfs                      3.0G   16K  3.0G   1% /dev/shm
    tmpfs                      5.0M     0  5.0M   0% /run/lock
    tmpfs                      3.0G     0  3.0G   0% /sys/fs/cgroup
     :
    
  • データベースの dump ファイルのサイズ
    dolphin_db.dump.gpg 2,908,582,533
    orca_db.dump.gpg 330,190,797
    
  • スタンプ数
    $ grep -c stampInfo stamp.xml 
    2168
    

2021年2月 4日 (木)

13年目の運用まとめ

13年目はコロナにやられた年だった。外来が結構ひまだったので、長年の懸案だった undo のコードを書きまくって、その副作用で ATOK の確定 undo まで制御できるようになって、入力環境が大きく改善した。スタンプの簡易編集機能も、薬の量や日数を変更するのに、いちいちダイアログを出さなくても入力できるので、入力速度の改善につながった。

もう一つの長年の懸案、JWindow を使った JSheet も解決した。SecondaryLoop をつかって modal にするという技を覚えた。あとは、シェーマの拡大縮小、Google Calendar の取込、スタンプの簡易表示などのコードを書いた。

結構コードを書いた年であったが、クラウドファンディングに出資していた天体望遠鏡が 9月に届いてからは、ほとんど暇がなくなってしまった。

  • データベースの PatientModel の件数
    dolphin=# select count(*) from d_patient;
     count
    -------
    34420
    (1 row)
    
  • データベースの ModuleModel の件数
    dolphin=# select count(*) from d_module;
      count
    ---------
     1369363
    (1 row)
    
  • dolphin サーバの df。used は 18G でほとんど変わらず。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            962M     0  962M   0% /dev
    tmpfs           199M  460K  199M   1% /run
    /dev/xvda1       46G   18G   26G  41% /
    tmpfs           993M  8.0K  993M   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           993M     0  993M   0% /sys/fs/cgroup
    tmpfs           199M     0  199M   0% /run/user/1001
    
  • orca サーバの df。used が 9.9G から 12G に増加。
    udev            2.9G     0  2.9G   0% /dev
    tmpfs           601M  860K  600M   1% /run
    /dev/xvda1       46G   12G   33G  26% /
    tmpfs           3.0G  8.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
    tmpfs           601M     0  601M   0% /run/user/1001
    
  • データベースの dump ファイルのサイズ
    dolphin_db.dump.gpg 2,595,374,852
    orca_db.dump.gpg 291,521,000
    
  • スタンプ数
    $ grep -c stampInfo stamp.xml 
    2139
    

2020年5月22日 (金)

添書作成スクリプト

当院では開院以来,添書は NeoOffice の NeoOffice Basic で作ったシステムを使っていた。しかし,NeoOffice Basic でのコード管理は非常に苦痛度が高く,いつかアップル謹製の Pages と AppleScript を使って書き直したいと思っていた。ただ,実のところ AppleScript もあまりプログラミングが楽しい言語とは言えず,だらだらとそのままになっていた。

そんな折,AppleScript のスクリプトエディタで JavaScript が使えるということを知った。JavaScript for Automation (JXA) というもので,Yosemite から使えるようになっていたらしい。JavaScript なら AppleScript より圧倒的にコードが楽しく書ける。早速,JXA を使って添書システムを書き換えた。

手順としては,まず連絡先アプリで紹介先を選んで,スクリプトで選択項目を読み込み,さらに orca から患者情報を読み込んで,最後に Pages のテンプレートファイルのプレースホルダーに情報を挿入して添書を完成させるという仕組みにした。

まずは連絡先アプリに医療機関を登録した。連絡先アプリは vcf ファイルを読み込めるので,公開されている道内医療機関リストの xlsx ファイルを cvs で保存して,それを vcf に変換するスクリプトを書いた。これで,道内 3,300 の全医療機関を連絡先アプリに登録できた。

次に orca からの患者情報の取得であるが,NeoOffice Basic では jdbc で orca に接続して sql を発行して情報を得ていた。しかし,orca api のおかげで,今ではそういう手続きは全部すっ飛ばして,curl で拍子抜けするほど簡単に情報を得ることができる。例えば,orca trial サイトでやってみると,

$ curl -u trial: 'http://trial.orca.med.or.jp:8000/api01rv2/patientgetv2?id=00001&format=json' 
これで患者情報が json で取れて,さらに JavaScript を使うとパースまで一気にできてしまう。jdbc を使っていた頃とは雲泥の差である。
var res = app.doShellScript("curl -u " + AUTH + " " + URL )
var pt = JSON.parse(res)		

Contacts 3_20200520172001
Dialog

作ったファイルは github に上げた。.pages ファイルをテンプレートセレクタに追加して使う。

2020年2月11日 (火)

12年目の運用まとめ

12年目は orca api / push api 導入に合わせて orca との通信を全てサーバに移行した。orca api のおかけで症状詳記の記入が楽になったので,ちょっとでも支払基金に付け入られそうなレセプトには,ばんばん詳記を書きまくっている。

あとは,i9-9900 + NVMe の爆速新サーバ移行皮膚科専用カメラ DZ-D100 導入orca 5.1 アップグレードgithub への移行WildFly 18 へのアップグレード,全サーバの ubuntu 18.04 へのアップグレードがあった。

トラブルでは orca api 関連のトラブルで,開業以来初めて診療時間内のバックアプサーバへの切換を経験したが,データロスなく乗り切ることができた。

なんだかんだで,いよいよ当院も開院 13年目 (OpenDolphin 歴 13年) に突入である。

  • データベースの PatientModel の件数
    dolphin=# select count(*) from d_patient;
     count
    -------
    32873
    (1 row)
    
  • データベースの ModuleModel の件数
    dolphin=# select count(*) from d_module;
      count
    ---------
     1290369
    (1 row)
    
  • Dolphin サーバの df。used が 16G→18G に増加。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            962M     0  962M   0% /dev
    tmpfs           199M  460K  199M   1% /run
    /dev/xvda1       46G   18G   27G  40% /
    tmpfs           993M  8.0K  993M   1% /dev/shm
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           993M     0  993M   0% /sys/fs/cgroup
    tmpfs           199M     0  199M   0% /run/user/1001
    
  • orca サーバの df。used が 9.9G のまま不変。
    Filesystem      Size  Used Avail Use% Mounted on
    udev            3.0G     0  3.0G   0% /dev
    tmpfs           601M  856K  600M   1% /run
    /dev/xvda1       46G  9.9G   34G  23% /
    tmpfs           3.0G  8.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
    tmpfs           601M     0  601M   0% /run/user/1001
    
  • データベースの dump ファイルのサイズ
    dolphin_db.dump.gpg 3,111,578,947
    orca_db.dump.gpg 290,553,615
    
  • スタンプ数
    $ grep -c stampInfo stamp.xml 
    2105
    

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