OpenDolphin

2019年4月18日 (木)

ORCA 登録情報変更への対応

push api には患者さん登録を行った場合に push 通信してくれる api がある。これを利用して,受付患者さんのデータ変更があった場合,dolphin 側で自動的に反映させるようにした。

淀橋亀三さんの性別と生年月日を間違って登録して受け付けしてしまった。

Before

orca の患者登録画面で性別と生年月日を修正して登録する。

Orca

すると,dolphin の受付リストでも変更が反映される。

After

ちなみに,患者登録通知の subscription イベント名として "patient_information" を送ってテストしていたのであるが,orca から反応がなくて悩んでいた。試しに "*" を送って全てのイベント通知をする設定にしたところ,患者登録通知も返ってくることが分かったので,受け取ったレスポンスをイベント名 "patient_information" でフィルターして受け取ろうとしたのであるが,なんと受け取れなかった。この時点て初めてイベント名が "patient_information" ではなく,"patient_infomation" であることに気付いた。あわててウェブページや仕様書を確認してみたら,全て "patient_infomation" になっており,やられたーと思った。これはハマる人が多いのではなかろうか。

2019年4月 9日 (火)

EditorFrame のツールバーをカスタマイズ

EditorFrame のツールバーをワープロ風にしてみた。

 
Editorframe_1

2019年3月27日 (水)

ORCA DAO

今のところ orca api で実装できなくて dao で対応しているのは以下の項目である。
これらについては,日医標準レセプトソフトに関する改善要望として送ってみた。

・マスタ検索

・push api で送られてくる診療内容コードから「診察」などの文字列への変換

・診療セットの一覧取得

・medicalsetreq での単位名取得

2019年3月26日 (火)

Push API

orca からの受付情報を push api + orca api + orca dao を使って受け取るようにした。これにより claim 通信は完全に使わなくなった。
push api では新規受付情報だけでなく,受付キャンセルの情報も送ってくれる。dolphin クライアント側でこれを利用することにして,受付キャンセルは orca でのみ許可し,dolphin クライアントでのキャンセルはできないようにした。

このような受付状態から orca 側で淀橋亀子さんの受付をキャンセルすると

Dolphinpvtbefore

Orcapvtdelete

キャンセル状態が dolphin クライアントにも伝わって受付リストから自動的に消失する

Dolphinpvtafter

2019年3月25日 (月)

ORCA API

orca の中途終了データ送信と病名送信は xml だったのを json に書き換えた。
さらに今回,orca api を使って症状詳記送信機能を新たに付けてみた。

KarteEditor または KarteViewer でテキストを選択して右クリックすると症状詳記メニューがでて,これを選択すると orca に症状詳記が送られる

Dolphincom Orcacom

取り消したいときは option を押しながら右クリックすると削除メニューが出て取り消すことができる

Dolphincomdelete

訂正して再送しているところ。api で送った症状詳記はレセプトに反映される

Dolphincomsendagain Orcarecept

2019年3月24日 (日)

open.dolphin.orca パッケージの作成

以下の 3つの API をまとめた open.dolphin.orca パッケージを作ってサーバ側に置いた。これにより dolphin クライアントは orca に接続する必要がなくなり,クライントのソースから orca 接続関連のコードを一掃してすっきりさせることができた。

ORCA API

以前からカルテデータを orca に送信するのに orca api を使ってはいた。しかし,orca 4.8 までは xml にして送らなければならず,正直プログラミングが苦痛でいじる気がしなかった。しかし,orca 5.0 から json が使えるようになり, jackson を使ってがぜん楽しくプログラムできるようになった。そこで,2017年から json での orca api プログラミングをこつこつ積み上げて,昨年末までに入院関連を除く api をすべて実装した。そしてやっと今年,足かけ3年を経てとうとう実運用までこぎつけた。

Push API

さらに orca 5.0 から WebSocket を使ったプッシュ通信の API が使えるようになった。orca に jma-receipt-pusher パッケージをインストールすると,外からの WebSocket 接続を受け付け,クライアントに受付情報などを送ってくれるようになる。

ORCA DAO

ORCA API だけでは取れない orca 情報もあるので,dao もパッケージに含めた。ちなみに,api と同じ処理を dao を使って処理すると,dao の方が 10倍くらい速かった。ただ,数十ミリ秒 vs 数百ミリ秒の違いなので,体感的にはほとんど分からない。


"Some languages can be read by human, but not by machines, while others can be read by machines but not by humans. XML solves this problem by being readable to neither."

2019年3月 7日 (木)

mac で印刷の文字化け

OpenDolphin のカルテの印刷は,開業時の個別指導以来,11年間1度も使うことなく現在に至っている。先日,ふと思い立って印刷機能を試してみようとプレビューを出してみたところ,見事に文字化けしていた。

Mac

一方,Windows では文字化けしない。

Windows

Component に物理フォントを指定すると文字化けしなかったので,mac では PrinterJob の Graphics は Component の論理フォントの扱いがおかしくなっているようだ。印刷機能のためだけにいちいち物理フォントを指定するというのも非現実的である。そこで,PrinterJob の Graphics に渡す前に,BufferedImage の Graphics で一旦イメージに落として,そのイメージを PrinterJob の Graphics に渡すようにして文字化けしないようにした。

Macnew

PrintKarteDocumentView.java

2018年2月 6日 (火)

java 1.8.0_162 で変換中の記号フォントが小さくなる

java 1.8.0_162 にバージョンアップしてみたところ,変換中の記号のフォントが小さくなるのに気付いた。記号以外のフォントは普通に表示される。また,確定後は普通のフォントに戻る。java 1.8.0_161 ではこの現象は起こらない。

java 1.8.0_161java 1.8.0_162
Take3 Take4

変換中から確定に移行する時に,記号が入っていると,フォントのサイズが変わってパタパタうるさく見えてしまう。なんだか気持ち悪いので,1.8.0_161 を使うことにする。

インストールされている jre の削除方法

sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -fr /Library/PreferencesPanes/JavaControlPanel.prefPane
sudo rm -fr ~/Library/Application\ Support/Java

2018.5.15 追記
java 1.8.0_171, 172 でも直っていない
2018.8.1 追記
java 1.8.0_181 でも直っていない
2018.10.18 追記
java 1.8.0_191, 192 でも直っていない
2019.01.17 追記
java 1.8.0_201, 202 でも直っていない

2018年2月 3日 (土)

NetBeans から IntelliJ に移行

昨年の Java IDE のシェアは IntelliJ が 45.8% で一番になったようである。使用中のNetBeans が不調で,java がアップデートできない状態だったので,この機会に試しに IntelliJ に移行してみることにした。

IntelliJ 導入

01_2 無料の Intellij Community version をダウンロードする。起動すると Import IntelliJ IDEA settings from ダイアログが出るが,初めての使用なので Do not import settings を選択。初期設定は Skip してデフォルトにする。
11 IntelliJ の初期画面が出たら,Check out from Version Control → Mercurial と選択。
12 ダイアログに必要事項を入力,Clone をクリック。
14 Import Project ダイアログが出るので,maven を選択。
15 デフォルトに加えて,
  • Serch for projects recursively
  • Import Maven projects automatically
にチェックを入れる。
16 インポートするプロジェクトを選択する。
17 JDK を選択する。
18_2 Project Name を設定する。
20 プロジェクト読み込み完了。
21 Edit Configurations
22 Maven コマンド登録。
23

24
Build は mvn install でできるようになっているので,設定すると,メニューから,client,server を選んで pom.xml に書いた手順で jar,war ができる。
26

27
アプリケーションを設定すると,メニューからクライアントを起動できるようになる。サーバの方は,NetBeans は WildFly を使ってサーバを起動することができるが,IntelliJ の community version ではできない。
28 OpenDolphin 起動。

Directories used by Intellij to store settings, caches, plugins and logs

  1. Configuration (idea.config.path): ~/Library/Preferences/IdealC/
  2. Caches (idea.system.path): ~/Library/Caches/IdealC
  3. Plugins (idea.plugins.path): ~/Library/Application Support/IdealC
  4. Logs (idea.log.path): ~/Library/Logs/IdealC

主なショートカット

⇧⌘FPath 内のソース内容検索
⌘KCommit
⇧⌘KPush
⌘TUpdate project (Pull だけだとソースが更新されない)
^Tリファクタリングのポップアップメニューが出る
⌥⌘Lソースのインデントなどの整形

移行後,無駄なリファクタリングをたくさんして練習した。
慣れると結構手になじんできたので,このまま IntelliJ で行ってみることにする。

2018年1月25日 (木)

編集中カルテの自動一時保存機能

その時,突然画面から書きかけのカルテが消えた。直前まであったはずのカルテウインドウは忽然と姿を消し,デスクトップには紅葉に映えるシエラネバダ山脈 - High Sierra - の美しい景色が広がっていた。OpenDolphin の礎たる Java VM が何の託ち言も残さず突然落ちたのだ。こんな悲劇が現実に起こり得て,しかも,まさに今,実際に目の前で起きたのだと,そう認識するまでにやや数秒を要した。

泣きながらカルテを入力し直し,そして,このような悲劇を2度と繰り返すことがあってはならない,その強い思いから,編集中カルテを 1秒ごとに一時ファイルとしてローカルディスクに保存する機能 Autosave を付けた。

Autosave は 1秒ごとに KarteEditor の dirty 状態をチェックし,dirty だった場合,KartePaneDumper_2 でカルテ内容を dump して AutosaveModel を作り,さらに json 化してローカルの一時ファイルに保存する。正常にカルテ編集が終了すれば一時ファイルは削除されるが,Java VM が落ちたりした場合は一時ファイルが残る。ChartImpl 立ち上げ時に一時ファイルをチェックして,もし一時ファイルがあれば DocumentModel を復元して KarteEditor に渡し,カルテ編集中状態を回復する。

Karte

バックグランドで動作し,保存にかかる時間は数ミリ秒,シェーマの encode があっても 50ミリ秒程度以下で,パフォーマンスにはほとんど影響なかった。

がんばってプログラムしたが,実際にはこの機能が使われる日が来ないことを祈りたい。

より以前の記事一覧