OpenDolphin Ver7

OpenDolphin の JakartaEE 9.1, Java17 対応バージョンである OpenDolphin Ver 6 を関係者向けにリリースしたんだが、Java の EE 環境自体は JakartaEE 10 へと向かっている。

当然、OpenDolphin の JakartaEE 10 対応(OpenDolphin Ver7)も考えている。

が、これまでのように(EE 環境などの)仕様変更に伴いソースコードを単純に再調整する、という風にはならなそう。

内輪向けにプロトタイプバージョンなども披露しているが、こちらの方がどうも評判がいい。

以前から、三層クラサバ化などは図(↓)などを提示した上で提案していたのだが、具体的な形が見えた方がより反応がいいようだ。

まあ、これだと確かに概念的すぎるか。

具体的にバックエンドサーバー・フロントエンドサーバーがどのように動くか雰囲気掴んでもらうために、以下のような図を提示した。

API の出力を単純にブラウザ上に表示させているだけなんだが、どういうわけかこちらの方がウケがいい。

上の場合だと id=3 のカルテを表示してね(データベースから取ってきてブラウザ上で表示してね)ってことなのだが、この時、このリクエストやサーバーからのレスポンスは

ブラウザ⇄フロンエンドサーバ⇄バックエンドサーバー⇄データベース

という感じで流れる。

この流れが視覚的にわかりやすいってことなんでしょうか。

一般の人に基本設計がどうしただの REST がどうしただのと言っても通じないもんなんだなあと(笑)。

 

猪股弘明

2022 夏

ただの雑感。

YouTube

今まで積極的に使ったことがなかったのだが、OpenDolphin や Java(限定公開) の解説動画にぽつぽつ反応があった。

あんなの、経過記録もいいところ。
編集する気などまったくない一発撮りなのだが、意外にウケがいい。

プログラミングに関しては、ただの初心者向け講義風っぽい動画より、実務的な内容の方がいいのかもしれない。

(プログラマー志望者は)『何千人いても樹海でさまよっていて山頂に到達する人は少な』いみたいな状況があるんだろうな。

ネタは山ほどあるので、適宜アップ予定。

OpenDolphin 関係

OpenDolphin は「真正性」すら満たせていないかもしれない』が評判いいようだ。

「オープンソースのソフトはセキュリティに難があるのでは?」というのは誰もが思いつくことだと思うが、当たり前すぎて誰も言わない。

こういう場合は、具体的な例を示すのが適当だと思うのだが、適当な例を挙げるのが意外に難しい。

PostgreSQL の LOB を操作している時に、「そういえば、LOB を oid 使って直接操作したら hibernate のような ORM やそれを使ったシステムはそのこと(直接操作による改変)を認識できないよね」と思いつき、上述の問題の具体例として仕立て上げたという次第。

Java17 対応

基本的にはできている。

なんだが、画像表示周りは保存形態が jpeg 限定になっていて、関係者一同、「んー?」の声。(『医療画像を情報損失のある形式で保持するとかは普通しない』あたりを参照)

情報劣化のない形式で保持しておいた方がいいという意見が多かったので、これは、別系統のバージョンとする予定。

 

猪股弘明

 

 

OpenDolphin HTML/PDF Viewer プロジェクトとOpenDolphin Viewer プロジェクト

以前から、Save the DolphinS の「データ移行ツール」に関しては、手入れしてみたいと思っていた。
色々あったが、結局、コードの修正を施してまずまずのところまで完成。一連の経過記録を『OpenDolphin HTML/PDF Viewer プロジェクト』にまとめた。

そこでは(混乱すると悪いので)触れていなかったのだが、同時並行で OpenDolphin Viewer プロジェクトというのも進行していた。

OpenDolphin の場合、カルテ記載内容は JTextPane という Java が提供する GUI の部品を使って表示させているのだが(厳密には JTextPane をカスタマイズして使用しているのだが、機能は継承されているのでこのように考えて差し支えない)、建前としては html も表示できることになっている。

だから、カルテを視認するだけであれば、データベース上の情報をパースして html に変換、それをそのまま JTextPane に表示させればいい。

こちらのアプローチの方が自然に感じられるかもしれないが、私も含めて関係者はこちらのプロジェクト、つまり OpenDolphin Viewer プロジェクトは失敗すると予想していた。

なぜか?

日本ではこの手の情報はあまり普及していないようなのだが、海外のサイトでは「 swing (Java の古い GUI のライブラリ)の JTextPane では、凝ったレイアウトの html は正常表示できない。やりたければ JavaFX(Java の新しい GUI ライブラリ)を使え」というのが半ば常識と化していたのを我々が知っていたから。

うまくいかないのはほぼ分かっていたが、どの程度うまくいかないかはやってみないとわからない。
レガシーなソフトを取り扱うことはよくあるので、試してみる価値はあると考えた。

前置きが長くなったので、実例を示す。

以下のようなカルテがあったとき

OpenDolphin HTML/PDF Viewer の方は、

とレイアウトなどもほぼ再現された html ファイルを吐き出す。
この html を OpenDolphin Viewer の JTextPane に流し込むとこうなる。

そんなに悪くないと思う人もいるかもしれないが、

・斜字体属性が反映されない

・スプリットデザイン(画面を縦に分割しているデザイン)は完全無視

というアラは目に付く。
特に後者は致命的だと感じた。
この程度の CSS スタイルも反映されないようでは、より複雑なデザインにした場合、もっと悲惨なことになることは想像に難しくない。

しばらくはこのプロジェクトは SSD の肥やし・GitHub の漂流物となるだろうが、別目的で使える可能性はなくはないので(この話は長くなるので割愛)、継続して保存はしておく予定だ。

 

 

猪股弘明

 

ORCA, OpenDolphin, OsiriX は未だに話題になりますね

ORCA メーリングリストの話

ORCA ユーザーのメーリングリストで、大阪の八木高秀先生の

ORCAと連動した電子カルテをご使用中の方がおられましたら、
ご使用感を教えていただけないでしょうか。

という投稿をきっかけに医療用ソフトの議論が突如として活発化。
多少「あれ?」と思うようなところもありますが、現場で使っている先生方はこの手の問題に熱心ですね。熱意が伝わってきます。

OpenDolphin の話題も出ていたので、私もイントロ的な概要と現在注意しておいた方がいい点などをコメントしてきました。

カルテ記載内容のデータベースの永続化方法に関しては、ほぼほぼ解析できてまして、クライアントからではなく、別のツールを使って抽出もすることもできました。
『Save the DolphinS -OpenDolphin データ抽出ツール・プロジェクト-』
https://allnightnihon2b.net/blog-jp/?p=816
で案内しています。

データベースに直接アクセスして復号しているため、最終確定版だけでなく途中経過版も抜いてこれます。カルテに貼り付けた図版も別に画像ファイルとして抽出できます。

なんで、こんなものを作成したかといえば、opendolphin から他電子カルテへの乗り換えを考えた場合、途中経過版も含めて電子化して取り出さないと実質的にはデータ移行しにくいと考えたからです。

「データ移行」に関しては関心が高かったようですね。

また、ORCA に関しても気になっている点を挙げさせてもらいました。

ただ、現行の OpenDolphin を大幅に機能強化させるようなことは考えてません。以前は、手が空いたら着手しようかと考えていたのですが、某筋から「ORCA の技術的側面に関して調べてみては?」と提案されて、調べたところ、設計の古さが目についたからです。
この件に関しては以前このMLにも投稿しましたね。
例えば
『ptid のデータベース上での定義について』
https://ml.orca.med.or.jp/orca-users/msg14679.html
などの一連のやり取りをご覧ください。

今すぐということはないでしょうが、ORCA は将来的には再設計される可能性もあるわけで、その状況では、ORCA「だけ」に依存する上物には手を出しにくいかなあと思っています。

などなど。


ただ、取り扱いが微妙な問題も孕んでいるので、あくまであっさりとした解説です。
「取り扱いが微妙な問題」というのは(ここで細かい話をしてもしょうがないと思うので)

横から見た OpenDolphin-2.7m

保健医療科学院 小林慎治が国家公務員法違反疑いで厳重注意を受けた件について

HorliX -wikipedia 風解説- にまつわるあれこれ

あたりをご参照ください。


OpenDolphin マスタマイズの実際

ところで、この手の話をするときに、クライアントに実装した「いわゆる」ファイルバックアップシステムをまず取り上げ、次にデータ抽出ツールの説明をするようにしている。
そちらの方がわかりやすいと思いそうしているのだが、実は、実際の開発順序は違う

時系列的には、まず、データ抽出ツールを作成し、その次に(ツールの副産物として)ファイルバックアップシステムに関するコードをクライアントに付け加えたというのが本当のところです。

これはコード上にも反映されている。
OpenDolphin のカルテインスペクタの文字情報だけを取り出すのなら、gettext という関数を使えばすむのだが、これだとカルテ上の右半分(処方や処置などを記載する欄)もベタな文字情報のままになってしまう。

過去の直近の処方内容をチェックする程度であれば、(処置区分なしの)文字情報だけでもかまわないと思うのだが、もう一歩踏み込んで処置内容毎に区分して処理したいというような場合、これだと後処理が必要になってしまう。

ところがデータベース上では各処置(スタンプ)には、それがどの区分に属するかの情報も含まれている。
これを活用しない手はないと思い、区分を読み取って条件分岐させてから、文字情報を抜く、というロジックにした。

最終的なアウトプットは単純に文字情報だけを抜いたときと変わらないのだが、ちょっと凝った統計処理をしたいというような場合、コードの修正がしやすいと思いそのような実装にした。

ファイルバックアップシステムに関わるコードは100行にも満たないが、コードを書くときはこんな風にあれこれ考えながらやるものなんですよ。

ちょっとマニアックな話ですが、何かの参考になればと思い補足説明してみました。

HorliX に関しても言及

OsiriX や Horos の話題も出ていたので、年末の隙間時間をついて HorliX に関しても投稿してきました。
https://ml.orca.med.or.jp/orca-users/msg14953.html

当たり前のことを言ってもしょうがないので、気持ち開発寄りに振ってます。

例えば、Horos でROIを使うとき、使う毎にその描画色がくるくると変化すると
思いますが、その元になったコードは私が送ってます。
いわゆる ROI-color-rotation-UI というやつです。
このときの改変のやり取りは今でも残ってますね。
https://github.com/horosproject/horos/issues/342

ここら辺までは、Horos と協調していたんですが、当時(2018年)課題に
なっていた 64bit 対応がもたもたしていたことや彼らが若干「やりすぎ」て
しまうところが気になって、結局、独立してしまいました。

「やりすぎ」というのは、具体的には、ROI-color-rotation-UI でいうと
彼らは記録時のファーマットまで改変してしまってます。
ROI を XXXX.roi のようなファイルを書き出したとき、色情報まで入れ込んじゃっているので、互換性が崩れちゃってるんですよ。
上であげた github issues 上での議論を見てもらえればわかると思いますが、
元々は「ROI の描画色が単色だと視認性が良くないので、マルチカラーを扱える
ようにしたい」というかなりシンプルで(おそらく有用な)ユーザーさんからの
指摘から始まってます。
私も色が変わるのは便利だなと思いますが、記録するほどのことでもないと
思い、Horosの改変は取り込みませんでした。
「やりすぎ」と感じるのは、こういった点です。

ここら辺、そんなに説明したことはないので、興味を持ってもらえたらいいなあという気持ちがちょっとはいっています。

 

猪股弘明(ご連絡は twitter の DM や facebook の友達申請などでお願いします)
OpenDolphin-2.7m 開発者