Query & Retrieve in DICOM
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Query即C-Find, Retrieve 即C-Move, 在放射影像设备、系统中是仅次于C-store(发送影像)应用最多的命令, 相较c-sore, c-find/c-move 要复杂很.....
Query/retrieve 简化序列图 (只有一个c-move-rsp 回合)
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
对于SCU (发起方)
通俗来讲Query 是指请求对方系统把 请求某个级别(Patient/Study/Series/Image)的信息传送给自己。当然也可以进行关联查询要求对方把各个级别的信息都返回给自己。
Retrieve是指SCU通过Query 拿到信息后,要求对方根据请求级别 (Patient/Study/Series/Image) 发送影像给己方。
对于SCP (服务提供方)
需要提供各个级别的服务供SCU Query/Retrieve.
C-Find/C-Move 有几个重要的概念
一个是 模型(Information model),
Patient root
Study root
Patientstudy root
一个是 级别(Query/retrieve level)
Patient level, study level, series level, image level
Patient root 下可有包含patient Level 在内的四个level
Study root 下只有三个level, study root 下不能q/r patient level 信息与影像。
C-find
既然需要依据某个条件查询一组或某个patient/study/series/image, 必须需要一个或一组查询键值, 同时需要告诉对方应该返回什么, 还有怎样区分每组数据。DICOM 中定义的query key, return key and unique key.
Unique key 为 patient id, study instance UID, series instance UID, SOP instance UID.
Query key 对应每个level 有不同的值,常见的比如检查级的studydate, 序列级的modality等,具体参见DICOM和IHE.
Unique key 必须在返回列中,否则SCU无法区分各组数据。
有些Q/R SCP 支持关联查询,SCU 可以根据Study level的query key来获取series.
C-move 相对简单
SCU 发送请求前,启动一个storage SCP 用于接收影像,
依据c-find 的返回结果,读取unique key,
Patient root
Patient level Patient id
Study level patient id, study instance UID
Series level patient id, study instance UID, series instance UID
Image level patient id, study instance UID, series instance UID, SOP instance UID
Study root
Study level study instance UID
Series level study instance UID, series instance UID
Image level study instance UID, series instance UID, SOP instance UID
每个level, 自己及上一个级别的unique key 必须提供作为query key.
C-move 中还有一个概念叫Retrieve Destination AE. 通俗讲,就是告诉对方应该发送影像到什么地方。对于SCU, 通常它可以让他发送给自己,也可以让它发送给另一个AE(甚至另一台机器,系统)。这一点也是C-move 和C-Get的区别所在,C-get 只能要求对方发给自己。
Q/R SCU告诉对方(Q/R SCP) unique key 和retrieve destination, SCP通过解析retrieve destination AE title 获取在SCP方注册的IP和端口,发送影像至此storage SCP, 同时发送c-move-rsp 到 Q/R SCU. 当影像发送结束后会发送实际统计结果至Q/R SCU
在实现过程中以下几点需要注意:
SCP:
严格遵从IHE和DICOM定义,尽可能支持各个模型,各个级别,支持关联查询,支持list UID matching(多个UID),universal matching (query key = null), wild card matching (patient id = abc*),range matching (study date 20081115- 20081118) 作为条件。
对于mandatory return key, 如果SCU未提供,SCP 可选择提供,如果SCU 有问题,比如UID key 未作为 return key, SCP 一定要提供。
实际应用中还有很多要注意的细节,比如character set, 如果处理不好,问题也很多,对于global的项目,我们需要注意,对于有问题的产品就不再点名。
SCU:
严格遵从IHE和DICOM定义,尽可能支持各个模型,各个级别查询。一般来说,Study ROOT非关联查询大多厂商都提供,所以SCU要做到Study ROOT, study level, series level, image level 的查询与获取(Q/R).
---------------------
作者:lucky2all
来源:CSDN
原文:https://blog.csdn.net/lucky2all/article/details/3307753
版权声明:本文为博主原创文章,转载请附上博文链接!