Передача DICOM по сети: C-STORE, порты и AE Title
Снимки не дошли до архива — ситуация, знакомая каждому, кто настраивал DICOM-сеть. Причина может быть в кабеле, порте, имени приложения или в том, что сервер отклонил ассоциацию.
Разберём порядок диагностики: от простого к сложному, без изменения рабочего контура.
Как устроена передача
Отправитель устанавливает соединение с получателем по TCP, затем запрашивает ассоциацию — согласование параметров обмена.
В рамках ассоциации выполняется операция C-STORE: передача одного объекта. На каждый объект приходит ответ с кодом статуса.
Если ассоциация не установлена, объекты вообще не передаются.
Проверка сети
Начните с доступности узла: ping и проверка порта.
Ping может быть заблокирован, поэтому отсутствие ответа ещё не означает, что узел недоступен.
Проверка порта показывает, слушает ли получатель соединения. Если порт закрыт, дальше искать бессмысленно.
AE Title
AE Title — имя приложения, до 16 символов. Оно должно быть согласовано с обеих сторон.
Частая ошибка — лишний пробел или другой регистр. Некоторые системы чувствительны к регистру, некоторые — нет.
Отправитель должен знать AE Title получателя, а получатель — ожидать отправителя, если настроен список разрешённых.
Ассоциация
При установке ассоциации стороны согласуют поддерживаемые Presentation Contexts — комбинации SOP Class и Transfer Syntax.
Если отправитель предлагает только сжатый формат, а получатель его не поддерживает, ассоциация может быть принята частично или отклонена.
Сообщение об отказе содержит причину: неверный AE Title, неподдерживаемый контекст, отказ по правам.
Коды статусов C-STORE
Успех обозначается статусом 0x0000. Предупреждения начинаются с 0xB и означают, что объект принят с замечаниями.
Ошибки начинаются с 0xA или 0xC: отказ в доступе, нехватка места, неподдерживаемый формат.
Записывайте код и текст: по ним почти всегда понятно, на чьей стороне проблема.
Таймауты и размер
Передача большого исследования по медленному каналу может превысить таймаут.
Увеличивать таймаут стоит осторожно: лучше разбить передачу на части или сжать данные без потерь.
Обрыв на середине оставляет часть объектов; повторная передача обычно дополняет набор.
Журналы и трассировка
Смотрите журнал получателя: он фиксирует входящие ассоциации и ошибки.
На отправителе ищите записи о неудачных соединениях и кодах ответа.
Для проверки удобно использовать утилиты DCMTK: echoscu проверяет соединение, storescu передаёт файлы, storescp принимает.
Что не стоит делать
Не меняйте настройки рабочего PACS без согласования.
Не отключайте проверку AE Title «чтобы заработало»: это снижает контроль доступа.
Не открывайте DICOM-порт в интернет.
Проверка на тестовом контуре
Сначала воспроизведите проблему между двумя тестовыми узлами, где можно менять настройки.
Так вы поймёте, на какой стороне ограничение, не затрагивая рабочую систему.
После решения перенесите изменения в рабочий контур по согласованной процедуре.
Документирование параметров
Запишите AE Title, адрес, порт и поддерживаемые форматы для каждого узла.
Без такой таблицы каждая новая интеграция начинается с угадывания.
Обновляйте её при изменении конфигурации.
Роли и ответственность
Обычно настройку ведут ИТ-специалисты, а проверку — пользователи на своей стороне.
Разделение ускоряет диагностику: каждый проверяет свой участок.
Зафиксируйте, кто меняет конфигурацию и кто подтверждает результат.
Проверка после изменений
После любой правки повторите тестовую передачу и убедитесь, что снимки открываются.
Проверьте не только приём, но и отображение: файл может прийти, но не читаться.
Результат занесите в журнал изменений.
Сжатие и совместимость
Если передача проходит, но снимки не открываются, проверьте формат сжатия.
Получатель мог принять объект, но не иметь кодека для отображения.
В этом случае помогает пересылка без сжатия или с поддержанным форматом.
Проверка на небольшом файле
Начните с одного объекта, а не с целого исследования.
Так вы быстрее увидите код ошибки и не потратите время на повтор больших передач.
После успешного теста переходите к полному набору.
Итог
Диагностика передачи идёт по шагам: сеть, порт, AE Title, ассоциация, статус C-STORE.
Записывайте коды и параметры узлов: это ускоряет следующий разбор.
Рабочий контур меняют только по согласованной процедуре и с записью в журнале изменений. Перед правкой уточняют окно обслуживания и способ откатить настройку.
Как читать журнал получателя
Записи обычно содержат время, вызывающий узел, AE Title и результат ассоциации.
Если ассоциация установлена, но C-STORE завершился ошибкой, ищите код статуса и имя объекта.
Сопоставьте время с моментом отправки: расхождение часов на узлах усложняет разбор.
Чек-лист
- Узел доступен по сети.
- Порт слушается.
- AE Title совпадает.
- Presentation Context поддерживается.
- Код статуса зафиксирован.
- Таймаут проверен.
- Журналы просмотрены.
- Рабочий контур не изменён.
Частые вопросы
Почему ping не проходит, а снимки передаются?
ICMP может быть заблокирован, при этом TCP-соединение работает.
Можно ли передавать DICOM через интернет?
Технически да, но только через защищённый канал и с организационным согласованием.
Что означает статус 0xB000?
Предупреждение: объект принят, но с замечанием. Проверьте детали в журнале.