Exemple #1
0
        public void Initialize( )
        {
            try
            {
                DicomHelper      = new DicomHelpers( );
                DataAccessHelper = new DataAccessHelpers( );

                var storagePath    = DicomHelpers.GetTestDataFolder("storage", true);
                var mediaIdFactory = new DicomMediaIdFactory();


                MediaStorageService storageService = new FileStorageService(storagePath);

                var factory = new Pacs.Commands.DCloudCommandFactory(storageService,
                                                                     DataAccessHelper.DataAccess,
                                                                     new DicomMediaWriterFactory(storageService,
                                                                                                 mediaIdFactory),
                                                                     mediaIdFactory);

                StoreService = new ObjectStoreService(factory);
                QueryService = new ObjectArchieveQueryService(DataAccessHelper.DataAccess);

                PopulateData( );
            }
            catch (Exception)
            {
                Cleanup( );

                throw;
            }
        }
Exemple #2
0
        public static void Start(int port, string aet)
        {
            AETitle = aet;
            string storageConection = ConfigurationManager.AppSettings["app:PacsStorageConnection"];

            if (storageConection.StartsWith("|datadirectory|", StringComparison.OrdinalIgnoreCase))
            {
                var appDataPath  = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                var lastIndex    = storageConection.IndexOf('|', 1);
                var userPathPart = storageConection.Substring(lastIndex + 1);
                storageConection = appDataPath + userPathPart;
            }
            IDicomMediaIdFactory mediaIdFactory = new DicomMediaIdFactory();
            DbSchemaProvider     schemaProvider = new StorageDbSchemaProvider();

            DatabaseService = new SqlDatabaseFactory(ConfigurationManager.AppSettings["app:PacsDataArchieve"]);

            IObjectArchieveDataAccess dataAccess =
                new ObjectArchieveDataAccess(
                    schemaProvider,
                    new ObjectArchieveDataAdapter(
                        schemaProvider,
                        DatabaseService
                        )
                    );

            IMediaStorageService storageService = new FileStorageService(storageConection);

            IDicomMediaWriterFactory dicomMediaWriterFactory =
                new DicomMediaWriterFactory(
                    storageService,
                    mediaIdFactory
                    );

            StorageService = new ObjectStoreService(
                new Pacs.Commands.DCloudCommandFactory(
                    storageService,
                    dataAccess,
                    dicomMediaWriterFactory,
                    mediaIdFactory
                    )
                );

            QueryService = new ObjectArchieveQueryService(dataAccess);

            RetrieveService = new ObjectRetrieveService(
                storageService,
                dicomMediaWriterFactory,
                mediaIdFactory
                );

            _server = DicomServer.Create <SCP>(port);
        }
Exemple #3
0
        public void Initialize( )
        {
            DicomHelper      = new DicomHelpers( );
            DataAccessHelper = new DataAccessHelpers( );
            var storagePath    = DicomHelpers.GetTestDataFolder("storage", true);
            var mediaIdFactory = new DicomMediaIdFactory( );


            MediaStorageService storageService = new FileStorageService(storagePath);

            var factory = new Pacs.Commands.DCloudCommandFactory(storageService,
                                                                 DataAccessHelper.DataAccess,
                                                                 new DicomMediaWriterFactory(storageService,
                                                                                             mediaIdFactory),
                                                                 mediaIdFactory);

            StoreService = new ObjectStoreService(factory);
        }
        private static IObjectStoreService CreateStorageService(string storagePath, string databaseConnectionString)
        {
            IDicomMediaIdFactory      mediaIdFactory = new DicomMediaIdFactory( );
            IMediaStorageService      storageService = new FileStorageService(storagePath);
            DbSchemaProvider          schemaProvider = new StorageDbSchemaProvider( );
            IDatabaseFactory          databaseFacory = new SqlDatabaseFactory(databaseConnectionString);
            ObjectArchieveDataAdapter dataAdapter    = new ObjectArchieveDataAdapter(schemaProvider, databaseFacory);
            IObjectArchieveDataAccess dataAccess     = new ObjectArchieveDataAccess(databaseConnectionString,
                                                                                    schemaProvider,
                                                                                    dataAdapter);
            IDicomMediaWriterFactory mediaWriterFactory = new DicomMediaWriterFactory(storageService,
                                                                                      mediaIdFactory);
            IDCloudCommandFactory factory = new DCloudCommandFactory(storageService,
                                                                     dataAccess,
                                                                     mediaWriterFactory,
                                                                     mediaIdFactory);

            IObjectStoreService StoreService = new ObjectStoreService(factory);

            return(StoreService);
        }
        public void Initialize( )
        {
            DicomHelper      = new DicomHelpers( );
            DataAccessHelper = new DataAccessHelpers( );
            var storagePath    = DicomHelpers.GetTestDataFolder("storage", true);
            var mediaIdFactory = new DicomMediaIdFactory( );


            MediaStorageService         storageService = new FileStorageService(storagePath);
            IObjectArchieveQueryService queryService   = new ObjectArchieveQueryService(DataAccessHelper.DataAccess);

            var factory = new Pacs.Commands.DCloudCommandFactory(storageService,
                                                                 DataAccessHelper.DataAccess,
                                                                 new DicomMediaWriterFactory(storageService,
                                                                                             mediaIdFactory),
                                                                 mediaIdFactory);

            StoreService = new ObjectStoreService(factory);

            var urlProvider = new MockRetrieveUrlProvider();

            WebStoreService = new WebObjectStoreService(StoreService, urlProvider);
            WebQueryService = new QidoRsService(queryService, mediaIdFactory, storageService);
        }
        public ResponseContent Convert(ConverterData data)
        {
            List <ConvertedFileInfo> convertedDcm    = new List <ConvertedFileInfo>();
            ResponseContent          responseContent = new ResponseContent( );

            if (data.Files.Count == 0)
            {
                responseContent.Status = System.Net.HttpStatusCode.NoContent;

                return(responseContent);
            }

            switch (data.Format)
            {
            case KnownFormats.JSON:
            {
                foreach (var file in data.Files)
                {
                    var converter = new JsonDicomConverter();
                    var dcmFile   = Dicom.DicomFile.Open(new MemoryStream(file.Data));

                    converter.WriteInlineBinary = true;

                    convertedDcm.Add(new ConvertedFileInfo( )
                        {
                            FileName = Path.ChangeExtension(file.FileName, KnownFormats.JSON),
                            Data     = Encoding.UTF8.GetBytes(converter.Convert(dcmFile.Dataset))
                        });
                }
            }
            break;

            case KnownFormats.XML:
            {
                foreach (var file in data.Files)
                {
                    var converter = new XmlDicomConverter();
                    var dcmFile   = Dicom.DicomFile.Open(new MemoryStream(file.Data));

                    converter.WriteInlineBinary = true;

                    convertedDcm.Add(new ConvertedFileInfo( )
                        {
                            FileName = Path.ChangeExtension(file.FileName, KnownFormats.XML),
                            Data     = Encoding.UTF8.GetBytes(converter.Convert(dcmFile.Dataset))
                        });
                }
            }
            break;

            case KnownFormats.JPG:
            {
                foreach (var file in data.Files)
                {
                    FileStorageService  storageService = new FileStorageService(Path.GetTempPath());
                    DicomMediaIdFactory mediaIdFactory = new DicomMediaIdFactory();
                    JpegMediaWriter     writers        = new JpegMediaWriter(storageService, mediaIdFactory);
                    var dcmFile   = Dicom.DicomFile.Open(new MemoryStream(file.Data));
                    var locations = writers.CreateMedia(new DicomMediaWriterParameters()
                        {
                            Dataset   = dcmFile.Dataset,
                            MediaInfo = new DicomMediaProperties()
                            {
                                MediaType = writers.MediaType
                            }
                        });
                    int count = 1;
                    foreach (var location in locations)
                    {
                        var fileName = locations.Count > 1 ? Path.ChangeExtension((Path.GetFileNameWithoutExtension(file.FileName) + count++), KnownFormats.JPG):
                                       Path.ChangeExtension(file.FileName, KnownFormats.JPG);
                        using (var stream = location.Download())
                        {
                            convertedDcm.Add(new ConvertedFileInfo( )
                                {
                                    Data = stream.ReadAllBytes(), FileName = fileName
                                });
                        }

                        location.Delete();
                    }
                }
            }
            break;

            default:
            {
                responseContent.Status = System.Net.HttpStatusCode.UnsupportedMediaType;
            }
            break;
            }

            responseContent.FileName = Path.ChangeExtension(convertedDcm.First().FileName, "zip");
            responseContent.Content  = new ByteArrayContent(ZippingService.CreateZipData(convertedDcm));
            responseContent.Status   = System.Net.HttpStatusCode.OK;
            return(responseContent);
        }