QUERY/RETRIEVE 服务类 (四) DIMSE-C 服务组
1. DIMSE-C 服务组
3个DIMSE-C服务被用于构造Query/Retrieve服务类的SOP Classes
— C-FIND
— C-MOVE
— C-GET
1.1 C-FIND
C-FIND 用于查询. 满足identifier的匹配通过C-FIND响应返回.
1.1.1 C-FIND 服务参数
1.1.1.1 SOP Class UID
SOP Class UID指定Query/Retrieve信息模型. C-FIND操作的Presentation Context的Abstract Syntax UID隐含对SOP Class UID的支持.
1.1.1.2 Priority
Priority属性定义C-FIND操作的优先级 SCP不一定处理优先级.无论SCP是否支持优先级处理都必需在Conformance Statement指出不同优先级的含义.
1.1.1.3 Identifier
C-FIND 请求和响应都包含identifier, identifier被编码为Data Set.
1.1.1.3.1 请求Identifier结构
C-FIND请求的identifier应包括:
— 匹配SCP管理的storage SOP Instances值的关键属性值.
— Query/Retrieve 层次, (0008,0052)属性定义了查询的层次
— 如果请求identifier中的属性使用了扩展或者替换的字符集,则应包含属性Specific Character Set (0008,0005).否则就不应包含这个属性.
查询的关键属性和允许的值应该在Query/Retrieve信息模型的SOP Class里有定义.
1.1.1.3.2 响应Identifier结构
C-FIND响应不应当包含请求中没有的属性或者这章节没有提到的属性.
C-FIND响应的identifier应包括:
— 请求中包含的关键属性及其值.
— Query/Retrieve 层次, (0008,0052)属性定义了查询的层次.应与请求的层次相同.如果响应identifier中的属性使用了扩展或者替换的字符集,则应包含属性Specific Character Set (0008,0005).否则就不应包含这个属性.如果SCP不支持SCU请求中的字符集, SCP的响应则不会采用该字符集,而是采用不同的字符集.
C-FIND SCP必需支持Retrieve AE Title 数据元素 或(和) Storage Media File-Set ID/Storage Media File Set UID数据元素. C-FIND响应应包括:
— Storage Media File-Set ID (0088,0130). 标识用户自定义的Composite object instance的可读标识. 如果AE Title 元素不存在,这属性就必须存在. 除了信息模型的最底层,空值有效.
— Storage Media File-Set UID (0088,0140) 唯一确定composite object instance所在的存储位置. 如果AE Title 元素不存在,这属性就必须存在. 除了信息模型的最底层,空值有效.
注: File-Set 概念在PS 3.10用到.
— Retrieve AE Title (0008,0054). 定义了一列DICOM AET, 通过网络可以从这些AET标识的实体返回Composite object instance. 如果Storage Media File-Set ID 和 Storage Media File-Set UID不存在,则该属性必须存在. 这个元素指定的应用实体必须支持C-GET或C-MOVE. 除了信息模型的最底层,空值有效.
注: 1. 例如, DICOM应用实体 “A” 发送C-FIND请求到DICOM应用实体 “B”, 查询层次为“STUDY”. “B”确定这些匹配”Study”的composite object instances可以通过自己获得,则设定Retrieve AE Title 为 “B”.
2. File-Sets可能不会在每个Query/Retrieve层定义. 如果SCP支持File-Set ID/File-Set UID选项但没有在C-FIND请求指定的层次定义这些属性, 它会返回零长度的这些属性以表示这些值是未知的. 而SCU应该重新在更低的QUERY/Retrieve层次发送C-FIND请求.
3. 关键属性值未知并不表示不存在, 之后的获取可以导致存储属性有值的SOP Instance.
C-FIND SCP可以但不必须支持Instance Availability (0008,0056)元素. 该元素不应出现在C-FIND请求里, C-FIND响应可以包含
— Instance Availability (0008,0056) 定义当得到C-MOVE或者C-GET请求时,composite object instance能有多快可用于传输. 如果某些composite instances不如其他可用的快,那么这个最低速度的可用性应该被返回。如果这个元素没有返回,可用性未知或者未指定。不允许Null值。
可选的值为:
— “ONLINE” 表示立即可用,
— “NEARLINE” 表示需要从相对较慢的介质获取,如光盘库或者磁带。
— “OFFLINE” 表示需要人工干预。
— “UNAVAILABLE”, 表示不能获取。
注:不可用的SOP Instances可能有另外可用的表现形式。(见section C.6.1.1.5.1).
1.1.1.4 Status
下表定义了C-FIND返回的特殊状态码. 常规状态码在PS 3.7定义。
1.1.2 C-FIND SCU 行为
这部分讨论C-FIND SCU基本和扩展行为。
1.1.2.1 基本行为
所有的C-FIND SCU应能产生满足层次搜索方法的查询请求。在每个层次上,C-FIND请求的Identifier应包含唯一属性的单一值。
不需要给出必需属性和可选属性.
C-FIND请求应当包含唯一属性且指定是单一值匹配,全局匹配还是UID列表匹配.另外,必需和可选属性可以出现在identifier中.
SCU使用C-FIND请求传达以下语义.
— SCU请求SCP在某层次查询满足所有在identifier指定的关键属性的匹配.
注: 1. SCU不能假定SCP支持任意可选属性. 即可选属性只是当SCP支持的时候用于减少网络负荷.
2. SCU必须准备好过滤可能由于SCP不支持可选属性而产生的C-FIND响应.
— SCU应能明白Pending响应是传递被匹配的实体的属性.
— SCU应能明白Success, Failed 或者 Refused响应是表示Pending响应结束.
— SCU应能理解Refused或Failed响应是表示SCP不能处理请求.
— SCU可以通过C-FIND-CANCEL请求取消正在进行的C-FIND服务.SCU应能识别表示取消成功了的Cancel标志.
1.1.2.2 扩展行为
扩展的SCU行为应当在协商建立时协商好.如果扩展行为没有在协商时达成一致,则只有基本行为会被执行.扩展行为包括所有基本行为,同时还包括以下选项:
— 关联查询
1.1.2.2.1 关联查询
C-FIND服务的关联查询允许关键属性的组合. 唯一关键属性可以采用为单一值匹配,全局匹配,UID列表匹配. 支持关联查询取消了基本行为中所有查询层次都要指定一个唯一属性的限制.
1.1.3 C-FIND SCP 行为
1.1.3.1 基本行为
所有的C-FIND SCU应能产生满足层次搜索方法的查询请求。
SCP通过C-FIND响应表达以下语义:
— SCP被请求执行对请求identifier指定的所有关键属性进行查询.
— SCP采用层次查询方式对每个匹配产生一个C-FIND响应. 所有的响应都包含一个identifier, 这个identifier包含单条匹配的属性值. 所有的响应的状态值为Pending.
—当所有的匹配发送完毕, SCP产生一个状态为Success的C-FIND响应. Success的响应表示SCP所知的匹配都已全部发送.
—如果SCP不能处理请求,应产生一条Refused或Failed的响应. Refused或Failed响应不能包含Identifier.
—如果SCP在处理匹配过程完成之前收到C-FIND-CANCEL请求, 应当终止匹配过程并返回Canceled的响应.
— 如果SCP采用多个编码方式管理图像(见C.6.1.1.5.1), 只有其中一个图像编码会包含在匹配的实例集合.
注: 对不同图像编码的查询, SCP可以基于SCU的身份其他因素来选择合适的编码实例.
1.1.3.1.1 层次搜索方法
从Query/Retrieve信息模型的顶层开始,一直到C-FIND请求指定的层次为止,通过这样的过程产生匹配:
a) 如果当前层是C-FIND请求指定层, 那么用C-FIND请求identifier的关键属性去匹配当前层每个信息实体的该关键属性的值. 对于每个满足指定匹配字串的实体,构造一个identifier.该identifier应包含所有更高层的唯一属性及其所有值.为每个identifier返回一个响应.如果没有匹配, 返回status为Success并且不带identifier.
b) 否则当前层不是C-FIND请求指定层,并且有一个实体满足该层请求的唯一属性的值. 执行过程到下一层.
c) 否则没有匹配, 返回Success响应.
注: 上述描述了一个递归的过程.
1.1.3.2 扩展行为
扩展行为应当在协商建立时间协商好. 如果没有达成一致,则只会执行基本行为.扩展行为包含所有基本行为且包含以下选项:
— 关联查询
1.1.3.2.1 关联查询
C-FIND服务的关联查询允许关键值组合. 在最底层,采用关联查询应当包含唯一关键属性,该关键属性为单一值匹配,通配符匹配或者全局匹配. 支持关联查询取消了基本行为中所有查询层次都要指定一个唯一属性的限制. C-FIND SCP应当基于C-FIND请求的所有关键值进行查询而不用考虑Query/Retrieve层次.
1.1.3.2.1.1 关联查询方法
关联查询方法可以包含任意层次的任意关键属性组合。从Query/Retrieve信息模型顶层开始,直到C-FIND指定的层次为止, 以下过程产生匹配:
a) C-FIND请求的关键属性匹配字符可匹配当前层的任意实体该属性的值.
b) 如果当前层没有指定关键属性并且当前层不是C-FIND请求指定的层, 则应当执行当前层唯一属性的通配符匹配. (也就是说,所有的当前层实体被匹配).
c) 如果当前层是C-FIND请求指定层, 对于每个匹配的实体(一个匹配的实体就是其属性满足所有指定的关键属性匹配字串), 构造一个Identifier. 这个Identifier应包括所有更高层的属性及其值.
d) 否则,如果当前层不是C-FIND请求指定层, 那么对于每个匹配实体构造一串包含匹配属性的属性以及上一层的所有属性. 然后对每条匹配执行该过程到下一层.
e) 否则,如果没有匹配,返回Success响应且不带identifier.
注: 1. 上述定义了一个递归过程.它可能在自身递归多次, 在每一层,它会递归多次(一个匹配实体一次). 这会产生大量的identifier.
2. 上述定义产生匹配的过程不是必需的. 这是为了使不同搜索数据库的算法在实现中相一致.对于给定的查询, 按上述过程产生的匹配集合应当是相同的.
1.2 C-MOVE
Query/Retrieve服务类的SOP Class的SCU采用C-MOVE操作产生获取效果. C-MOVE允许应用实体指示另外一个应用实体采用C-STORE操作传输stored SOP Instances. C-MOVE服务应当在协商建立阶段就要达成一致,因为C-MOVE操作超出了本身的Association. C-STORE子操作总是在另外一个Association里完成.因此Query/Retrieve服务类的SCP则作为Storage服务的SCU.
注: 收到stored SOP Instance的应用实体不一定是C-MOVE操作的发起者.
C-MOVE请求可以在Query/Retrieve的任意层次进行. 尽管stored SOP Instance的传输不是在这个层次进行. 但执行传输的层次是依赖该SOP Class.(见Section C.6).
1.2.1 C-MOVE服务参数
1.2.1.1 SOP Class UID
SOP Class UID指定Query/Retrieve信息模型. C-MOVE操作的Presentation Context的Abstract Syntax UID隐含对SOP Class UID的支持.
1.2.1.2 Priority
Priority定义C-MOVE和C-STORE子操作的优先级.SCP不一定处理优先级.无论SCP是否支持优先级处理都必需在Conformance Statement指出不同优先级的含义.
C-STORE子操作应采用相同的优先级.
1.2.1.3 Move Destination
Move Destination指定C-STORE子操作执行者的AET.
1.2.1.4 Identifier
C-MOVE 请求应包含一个Identifier. C-MOVE响应有条件的包含一个identifier(C.4.2.1.4.2.有要求).
注: 在PS3.7中C-MOVE原语标记Identifier为U,而这里特别指定要求有.
1.2.1.4.1 请求Identifier结构
C-MOVE请求identifier应包含:
—Query/Retrieve Level (0008,0052) 获取层次
— 唯一属性包括Patient ID (0010,0020), Study Instance UIDs (0020,000D), Series Instance UIDs (0020,000E), 以及 SOP Instance UIDs (0008,0018)
Specific Character Set (0008,0005)不能出现.
每一层的唯一关键属性和允许的值应该在Query/Retrieve信息模型的SOP Class里有定义.
注: 在基本行为里,如果Query/Retrieve层次是IMAGE,SERIES 或者STUDY, 采用UID列表匹配可以获取一个以上的实体.但Patient ID (0010,0020)则只能用单一值匹配.
1.2.1.4.2 响应Identifier结构
Failed SOP Instance UID List (0008,0058) 指出C-STORE子操作失败的SOP Instance的UID列表. C-MOVE响应根据status值来有条件的包含Failed SOP Instance UID List (0008,0058).如果没有失败的C-STORE子操作, Failed SOP Instance UID List (0008,0058)属性不存在从而C-MOVE响应就没有Data Set.
Specific Character Set (0008,0005) 不能存在.
C-MOVE响应的identifier在status为:
— Canceled, Failed, Refused, 或 Warning时应包含Failed SOP Instance UID List Attribute
— Pending时不能包含Failed SOP Instance UID List Attribute (没有Data Set)
1.2.1.5 Status
下表规定了C-MOVE操作的特殊状态码. 常规状态码在PS 3.7定义。
1.2.1.6 Number of Remaining Sub-Operations
基于C-MOVE响应的状态码选择性的包含Number of Remaining Sub-operations. 该参数指出还有多少个C-STORE子操作没有完成.
若C-MOVE响应状态为:
— Pending :则应包含该参数
— Canceled:可包含该参数
— Warning, Failed, Refused, or Successful 不应包含该参数.
1.2.1.7 Number of Successful Sub-Operations
根据C-MOVE响应状态来决定是否包含Number of Successful Sub-operations. 该参数给出了Store子操作成功的次数.
若C-MOVE 响应状态为:
— Pending 则应当包含该参数.
— Canceled, Warning, Failed, Refused, or Successful 则可能包含该参数
1.2.1.8 Number of Failed Sub-Operations
根据C-MOVE响应状态来决定是否包含该参数. 该参数给出了Store子操作失败的次数
若C-MOVE 响应状态为:
— Pending 则应当包含该参数.
— Canceled, Warning, Failed, Refused, or Successful 则可能包含该参数
1.2.1.9 Number of Warning Sub-Operations
根据C-MOVE响应状态来决定是否包含该参数. 该参数给出了Store子操作警告的次数
若C-MOVE 响应状态为:
— Pending 则应当包含该参数.
— Canceled, Warning, Failed, Refused, or Successful 则可能包含该参数
1.2.2 C-MOVE SCU 行为
这部分讨论C-MOVE SCU的基本行为和扩展行为.
1.2.2.1 基本行为
SCU通过C-MOVE请求表达以下语义:
— SCU在Query/Retrieve层次上应当提供每个层次的唯一属性的单一值.如果获取的层次为STUDY,SCU应提供一个唯一属性. 如果获取多个项目且获取层次为STUDY,SERIES或IMAGE, 则应提供一个UID或UID列表. SCU 还应当提供转移的目标,转移目标应当是具备Storage服务的SCP的AET.
— SCU应能理解C-MOVE响应的状态值为Pending是表示C-STORE子操作正在进行. 这些响应应给出剩余,成功,失败,警告的C-STORE子操作次数.
— SCU应能明白响应状态为Success, Warning, Failed,或Refused表示最后的响应. 这最后的响应应指出C-STORE子操作的成功,失败的次数. SCU应能理解状态为:
— Success 表示所有的子操作为成功的.
— Warning 表示一个或多个子操作为成功的且一个或多个子操作为不成功或者具有警告状态, 或者所有的子操作为警告状态.
— Failed 或 Refused 表示所有的子操作是不成功的.
— SCU可以发送C-MOVE-CANCEL请求取消C-MOVE服务. SCU 应能理解C-MOVE响应状态为Canceled表示传输取消了. 该响应必须包含成功,失败,警告的子操作次数. 如果存在还没有进行的C-STORE子操作,则响应可以包含该次数.
1.2.2.2 扩展行为
扩展的SCU行为应当在协商建立时协商好.如果扩展行为没有在协商时达成一致,则只有基本行为会被执行.扩展行为包括所有基本行为,同时还包括以下选项:
— 关联查询
1.2.2.2.1 关联查询
带关联查询的C-MOVE服务取消了基本行为中所有查询层次都要指定一个唯一属性的限制. 因此,C-MOVE请求的Identifier会传送:
— 所有与Study Instance UID (0020,000D)标识的STUDY相关的composite object instances
— 所有与Series Instance UID (0020,000E)标识的SERIES相关的composite object instances.
— 通过SOP Instance UID (0008,0018)的列表而确定的各个composite object instances.
1.2.3 C-MOVE SCP 行为
这章讨论C-MOVE SCP的基本和扩展行为.
1.2.3.1 基本行为
SCP通过C-MOVE响应表达以下语义.
— SCP应该根据C-MOVE请求的identifier的唯一属性值确定一个实体的集合. SCP应启动相关的Storage SOP Instances的C-STORE操作. 这些C-STORE子操作应发生在另外一个Association. Query/Retrieve服务类的SCP则作为Storage服务类的SCU.
— SCP应当为C-STORE子操作建立新的Association. 如果SCP无法就某一个SOP Instance协商好适合的Presentation Context, 那么对应的子操作则视为失败的.
—SCP应当发起所有与C-MOVE请求中指定的Patient ID, Study Instance UID列表, Series Instance UID列表, SOP Instance UID列表相关的stored SOP Instances的C-STORE子操作.
— SCP可选择在C-STORE过程中产生状态为Pending的C-MOVE响应.这些响应应指出剩余,成功,失败和警告的子操作次数.
— 当C-STORE子操作全部完成, SCP应产生最后的响应,其状态可以为Success, Warning, Failed, Refused. 该响应必须指出成功,失败,警告的子操作次数. C-MOVE响应的状态为:
— Successful : 如果所有子操作成功.
— Warning : 如果一个或多个子操作成功但一个或多个子操作不成功或带警告标志, 或者所有的子操作为警告.
— Failed or Refused : 如果所有的子操作为失败.
SCP可能会在C-MOVE的过程中收到C-MOVE-CANCEL请求. 则SCP应中断所有的C-STORE子操作并返回Canceled标记. 状态为Canceled的C-MOVE响应必须包含C-STORE子操作成功,失败,警告的次数. 如果可能,还应当包含剩余的还没有发起的C-STORE子操作次数.
— 如果SCP通过多个编码管理图像(see C.6.1.1.5.1), 则只有其中一个编码会被包含在object instances集合里.
注: 1.当在Patient,Study,Series层次获取具有多个可能编码的图像时,SCP可以基于SCU的身份,C-STORE所在的Association接受的传输语法或者其他因素来选择合适的编码.
2. 如果C-MOVE所在的Association异常中断, 则不可能发送后续的响应.则C-MOVE-SCP作为C-STORE的SCU的行为在这样的条件下是没有定义的,而且,C-STORE子操作是否继续进行也是没有定义的.
1.2.3.2 扩展行为
扩展的SCP行为应当在协商建立时协商好.如果扩展行为没有在协商时达成一致,则只有基本行为会被执行.扩展行为包括所有基本行为,同时还包括以下选项:
— 关联查询
1.2.3.2.1 关联查询
带关联查询的C-MOVE服务取消了基本行为中所有查询层次都要指定一个唯一属性的限制. 因此,C-MOVE请求的Identifier会传送:
— 所有与Study Instance UID (0020,000D)标识的STUDY相关的composite object instances
— 所有与Series Instance UID (0020,000E)标识的SERIES相关的composite object instances.
— 通过SOP Instance UID (0008,0018)的列表而确定的各个composite object instances.
1.3 C-GET
某些Query/Retrieve服务类的SOP Class的SCU会采用C-GET获取信息。C-GET操作允许某一应用实体指示另外一个应用实体把stored SOP Instances通过C-STORE操作传输给自己。C-GET的支持应当在协商建立阶段达成一致。C-STORE子操作应该在与C-GET操作的Association下进行。因此,Query/Retrieve 服务的SCP则作为Storage服务的SCU.
注: 接受stored SOP Instances的应用实体始终是C-GET操作的发起者, C-GET请求可以应用于Query/Retrieve信息模型的各个层次。在什么层次上进行传输取决于SOP Class.
1.3.1 C-GET 服务参数
1.3.1.1 SOP Class UID
SOP Class UID 确定Query/Retrieve信息模型
1.3.1.2 Priority
Priority定义C-GET及C-STORE子操作的优先级.
SCP不一定处理优先级.无论SCP是否支持优先级处理都必需在Conformance Statement指出不同优先级的含义.C-STORE子操作应采用相同的优先级.
1.3.1.3 Identifier
C-GET 请求应包含一个Identifier. C-GET响应有条件的包含一个identifier(C.4.3.1.3.2.有要求).
注: 在PS3.7中C-GET原语标记Identifier为U,而这里特别指定要求有.
1.3.1.3.1 请求Identifier结构
C-GET请求的Identifier应包含:
— Query/Retrieve Level (0008,0052) 定义获取层次
— 唯一值可以包含Patient ID (0010,0020), Study Instance UIDs (0020,000D), Series Instance UIDs (0020,000E), 和SOPInstance UIDs (0008,0018)
不能包含Specific Character Set (0008,0005).
每一层的唯一关键属性和允许的值应该在Query/Retrieve信息模型的SOP Class里有定义.
注: 在基本行为里,如果Query/Retrieve层次是IMAGE,SERIES 或者STUDY, 采用UID列表匹配可以获取一个以上的实体.但Patient ID (0010,0020)则只能用单一值匹配.
1.3.1.3.2 响应Identifier结构
Failed SOP Instance UID List (0008,0058) 指出C-STORE子操作失败的SOP Instance的UID列表. C-GET响应根据status值来有条件的包含Failed SOP Instance UID List (0008,0058).如果没有失败的C-STORE子操作, Failed SOP Instance UID List (0008,0058)属性不存在从而C-GET响应就没有Data Set.
Specific Character Set (0008,0005) 不能存在.
C-GET响应的identifier在status为:
— Canceled, Failed, Refused, 或 Warning时应包含Failed SOP Instance UID List Attribute
— Pending时不能包含Failed SOP Instance UID List Attribute (没有Data Set)
1.3.1.4 Status
下表规定了C-GET操作的特殊状态码. 常规状态码在PS 3.7定义。
1.3.1.5 Number of Remaining Sub-Operations
基于响应的状态码选择性的包含Number of Remaining Sub-operations. 该参数指出还有多少个C-STORE子操作没有完成.
若C-MOVE响应状态为:
— Pending :则应包含该参数
— Canceled:可包含该参数
— Warning, Failed, Refused, or Successful 不应包含该参数.
1.3.1.6 Number of Successful Sub-Operations
根据响应状态来决定是否包含Number of Successful Sub-operations. 该参数给出了Store子操作成功的次数.
若响应状态为:
— Pending 则应当包含该参数.
— Canceled, Warning, Failed, Refused, or Successful 则可能包含该参数
1.3.1.7 Number of Failed Sub-Operations
根据响应状态来决定是否包含该参数. 该参数给出了Store子操作失败的次数
若响应状态为:
— Pending 则应当包含该参数.
— Canceled, Warning, Failed, Refused, or Successful 则可能包含该参数
1.3.1.8 Number of Warning Sub-Operations
根据响应状态来决定是否包含该参数. 该参数给出了Store子操作警告的次数
若响应状态为:
— Pending 则应当包含该参数.
— Canceled, Warning, Failed, Refused, or Successful 则可能包含该参数
1.3.2 C-GET SCU 行为
这章讨论C-GET SCU 基本和扩展行为.
1.3.2.1 基本行为
SCU通过C-GET请求表达以下语义:
— SCU会在协商建立阶段提议足够的presentation context以容纳会在同一个Association发生的C-STORE子操作. Query/Retrieve服务类的SCU则扮演Storage服务类的SCP.
—在Query/Retrieve层次上应当提供每个层次的唯一属性的单一值.如果获取的层次为STUDY,SCU应提供一个唯一属性. 如果获取多个项目且获取层次为STUDY,SERIES或IMAGE, 则应提供一个UID或UID列表. SCU 还应当提供转移的目标,转移目标应当是具备Storage服务的SCP的AET.
— SCU应能理解C-GET响应的状态值为Pending是表示C-STORE子操作正在进行. 这些响应应给出剩余,成功,失败,警告的C-STORE子操作次数.
— SCU应能明白响应状态为Success, Warning, Failed,或Refused表示最后的响应. 这最后的响应应指出C-STORE子操作的成功,失败的次数. SCU应能理解状态为:
— Success 表示所有的子操作为成功的.
— Warning 表示一个或多个子操作为成功的且一个或多个子操作为不成功或者具有警告状态, 或者所有的子操作为警告状态.
— Failed 或 Refused 表示所有的子操作是不成功的.
— SCU可以发送C-GET-CANCEL请求取消C-GET服务. SCU 应能理解C-GET响应状态为Canceled表示传输取消了. 该响应必须包含成功,失败,警告的子操作次数. 如果存在还没有进行的C-STORE子操作,则响应可以包含该次数.
1.3.2.2 扩展行为
扩展的SCU行为应当在协商建立时协商好.如果扩展行为没有在协商时达成一致,则只有基本行为会被执行.扩展行为包括所有基本行为,同时还包括以下选项:
— 关联查询
1.3.2.2.1 关联查询
带关联查询的C-GET服务取消了基本行为中所有查询层次都要指定一个唯一属性的限制. 因此,C-MOVE请求的Identifier会传送:
— 所有与Study Instance UID (0020,000D)标识的STUDY相关的composite object instances
— 所有与Series Instance UID (0020,000E)标识的SERIES相关的composite object instances.
— 通过SOP Instance UID (0008,0018)的列表而确定的各个composite object instances.
1.3.3 C-GET SCP 行为
这章讨论C-GET SCP的基本和扩展行为.
1.3.3.1 基本行为
SCP通过C-GET响应表达以下语义.
— SCP应该根据C-GET请求的identifier的唯一属性值确定一个实体的集合. SCP应启动相关的Storage SOP Instances的C-STORE操作. 这些C-STORE子操作应发生在另外一个Association. Query/Retrieve服务类的SCP则作为Storage服务类的SCU.
— SCP应当在同一个Association下发起与Patient ID, Study Instance UID列表, Series Instance UID列表, SOP Instance UID列表相关的stored SOP Instances的C-STORE子操作.
— 如果SCP无法就某一个SOP Instance协商好适合的Presentation Context, 那么对应的子操作则视为失败的.
— SCP可选择在C-STORE过程中产生状态为Pending的C-GET响应.这些响应应指出剩余,成功,失败和警告的子操作次数.
— 当C-STORE子操作全部完成, SCP应产生最后的响应,其状态可以为Success, Warning, Failed, Refused. 该响应必须指出成功,失败,警告的子操作次数. C-GET响应的状态为:
— Successful : 如果所有子操作成功.
— Warning : 如果一个或多个子操作成功但一个或多个子操作不成功或带警告标志, 或者所有的子操作为警告.
— Failed or Refused : 如果所有的子操作为失败.
SCP可能会在C-GET的过程中收到C-GET-CANCEL请求. 则SCP应中断所有的C-STORE子操作并返回Canceled标记. 状态为Canceled的C-GET响应必须包含C-STORE子操作成功,失败,警告的次数. 如果可能,还应当包含剩余的还没有发起的C-STORE子操作次数.
— 如果SCP通过多个编码管理图像(see C.6.1.1.5.1), 则只有其中一个编码会被包含在object instances集合里.
注: 1.当在Patient,Study,Series层次获取具有多个可能编码的图像时,SCP可以基于SCU的身份,C-STORE所在的Association接受的传输语法或者其他因素来选择合适的编码.
2. 如果C-GET所在的Association异常中断, 则不可能发送后续的响应.则C-GET-SCP作为C-STORE的SCU的行为在这样的条件下是没有定义的,而且,C-STORE子操作是否继续进行也是没有定义的.
1.3.3.2 扩展行为
扩展的SCP行为应当在协商建立时协商好.如果扩展行为没有在协商时达成一致,则只有基本行为会被执行.扩展行为包括所有基本行为,同时还包括以下选项:
— 关联查询
1.3.3.2.1 关联查询
带关联查询的C-GET服务取消了基本行为中所有查询层次都要指定一个唯一属性的限制. 因此,C-GET请求的Identifier会获取:
— 对应Study Instance UID的所有composite object instances.
— 对应Series Instance UID的所有composite object instances.
— 对应各个SOP Instance UID的composite object instances.