示例#1
0
        string getImagesInSeries(SeriesQueryOut seriesResponse)
        {
            // find images ...............................
            DicomCFindRequest cfind = new DicomCFindRequest(DicomQueryRetrieveLevel.Image);

            cfind.Dataset.Add(DicomTag.StudyInstanceUID, seriesResponse.StudyInstanceUID);
            cfind.Dataset.Add(DicomTag.SeriesInstanceUID, seriesResponse.SeriesInstanceUID);
            cfind.Dataset.Add(DicomTag.SOPInstanceUID, "");
            cfind.Dataset.Add(DicomTag.InstanceNumber, "");
            int numImages = 0;

            cfind.OnResponseReceived = (request, response) =>
            {
                if (response.HasDataset)
                {
                    imageIDs.Add(response.Dataset.GetSingleValue <string>(DicomTag.SOPInstanceUID));
                    numImages++;
                }
                if (!response.HasDataset)
                {
                    Console.WriteLine("got " + numImages + " images" + Environment.NewLine);
                }
            };

            var client = new DicomClient();

            client.AddRequest(cfind);

            /* var pcs = DicomPresentationContext.GetScpRolePresentationContextsFromStorageUids(
             *   DicomStorageCategory.Image,
             *   DicomTransferSyntax.ExplicitVRLittleEndian,
             *   DicomTransferSyntax.ImplicitVRLittleEndian,
             *   DicomTransferSyntax.ImplicitVRBigEndian);
             * client.AdditionalPresentationContexts.AddRange(pcs); */

            imageIDs = new List <string>();

            try
            {
                Console.WriteLine(Environment.NewLine + "Querying server " + configuration.ip + ":" + configuration.port +
                                  " for IMAGES in series no. " + seriesResponse.SeriesInstanceUID);
                client.Send(configuration.ip, configuration.port, false, configuration.thisNodeAET, configuration.AET);
            }
            catch (Exception ec)
            {
                Console.WriteLine("Impossible to connect to server");
            }

            string SOPInstanceUID = "";

            if (imageIDs.Count > 0)
            {
                SOPInstanceUID = imageIDs[(int)(imageIDs.Count / 2.0f)];
            }

            return(SOPInstanceUID);
        }
        public static void addElementToSeriesTable(DownloadPage downloadPage, SeriesQueryOut response)
        {
            dynamic myItem = new System.Dynamic.ExpandoObject();
            IDictionary <string, object> myItemValues;

            PropertyInfo[] property = typeof(SeriesQueryOut).GetProperties();
            for (int j = 0; j < property.Length; j++)
            {
                myItemValues = (IDictionary <string, object>)myItem;
                myItemValues[property[j].Name] = property[j].GetValue(response);
            }
            downloadPage.dataGrid.Items.Add(myItem);
        }
示例#3
0
        BitmapImage downloadSampleImage(SeriesQueryOut seriesResponse, string SOPInstanceUID)
        {
            var cmove = new DicomCMoveRequest(configuration.thisNodeAET, seriesResponse.StudyInstanceUID, seriesResponse.SeriesInstanceUID, SOPInstanceUID);

            var client = new DicomClient();

            client.AddRequest(cmove);

            File.Create("singleImage.txt").Close();

            DirectoryInfo di = new DirectoryInfo("./images/");

            foreach (FileInfo file in di.GetFiles())
            {
                file.Delete();
            }

            client.Send(configuration.ip, configuration.port, false, configuration.thisNodeAET, configuration.AET);

            var image = new BitmapImage();

            if (File.Exists("./images/file.jpg"))
            {
                var uriSource = new Uri(Path.GetFullPath("./images/file.jpg"));
                image.BeginInit();
                image.CacheOption   = BitmapCacheOption.OnLoad;
                image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
                image.UriSource     = uriSource;
                image.EndInit();
            }
            else
            {
                MessageBox.Show("Listener didn't receive anything or didn't work");
            }

            File.Delete("singleImage.txt");
            return(image);
        }