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-запрос.