Horos 再び

旧バージョンとしてすっかり放置されていた当ブログであるが、アクセス解析みたらそれなりに来訪者がいるようだ。

なかでも、「ん?」と思ったのが、「horos 日本語化」あたりで訪れてくれる人が多いこと。

ホロス(horos)コミュニティになんかあったのか?とHPのぞきにいったら、けっこう変わってましたね。

なかでも驚いたのは、Horos Academy なるトレーニングコースが設置されたこと。

ホロス、学帽かぶってるよ…。

あと、ユーザー同士の Q&A のコーナーがごっそりなくなっていた。私もけっこう初歩的な質問には答えていたんだけどなあ。慣れない英語で。

全体的に教育・サポートで収益化をはかりたいという方針が前面に出てきたようだ。

how to install みたいな記事も上記アカデミー内にうつされたようで、これだと、初心者にはソースからコンパイルして Mac にインストールすることも難しいだろう。

 

なんだろう。この軽く裏切られた感…。

 

ちょっとインストールトライしてみるか。連休だし。

 

(追記1)…おおっぴらに書いていいかどうかわかりませんが、ダウンロードページは、こちらのようですね。

(追記2)…以前のように Xcode で一発!というわけにはいかないようですね。CMake が導入されてました。

(追記3)…参考までに OsiriX に関して調べましたが、愕然。商用版の OsiriX MD とデモ版の OsiriX lite があって、MD の方は $699 。しかも、買い切りではなく、サブスク1年間でこの価格。これはちょっと高くなりすぎのような…。

ただし、OsiriX のオルタナとして期待されていた Horos ですが、2020 頃より全くリポジトリが更新しておらず、実質的に開発中止となっています。

再開されたとしても近い将来 MacOS で OpenGL が使えなくなるため、OpenGL に依存している Horos は動かなくなります。

オープンソースのマネタイズというのは、難しいものがありますね。

 

(追記4)…Horos を日本語化したものでもこれはかなり注意が必要。

 

SQL Anywhere ベースの医療情報システム解析 準備編

SQL Anywhere ベースの医療情報システムはけっこう使われているようだ。

とりあえず各種ツールをセットアップしないことには始まらないので、まずそのインストール。

まずこのページに飛ぶ。

実際のダウンロードは英語ページから。

インストールするとデスクトップにアイコンができているので、起動するとこんなウィンドウが立ち上がる。

あとは、既存データベースにつながればいいが、さてどうなることやら。

薬局で使われているようです。

 

 

DICOM Viewer に segmentation 機能追加検討

CT 値(ハウンスフィールド値)が求まると面白いことができるようになる。

その一つは、画像上である程度まで組織を分離(segmentation という)できるようになることだ。

例えば、前回の画像で

CT 値 組織
-109 ~ -10 皮下組織
-9 ~ 24 表皮組織
25 ~ 229 筋組織
230 ~ 骨組織

と閾値処理すると↓のような感じになる。

大雑把にはいい線はいっているのだが、細かいところではダメダメである。

骨組織は文句なし、筋組織はまずまずといったところだが、致命的にダメなのは神経組織がまったく分離できないこと。

これは神経組織のCT値が 30~40 であり、筋組織と値が被ってしまうことによる。

かなり以前に行きがかり上この課題に取り組んだことがあるが、そのときはアルゴリズムを工夫することで、半自動的にセグメントできるようになった。

最近の研究結果はどんなもんだろうかと先ほどざっと調べたが、あまり決定的な仕事はなされていないようだ。

やはりあったかと思ったのは、deep learning の手法を用いて云々というもの。流行りなので手を出したい気持ちはわかるのだが、今ひとつピンとこない。この課題の延長線上には、当然、「計算機による画像診断」というかなり重要なテーマが控えているのだが、その際には、どうしても「診断根拠」というものが必要になってくる。現時点での deep learning 的手法は、判断の根拠といった部分の機構が上手く説明できていないような気がする。

もちろん、探索的に用いるのなら有効だろうが。(確か Alpha Go も新手の生成のときにしか deep learning を使っていないはずだ)

ともあれ、目的も成果もわかりやすいこの分野、みなさんもトライしてみてはいかがでしょう?

なお、Orthanc のメーリングリストでもこの話題が出たので、興味がある方はご一読を

 

猪股弘明(医師:精神保健指定医)
HorliX, OpenDolphin-2.7m: developer
Horos: contributor

C# で簡易 DICOM Viewer

いさんで DCMTK をコンパイルしたものの、 C# からは、当然、直接は使えない。

何か適当なツールがあるだろうくらいに考えていたのだが、ありそうでいて意外にない。GDCM というライブラリを使う手もあるらしいが、これはこれで一手間かかる。

やや困る。

面倒なのでライブラリなしで直接ダイコムファイルを読み込んで解析。(結局、こうなる‥‥)

それっぽくは書き出せたが、確かジーメンスは CT値に何か下駄をはかせていたはずで、コントラストがおかしい。

(追加)‥「下駄をはかす」というのは Rescale Intercept というらしい。(DICOM上の)データセットが必ずしも CT 値とは限らないため、

CT 値 = (生データの値) * Rescale Slope + Rescale Intercept

で、変換する。Tag は (0x28,0x1052)。この式に基づいて変換すると

と撮像・記録したときのコントラストで画像が再現できる。

よくわからなかったのは、Window Center & Width に値が二つ設定されていた点。40/700 と 200/3200 とであった。まあ、(40, 200) の設定でよいのだろうが、これがジーメンス固有のものであるかはちょっとわからない。

 

猪股弘明(精神科:精神保健指定医)
HorliX, OpenDolphin-2.7m : developer
Horos : contributor

技術的中間搾取

以前に windows 環境下でかっこいい DICOM Viewer がないみたいなことを書いた。

では、Mac 環境下の OsiriX や Horos が、満足すべきものかというとそうでもない。機能の豊富さは認めるが、ちょっと凝ったことをしようとすると、ソースの改変が必要になってくる。が、これらのプロジェクトは、ソースの改変をするには、ドキュメンテーションが決定的に不足しているように思える。

ところが、これらのパッケージを支えている ITK や VTK といったライブラリは、とんでもないくらいにドキュメンテーションが充実している。使われている英語も平易だ。

なぜだろう?(笑)

これは、以前に電子カルテを取り扱ったときにも同様の感想を抱いた。Java 自体が C++ に比べれば習得しやすい言語だし、hibernate や jersy といったライブラリも開発元サイトにいくとドキュメントが充実していることがわかる。

上流にある技術のキモは真に新規性がありかつわかりやすいのだが、そこから派生していくにしたがってどんどんわかりにくくなっていく。

いつものことといってしまえばそれまでなのだろうが、高度経済成長期ならいざしらず 21 世紀のオープンソースプロジェクトでこんなことしててもしょうがないんじゃないの?とは思う。

Horos plugin は使えるか?

horos シリーズ。

OsiriX の利点の一つとして「plugin を組み込むことで機能の拡張がはかれる」というのがある。例えば、 jpeg 画像ファイルを読みこみ DICOM ファイルとして保存させておくということができたりする。

なので Horos でもできないか確認。

plugin を Horos 用にコンパイル。ここは問題ないようだ。拡張子を .horosplugin とするのが作法か。

次に、適当な jpeg ファイルをつくり plugin 機能を使って Horos に読み込ませる。

で、タグを編集して、CT っぽくして3次元化。

あとは、普通に 3D レンダリング。ついでに動画書き出し。


 

割と機械的な作業の連続ですが、一応できたということで。

Horos なんちゃって日本語化

Horos をインストールしたのはいいが、どうせなら日本語化したい。

Mac のことは詳しくないのだが、「OsiriX が日本語化されている以上、Horos でもできるはずだ」という単純な発想。まず、ファインダーで OsiriX.app を表示させ「内容を見る」→Contents→Resources と順に表示。

そしたら、ありました。 Japanese.lproj

あやしい。

おそらく、ここで国際化に対応しているんだろうと推測して、このフォルダを丸ごと Horos.app のContents/Resources フォルダに放り込む。そして、Horos 起動。

おお、日本語化されている。

とても正しい日本語化とは思えないが、今のところ問題なし。どの程度まで本体動作に影響するか不明だが、しばらくこのまま使う予定。(もう少し真面目に日本語化することにしました。下記参照)

それにしても、ここまで言うこと聞いてくれると Mac がだんだんかわいく見えてきた。マカーでもなんでもないが、安いのでいいから、新規に買っちゃおうかな。




 ちゃんとした日本語化

いつまでも「なんちゃって」ではまずいと思い正規の日本語化方法にしたがって若干必要なファイルを追加。ある程度日本語化しました。結果を github の

air-h-128k-il/HorliX

に上げておきました。HorliX と名を改めましたが、トライアル版を不定期に

HorliX Download Page

に上げてますので、必要な方がいたら落としてみてください。

とりあえず、アップデートアラートの類は出なくなりました。

本家にプルリクエスト送っておいたので取り込まれるかもしれません。→あっという間に取り込まれました。

日本語訳の検討はこちらでおこなわれています。

 

HorliX へ

日本語化以外にも、どこそこの UI を変えてくれ、SSL のサポートもしてほしいなどの要望があり、結局、上のリポジトリは、そのまま HorliX プロジェクトに発展しました。

ここまでやるつもりはなかったんですが、結局、電子カルテと DICOM Viewer/PACS の二つに手を出してしまったっていう…..。

 

「なんちゃって」日本語化は個人使用の範囲内で自己責任で 

コメント欄で指摘されて気がつきましたが、(オープンソース版ではない)OsiriX の日本語リソースは、開発元独自開発ですのでフリーでもなんでもなさそうです。再配布などはかなりまずいと思われます。(1回、調べたことありますが、各国ローカライズはかなりお金かかってます)
「なんちゃって」日本語化する場合は、個人使用の範囲内で自己責任でお願いします。

ところでコメント欄の


SUGIHARA

現在の OsiriX Lite には「Japanese.lproj」が無く「ja.lproj」のようです
「ja.lproj」をContents/Resources フォルダに放り込むと Horos が起動できなくなります
なにか対策ありますか?
或いは 「Japanese.lproj」をDL可能にしていただけませんか?


って、システムクラフト(サークルテック?)の杉原 利彦さんですかね。

ところで、この杉原さんによれば、私は horos プロジェクトの「自称」contributor なんだそうだが、一応、GitHub のシステムレベルでも記録はされており、世間的にも contributor ということで認知されていると思いますけどね。

北極圏コード貯蔵庫コントリビューター -Arctic Code Vault Contributor-

もの凄く貢献したってわけではないですが、ROI 関係なんて私のコードが基になってますし。

ROI

air-h-128k-il

Horos

DICOM server/viewer として OsiriX が有名だが、ソースからコンパイルしても32bit になってしまうなど制約がある。OsiriX ベースのオープンソフト Horos ではこのような制約はないという。MacBookPro(OS X Sierra) にインストールしてみたので、その覚え書き。

(ビルドには、実行環境の SDK が必要なので、事前に準備しておきましょう。

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

で確認。なければ、別のバージョンの Xcode から持ってきて、上記フォルダ内にコピーしておく)

まず、github の horos サイトからソースをダウンロード。手に入れた horos-horos.zip を展開(慣れた方は git でどうぞ)。

その中にある Horos.xcodeproj を Xcode に読み込ませる。build setting で Base SDK を macOS 10.12 に指定。

build/Development に Horos.app ができるのでこれを起動。

試しに 3D レンダリングさせてみました。

けっこう安定している。これは使えるかも。

 

air-h-128k-il

 

電子カルテからの患者データ吸い出し 2

以前に電子カルテのデータ抽出の仕事をしたことがあるので、その話。

具体的な案件はこんな感じ。

数年間、A市で開業していたが、開業していた父親の突然の不幸があり、そちらを承継することになった。こちらとそちらの電子カルテにデータの互換性はない。何らかの形でそれまでの診療データを保管しておかなくてはならない。さて、どうする? といった案件。

ラッキーだったのは、使っていた電子カルテが OpenDolphin というオープンソースのものだったこと。データベースの構造をチェックし、ソースを読むと「ああ、これはいけるかな」と。

結論から言うと、データベース(PostgreSQL)からデータを吸い出し、文字情報はテキストファイルに、画像情報は画像ファイルに書き出すプログラムを書いて、これがうまく動いた。

元の dolphin のカルテ画面はこんな感じ。

で、変換プログラムの表示画面はこんな感じ。

元の dolphin の画面がかなり凝ったこと(java swing の JTextPane をカスタマイズして使用)をしていたため、そのあたりの処理をどうしようか迷ったが、画像が貼られていた位置にタグを打ち込む形で表示・保存させることにした。

上の図でいえば、元カルテのスズキジムニーの画像が表示されている箇所に
<image schemaholder 0>
というタグを表示させてます。

ならべくなら、カルテの書式情報も損失なく変換させたかったので。

というわけで、今回は電子カルテの実運用後の保管形態に関するお話でした。

ところで、噂に聞くに、電子カルテのデータ構造を秘匿化していわゆる「データを人質に取る」といった商売をしている業者もあるようです。 ビジネスだから、と思う反面、それっていわゆる電子カルテの3要件に違反するんじゃないの?といった感想も持った。なんかすっきりしてない。

こういった時に、適当なガイドラインがあると便利なんですけどね。
ここら辺の話はまた次回にでも。

(注)上ではテキスト情報と書いてますが、データベースから直接データを拾ってきているので、書式情報の取得も可能です。

フォントの種類、大きさ、色あたりまでは完全に再現できてますね。
Mac では、画像を埋め込んだ .rtf ファイルを表示できるアプリが普及していないため(テキストエディットで開こうとしてもできなかった)、画像の埋め込みまではやってませんが、理屈の上では可能です。
→ その後、画像表示などが容易な html ファイルに書き出せるように修正。
例えば、
という画面(のデータ)をデータベースレベルから抜いてきて html ファイルに再構成すると
ほぼ完璧に再現できていると思います。

 

(追記)なお、このソフトは、Save the DolphinS プロジェクトに発展しました。
我々が直接聞いた話ではないが、増田茂(増田ファクトという独自バージョンを作成していた医師)という人が「カルテ記載内容を取り出すのにこんなものは不要。getText で取ってこれる」という主張をしていたようです。
この主張は完全に間違ってます。
getText で取ってこれるのは JTextPane の(プレーンな)テキスト情報のみです。書式情報や、ましてや独自タグの位置や画像までは取ってこれません。
(→ あった。これだ。今はページ自体消したようですが)

また、「WildFly を経由せずに PostgreSQL 内にある dolphin データベースの情報は取ってこれない」のような主張もしていたようです。
これも完全に間違っています。
WildFly と連動していても PostgreSQL 自体は、特に変わりなく通常のサーバープロセスとして動作しているので、適切な接続情報があれば情報は取得できます。(プロセスの意味などを知っていれば間違えないような事柄です。医学部しか出ていない医師ですから、詳しくないのはしょうがないにしても、知らないことをさもその道の専門家のようにいうのは社会人としてどうなんでしょう?)
確かに OpenDolphin が稼働している状態で別のプログラムから情報を保存しようとすれば、スキーマが崩れてしまうことは考えられますが、ここで想定しているのはそんな状況ではありません。
OpenDolphin はもちろん、WildFly すら止まった状態で PostgreSQL から直接 dolphin データベース内に保存してある情報を取得できるかどうか?を(かなり真剣に)検討してわけです。
ユーザーさんの置かれた状況を考えたら、かなり不謹慎で常識のない人の言動のように思えますし、極めて遺憾です。
(上記プロジェクト一同)

(追記2)その後(事業がメドレーに譲渡されて以降)、増田茂はメドレー的には 「OpenDolphin への関与はほとんどない」ということになったようです。
なぜ、オープンソースのプロジェクトで contribution があったり、なくなったりするのかよくわからない部分もあるのですが、「LSC との契約上、著作権表記が与えられていたが、(事業譲渡に伴い契約が切れたため)メドレー的には貢献者としては取り扱わない」ということのようです。
そうだとすると、本来の意味での(コードを書いたという意味での)著作権を彼は有しておらず、契約上持っていたに過ぎない著作権表記権(かなり大雑把にいえば、こちらは金銭的に取得することはできます)に基づいて我々を批難していたということになります。
ちょっとひどい話ですね。

 


 

電子カルテからの患者データ吸い出し -open Dolphinを例に-

再開後、一本目の投稿となります。緊張するなあ。

今回は電子カルテの話。

電子カルテは大変便利なのですが、その実体が、「紙」という物理的な物質に人間が理解できる形で記録されているわけではなく、SSD やら HDD やらといった電子媒体に人間がそのままでは認識できない「情報」という形で保管されているがゆえに、時に問題が生じるときがあります。
ああ、言い回しが難しいか。

例えば、電子カルテシステムの運用が終わった後でも、カルテはその性質からいって一定期間保存(必要に応じて情報の取り出し)しておかねばならず、その期間のシステム形態をどうするかって話です。まさか、現役稼働時のシステムをそのまま維持するわけにもいかんでしょう?

ここらへんの話は、あまり話題にも登らないんですが、現実的には重要だったりします。

(追記)これはその後、厚労省のガイドラインでもかなり明確に言及されるようになりました。
「html などの視認性のいいファイル形式で一覧表示できるようなバックアップシステムを具備するように」という主旨のことが明記されています。
この後でお話しする OpenDolphin の 2.7 系列に関しては、OpenDolphin HTML/PDF Viewer というものがあります。