HorliX/Horos

HorliX 開発の経緯を知る人は、HorliX を紹介するにあたってよく HorliX/Horos などと表記する。
HorliX が Horos の fork だからなのだが、では、HorliX が Horos の改変を全て取り込んでいたかというとそんなことはなく、ほとんどの改変は取り込んでいなかった。

代表的なものが roi-color-rotation-UI で、大元のアイアディアやソースコード自体の提供が Hiroaki-Inomata/air-h-128k-il 名義でなされたにも関わらず、Horos の凝ったコードを取り込むことはしなかった。
Horos のコードの方が見栄えがいいので、周囲は「なんで?」と思っていたのだが、最近になってその理由がわかってきた。
新しいコードが生成する保存形式では他アプリへの互換性も後方互換性も無くしてしまうから、というのがその理由だろう。

大抵のビューアでは、ROI を DICOM SR というフォーマットで記録する。
Horos もそうなのだが、SR の内部的に独自形式を使っていて他のアプリでは読めない。ここでさらに独自の情報を加えてしまうと、古いバージョンの Horos でもこの情報が読めない。
これではなんのための改変なのかわからない。
HorliX 開発陣が選択したのは、この改変を取り込まないこと、つまり、動作時にのみ ROI の色がくるくる変わるだけで、色情報そのものは保管しないこと、だった。
確かにこうしておけば、アプリ間の互換性そのものは保たれる。その後、改変するにしても作業の見通しがいい。

ああ、そういうことだったんですかと答え合わせさせてもらった気分です。

ataraxia
ANN2b

 

Nitrogen の謎

使うばかりではアレなので、HorliX/Horos/OsiriX のソースコードを読む。

早速、AppController(現在でいうところの AppDelegate です)の init メソッド内の以下のところでつっかかる。

AppController.m

[[NSFileManager defaultManager] removeItemAtPath:[[NSFileManager defaultManager] tmpDirPath] error:NULL];

なんだよ tmpDirPath って(笑)。

もちろん、ノーマル NSFileManager にこんなメソッドはなく、おそらくどこかで拡張してんだろうなあと物色したら、Nitrogen というフォルダ(のサブフォルダ)に収められていた。

しかし、なんだろ、Nitrogen って?

Objective-C におけるクラスの拡張(というのだろうか?オーバーライドといっていい)は、カテゴリを使うという手法があるようだ。
カテゴリによって新たにつくられたクラスは、慣例的に「元のクラス+特徴」というファイル名を持つ。

だから、上の例では NSFileManager+N2.h と NSFileManager+N2.m で NSFileManager の拡張機能を担っている。

この N が Nitrogen から来ているのでは?と想像はつくが、なぜ Nitrogen というネーミングにしたんだろうねと疑問に思ったという次第です。

 

医師免許持ちで臨床をまったくやらない人はそれなりの理由がある場合が多い

それほど強く主張するわけではないが、この記事のタイトルみたいなことは医師界隈ではそれなりのコンセンサスは取れていると思う。

もちろん、ガチガチの基礎系の場合、意識的にやってないという人はいる
(それでも当直や老健あたりの診察業務程度ならやっている人が大半だと思うが)。

結論から言うと、キャリア初期に臨床畑に進もうとして果たせず、その後、臨床業務から離れている人は、それなりの問題を抱えている人が多い。

具体例を挙げるとわかりやすいでしょうか。

何ら経験がないのに患者さんの同意も得ずに難度の高いオペを施行して、当然、失敗。さらにそのことを隠蔽、裁判沙汰になっても自分の非を一切認めない医師。(これに近いことはたまにニュースにも取り上げられてますよね)

患者さんとまったくコミュニケーションが取れない医師。(そんな医師いないと思うでしょ? でもいるんですよ、実際。今だと面接でハジかれるとは思いますが)

・・・などなど。

で、こういった医師は、臨床現場の主流からオミットされ、いつの間にか消えているというか、行方知れずになっている場合が多い。

ところで、先日、フェイザーの方々が、こんなコメントの投稿などに関して注意喚起の記事を公開した。

著作権法違反が疑われるコメントの掲載はできかねます

細かいことには触れませんが、ここに至るまでに警告のようなことは発していたのに小林さん完全無視でしたから、しょうがないと言えるでしょう。

私も某MLに入会しようとしたとき、管理人の方から「小林慎治は喧嘩売るような感じできますから、気をつけてくださいね」とアドバイスをもらったことはある。

快く思っていなかった医師は多かったようですね。

 

ANN2b

(追記)これは某掲示板の書き込み。
出どころが出どころなので信頼性に乏しいし(まず、なにより「医者の資格はない」というのは明らかな誤り。愛媛大学第一内科に所属していたれっきとした医師)、この「小林慎治」が件の小林さんと同一かという保証はないんですが、医師-患者の信頼関係ができていないと、こういった感じの悪評立てられますね。(実際は、単なるちょっとした行き違いで患者さんが逆上して、腹いせに勢い任せで書いた、なんてのが多いんですが)

精神科なんて、こんな話は山ほどあるんで、いちいち気にしてたら身が持たないです(苦笑)。

(追記)これはある方tweet 。真偽のほどはわかりませんが、こういうことは医療現場ではよくあります。


それはともかく、旦那さんが受けた治療に大変深い憤りと不信感を持たれていることは伝わってきます。
このような事態を未然に防ぐのも医師の務めだと私は思っております。

Apple Watch の心電図アプリの計測データを外部に取り出す

iPhone の準備が整ったところで Apple Watch も導入。
6 シリーズの Nike モデルにした。


アルミスペースグレイの筐体に黒系のバンドにしたので「ちょっと重くなるかな?」と心配していたが、あまり強い自己主張なくすっきりとまとまっていてこれはこれでアリだと思うようになった。

ついでで書いておくとバンドはかなり容易に変えられるし、文字盤なども画面操作一発で変更できる。だから、購入アイテムの選択肢に迷ったとき、まず決めるべきは、シリーズ(モデル)筐体の材質と大きさと色だ。

 

それでは、本題。

私の興味の中心はやはり心電図アプリなんだが、その意義とか測定方法などは色々な人が様々なやり方で情報発信しているので、ここでは割愛。

Apple Watch で取得したデータは iPhone に送られるのだが、そのデータの取り出し方に関して書く。

手軽にできる方法は次の二通り。

PDF で書き出す

これはよく知られた方法。
ヘルスケア→心電図(ECG)→ PDF に書き出したいデータを選択
で、この画面になる。

「医師に渡すためにPDFを書き出す」をタップして適当なプリンタから打ち出すか、AirDrop などで Mac に PDF ファイルとして送りあとはファイルとして保管すればいい。

気の利いた医療者ならば、医療システム(電子カルテやPACSと呼ばれる画像サーバなど)のどこかに保管してくれる(はず)だ。

電子カルテにこのように貼ってもらえれば、心電図アプリも本望だろう。

 

PACS や画像ビューアなどにも「画像として」取り込むことはできる(後述するように「データとして」取り込む方がメリット大きいんですが)。

ちなみに PHR (Personal Health Record) という概念があり、今後は日本でも自分の医療データは自分で管理するという時代になると言われている。
今のところ、興味深い試みはあるもののなかなか実現できそうな感じがないんですが・・・。

ヘルスケアデータ全体を zip ファイルで取り出す

これはあまり知られていないかもしれないが、iPhone 内に記録されているヘルスケア系のデータを完全な形ですべて取ってこれるので、以下の方法は有用。

ヘルスケアアイコンをタップして概要のページが出てきたら、画面右上のユーザーアイコンをタップする。


すると次の画面に遷移するので、「すべてのヘルスケアデータを書き出す」を選べばよい。


データをどこに送るか iPhone が訊いてくるので、適当に選ぶ。
たぶん、一番簡単なのは AirDrop で Mac に送ること。
送受信が上手くいけば、Mac の「ダウンロード」フォルダ内に「書き出したデータ.zip」が送られているはずなので、これを解凍する。
apple_health_export フォルダがあるので、これを「書類」あたりに配置しておけばいいでしょう。
なお、心電図データは apple_health_export -> electrocardiograms フォルダ内に CSV ファイル形式で記録されています。
この方法のいい点は、(おそらく)生データが取得できるところ。

「データとして」情報が取って来れると2次的な利用もしやすくなる。
実は apple watch は心電図アプリを使って計測を始めると、生体からの電気シグナルを 1 秒間におおよそ 512 回程度サンプリングしており、そのデータを直接加工することができる。
例えば、


などというデータがあった場合、(この場合は)「S波が歪んでいるのでもうちょっと詳しくみてみたい」ということがある。
これは、適当なプログラムを組めば、以下のように実現できる。
(python という言語を使用。コードはここを参考にさせてもらった)

1550 〜 1650 回のサンプリング値のみを表示させているので、波形形状がより詳細に描かれているのがわかると思う。

もっとマニアックな方法

実は、上記二つ以外にもやり方はあるのだが、プログラミングまで踏み込まないと実現できないのでここでは説明は省略。

 

air-h-128k-il

 

Horos Mobile

kindle 本は iPad で読む派だったのだが、バッテリーがへたってきたため、新しく iPad Air を導入。
ついでで Horos Mobile というアプリを落とす。
ここらへんが Horos らしいなと思うのだが、操作画面になかなかたどり着けない。
あと、これサブスクで契約しないと実質的には使えませんかね。

ちゃんと使えばそれなりの機能持っているのかもしれないが、これならシンプルな OsiriX HD の方がいいかな。

 

猪股弘明
医師:精神科(精神保健指定医)
Horos: contributor
OsiriX(OpenSource Version):contributor
HorliX: developer