QUERY/RETRIEVE 服务类 (一) 简介
QUERY/RETRIEVE 服务类<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1. 简介
Query/Retrieve服务类定义了一个简单管理SOP Instances的应用。Query的类型并不复杂,不要求提供像SQL那样高级的数据查询功能。Query/Retrieve 服务类专注基本的SOP Instances查询,它用一些常用关键属性作为查询值. Query/Retrieve服务类能够获取/传输一组具有规范标识的SOP Instances. 获取/传输功能允许一个DICOM应用实体从一个远程DICOM应用实体获取SOP Instances或者请求远程DICOM应用实体将SOP Instances传输到另一个DICOM应用实体。
1.1 Query/retrieve 信息模型
Query/Retrieve服务类的SCP方拥有一定数量的SOP Instances的信息。这些信息是按照某个规范的Query/retrieve信息模型组织而成. Query/retrieve信息模型或者是标准的(在DICOM标准部分里定义)或者是私有的(在实现者的Conformance Statement定义).
一个特定的Query/Retrieve服务类的SOP Class是由一个信息模型定义和一组DIMSE-C服务构成. 信息模型定义扮演类似其他DICOM服务类的IOD那样的角色.
1.1.1 服务定义
实现Query/Retrieve服务类的两端DICOM实体,一个是SCU角色,一个是SCP角色. Query/Retrieve服务类采用DIMSE-C服务中的C-FIND, C-MOVE和 C-GET 服务.
服务包含了基本和扩展行为,基本行为考虑到互操作性,对所有的实现指定最低水平的一致性.而扩展行为增强了基本行为,提供了额外的特点,而这是需要在建立协商的过程中单独协商的.
1.1.1.1 C-FIND, C-MOVE和C-GET服务中SCU/SCP的语义:
a) C-FIND服务:
— SCU请求SCP对请求标识符(identifier)指定的所有关键值进行匹配查找, 查找方式依赖SCP拥有的信息和请求的水平(如Patient, Study, Series或者Composite SOP Instances).
注: “标识符(identifier)”指在PS 3.7章节里C-FIND, C-MOVE, C-GET服务定义的参数”identifier”.
— SCP对每条匹配产生一个C-FIND响应, 响应消息的Identifier包含所有关键值属性的值以及所有已知请求的属性.响应的Status值都为Pending, Pending表示这个匹配的过程还没有结束.
— 当匹配的过程结束, 发出最后一条响应,其Status值为Success且不带有Identifier.
— 拒绝或者失败的C-FIND响应表示SCP无法处理查询请求.
— SCU 可以在SCP查询过程中发送C-FIND-CANCEL请求取消C-FIND服务, SCP会中断服务并返回Cancel标志.
b) C-MOVE服务:
— SCU提供唯一关键值确定并获取一个实体, SCP启动与该关键值关联的SOP Instances的C-STORE 子操作. 这些C-STORE子操作是在与C-MOVE的Association不同的Association进行. Query/Retrieve服务的SCP和Storage服务的SCU可以在不同的应用程序中运行,所以它们也不一定在同一个系统里. 至于启动C-STORE的机制不在DICOM标准讨论范围内.
注: 这意味着它们不一定使用同一个AET.请参考C.6.1.2.2.2, C.6.2.2.2.2 and C.6.3.2.2.2 关于C-MOVE SCP conformance的要求.
— SCP可以选择在C-STORE的过程中发送带有Pending状态的C-MOVE响应. 这些C-MOVE响应指出还剩多少数量的C-STORE操作没有完成以及完成结果分别为成功,警告,失败的C-STORE操作的数量.
— 当C-STORE操作结束, SCP给出最终的响应,响应状态值可以为Success, Warning, Failed 或者 Refused. 这个响应可以给出C-STORE操作成功,警告,失败的数量. 如果C-STORE失败, 会返回一个UID列表.
— SCU可以发送C-MOVE-CANCEL请求取消C-MOVE服务. SCP会终止所有的C-STORE操作返回CANCEL标志.
c) C-GET 服务
—SCU提供唯一关键值确定并获取一个实体, SCP启动与该关键值关联的SOP Instances的C-STORE 子操作.这些C-STORE子操作与C-GET在同一个Association下进行.而在C-STORE服务中, SCU/SCP的角色反过来了.
— SCP可以选择在C-STORE的过程中发送带有Pending状态的C-GET响应. 这些C-GET响应指出还剩多少数量的C-STORE操作没有完成以及完成结果分别为成功,警告,失败的C-STORE操作的数量.
—当C-STORE操作结束, SCP给出最终的响应,响应状态值可以为Success, Warning, Failed 或者 Refused. 这个响应可以给出C-STORE操作成功,警告,失败的数量. 如果C-STORE失败, 会返回一个UID列表.
—SCU可以发送C-GET-CANCEL请求取消C-MOVE服务. SCP会终止所有的C-STORE操作返回CANCEL标志.