2011-01-26 3 views
2

Примечание :: Я также задал этот вопрос на форумах Clearcanvas в :: http://www.clearcanvas.ca/dnn/tabid/69/afv/topic/aff/11/aft/15086/Default.aspxClearcanvas Строка соединения для ImageServer «EndpointAddress»

Привет, я делаю свой собственный ImageViewer в WPF & теперь нужно загрузить файлы DICOM с ImageServer. Я не использую Workstation в качестве отправной точки, я делаю зрителя с нуля с помощью (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 
} 
+0

Можете ли вы дать некоторые подробности о том, что это доступны для вас? Создаете ли вы приложение ImageViewer с использованием рабочей станции ClearCanvas в качестве отправной точки, и у вас есть все службы рабочей станции, доступные для вас? Вы просто используете библиотеку DICOM? Вы можете отредактировать вопрос, чтобы уточнить, что вы ищете? –

+0

У меня есть все для меня, да. Вот изменения, которые я добавил в свой пост :: << - Я НЕ использую рабочую станцию ​​в качестве отправной точки, я делаю зрителя с нуля с помощью (ClearCanvas.Dicom.dll). Я установил ImageServer на свой компьютер для тестирования и могу подключиться к нему с помощью приложения рабочей станции, но не с моим приложением (и это моя проблема) .-- >> – zezba9000

ответ

3

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

 

Обратите внимание, что если вы хотите «фильтр» ваш запрос, вы можете установить дополнительные теги, чтобы соответствовать в запросеMessage.

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

 

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 имеет реализацию SCP хранения. Я бы предложил посмотреть файл в Trunk \ Dicom \ Samples \ StorageScp.cs. Это требует достаточного количества дополнительного кода для реализации.

+0

Sweet tnx, теперь я получаю список элементов , Я попробую и войду в «DICOM Storage SCP», как вы упомянули, и посмотрите, как далеко я смогу добраться с этой следующей неделе. Tnx снова за полезный ответ. – zezba9000

1

Это NOTE/INFO для других ::

Как «Стив Wranovský» заявил, посмотрите на 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); 
Смежные вопросы