2016-09-09 3 views
0

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

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

Gist of my implementation

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

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

ответ

1

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

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

Внедрив его таким образом, вы можете избавиться от «обмена сообщениями DICOM» для каждого отдельного изображения, на которое влияет запрос C-MOVE.

Смежные вопросы