Fo-Dicom CMove SCP хорошая реализация

Я реализовал супер быстрый PACS-сервер с fo-dicom, моя единственная реальная проблема на данный момент - обработка запроса CMove.

IDicomCMoveProvider имеет один метод IEnumerable<DicomCMoveResponse> OnCMoveRequest(DicomCMoveRequest request); однако способ, которым я это реализовал, выглядит неправильно и довольно медленно.

Суть моей реализации

В частности, внутри метода CMove я создаю новый запрос CStore, который отправляю модальности, которая должна получить исследование, для каждого экземпляра я создаю новый запрос CStore, новый DicomClient, затем отправляю его и жду ответа. Затем происходит медленная часть, каждый экземпляр выполняет всю коммуникационную связь DICOM, соединяет, связывает, отправляет экземпляр, разъединяет, разъединяет, и требуется целое исследование.

Мой вопрос заключается в том, как вы должны реализовать это правильно, чтобы он открывал только одно соединение, отправлял все изображения и закрывал. Пример того, как это делается с помощью fo-dicom, будет идеальным.

1 ответ

Получив C-MOVE-запрос до открытия ассоциации C-STORE, можно:

  • определить список соответствующих экземпляров SOP (изображений), на которые влияет запрос
  • Построить список контекстов представления для всех совпадающих экземпляров (т.е. сгруппировать по UID класса SOP)
  • Согласование всех контекстов представления в одном запросе ассоциации к AE назначения C-MOVE
  • Отправить каждое изображение в этой ассоциации

Внедрив его таким образом, вы можете избавиться от "коммуникационного шебанга DICOM" для каждого отдельного образа, на который влияет C-MOVE-запрос.

Другие вопросы по тегам