Example #1
0
 private void CreateDicomQrClient()
 {
     if (m_DicomQrClient == null)
     {
         m_DicomQrClient = new DicomQrClient(m_Settings.ServerHost, m_Settings.QrServerPort, m_Settings.QrServerAeTitle, m_Settings.ClientAeTitle);
     }
 }
Example #2
0
        public async Task <int> GetSeriesCount(string id)
        {
            var request = DicomQrClient.CreateSeriesQueryRequest(id, null);
            var series  = await m_DicomQrClient.QueryAsync(request);

            return(series.Count);
        }
Example #3
0
        private void Configure(object sender, RoutedEventArgs e)
        {
            var window = new ConfigWindow
            {
                Owner = this
            };

            if (window.ShowDialog() == true)
            {
                m_Settings.Save();
                m_DicomQrClient    = null;
                m_DicomStoreClient = null;
            }
        }
Example #4
0
        private async void FindStudies(object sender, RoutedEventArgs e)
        {
            var button = (Button)sender;

            button.Focus();

            CreateDicomQrClient();
            await DoWork(async() =>
            {
                var request         = DicomQrClient.CreateStudyQueryRequest(StudyQuery);
                var datasets        = await m_DicomQrClient.QueryAsync(request);
                Studies.ItemsSource = datasets.Select(dataset => new DicomStudy(dataset)).OrderByDescending(study => study.Date);
            });
        }
Example #5
0
 public async Task OpenStudy(string id, bool move)
 {
     DeleteFolder(id);
     if (!move)
     {
         var request = DicomQrClient.CreateStudyGetRequest(id);
         await m_DicomQrClient.RetrieveAsync(request, Save);
     }
     else
     {
         var request = DicomQrClient.CreateStudyMoveRequest(id, m_Settings.Client.AeTitle);
         await m_DicomQrClient.RetrieveAsync(request, Save, m_Settings.Client.Port);
     }
     OpenFolder(id);
 }
Example #6
0
        private async Task UploadFiles(IEnumerable <DicomFile> files)
        {
            CreateDicomStoreClient();
            await DoWork(async() =>
            {
                await m_DicomStoreClient.StoreAsync(files);
            }, true);

            CreateDicomQrClient();
            await DoWork(async() =>
            {
                var request         = DicomQrClient.CreateStudyQueryRequest(StudyQuery);
                var datasets        = await m_DicomQrClient.QueryAsync(request);
                Studies.ItemsSource = datasets.Select(dataset => new DicomStudy(dataset)).OrderByDescending(study => study.Date);
            });
        }
Example #7
0
        private async void Studies_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var study = (DicomStudy)Studies.SelectedItem;

            if (study == null)
            {
                Series.ItemsSource = null;
                return;
            }

            CreateDicomQrClient();
            await DoWork(async() =>
            {
                var request        = DicomQrClient.CreateSeriesQueryRequest(study.Uid, SeriesQuery);
                var datasets       = await m_DicomQrClient.QueryAsync(request);
                Series.ItemsSource = datasets.Select(dataset => new DicomSeries(dataset)).OrderBy(series => series.Number);
            });
        }
Example #8
0
        private async void UploadFiles(object sender, RoutedEventArgs e)
        {
            var dialog = new OpenFileDialog();

            dialog.Multiselect = true;
            if (dialog.ShowDialog() == true)
            {
                CreateDicomStoreClient();
                await DoWork(async() =>
                {
                    await m_DicomStoreClient.StoreAsync(dialog.FileNames.Select(filePath => DicomFile.Open(filePath)));
                }, true);

                CreateDicomQrClient();
                await DoWork(async() =>
                {
                    var request         = DicomQrClient.CreateStudyQueryRequest(StudyQuery);
                    var datasets        = await m_DicomQrClient.QueryAsync(request);
                    Studies.ItemsSource = datasets.Select(dataset => new DicomStudy(dataset)).OrderByDescending(study => study.Date);
                });
            }
        }
Example #9
0
        private async Task OpenStudy()
        {
            var study = (DicomStudy)Studies.SelectedItem;

            RetrievingProgress.Value   = 0;
            RetrievingProgress.Maximum = study.InstanceCount ?? 0;

            await DoWork(async() =>
            {
                DeleteFolder(study);
                if (CGetOption.IsChecked == true)
                {
                    var request = DicomQrClient.CreateStudyGetRequest(study.Uid);
                    await m_DicomQrClient.RetrieveAsync(request, Save);
                }
                else
                {
                    var request = DicomQrClient.CreateStudyMoveRequest(study.Uid, m_Settings.ClientAeTitle);
                    await m_DicomQrClient.RetrieveAsync(request, Save, m_Settings.ClientPort);
                }
                OpenFolder(study);
            });
        }
Example #10
0
 public DicomService(IConfiguration config)
 {
     m_Settings      = config.Get <Settings>();
     m_DicomQrClient = new DicomQrClient(m_Settings.QrServer.Host, m_Settings.QrServer.Port, m_Settings.QrServer.AeTitle, m_Settings.Client.AeTitle);
 }