private DicomNCreateResponse CreateFilmSession(DicomNCreateRequest request) { if (_filmSession != null) { this.Logger.Error("Attemted to create new basic film session on association with {0}", CallingAE); SendAbort(DicomAbortSource.ServiceProvider, DicomAbortReason.NotSpecified); return(new DicomNCreateResponse(request, DicomStatus.NoSuchObjectInstance)); } var pc = request.PresentationContext; bool isColor = pc != null && pc.AbstractSyntax == DicomUID.BasicColorPrintManagementMetaSOPClass; _filmSession = new FilmSession(request.SOPClassUID, request.SOPInstanceUID, request.Dataset, isColor); this.Logger.Info("Create new film session {0}", _filmSession.SOPInstanceUID.UID); if (request.SOPInstanceUID == null || request.SOPInstanceUID.UID == string.Empty) { request.Command.AddOrUpdate(DicomTag.AffectedSOPInstanceUID, _filmSession.SOPInstanceUID); } var response = new DicomNCreateResponse(request, DicomStatus.Success); return(response); }
private void PresentationLut_NoReferencedPresentationLutSequence_GetterReturnsNull() { var session = new FilmSession(DicomUID.BasicFilmSession); var box = new FilmBox(session, null, DicomTransferSyntax.ImplicitVRLittleEndian); Assert.Null(box.PresentationLut); }
public static FilmSession Load(string filmSessionFile) { var file = DicomFile.Open(filmSessionFile); var filmSession = new FilmSession(file.FileMetaInfo.MediaStorageSOPClassUID, file.FileMetaInfo.MediaStorageSOPInstanceUID, file.Dataset); return(filmSession); }
public void ImageSequence_NoSequenceInImageBox_ReturnsNull(DicomUID sopClassUid) { var session = new FilmSession(DicomUID.BasicFilmSession); var filmBox = new FilmBox(session, null, DicomTransferSyntax.ImplicitVRLittleEndian); var imageBox = new ImageBox(filmBox, sopClassUid, null); Assert.Null(imageBox.ImageSequence); }
public void Clean() { //delete the current active print job and film sessions lock (_synchRoot) { _filmSession = null; _printJobList.Clear(); } }
public PrintJob(string jobLabel) { FilmSession = new FilmSession(DicomUID.BasicFilmSessionSOPClass) { FilmSessionLabel = jobLabel, MediumType = "PAPER", NumberOfCopies = 1 }; }
void OnQueryPageSettings(object sender, QueryPageSettingsEventArgs e) { OnStatusUpdate(string.Format("Printing film {0} of {1}", _currentPage + 1, FilmBoxFolderList.Count)); var filmBoxFolder = string.Format("{0}\\{1}", FullPrintJobFolder, FilmBoxFolderList[_currentPage]); var filmSession = FilmSession.Load(string.Format("{0}\\FilmSession.dcm", filmBoxFolder)); _currentFilmBox = FilmBox.Load(filmSession, filmBoxFolder); e.PageSettings.Margins.Left = 25; e.PageSettings.Margins.Right = 25; e.PageSettings.Margins.Top = 25; e.PageSettings.Margins.Bottom = 25; e.PageSettings.Landscape = _currentFilmBox.FilmOrienation == "LANDSCAPE"; }
public void Save_BasicFilmBox_CreatesRelevantFilesAndFolders() { var path = @".\Test Data\Film Box Test 1"; if (Directory.Exists(path)) Directory.Delete(path, true); Directory.CreateDirectory(path); var session = new FilmSession(DicomUID.BasicFilmSessionSOPClass); var box = new FilmBox(session, null, DicomTransferSyntax.ImplicitVRLittleEndian); box.BasicImageBoxes.Add(new ImageBox(box, DicomUID.BasicGrayscaleImageBoxSOPClass, null)); box.Save(path); Assert.True(File.Exists(Path.Combine(path, "FilmBox.dcm"))); Assert.True(File.Exists(Path.Combine(path, "FilmBox.txt"))); Assert.True(Directory.Exists(Path.Combine(path, "Images"))); Assert.True(Directory.GetFiles(Path.Combine(path, "Images")).Length > 0); }
private DicomNDeleteResponse DeleteFilmSession(DicomNDeleteRequest request) { if (_filmSession == null) { this.Logger.Error("Can't delete a basic film session doesnot exist for this association {0}", CallingAE); return(new DicomNDeleteResponse(request, DicomStatus.NoSuchObjectInstance)); } if (!request.SOPInstanceUID.Equals(_filmSession.SOPInstanceUID)) { this.Logger.Error("Can't delete a basic film session with instace UID {0} doesnot exist for this association {1}", request.SOPInstanceUID.UID, CallingAE); return(new DicomNDeleteResponse(request, DicomStatus.NoSuchObjectInstance)); } _filmSession = null; return(new DicomNDeleteResponse(request, DicomStatus.Success)); }
public void Load_BasicFilmBox_ExpectedSopClassFound() { var path = @".\Test Data\Film Box Test 2"; if (Directory.Exists(path)) Directory.Delete(path, true); Directory.CreateDirectory(path); var expected = DicomUID.Generate(); var session = new FilmSession(DicomUID.BasicFilmSessionSOPClass); var box = new FilmBox(session, expected, DicomTransferSyntax.ImplicitVRLittleEndian); box.BasicImageBoxes.Add(new ImageBox(box, DicomUID.BasicGrayscaleImageBoxSOPClass, null)); box.Save(path); var loaded = FilmBox.Load(session, path); var actual = loaded.SOPInstanceUID; Assert.Equal(expected, actual); Assert.True(loaded.BasicImageBoxes.Count > 0); }
/// <summary> /// Load a film box for a specific session from a specific folder. /// </summary> /// <param name="filmSession">Film session.</param> /// <param name="filmBoxFolder">Folder in which film box is stored.</param> /// <returns>Film box for the specified <paramref name="filmSession"/> located in the <paramref name="filmBoxFolder"/>.</returns> public static FilmBox Load(FilmSession filmSession, string filmBoxFolder) { var filmBoxFile = string.Format(@"{0}\FilmBox.dcm", filmBoxFolder); var file = DicomFile.Open(filmBoxFile); var filmBox = new FilmBox(filmSession, file.FileMetaInfo.MediaStorageSOPInstanceUID, file.Dataset); var imagesFolder = IOManager.CreateDirectoryReference(string.Format(@"{0}\Images", filmBoxFolder)); foreach (var image in imagesFolder.EnumerateFileNames("*.dcm")) { var imageBox = ImageBox.Load(filmBox, image); filmBox.BasicImageBoxes.Add(imageBox); } return(filmBox); }
/// <summary> /// Create baisc film box for specified film session /// </summary> /// <param name="filmSession">Film session instance</param> /// <param name="sopInstance">Basic film box SOP Instance UID</param> public FilmBox(FilmSession filmSession, DicomUID sopInstance, DicomTransferSyntax transferSyntax) : base() { this.InternalTransferSyntax = transferSyntax; _filmSession = filmSession; if (sopInstance == null || sopInstance.UID == string.Empty) { SOPInstanceUID = DicomUID.Generate(); } else { SOPInstanceUID = sopInstance; } this.Add(DicomTag.SOPClassUID, SOPClassUID); this.Add(DicomTag.SOPInstanceUID, SOPInstanceUID); BasicImageBoxes = new List<ImageBox>(); }
/// <summary> /// Create baisc film box for specified film session /// </summary> /// <param name="filmSession">Film session instance</param> /// <param name="sopInstance">Basic film box SOP Instance UID</param> /// <param name="transferSyntax">Requested internal transfer syntax.</param> public FilmBox(FilmSession filmSession, DicomUID sopInstance, DicomTransferSyntax transferSyntax) { this.InternalTransferSyntax = transferSyntax; _filmSession = filmSession; if (sopInstance == null || sopInstance.UID == string.Empty) { SOPInstanceUID = DicomUID.Generate(); } else { SOPInstanceUID = sopInstance; } this.Add(DicomTag.SOPClassUID, SOPClassUID); this.Add(DicomTag.SOPInstanceUID, SOPInstanceUID); BasicImageBoxes = new List <ImageBox>(); }
public void Save_BasicFilmBox_CreatesRelevantFilesAndFolders() { var path = @".\Test Data\Film Box Test 1"; if (Directory.Exists(path)) { Directory.Delete(path, true); } Directory.CreateDirectory(path); var session = new FilmSession(DicomUID.BasicFilmSession); var box = new FilmBox(session, null, DicomTransferSyntax.ImplicitVRLittleEndian); box.BasicImageBoxes.Add(new ImageBox(box, DicomUID.BasicGrayscaleImageBox, null)); box.Save(path); Assert.True(File.Exists(Path.Combine(path, "FilmBox.dcm"))); Assert.True(File.Exists(Path.Combine(path, "FilmBox.txt"))); Assert.True(Directory.Exists(Path.Combine(path, "Images"))); Assert.True(Directory.GetFiles(Path.Combine(path, "Images")).Length > 0); }
/// <summary> /// Construct new print job using specified SOP instance UID. If passed SOP instance UID is missing, new UID will /// be generated /// </summary> /// <param name="sopInstance">New print job SOP instance uID</param> /// <param name="printer">The printer.</param> /// <param name="originator">The originator.</param> /// <param name="log">The log.</param> /// <param name="session">The session.</param> /// <exception cref="System.ArgumentNullException">printer</exception> /// / public PrintJob(DicomUID sopInstance, Printer printer, string originator, Log.Logger log, FilmSession session) { if (printer == null) { throw new ArgumentNullException("printer"); } Log = log; if (sopInstance == null || sopInstance.UID == string.Empty) SOPInstanceUID = DicomUID.Generate(); else SOPInstanceUID = sopInstance; Add(DicomTag.SOPClassUID, SOPClassUID); Add(DicomTag.SOPInstanceUID, SOPInstanceUID); Printer = printer; Status = PrintJobStatus.Pending; PrinterName = Printer.PrinterAet; Session = session; Originator = originator; if (CreationDateTime == DateTime.MinValue) { CreationDateTime = DateTime.Now; } PrintJobFolder = SOPInstanceUID.UID; var receivingFolder = Environment.CurrentDirectory + @"\PrintJobs"; FullPrintJobFolder = string.Format(@"{0}\{1}", receivingFolder.TrimEnd('\\'), PrintJobFolder); FilmBoxFolderList = new List<string>(); }
public void Load_BasicFilmBox_ExpectedSopClassFound() { var path = @".\Test Data\Film Box Test 2"; if (Directory.Exists(path)) { Directory.Delete(path, true); } Directory.CreateDirectory(path); var expected = DicomUID.Generate(); var session = new FilmSession(DicomUID.BasicFilmSession); var box = new FilmBox(session, expected, DicomTransferSyntax.ImplicitVRLittleEndian); box.BasicImageBoxes.Add(new ImageBox(box, DicomUID.BasicGrayscaleImageBox, null)); box.Save(path); var loaded = FilmBox.Load(session, path); var actual = loaded.SOPInstanceUID; Assert.Equal(expected, actual); Assert.True(loaded.BasicImageBoxes.Count > 0); }
public FilmBox(FilmSession filmSession, DicomUID sopInstance, DicomDataset dataset) : this(filmSession, sopInstance, dataset.InternalTransferSyntax) { dataset.CopyTo(this); this.InternalTransferSyntax = dataset.InternalTransferSyntax; }
/// <summary> /// Load a film box for a specific session from a specific folder. /// </summary> /// <param name="filmSession">Film session.</param> /// <param name="filmBoxFolder">Folder in which film box is stored.</param> /// <returns>Film box for the specified <paramref name="filmSession"/> located in the <paramref name="filmBoxFolder"/>.</returns> public static FilmBox Load(FilmSession filmSession, string filmBoxFolder) { var filmBoxFile = string.Format(@"{0}\FilmBox.dcm", filmBoxFolder); var file = DicomFile.Open(filmBoxFile); var filmBox = new FilmBox(filmSession, file.FileMetaInfo.MediaStorageSOPInstanceUID, file.Dataset); var imagesFolder = IOManager.CreateDirectoryReference(string.Format(@"{0}\Images", filmBoxFolder)); foreach (var image in imagesFolder.EnumerateFileNames("*.dcm")) { var imageBox = ImageBox.Load(filmBox, image); filmBox.BasicImageBoxes.Add(imageBox); } return filmBox; }
private DicomNDeleteResponse DeleteFilmSession(DicomNDeleteRequest request) { if (_filmSession == null) { this.Logger.Error("Can't delete a basic film session doesnot exist for this association {0}", CallingAE); return new DicomNDeleteResponse(request, DicomStatus.NoSuchObjectInstance); } if (!request.SOPInstanceUID.Equals(_filmSession.SOPInstanceUID)) { this.Logger.Error("Can't delete a basic film session with instace UID {0} doesnot exist for this association {1}", request.SOPInstanceUID.UID, CallingAE); return new DicomNDeleteResponse(request, DicomStatus.NoSuchObjectInstance); } _filmSession = null; return new DicomNDeleteResponse(request, DicomStatus.Success); }
private DicomNCreateResponse CreateFilmSession(DicomNCreateRequest request) { if (_filmSession != null) { this.Logger.Error("Attemted to create new basic film session on association with {0}", CallingAE); SendAbort(DicomAbortSource.ServiceProvider, DicomAbortReason.NotSpecified); return new DicomNCreateResponse(request, DicomStatus.NoSuchObjectInstance); } var pc = request.PresentationContext; bool isColor = pc != null && pc.AbstractSyntax == DicomUID.BasicColorPrintManagementMetaSOPClass; _filmSession = new FilmSession(request.SOPClassUID, request.SOPInstanceUID, request.Dataset, isColor); this.Logger.Info("Create new film session {0}", _filmSession.SOPInstanceUID.UID); var response = new DicomNCreateResponse(request, DicomStatus.Success); response.Command.Add(DicomTag.AffectedSOPInstanceUID, _filmSession.SOPInstanceUID); return response; }
public PrintClient() { _files = new List<string>(); FilmSession = new FilmSession(DicomUID.BasicFilmSessionSOPClass); FilmSession.PresentationLuts.Add(new PresentationLut { PresentationLutShape = "IDENTITY" }); }
public void Clean() { //delete the current active print job and film sessions lock (_synchRoot) { if (_filmSession != null) { _filmSession = null; } _printJobList.Clear(); } }
public static FilmSession Load(string filmSessionFile) { var file = DicomFile.Open(filmSessionFile); var filmSession = new FilmSession( file.FileMetaInfo.MediaStorageSOPClassUID, file.FileMetaInfo.MediaStorageSOPInstanceUID, file.Dataset); return filmSession; }