Строка подключения Clearcanvas для ImageServer EndpointAddress

ПРИМЕЧАНИЕ. Я также задавал этот вопрос на форумах Clearcanvas по адресу:: http://www.clearcanvas.ca/dnn/tabid/69/afv/topic/aff/11/aft/15086/Default..aspx

Привет, я делаю свой собственный ImageViewer в WPF, и теперь мне нужно загрузить файлы DICOM с помощью ImageServer. Я НЕ использую рабочую станцию ​​в качестве отправной точки, я создаю программу просмотра с нуля, используя (ClearCanvas.Dicom.dll). Я настроил ImageServer на своем компьютере для тестирования и могу подключиться к нему с помощью приложения для рабочей станции, но не с моим приложением (и это моя проблема).

Когда я пытаюсь подключиться к ImageServer с помощью кода ниже, время ожидания соединения истекает. Я могу подключиться к своему ImageServer с помощью приложения Workstation. Я не уверен, как настроить строку подключения, я думаю.

{
    EndpointAddress endpoint = new EndpointAddress("http://localhost:104/ClearCanvas/ImageViewer/Automation?wsdl");
    StudyRootQueryServiceClient client = new StudyRootQueryServiceClient(binding, endpoint);
    client.Open();    
}

Вот настройка, которую я использую на рабочей станции для подключения, так как мне преобразовать ее в строку подключения??

{
    Server Name= ImageServer
    Host= localhost
    AE Title= SERVERAE
    Port= 104
}

person zezba9000    schedule 26.01.2011    source источник
comment
Можете ли вы дать более подробную информацию о том, что доступно для вас? Вы создаете приложение ImageViewer, используя рабочую станцию ​​ClearCanvas в качестве отправной точки, и доступны ли вам все службы рабочей станции? Вы просто используете библиотеку DICOM? Можете ли вы отредактировать вопрос, чтобы уточнить, что вы ищете?   -  person Steve Wranovsky    schedule 27.01.2011
comment
У меня есть все, что мне доступно, да. Вот изменения, которые я добавил в свой пост: ‹‹ -- Я НЕ использую рабочую станцию ​​в качестве отправной точки, я создаю программу просмотра с нуля, используя (ClearCanvas.Dicom.dll). Я настроил ImageServer на своем компьютере для тестирования и могу подключиться к нему с помощью приложения для рабочей станции, но не с моим приложением (и это моя проблема).--››   -  person zezba9000    schedule 28.01.2011


Ответы (2)


Я предполагаю, что вы захотите загрузить изображения с ImageServer через DICOM. Для этого потребуется запрос DICOM C-FIND на ImageServer для получения списка исследований на ImageServer. Затем вам нужно будет выбрать конкретное исследование и отправить запрос DICOM C-MOVE, чтобы переместить исследование в ваше приложение. Также обратите внимание, что вам потребуется приложение DICOM Storage SCP для прослушивания входящих ассоциаций DICOM, и ваше приложение должно быть настроено как устройство на ImageServer.

Чтобы выполнить запрос C-FIND с помощью библиотеки ClearCanvas DICOM, можно использовать следующий код:


StudyRootFindScu findScu = new StudyRootFindScu();
StudyQueryIod queryMessage = new StudyQueryIod();
queryMessage.QueryRetrieveLevel = QueryRetrieveLevel.Study;
queryMessage.SetCommonTags();

IList results = findScu.Find("LocalAETitle", "SERVERAE", "localhost", 104, queryMessage);

foreach (StudyQueryIod item in results)
{
    string AccessionNumber = item.AccessionNumber;
    string PatientID = item.PatientId;
    string Sex = item.PatientsSex;
    DateTime BirthDate = item.PatientsBirthDate;
    string StudyName = item.StudyDescription;
    string PatientName = item.PatientsName;
    string StudyUID = item.StudyInstanceUid;
    DateTime StudyDate = item.StudyDate.Value;
    string Modality = item.Modality;
    string ReferringPhysiciansName = item.ReferringPhysiciansName;
}


Обратите внимание: если вы хотите «отфильтровать» свой запрос, вы можете установить дополнительные теги для соответствия в queryMessage.

После того, как вы выбрали исследование из результатов, для отправки запроса DICOM C-MOVE можно использовать следующий код:


string studyInstanceUid = "1.1.1."; // Fill in with the real Study Instance UID
ClearCanvas.Dicom.Network.Scu.MoveScuBase moveScu = new ClearCanvas.Dicom.Network.Scu.StudyRootMoveScu("LocalAETitle", "SERVERAE", "localhost", 104, "LocalAETitle");
moveScu.AddStudyInstanceUid(studyInstanceUid);
moveScu.Move();

Наконец, исходный код ClearCanvas имеет реализацию Storage SCP. Я бы посоветовал посмотреть файл в Trunk\Dicom\Samples\StorageScp.cs. Это требует значительного количества дополнительного кода для реализации.

person Steve Wranovsky    schedule 28.01.2011
comment
Спасибо, спасибо, теперь я получаю список предметов. Я попытаюсь войти в SCP Storage DICOM, как вы упомянули, и посмотреть, как далеко я смогу продвинуться с этим на следующей неделе. Спасибо еще раз за полезный ответ. - person zezba9000; 29.01.2011

Это ПРИМЕЧАНИЕ/ИНФОРМАЦИЯ для других::

Как заявил «Стив Врановский», взгляните на StarageScp.cs в файле clearcanvas src. Там вы найдете класс StorageScp, который я успешно использовал для получения файла с моего ImageServer. Сначала убедитесь, что вы настроили порт вашего устройства в вашем ImageServer в разделе Admin/Configure/Devices на 106 или что-то в этом роде.

Затем вы запускаете класс StorageScp для прослушивания вашего порта.

StorageScp.StorageLocation = @"C:\Users\USER\Downloads\DICOM\ScpTEST";
StorageScp.StartListening("LocalAETitle", 106);
while(!StorageScp.Started) System.Threading.Thread.Sleep(10);

Не забудьте остановить прослушивание, когда закроете приложение.

StorageScp.StopListening(106);

Затем вы просто выполняете вызов C-Move, чтобы получить файл DICOM, пока ваш класс StorageScp его прослушивает.

MoveScuBase moveScu = new StudyRootMoveScu("LocalAETitle", "SERVERAE", "localhost", 104, "LocalAETitle");
moveScu.AddStudyInstanceUid(StudyUID);
moveScu.Move();

Также, если вы хотите отправить файл на ImageServer, посмотрите StorageScu.cs и, чтобы использовать класс, сделайте что-то вроде этого...

StorageScu scu = new StorageScu();
scu.AddFileToSend(d.FileName);
scu.Send("LocalAETitle", "SERVERAE", "localhost", 104);
person zezba9000    schedule 31.01.2011