理解imageId和imageLoaders

理解imageId和imageLoaders

在cornerstone的使用过程中,imageId是一个非常重要的概念,包含了很多关键信息,首先给出一个具体的imageId示例:

https://localhost/wado?requestType=WADO&studyUID=1.2.840.113704.1.111.8264.1553388392.1&seriesUID=1.2.840.113704.1.111.8264.1553388470.12&objectUID=1.2.840.113704.1.111.2524.1553389722.12097

其中https://localhost包含dicom服务地址,端口和协议等信息。

requestType的值是image loader类型(有WADO Image Loader, Web Image Loader等),所以cornerstone是根据imageId来决定image loader类型的,这种方式比较少见,不过有个好处,可以非常容易的从不同协议和服务器中读取图像,比如可以同时展示来自CT设备产生的dicom图像和来自数码相机产生来自文件系统的jpg图像。

Image Loader用途
Cornerstone WADO Image Loader1. DICOM图片 2. 支持WADO-URI和WADO-RS
Cornerstone Web Image LoaderPNG和JPEG格式图片

在pacs系统里,通常来说studyID对应一个病人,seriesID对应某个病人的一组影像,objectID对应的就是该组影像的图片号。
举个不严谨的例子简单理解一下:比方说pacs系统里有一个病人,这个病人有三组CT图,每组CT图有20张,那么就会有1个studyID,3个不同的seriesID,60个不同的objectID。那么根据这三个id号就可以将影像按照病人,影像组等分开。

Image Loaders的API函数loadImage()本质是一个用Promise封装的XHR异步请求,因此返回结果需要使用then函数,在then函数内部调用displayImage() API函数即可显示dicom影像。在了解Image Loaders的本质之后,甚至可以用XHR自定义一个loadImage()函数完成同样的功能:

function loadImage(imageId) {
  const url = parseImageId(imageId);
  const promise = new Promise((resolve, reject) => {
    const oReq = new XMLHttpRequest();
    oReq.open("get", url, true);
    oReq.responseType = "arraybuffer";
    oReq.onreadystatechange = function(oEvent) {
        if (oReq.readyState === 4) {
            if (oReq.status == 200) {
                const image = createImageObject(oReq.response);

                resolve(image);
            } else {
                reject(new Error(oReq.statusText));
            }
        }
    };
    oReq.send();
  });
  return {
    promise
  };
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值