こんなの見つけました

Appleのファイル構造に興味を持つようになりました きっかけは HorliX Dataというフォルダを探していて、それが一般に分からない場所に設定されていることを見つけたことにあります

そして、サンドボックス (SandBox)という一般から隠蔽され、自由にアクセスできない領域について知りました やはりこれも Appleがプログラマ向けに公開している文書なのですが、内容難しいですねえ でも、何処かで見た xml文書構造の例を発見しました

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Move</key>
   <array>
      <string>${Library}/AppSandboxQuickStart/MyConfiguration.plist</string>
      <array>
         <string>${Library}/AppSandboxQuickStart/MyDataStore.xml</string>
         <string>${ApplicationSupport}/AppSandboxQuickStart/MyDataStore.xml</string>
      </array>
   </array>
   <key>MigrateScriptsForApplication</key>
   <string>AppSandboxQuickStart</string>
</dict>
</plist>

あれっ、この構造 何処かで見ましたよね そうです albumファイルの構造です あひゃーっですね

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (6)おまけ

先の (5)の記事を書いていて馬鹿なことを考え試しました それは「同じ Apple IDであれば、何回かは別の Macに downloadして走らせることが通常できる」

だとすれば、「やはり Apple IDでインストールする iPadにも同様にインストールできないのか?」

という妄想です

それで試して見ましたが、そもそも iPadに Apple Storeでは HorliXは検索しても出てきません やはり Apple側も macOSと iOSは兄弟のようなものであっても、Application側でプラットフォームを識別してインストールできるかできないかを判定しているのですね

当たり前じゃない いやいやどんな小さな疑問でもそれが前に進んでいく動機となるのですよ

あととても重要な指摘です DICOM dataというのは重要な個人情報です ですから、やはり cloud上にそのままの形式のファイルを uploadするのは問題あるかと思います また、個人の MacBook上に蓄えている場合、その個人MacBookのログインに関しては、慎重にして下さい 簡単なパスワードだけでは危険です

もっとも DICOM Fileの中から個人情報データのみ削除すれば良いと思います 具体的には、生年月日、患者氏名、患者ID この3つを削除すれば良いと思います

DICOM formatでは、.XA ないし .dcmという拡張子のついたファイルから構成されていますが、この一つのファイルの中に、これらの個人情報が全て書き込まれています ちなみに、それらの情報は単なるテキスト・データですので、テキスト・エディタで開けば簡単に読むことができます

ちなみに、僕の MacBook Proの中の一つの .dcm fileを強制的にテキスト・エディタ VS Codeで開いてみましたところ、下記のような xml formatで出力されました

<dict>
  <key>albums</key>
  <array>
    <string>MassyCTO2012</string>
  </array>
  <key>patientID</key>
  <string>Dr SAITO Dr CHEVALIER</string>
  <key>patientUID</key>
  <string>ZEI...A, 40 YEARS OLD  CTO 2012-DR SAITO DR CHEVALIER-********</string>
  <key>patientsName</key>
  <string>ZEI...A, 40 years old  CTO 2012</string>
  <key>stateText</key>
  <integer>0</integer>
  <key>studyInstanceUID</key>
  <string>1.3.46.670589.28.26540597965520120310121759799988</string>
</dict>

この症例が、僕が Chevalier先生を助手として Massy, Franceの CTO courseで治療したということが一発で分かってしまいますね もちろん、それぞれの .XAや .dcmファイルの大部分は圧縮画像データである バイナリで構成されていますので、その部分はテキスト・エディタでは読むことができません

従って、簡単なスクリプト・プログラムを書いて、個人情報部分に ****** などの文字を書き込めば確実に個人情報が削除されますので、たとえあなたの MacBookが盗まれたとしても個人情報漏洩、という観点からは安全となります

簡単なプログラムです その内書いて公開しますね 今はとりかかる時間がありませんので失礼

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (5)HorliXはどのように入手するのか?

HorliXのアイコン – カッコいいね

HorliXの白い天馬のアイコン とてもカッコいいですね さて、一番肝心なことを忘れていました

HorliXはどのように入手するのか? とても簡単です

Macの左上隅の Appleマークから App Storeを選択します そして「検索窓」で HorliXと打ち込みます

そうするとこの様にすぐにヒットしますので、HorliXのアイコンをクリックすれば良いのです あっ、僕は既に10,000円で購入していますので、「開く」という選択ボタンになりますが、あなたの Apple IDでこのソフトを未だ購入しておられない場合には、10,000円のボタンが出てきます 何れにしろ OsiriX MDの二年間ライセンスが 100,000円超と比較するとものすごい安価ですね

ちなみに、隣の DCM Viewerというものがどんなものか良く知りません 開いてみるとこんなでした これは DICOMファイルの色々なことの確認用のソフトであり、いわゆる Viewerとしては動画も見れないものだと思います 胸部レントゲン写真などの静止画精査用のものですね

さて、ここで疑問です 何故  HorliX Dataはログインした個人の /Users/*****/ 配下、つまり ~/ というフォルダの下に無いのでしょうか?

ここからは僕の推測ですので余り信じないで下さいね 見方を変えれば これって、iPadや iPhoneのように MacOSではなく iOSのようにも見えないですか?

そもそも iOSはもともと Unixの派生である OSXという現在の macOSの前身から派生したものです ここらについてはここ とか ここ を読んで下さい 難しい記事ですが、特に後者は秀逸です 流石に Appleが書いた記事ですね

この iOSのファイル構造 この中に /Library/ Container/ というディレクトリがありますが、これって 要するに HorliX Dataが入っているディレクトリですよね

これはこれまで macOSのデータなどは /Application/ というフォルダ (= ディレクトリ)に入ってきたのと比べると随分と異なりますね 何故そうなっているかは知りません しかし、言えることは 確実に iOSに近い、ということです

何でしょうかねえ やはり securityの関係でこうなっているのでしょうねえ

またこの話題はここまでにしておきましょう 真相は Appleしか回答できない筈ですので・・・・

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (4)HorliXに読み込まれた DICOM dataはどうなっているのか?

さてここで疑問があります OsiriXのデータはこれまで「書類」フォルダ つまり Unixの表示であれば ” ~/Documents/”というフォルダに “OsiriX\ Data”という名前で保存されていました

そして HorliXに読み込んでしまえば、この OsiriX\ Dataというフォルダは削除しても大丈夫なのです

あれ? 肝腎のDICOM dataは何処に行ったの? バックアップするにはどのフォルダをコピーすれば良いの? そんな疑問と不安に苛まれませんですか? でも大丈夫安心して下さい 僕が解明しましたのでその情報をここで公開します

でもここから先はターミナルを扱える中級者以上が対象です

ずばり DICOM dataは以下のフォルダに存在します それは、

~/Library/Containers/info.phazor.HorliX/Data/Documents/HorliX Data” という名前で

~/Library/Containers/info.phazor.HorliX/Data/Documents/”というフォルダ内に存在します

つまり意外や意外 通常一般人がアクセスする「書類」、「デスクトップ」、「ピクチャ」あるいは「ミュージック」というフォルダには存在しませんです しかも、一般人も時々アクセスする「プリケーション」フォルダにも存在しないのです!!!

どうやってこれが分かったのですか? と疑問に思いませんでしたか? それは自分自身の Unixの知識で解明したのです OsiriXのデータが OsiriX\ Dataというフォルダにあるのであれば、HorliXのデータは HorliX\ Dataというフォルダにあるだろう そのように当たりをつけて検索しました もちろん Unix commandです

$find ~/ -name HorliX\ Data

これでHome folderから検索しましたが出てきません ということはホーム・フォルダには存在しないのですね!!!! 通常個人ファイルはそのユーザーのホームに存在するのですが、そうなっていないのです!!! これは驚愕の事実でした

仕方ないので、検索範囲を拡大したのです

$find / -name HorliX\ Data

このようにして Mac全体から検索かけたのです とても時間のかかる検索であり、ずらずらと大量の結果が出力されますが、その中に先の

find:/Library/Containers/info.phazor.HorliX/Data/Documents/HorliX Data

という出力を発見しました 何とこんなフォルダに存在しているのです これは驚きです

ここまでの解明された知識を基としてこの重要なファイル群 (僕の場合、何と 1998年 9月28日のPCI症例データから保持しているのです PCI症例といっても、これまで何万人の治療を行ってきてその中でも印象に残っている症例や症例報告に用いた症例、あるいは外国でのライブで行った症例などの特別な症例だけです 何れにしても、これは僕の人生の一部 何と20年間の僕のカテ人生、といっても本当の僕のカテ人生は、1976年に始まりましたので、40年間余りのカテ人生の半分近い人生 それが詰まっているのです・・・・ 涙 涙 うわーあんっ)をバックアップするにはこのようにします

たとえば外付けHDDの名前を BACKUP2TB とかつけたとするとまずは、この HDDの中に HorliX\ Dataという名前のフォルダを作ります

$ls /Volume/

とこのようにすれば、外付けディスクの名前が分かります この場合、

BACKUP2TB/      Macintosh HD0/     com.apple.TimeMachine.localsnapshots/

にように出力されます これでこの外付けHDDが BACKUP2TBという名前でマウントされていることが確認できますので次にフォルダの作成です

$sudo mkdir /Volume/BAKUP2TB/HorliX\ Data

これでBACKUP2TBディスクの中に HorliX Dataというフォルダが管理者権限でできました でもこれだけではコピーできません 何故ならば権限が与えられていないからです つまり所有者は管理者 rootだからなのです

$sudo chown ***** /Volume/BACKUP2TB/HorliX\ Data/

とすることにより私 つまり *****がこのフォルダの所有者となりました これで初めてバックアップ可能となります その方法は rsyncという Unix commandを使用するのです

$rsync -av --delete /Library/Containers/info.phazor.HorliX/Data/Documents/HorliX Data/ /Volume/BACKUP2TB/Horlix\ Data/

と打ち込むのです これで全データがバック・アップされます また、新たなDICOM dataが HorliXデータベースに読み込まれていくと思いますが、時々上記の rsyn commandを走らせば、新たな DICOM dataが追記されていき、もう HorliXより削除したデータは backupの /Volume/BACKUP2TB/から同様に削除されます 便利ですねえ

どうですか? 少し難しかったですか? 何ならばシェルスクリプト書きましょうか? シェルスクリプトであれば、自動的にできますもんね

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (3)OsiriXのアルバムを読み込む

さて、OsiriXを使用し、たくさんの DICOM dataを収集していれば、膨大な量のデータが SSD内にあることと思います 僕の MacBook Proの場合、なんと 420GB以上存在しました

この膨大な DICOM画像・動画を患者さんの名前や検査日で順番に並んでいるだけではなかなか 後からどの患者さんだっけ? などと分からなくなってしまいますよねっ

もちろんコメント欄に書き込むのは最低必要ですよね このコメント欄に書き込むというのは何をしているかと言えば、実は DICOM dataという主として画像データ + 各種撮影条件などのデータ (これらは全てビット列です)の中に、コメントというテキスト・データを挿入しているのです

このようにコメント欄があります もしもコメント欄が無ければ、例えば「患者氏名」と書かれた欄を右クリックすれば以下のようになりますのでチェックをつけたり外したりして下さい

はい簡単ですね そして現れたコメント欄に自由に説明を書き込んで下さい 僕の場合後で分類しやすいように たとえば CTO(慢性完全閉塞)に対するPCIの場合にはコメント欄に 「Retro RCA-CTO 三本目の中隔枝経由」とかのようにわかり易い説明を書くようにしています

でもこれだけでは患者さんデータが検査日などでソートされた順番に並んでいるだけで、たとえば「CTO retrograde」の全員を見たい、とか、あるいは ▲□病院で何月何日にプロクタしに行った症例の CT data + XA data + Echo dataをわかりやすく入れておく という時に不便です

そんな時に役立つのが OsiriXの「アルバム」という分類機能です 実はこの実態は DICOM dataではありません 単なるテキスト・データであり、SQL databaseで管理されています通常の OsiriXでは一番左のカラムです

OsiriXから HorliXにデータを Importしただけではこのアルバム情報が移行していません これを移行するには以下のようにします まず OsiriX側で

上の画面のように、ファイル -> アルバム -> アルバムを保存 と選択します そうすると以下のようなダイアログが出てきます

これで何処に保存するか この場合には デスクトップに保存します それを指定します ちなみにファイル名はデフォルトで、上の図のように DatabaseAlbums.albums となります ちなみにこのファイルの中身は下の図のようにアルバム情報を記載した xmlフォーマットのテキストファイルです

まあテキストファイルというのは可搬性に優れたフォーマットですから、ほとんど全てのアプリで読み込みことがですますね ちなみに HorliXからは

このように、ファイル -> Albums -> Import albums とすることによりファイル選択ダイアログが出てきますので、先程のファイル DatabaseAlbums.albumsというのを選択すれば、アルバム情報が復活します めでたしめでたし

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (2)いよいよ HorliXに DICOM dataを読み込み

これも以前記載した通りなのです 簡単ですよ 今回は絵付きで紹介しますね

まずは HorliXのメニューから「ファイル」をクリックします そうすると次のサプメニューになりますこのサブメニューから Import を選択します そうすると次のサブサブメニューになります

はいこのサブサブメニューから Import Filesを選択します そうするとファイル選択画面になります

これで僕の場合はこの画面で OsiriX Dataというものを選択しました(「開く」ボタンを押す)

これにより HorliXが OsiriX Dataというフォルダに格納されている全DICOM dataを読み込みます 簡単ですねえ

実はこうして DICOM dataが HorliXに読み込まれれば、HorliXの内部に DICOM dataは全て取り込まれ、もう OsiriX Dataというフォルダのデータは不必要となります もちろん、その後も OsiriXをライセンスが切れるまで使い続けるのであれば、残しておかねばなりませんが、もうライセンス切れそうな場合にはこの段階で OsiriX Dataフォルダは不要となりますので、削除して良いです 削除すれば SSDのスペースが随分と空きますよ ちなみに削除するには OsiriX Dataというフォルダを「ゴミ箱」にドラッグ・ドロップすれば良いのですが、これはあまりにも「素人」っぽくてカッコよくないですよねかっこ良いのはやはりターミナルを使用して

 

$rm -rf ~/Documents/OsiriX\ Data/

というコマンドを打ち込むことですよっ ちなみに、rmというのは「削除する」という Unix commandであり、-rfというのは rmコマンドのオプションで、下の階層までいちいち確認せずに削除するという意味です

~/というのは現在使用中のユーザーの「ホーム・ディレクトリ」を意味し、その中の Documents/ フォルダ(=書類フォルダ)にある Osirix Dataというフォルダを削除せよ と命令しているのです

あっ、念の為 ターミナルで打ち込む時には単なる空白(半角のスペース)にも意味があるので、それをエスケープせねばなりません このためには、 OsiriX\ Data とせねばならないのです ちなみに Macで「\」というバックスラッシュをどのように打ち込むかご存知ですか?

実はキーボードの「¥」というキーと Optionキーを同時に押せばバックスラッシュを打ち込むことができるのです はい得な知識でしたね

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (1)はじめに

皆様方 以前より書いていますように、Macで走る高機能DICOM Viewer/Analyzerソフトとして HorliXというものがあります もともと OsiriXの Open Source Softwareから派生した HorliXを folkして日本人が開発しているものです

もとがあの高額(2年間で10万円以上のライセンス料)な DICOM Softwareである OsiriX (オザイリクス と呼ぶらしいですよ)の主要部分を受け継いたものですから、基本的な部分はしっかりとしています それを日本語化し、しかも OsiriXは未だ 32 bits applicationなのですが、完全に 64 bits化したものなのです

難しい話ですが、ほんの数年前まで MacOSは 32 bits OSでしたが、現在では完全に 64 bits化されています もちろん現在の Windows10も 64 bits化されています これが何を意味するかと言えば、アドレス空間がほぼ無限大になったことを意味し、従ってこの森羅万象の世界をほぼ完全に表現できるようになったということなのです ただ、32 bits applicationを 64 bits化するのはそんなに簡単なものではありません C++ compilerでコンパイルし直し、リンカーも変わりますし、色々なことを調整せねばならないのです 確か少し前まで Microsoft Officeも 32 bits applicationだった程なのです

そんな訳で

OsiriXで蓄えた DICOM dataをどのように HorliXに移すのか?

これは以前のブログ記事でも紹介しました 普通に OsiriXを Macにインストールすると、ファインダー上では「書類」と書かれたフォルダの中に”Osirix Data”というフォルダが自動的に作られ、そこの中に全ての DICOM dataが蓄えられます

ここで DICOM dataというのは何かと言えば、まずは .dcmという拡張子のついた撮影ごとの画像データ (この画像データは Huffman Code Compressionという非データ欠損圧縮法によりだいたい 1/2の容量に圧縮されています)、そして .dcmファイルを束ねて一人の患者データとしてまとめている SQLデータベース (open softwareの sqllightというソフトを使用している)、あと色々な細かい情報なのです

もしも あなたが、Mac上で ターミナルという端末ソフトを使用されている中級者以上の方でしたならば

## 以下のコマンドを打ちます $ というのは bashなどの端末の待受文字です

$find ~/ -name OsiriX\ Data

## ここで OsiriX\ Dataというのは 実は画面上では "OsiriX Data"というようにスペースが含まれているのですが、端末ではこれをバックスラッシュ + spaceというふうにエスケープせねばなりません
## 当然ながら findというのは Unix commandの一つでここでは OsiriX Dataという名前のファイルを検索しています
## ここで端末の bashがたくさんの可能性の回答を出しますが 通常はこの回答の中に次のような出力があります

find: /Users/*****/Documents/OsiriX Data/

## はいこれでドキュメント・フォルダ(「書類」のことです)の中に OsiriXの DICOM Dataが蓄えられていることが分かります

ちなみに上記の中で/******/というのは Macを初回立ち上げた時に必ずユーザー名を登録するのですが、その名前であり、その名前がわからなくなれば

$ls -l /Users/

と打ち込めば

Guest/     Shared/    ******/

のように出力されますので同定できますね

我ながら役立つこともあるのですね

2014年にこのブログに uploadした Qtでの DIB class に関する C++のコードに対して それから 4年経ってコメントがありました  Thanks というものです これは外国からのコメントでした

正直この頃は Qtで何とか C++により DICOM Viewerを作ろうとしていたのでしょうね いやあ その頃のことは忘れてしまいました その後、僕は急速に Script言語による Web programmingに傾倒して行き C++なんて忘れてしまいました ああ

でも Internetのつながりとは大きいですね

HorliXの少しの tips

さて皆様方は AppleStoreから HorliXを購入しましたか? OsiriXは二年間で 10万円以上のライセンス料が必要であり、二年ごとに更新が必要です 特に問題なのは、Logic Board上の固有番号を購入OsiriXは読み込み、これによる完全なソフトの copy protectがされていることです

不正なコピーを防ぐ目的ではこれは正しいと思いますが、しばしば Macが壊れるのです その時にはほとんどの場合、Appleにより Logic Boardそのものが新品に交換されるのです そこに OsiriXをインストールして以前の serial No.を入力しても二度と作動しません これが何を意味するか? つまり再度 OsiriXのライセンス料を購入せねばならないのです

こんなの馬鹿げています 本当にひどいですよね 他のソフトは殆どの場合そのメーカーのサイトにアクセスして ID/PWでアクセスすればライセンスが取得できません もちろんその時にはインターネットでつながっているマシンは同時には一台のみしか作動しないようになっています これがまともなコピープロテクトだと思います その点 OsiriXは最悪です!!!!

という訳で皆様方 HorliXにしましょう AppleStoreに行って、HorliXで検索すれば一発で出てきます

さて色々と分からない部分も多いでしょうね 僕がこれまで経験した tipsです

  1. OsiriXのデータを読み取るには?
    1. OsiriXのデータは通常は「文書」フォルダに OsiriX Dataという名前のフォルダにあります
    2. これは ターミナルからはたいてい $ls -l ~/Documents というコマンドを叩けば Osirix\ Data という名前で確認できます
    3. HorliXでは ファイル -> import でこれを読み込めます
  2. Albumを読み込むには?
    1. Albumは便利でありまた分類するのに重要ですよね まず OsiriX側で ファル -> アルバム -> アルバムを保存 とメニューをたどりどこか 自分は デスクトップに 書き込みました 僕の膨大な DICOM fileでもアルバムのサイズはたかだか 800KB程度でしたのでメールでも送れますね
    2. ついで、このアルバムを HorliX側では ファイル -> Album -> import albums で読み込みます
    3. これで完璧に OririXのアルバムも HorliX側に読み込むことができました めでたしめでたし
  3. HorliXのデータはどこにあるの?
    1. これは Unix/Linus commandsをターミナルで自由に打ち込めねばなりませんので良く分からない人は手を出さないで下さい データなど重要なファイルを壊して二度と Macが立ち上がらなくなる危険がありますので
    2. ターミナルで通常の Unix commandである findを用います
    3. $find / -name HorliX\ Data
    4. このコマンドにより大量のリストが出てきますが、その中にあります
    5. このパスを記録しておけば、HorliX Dataをどこにでもコピーできますね

以上 HorliXの Tipsでした でもHorliXのメニューまだ完全には日本語化されていませんね あと、ペインが左右に拡大できないバグもあります 作者の方には改善をお願いしましょう

HorliX日本国内実質的な第一号ユーザーとして – (2)

今 San Juan空港で Houston行きの便を待っています あと少しで出発です この空港には何と Free WiFiが無く、スマホからアクセスしています

さて、少しこのサンファンのことについて書きましょう 何百年か昔、コロンブス達がスペインからカリブ海に押し寄せてきました そしてあっという間に占領し、このサンファンに砦をつくりました 今ではその砦は保存されています 見た目は美しいのですが、実際には何万という人々の命が失われたのでしょう

第一号砦
サンファン砦
サンファン砦

さて HorliXですが、良いですよ OsiriXで溜め込んだ数十GBの DICOM dataを問題無く読み込め、再生できています 一つ気づいた点がありましたが、これは開発者の Air様に問い合わせています ところで Air様が僕が第一号ユーザーであることを公開して下さいました とても光栄で嬉しいことこの上無しです

さてこのプエルトリコには医科系大学が 3つありますが、カテ室もその3つのみです Interventional Cardiologistsは全土で 40名ぐらいしか存在せず、しかもその全員が冠動脈インタベという訳では無いそうです この方たちが集まって今回 Sheraton Hotelで学会が開催されました とても heated discussionが繰り出されるのですが、スペイン語で早口で言うので良く分かりません

Grovas先生とのとっておき写真

僕はこの学会で30分ずつ 2演題の講演をしました それが昨日土曜日のことです そして今朝 日曜日の 4:30AMにホテルを出てこのSan Juan空港で今 6:00AM前 Houston行きの便を待っています 早く日本に戻りたいものです

でも、正直この生涯で Puerto Ricoに行くとは思ってもいませんでした 世界が広がりました

なんにせよ Puerto Ricoはとても良い国です 日本で言えば 丁度「石垣島」という雰囲気でしょうか

カリブ海に面した美しいレストラン