Save the DolphinS -OpenDolphin データ抽出ツール・プロジェクト-

久しぶりに電子カルテ OpenDolphin-2.7m(実質的には OpenOcean 0.0.1 と一緒)を臨床現場に投入するかもしれないということで、データ抽出ツールも数年ぶりにテスト稼働させる。
開発言語である Java のバージョンも上がっているし、まるっきり動かないかと思っていたら、そうでもなかった。

細かいところではもちろん不具合はあるのだが、データベース(PostgreSQL)に永続化されているカルテ記載内容を OpenDolphin を経由せずに取り出してくれた。
ちょっとほっとした。

なんで、こういうものが必要なのかは一般の人にはわかりにくいと思うが、電子カルテには縛りがあるためだ。具体的に気にかけておくべきは

・カルテ自体に保管義務がある
・電子カルテには3要件(真正性・見読性・保存性)が求められている
・3要件自体はガイドラインで罰則はないが、e-文書法(電子文書法)が適用される場合には罰則の対象になる可能性がある

の三つくらいだろうか。

ここらへんの解説は『OpenDolphin と電子カルテの3要件とメドレー』あたりを読んでみてください。

3要件のうち面倒なのは「真正性」というやつで、

電子カルテのデータを例えばデータベースに保存する場合、「誰が」書いたのか、その後「いつ、誰が」改変(あるいは消去)したのか、わかるような特別の仕組みをつくりこんでおかなければならない

とちょっとややこしい。
たいていの場合、ユーザーにシステム上の記録の「消す」作業に制限をかけることでこの条件をクリアしていると思う。こうしておくと、電子カルテ画面上である表現を削除したとしても、削除する前のバージョンは残っているので、データベース上にはこの一連の経過が残ることになる。
システムレベルで「上書き保存」ではなく「別名で保存」を採用しているといえば伝わるでしょうか。

だが、こういう作り込みをしてようやく「真正性」をクリアしたとしても、問題はまだ終わりではない。

何か問題がおこって、例えばカルテ開示を求められたような場合、そのカルテの(日付上は)最新の日時のバージョンを提示してもそれだけでは厳密にはカルテ開示したことにはならない。
想像つくかと思うが、医療者側に都合よくカルテ記載内容が書き換えられているかもしれないからだ。
この場合は、正しくは、通常使用では見えない状態になっている「消された表現」の部分も提示する必要がある。

実際、上の例でもこの患者さんのカルテは3件だが、途中経過版を含めると11件になっている。

MML 出力(という外部出力機能。ただし MML 規格はほとんど普及しなかった)を引き受けるサーバがない状態での OpenDolphin は、果たして電子カルテの3要件を満たしているのか?という疑問は実際よくあがっていた。

最近(2021 あたりからか?)では、保健所の個別指導あたりでもこの程度の開示は求められることがあるので、もはやこういった機能(途中経過版の抜き出し・修正履歴の出力など)の実装は必須だろう。

ローカルで稼働する OpenDolphin は、商用での開発が止まったため、自力運用する場合には、ここらへんの配慮をする必要があるのだ。

 

air-h-128k-il

(追記)データ移行ツールですが、出力形式を html・PDF にも対応させました。

ですが、これは保管・閲覧向きだと思うので、移行ツールから独立させ、OpenDolphin HTML/PDF Viewer という別のソフトとしました。
開発状況などは『OpenDolphin HTML/PDF Viewer プロジェクト』をご参照ください。

(追記2)Save the DolphinS としているから、一部ユーザーから全ての opendolphin 派生プロダクツを対象としていると思われていたようだ。
そんなことはない。
2.7 系列は基本上のアプリでうまくいくと思うが、それ以外はうまく動くかどうかはあやしい。
当たり前だが、データベースの構造自体が異なり、そのソースコードも明らかにされていないようなバージョンでうまくデータの抽出ができる保証はないからだ。
例えば、いわゆる増田ファクトは、動作保証外。
そもそもテストすらできないし、開発者とされていた増田茂自身がこの手のソフトは不要、と言い切っていたので、積極的に対象とする必然性もないでしょう。

 

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

 

SIM なしでも iPhone 自体はアクチベートできるし、eSIM のみでも回線は開通できる -楽天モバイルを例に-

スマートフォンはアンドロイドを使っていたのだが、アップルにデベロッパー登録している身としては iPhone くらいは持ってないとあかんかなと思い、遂に数年ぶりに iPhone 導入。
サブ機として利用するので回線は楽天モバイルにした(現在、絶賛1年間無料キャンペーン中)。
世間的には ahamo や povo が話題をよんでいるのだが、
・データ通信なんて3Gも使わない
・都心部のみで通話できればいい
という人にはけっこう使い勝手のいい料金体系になっている。


なお、今回は設定を若干楽にするため SIM も物理 SIM はやめて eSIM というカメラで QR コードで読み取って設定するやつにした。

ところで、ネットでは
・iPhone は(物理 SIM でも eSIM でも)SIM がないとアクチベートできない
とか
・iPhone は eSIM のみでは回線は開通できない
みたいな記事をよく見かけた。

もちろん、両方とも間違い。

初期化された状態の iPhone の電源をオンにした後、Mac や WiFi などを経由してアップルのアクチベーションサーバと通信できさえすれば iPhone 自体はアクチベートできる
電源投入時にネットに繋がっていなくても iPhone はご丁寧にも「WiFi に接続してください」や「Mac とケーブルで接続してください」といったガイド画面が出してくれるので、その指示に従っていくだけでいい。

(まずは、iPhone 自体を SIM なしでアクチベートする)

いったん iPhone 自体がアクチベートされてしまえば、SIM の設定はその後でもできる。もちろん、eSIM のみでも回線開通は可能だ。
楽天モバイルの場合は、回線開通の方法や専用通話アプリ(これを使うとかけ放題になる)のインストール方法などが書かれた冊子が送られてくるので、その指示に従えばここら辺の設定はそれほど面倒ではない。

Rakuten Link という専用通話アプリの通話品質も少なくとも横浜や東京23区内では使えるレベルにはあると感じた(三大キャリア並とは言ってない)。

なお、Rakuten Link に関してもうちょっと詳しく知りたいという人は

などをご覧ください。
現状での実装の質はひとまず置くとして、RCS(Rich Communication Services)という国際規格に乗っ取ったアプリです。アヤしくない。

 

通話サービスエリアの状況を見ると(特に)山間部では微妙(下の図は楽天モバイルサイトより2021年2月15日取得)。


(濃い赤が自社回線によるエリア。ピンクが au や docomo から借りている回線によるエリア。青が2021年夏までにサービス提供できるエリア)

楽天モバイルをメイン回線で使うのはまだちょっと無理があるかもしれないが、都心部で割り切って使う分には問題ないでしょう。

 

(環境)
iPhone 12 (SIM フリー)
楽天モバイル UN-LIMIT VI
SIM: eSIM

 

air-h-128k-il

? 楽天モバイルでは iPhone12 は動作保証外らしいので、ご利用は自己責任でお願いします。

 

最近の iPhone/iPad の「プライベートアドレス」がわかりにくい件

スマフォ・タブレレットなどのデバイスをセキュリティに配慮して MAC アドレス制限つきのルーターに接続することはよくあると思うが、最近の iPhone/iPad だとルーターにそのデバイス固有の MAC アドレス(Media Access Control address。74:8F:3C:XX:XX:XX みたいなやつ)を登録したのでは繋がらないようだ。

最初、この仕様変更を認識しておらず、当然、接続できず。
「あれ、パスワード誰か変更した?」と訝しがりながら何回かパスワード(もちろん正しいもの)を入力した。
当然、無駄な結果に終わりましたとさ。

これはおかしいとネットで調べてわかったことなのだが、最近の iOS/iPadOS は、ネットワーク毎に本来の MAC アドレスとは異なる MAC アドレスを生成してルーターに接続するようだ。

だから、デバイス固有の MAC アドレスをルーターに登録したところでデバイス自体は MAC アドレスを偽装?しているので、ルーターはそのデバイスからの接続要求をはじいてしまう。

また、紛らわしいのは、apple は新たに生成されたアドレスを「プライベートアドレス」と呼んでいるところだ。
ローカルの IP アドレスではないってのが要注意ポイントでしょうか。

解決策は、「プライベートアドレス」の方をルーターに登録すればいいようなんだが、「プライベートアドレス」自体を使わないという選択肢もある。

やり方は、以下の通り(iPad のスクショで説明)。
「設定」画面で wi-fi の項目を選んでネットワーク一覧を表示させる。ここで対象とするネットワークの i マークをタップ。


すると画面遷移するので、


「プライベートアドレス」のボタンを横にスライドさせてオフにすれば、この偽装 MAC アドレス機能?を使わない設定になります。

 

air-h-128k-il

(追記)android も 10 から、「MAC アドレスのランダム化」がデフォルトになったようだ。もちろん、この機能をオフにして使うことは可能。ただし android 端末は機種が様々なので、その画面上での操作がやりにくい。もしこの機能を切りたければ、試行錯誤するかネットでまめに情報を探すしかないだろう。