这个页面的代码没跑起来。

直接从文件夹里打开 index.html,浏览器会拦下 JavaScript 模块,于是你选好一份影像之后,页面不会有任何反应。改用 http 把这个文件夹提供出去:

powershell -ExecutionPolicy Bypass -File serve.ps1

然后打开 http://localhost:8080/。

DICOM 阅片器 在浏览器里打开 DCM 文件

CT、MR、X 光和超声,连窗宽窗位、头信息和测量一起。

语言: 简体中文
查看源码
你的影像在浏览器里处理,无须上传处理。

影像的读取和解码全由你自己的浏览器完成,头信息、像素、窗宽窗位、测量,都是。这一页的另一头根本没有服务器可以接收诊疗信息,这里的任何一段代码想送也送不出去。而且关于这个文件的一切都不会告诉任何人,病人的姓名不会,检查内容不会,文件名也不会。

实时检查: 检查中…

离线: 检查中…

别听我们说。打开开发者工具,盯着网络面板,然后打开一份影像。没有任何一条请求带着图像、标签或者文件名。或者干脆断网,照样打得开。

打开 DCM 文件

把整个文件夹一次拖进来,文件会各自归回自己的序列,顺序也会排好。什么都不会上传,也不会往你的文件里写回任何东西。

以 Markdown 查看

DCM(DICOM)文件怎么打开

  1. 选文件。一个 .dcm 文件,或者光盘上的整个文件夹。一次 CT 或者 MR 是一层一个文件,把它们一起拖进来才是把序列重新拼起来的办法。文件由浏览器直接从你的硬盘读取,这期间什么都不会送去任何地方。
  2. 选序列。一次检查通常有好几套,先是定位像,然后是每一次采集。每一套都按设备拍摄的顺序叠好,而这个顺序不是从编号来的,是从每一层在身体里的位置算出来的。编号不一定总朝同一个方向排。
  3. 调窗。这是让影像变得可读的那个操作,也是图像编辑软件没有的那个。在图上横着拖,窗就变宽,上下拖,窗心就移动。CT 还可以直接选带名字的窗,肺窗、骨窗、脑窗、软组织窗。CT 的单位在全世界任何一台机器上都一样。
  4. 翻层。图下面那条滑杆在层与层之间移动,在图上点一下之后,方向键也是同样的效果。多帧文件,比如超声的一段循环、一次血管造影,用旁边那个按钮播放。
  5. 量点什么。切到测量,拉一条线。文件写了像素间距的,答案就是毫米,而且不是正方形的像素也会照顾到。文件没写的,答案就是像素数,并且会明说,不会自己编一个比例出来。
  6. 读头信息。文件里的每一个元素,连编号、标准给它的名字和里面的内容一起,都可以搜索。它上面是这一份文件里究竟什么在指认病人的清单,而那远不止一个姓名。
  7. 把需要的带走。屏幕上那一帧存成 PNG,保留你调好的窗,上面不烧任何字;或者把整份头信息存成纯文本。两样都是在这一页里用已经在页面上的东西拼出来的。

说得更细的版本

DCM 文件怎么打开,以及里面有什么 .dcm 文件是什么、用什么打开,医院给的光盘里都有什么,文件为什么没有后缀,怎么在浏览器里打开一份 .dcm 影像,窗宽窗位到底在做什么,以及一份影像除了图像之外还带着关于病人的哪些东西。

常见问题

我的影像会被上传吗?

不会。文件的读取、解码和绘制全都由你自己的浏览器在你自己的硬件上完成。这个工具根本没有服务器那一半,页面的 Content-Security-Policy 里写着它能联系的每一个地址,没有一个属于本站。把网线拔了,它照样打开影像。

这件事在这里比在本站任何一页都重要。DICOM 文件的头信息里带着病人的姓名、出生日期和住院号,所以把它传到某个阅片器,等于把一份病历交给陌生人,而不是一张图片。

DCM 文件怎么打开?

把它拖到本页最上面那个框里。.dcm 文件就是 DICOM 文件,医院里每一台扫描设备写出来的都是这种格式,而这一页就是一个 DCM 文件打开工具:它在你的浏览器里读这个文件,把影像显示出来,不用装任何东西,也不上传任何东西。Windows、Mac、Linux、Chromebook 和手机上都一样,因为用到的程序只有你本来就有的浏览器。

如果你拿到的不是一个文件,而是一张光盘或一个文件夹,就把整个文件夹拖进来。一套 CT 或 MR 是每层一个文件,文件名后面常常根本没有 .dcm,一起打开才能把影像按顺序排回去。光盘上的 DICOMDIR 文件和附带的 Windows 阅片程序都可以不管,两样都用不着。

.dcm 文件是什么,为什么双击打不开?

它是医疗设备出的一幅图像,或者一段连续图像,用的是 DICOM 格式:前面是几百个字段组成的头信息,写着病人是谁、哪台机器拍的、像素怎么排列,后面才是像素本身。它不是改了名字的 JPEG,所以看图软件、修图软件和浏览器标签页都不认它;一台从没装过医学阅片软件的电脑上,也没有哪个程序登记过要打开它。

另外,以 .dcm 结尾的文件不一定都是影像:有一款磁盘编目软件用这三个字母,汽车行业的发动机标定文件也用。这一页检查的是文件本身而不是文件名,拿到的东西不是 DICOM 时,它会直接说明。

它能打开哪些 DICOM 文件?

三种基本 transfer syntax 的未压缩文件,也就是 implicit 和 explicit littleendian,加上那个已经废止的 big endian。此外还有 deflated、RLE Lossless、baseline JPEG 和 JPEG Lossless,医院光盘上的 CT 和 MR 检查大多用的是最后这种。

它解不了 JPEG 2000、JPEG-LS,也解不了视频用的 MPEG 和 HEVC 那几种。那些需要好几兆字节的编译库,而一个用到时才去下载的页面,就不再是断网能用的页面了。这类文件照样打得开,整份头信息会读出来显示,图像的位置换成一行字写明是哪个编解码器,而不是一个什么都说不出的破图标。

什么是「窗宽窗位」,为什么需要它?

一层 CT 里大约有四千个不同的数值,你的屏幕只能显示两百五十六级灰。总得有什么来决定这四千里哪一段吃下全部这两百五十六级,这个选择就是窗。比它低的全黑,比它高的全白,中间那一段铺满灰阶。

同一个文件在两种设置下看着像两次检查,原因就在这里,肺和骨没法同时看清也是。CT 上的数值是亨氏单位,是绝对定义的,水是 0,空气是 −1000,全世界每一台 CT 都如此。所以这一页上那些带名字的窗,和放射科医生在工作站上用的是同一批数字。MR 和超声没有这样的标度,打开时用的是文件自己要求的那个窗。

为什么它说我的测量结果是像素?

因为那个文件没写一个像素有多大。写这个的是 Pixel Spacing (0028,0030),单位是毫米,而很多超声图像、扫描件和 secondary capture 干脆就没有这一项。

有的时候,测量结果是毫米,而且每个方向按自己的间距算,这在像素不是正方形的图上很要紧。没有的时候,老实的答案就是像素数,它也照实说,而不是挑一个比例把结果当成长度端出来。

它把我的文件夹分成了好几套序列,为什么?

因为里面本来就是这样。一次检查由若干序列组成,先是定位像,然后是每一次采集或者重建,每一个文件都在 Series Instance UID (0020,000E) 里写明自己属于哪一套。那个下拉菜单是照这个建的,不是照文件夹建的,文件夹里通常就是一堆名字混在一起。

在一套序列内部,层的顺序按每一层在身体里的位置排,这个位置来自 Image Position 和 Image Orientation。Instance Number 是最顺手的那把钥匙,但它是备选而不是首选。它由写这些文件的东西分配,没有理由跟病人的方向一致。

「什么在指认病人」这份清单是什么意思?

是你文件里每一个点名影像中那个人、或者缩小他可能是谁的字段,都在你的机器上从这一个文件里读出来。清单的依据是 DICOM 标准的 PS3.15,也就是规定一份数据集要能被称作去标识化之前,必须先去掉什么的那一部分。

它之所以在这里,是因为人们弄错的不是「影像里有个姓名」这件事,而是里面还有多少别的。出生日期、检查号、开单医生、机构、设备序列号,还有检查的那几个 UID,而 UID 是回到出片档案库的完美钥匙。一份只抹掉姓名的影像并不匿名。

这个工具只给你看。它什么都不写,什么都不改,所以它也拿不掉其中任何一项。

它能把影像匿名化吗?

不能,而且它故意不装作能。这一页只读,里面没有一行代码会写 DICOM 文件。它做的是告诉你你那份文件里到底有什么,而这恰恰是难查清、又常被弄错的那一半。

真要把这些标识拿掉,是另一件门槛高得多的活。它得在不碰像素的前提下重写文件,把整次检查里的 UID 一致地替换掉,还得在某些设备偷偷藏了第二份姓名的私有元素上判断正确。那件事写在本站的路线图里,不是贴在阅片器上顺手做的。

没有 .dcm 后缀的文件,或者坏掉的文件,它打得开吗?

都打得开。后缀根本不看,看的是文件本身。有些数据集写的时候没有那惯常的 128 字节前导,直接从网络上取下来的影像就是这个样子,那就从第一个元素推断出它的编码方式来读,页面也会写明它是这么做的。

中途断掉的文件,读到哪里算哪里。损坏之前的部分全部显示出来,并注明它停在第几个字节。恰恰是这种时候最需要阅片器,所以为了最后十二个字节就把整个文件扔掉,那才是错的做法。

这是诊断用的阅片器吗?

不是。它不是医疗器械,没有经过任何监管评估,这里的任何东西都不该拿来做临床判断。你的屏幕没有校准,浏览器不是经过验证的渲染链路,这两件事都不是一个网页从内部能解决的。

但人们打开影像的其他所有理由,它都够用:看看光盘里有什么,取一层放进课件或者论文,读头信息,弄清另一个程序为什么拒收这个文件,以及看清一份影像究竟带着关于那个人的多少东西。

它会改我的文件吗?

不会。这个工具只读。没有输出文件,没有重新编码,这里也没有一个按钮会写出 DICOM。你能下载的是屏幕上那一帧的 PNG,和头信息的纯文本副本。原件原封不动地留在你的硬盘上。

免费吗?要注册吗?

免费,没有账号,不用登录,也没有试用期。文件多大、开多少个都没有限制,除了你自己机器的内存。本站靠广告养活,广告那边拿不到关于你文件的任何东西。

断网能用吗?

能。把页面加载一次,然后断网,它照样能用。这也是证明什么都没被上传的最简单办法。要是有个工具把你的影像送出去让别人画,拔掉网线的那一刻它就停了。