DICOM: C-Move без C-Find (запрос извлечения SCU)
В DICOM ниже приведены классы, определенные для C-Find и C-Move at Study Root.
Study Root Query/Retrieve Information Model - FIND: 1.2.840.10008.5.1.4.1.2.2.1
Study Root Query/Retrieve Information Model - MOVE: 1.2.840.10008.5.1.4.1.2.2.2
Я реализовал Query Retrieve SCP и SCU в нескольких приложениях. Во всех этих случаях я всегда реализовывал оба класса. Сначала я делаю C-Find, чтобы получить список подходящих данных. Затем, основываясь на результате, я делаю (автоматически или вручную) C-Move, чтобы получить экземпляры. Все эти реализации работают нормально.
В последнее время я работаю над одним приложением, которое объединяет DICOM с другим частным протоколом для выполнения некоторых конкретных требований. Мне просто пришло в голову, можно ли напрямую делать C-Move без C-Find в качестве SCU?
Я уже знаю идентификатор (StudyInstanceUID) для извлечения, а также знаю, что он присутствует на SCP.
Я посмотрел в спецификации, но не смог найти ничего убедительного. Мне известно, что C-Find и C-Move могут выдаваться SCU SCP по различным соединениям / ассоциациям. Итак, на первый взгляд, то, что я думаю, выглядит возможным и законным.
Я работал со многими сторонними приложениями DICOM; ни один из них не реализует SCU, как я думаю. Все SCU реализуют C-Find и C-Move оба.
Вопрос:
Является ли DICOM законным и практичным для реализации команды C-Move SCU Retrieve без команды C-Find? Пожалуйста, укажите мне ссылку в спецификации, если это возможно.
1 ответ
Короткий ответ: Да, это совершенно законно в соответствии со спецификацией DICOM.
Длинный ответ: Давайте рассмотрим эталонную реализацию DICOM Q/R для DCMTK. Он предоставляет набор основных инструментов командной строки SCU, а именно findscu
а также movescu
, Идея состоит в том, чтобы передать вывод findscu
в movescu
построить действительный запрос C-MOVE (SCU).
По вашему требованию вы просто заменяете findscu
шаг с частной реализацией, которая не полагается на публично определенный протокол C-FIND (SCU), но другим механизмом (расширение к DICOM).
Так что да, ваша реализация C-MOVE (SCU) совершенно верна, поскольку нет необходимости предоставлять C-FIND (SCU) во время этого запроса.
Я понимаю, что вы не пытаетесь сделать резервную копию всей базы данных с помощью C-MOVE (SCU), это был просто возможный сценарий, когда кто-то пытался бы использовать C-MOVE (SCU) без предварительного запроса с действительным C-FIND (SCU) результат.