このページのコードが起動しませんでした。

index.htmlをフォルダから直接開くと、ブラウザがJavaScriptモジュールを読み込めません。そのため検査画像を選んでも何も起きません。フォルダはhttpで配信してください。

powershell -ExecutionPolicy Bypass -File serve.ps1

そのうえでhttp://localhost:8080/を開いてください。

DICOMビューア|ブラウザで動くDCMファイルビューア

CT・MRI・レントゲン・超音波を、ウィンドウとヘッダーと計測つきで。

言語: 日本語
ソースを見る
検査画像はブラウザー内で処理されます。処理のためのアップロードはありません。

検査画像の読み込みとデコードは、ヘッダーも画素もウィンドウも計測も、すべて手元のブラウザが行います。このページの向こう側には診療情報を送る先のサーバーがそもそも存在せず、ここにあるどれかが送りたがったとしても送れません。そしてこのファイルについては何ひとつ、患者の氏名も、検査の内容も、ファイル名も、誰にも伝わりません。

いまの通信: 確認中…

オフライン: 確認中…

言葉を信じる必要はありません。開発者ツールを開き、ネットワークタブを見ながら検査画像を開いてみてください。画像もタグもファイル名も、運んでいるリクエストはひとつもありません。あるいは回線を切ってから開いてみてください。

DCMファイルを開く

フォルダごとまとめてドラッグして入れると、ファイルはそれぞれのシリーズに戻され、正しい順に並びます。何もアップロードされませんし、ファイルに書き戻されるものもありません。

Markdownで表示

DCM(DICOM)ファイルの開き方

  1. ファイルを選びます。.dcmファイルを1つ、またはディスクのフォルダごとです。CTやMRIは1スライスに1ファイルなので、まとめてドラッグして入れることがシリーズを組み直す方法になります。ファイルはブラウザがディスクから直接読みますし、その間どこへも何も送られません。
  2. シリーズを選びます。1つの検査にはたいてい複数入っています。スカウト画像があり、そのあとに撮影ごとのものが続きます。各シリーズは装置が撮った順に重ねられますが、その順は番号ではなく、各スライスが体のどこにあるかから導かれます。番号はいつも同じ向きに振られるとはかぎりません。
  3. ウィンドウを合わせます。検査画像を読めるようにする操作であり、画像編集ソフトにはないものです。画像の上を横にドラッグするとウィンドウが広がり、上下にドラッグすると中心が動きます。CTなら肺・骨・脳・軟部組織といった名前つきのウィンドウも選べます。CTの単位は世界中のどの装置でも同じだからです。
  4. スライスを送ります。画像の下のスライダーがスライスを送り、画像を一度クリックしたあとは矢印キーでも同じことができます。複数フレームのファイル、たとえば超音波のループや血管造影は、隣のボタンで再生されます。
  5. 何かを計測します。計測に切り替えて線を引いてください。ファイルが画素の間隔を書いていれば、答えはミリで返り、正方形でない画素もきちんと考慮されます。書いていなければ答えは画素数で返り、そうだと明記します。勝手に尺度を作ることはしません。
  6. ヘッダーを読みます。ファイルのすべての要素を、番号と、規格が与えている名前と、中身とともに、検索できる形で並べます。その上には、まさにこのファイルの何が患者を特定するのかという一覧が出ます。氏名だけではとてもすみません。
  7. 必要なものを持ち帰ります。画面に出ている画像を、合わせたウィンドウのまま、何も焼き込まずにPNGで。あるいはヘッダー全体をテキストで。どちらもすでにページ上にあるものから、このページの中で作られます。

詳しい解説

DCMファイルの開き方と、その中身 .dcmファイルとは何か、何で開けるか、病院のディスクの中身、拡張子のない理由、DCMファイルをブラウザで開く方法、ウィンドウと中心値の働き、画像のほかに患者について何を抱えているかを説明します。

よくある質問

検査画像はどこかへアップロードされますか。

いいえ。ファイルの読み込み、デコード、描画はすべて手元のブラウザが手元のハードウェアで行います。この道具にはサーバー側というものがそもそもなく、ページのContent-Security-Policyには接続しうるアドレスがすべて書かれていますが、そのどれもこのサイトのものではありません。回線を抜いても検査画像は開けます。

このサイトのどのページよりも、ここではその事実が効いてきます。DICOMファイルはヘッダーに患者の氏名・生年月日・患者番号を抱えているので、それをビューアへ上げるというのは、見知らぬ相手に画像ではなく診療記録を手渡すということです。

.dcmファイルをどう開けばいいですか。

このページの上にある枠へドロップしてください。.dcmファイルは、病院の撮影装置が使うDICOM形式のファイルです。このページはブラウザでファイルを読み、検査画像を表示します。インストールもアップロードも必要ありません。Windows、Mac、Linux、Chromebook、スマホで同じように動きます。使うプログラムは、すでにあるブラウザだけです。

ファイル1つではなくディスクやフォルダを渡された場合は、フォルダ全体をドロップしてください。CTやMRIはスライスごとに1ファイルで、名前の末尾に.dcmがないこともよくあります。一緒に開くことで検査画像が正しい順序に戻ります。ディスクのDICOMDIRファイルやWindows用ビューアは、そのまま置いておけます。どちらも必要ありません。

.dcmファイルとは何ですか。ダブルクリックしても開かないのはなぜですか。

医療用撮影装置が作った1枚の画像、または画像のループをDICOM形式で保存したものです。患者、撮影装置、画素の配置などを記した数百のフィールドからなるヘッダーの後に、画素そのものが続きます。JPEGの名前を変えただけのものではないため、写真アプリ、画像編集ソフト、ブラウザのタブでは開けません。医療用ビューアを一度もインストールしていない端末には、この形式を開くプログラムが登録されていません。

.dcmで終わるファイルがすべて検査画像とは限りません。同じ3文字をディスクの目録プログラムや自動車のエンジン調整ファイルも使います。このページは名前ではなくファイルそのものを確認し、DICOMではない場合はそう明示します。

どのDICOMファイルを開けますか。

基本のtransfer syntax3種類の非圧縮ファイル、つまりimplicitとexplicitのlittle endian、それに廃止されたbig endianです。さらにdeflated、RLE Lossless、baseline JPEG、そしてJPEG Losslessも開けます。病院のディスクに入っているCTとMRIの検査の大半は、最後のもので圧縮されています。

JPEG 2000、JPEG-LS、そして動画に使われるMPEGとHEVCの各syntaxはデコードできません。それらにはコンパイル済みライブラリが数メガバイト必要で、必要になったときにそれを取りに行くページは、オフラインで動くページではなくなってしまいます。そうした形式のファイルも開くことは開きます。ヘッダー全体は読んで表示しますし、画像の場所にはコーデック名を書いた一行が入ります。何も教えてくれない壊れた画像のアイコンよりはましだからです。

「ウィンドウと中心値」とは何で、なぜ必要なのですか。

CTの1スライスにはおよそ4000通りの値が入っていて、画面が出せるグレーは256階調です。その4000のうちどの範囲が256を丸ごと受け取るのかを何かが決めなければならず、その選択がウィンドウです。それより下はすべて黒、上はすべて白、あいだの範囲がグレーに広がります。

同じファイルが2つの設定で別の検査画像のように見えるのはそのためですし、肺と骨を同時に見られないのもそのためです。CTの数値はハウンスフィールド単位で、絶対的に定義されています。水が0、空気が−1000で、世界中のどのCT装置でもそうです。ですからこのページの名前つきウィンドウは、放射線科医がワークステーションで使うのと同じ数値です。MRIや超音波にはそうした尺度がなく、開いたときのウィンドウはファイル自身が求めているものです。

計測がなぜ画素で出るのですか。

そのファイルが画素1つの大きさを書いていないからです。それを持っているのがPixelSpacing (0028,0030)でミリ単位ですが、超音波の画像、紙をスキャンしたもの、secondary captureの多くには、そもそも入っていません。

入っている場合は計測はミリで返り、軸ごとにその軸の間隔で測ります。画素が正方形でない画像ではこれが効いてきます。入っていない場合の正直な答えは画素数で、尺度を勝手に選んで結果を長さのように見せるのではなく、そうだと書きます。

フォルダを開いたら複数のシリーズに分かれました。なぜですか。

中身がそうだからです。1つの検査はシリーズからできています。スカウト画像があり、そのあとに撮影や再構成ごとのものが続きます。そしてどのファイルも、自分がどれに属するかをSeries Instance UID (0020,000E)に書いています。一覧はフォルダではなくそれをもとに作られます。フォルダのほうはたいてい、全部が名前の一覧として混ざっているだけだからです。

シリーズの中では、スライスは各々が体のどこにあるかで並べられ、それはImagePositionとImage Orientationから導かれます。Instance Numberはいかにもな手がかりですが、第一候補ではなく代替です。それを振るのはファイルを書いた何かであって、患者の向きと同じ向きに走る必要はないからです。

「何が患者を特定するのか」の一覧はどういう意味ですか。

あなたのファイルの中で、その検査画像に写っている人を名指しする、あるいは誰なのかを絞り込むフィールドのすべてで、手元の端末上のこのファイルから読み取ったものです。一覧の根拠はDICOM規格のPS3.15、つまりあるデータセットを非識別化されたと呼べるようになる前に何が消えていなければならないかを定めた部分です。

これがあるのは、人が間違えるのが「検査画像に氏名が入っている」という点ではないからです。問題はほかにどれだけ入っているかです。生年月日、受付番号、依頼医、施設、装置の製造番号、そして検査のUID。UIDはそのファイルを作ったアーカイブへ戻る完璧な鍵です。氏名だけ消した検査画像は匿名ではありません。

この道具は見せるだけです。何も書かず何も変えないので、そのどれかを取り除くこともできません。

検査画像を匿名化できますか。

できませんし、できるふりも意図的にしません。このページは読みます。DICOMファイルを書くコードはありません。このページがするのは、あなたのファイルに何が入っているのかを正確に伝えることで、それこそが調べにくく、人が間違える部分です。

特定につながる項目を取り除く道具は、はるかに高い水準を求められる別の仕事です。画素に触れずにファイルを書き直し、検査全体でUIDを一貫して置き換え、装置によっては氏名の2つめの写しを隠している私的要素についても正しくなければなりません。それはビューアに付け足すものではなく、このサイトのロードマップにあるものです。

.dcm拡張子のないファイルや、壊れたファイルも開けますか。

どちらも開けます。拡張子は見ておらず、確かめるのはファイルそのものです。よくある128バイトの前置きなしに書かれたデータセット、つまりネットワークから直接出てきた検査画像はそう見えますが、それは最初の要素から符号化を割り出して読み、ページはそうしたと書きます。

途中で切れているファイルは、行けるところまで読みます。壊れる前のすべてを表示し、何バイト目で止まったかを添えます。ビューアがいちばん必要になるのはまさにそういう場合なので、最後の12バイトのために全体を捨てるのは間違った振る舞いになります。

これは診断用のビューアですか。

いいえ。医療機器ではなく、いかなる規制上の評価も受けておらず、ここにあるどれも臨床的な判断に使うべきではありません。画面は校正されておらず、ブラウザは検証された描画系ではありませんし、そのどちらもウェブページの内側からは直せません。

一方で、人が検査画像を開くほかのすべての理由には向いています。ディスクに何が入っているかを確かめる、講義や論文のために1枚取り出す、ヘッダーを読む、別のプログラムがなぜこのファイルを拒むのかを調べる、そして検査画像がその人について何を抱えているのかを見る、といったことです。

ファイルは書き換えられますか。

いいえ。この道具は読むだけです。出力ファイルも再エンコードもなく、DICOMを書くボタンもここにはありません。ダウンロードできるのは画面に出ている画像のPNGと、ヘッダーのテキストです。元のファイルはディスクにそのまま残ります。

無料ですか。アカウントは必要ですか。

無料で、アカウントもログインも試用期間もありません。ファイルの大きさにも、いくつ開くかにも制限はなく、あるのは手元の端末のメモリだけです。このサイトは広告で運営されていて、広告側にはあなたのファイルについて何も渡されません。

オフラインで動きますか。

はい。ページを一度読み込んだあと、回線を切っても動き続けます。何もアップロードされていないことを示すいちばん簡単な方法でもあります。検査画像をどこかへ送って描かせる道具なら、線を抜いた瞬間に止まるからです。