Clearcanvas Строка подключения для ImageServer "EndpointAddress" - PullRequest
2 голосов
/ 26 января 2011

ПРИМЕЧАНИЕ :: Я также задавал этот вопрос на форумах 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 с помощью приложения «Рабочая станция».Я не уверен, как настроить строку подключения, я думаю.

{
    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
}

Ответы [ 2 ]

3 голосов
/ 28 января 2011

Я предполагаю, что вы захотите загрузить изображения из 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();

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

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

Как сказал "Стив Врановский", взгляните на StarageScp.cs в скрипте clearcanvas. Там вы найдете класс 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);
...