private static bool ActivateViewer(ViewerInfo vi) { using (var service = new ViewerService()) { return(service.ActivateViewer(vi.Viewer)); } }
private IStudyViewer[] ViewStudiesOneInstance(string[] studyInstanceUids) { lock (_openViewers) { using (var service = new ViewerService()) { var activeViewers = service.GetActiveViewers(); var vi = _openViewers.FirstOrDefault(Both(ViewerContainsAll(studyInstanceUids), ViewerIsActive(activeViewers))); if (vi != null) { service.ActivateViewer(vi.Viewer); return(new IStudyViewer[] { vi }); } // locate the studies // note that any studies that cannot be located are silently ignored var locatedStudies = service.LocateStudiesByUid(studyInstanceUids); if (!locatedStudies.Any()) { return(new IStudyViewer[0]); } // open all located studies in a single viewer vi = new ViewerInfo(this, service.OpenViewer(locatedStudies), studyInstanceUids); _openViewers.Add(vi); return(new IStudyViewer[] { vi }); } } }
private IStudyViewer[] ViewStudiesOneInstance(string[] studyInstanceUids) { lock (_openViewersSyncRoot) { using (var service = new ViewerService()) { var activeViewers = service.GetActiveViewers(); var vi = _openViewers.FirstOrDefault(Both(ViewerContainsAll(studyInstanceUids), ViewerIsActive(activeViewers))); if (vi != null) { service.ActivateViewer(vi.Viewer); return(new IStudyViewer[] { vi }); } // locate the studies // note that any studies that cannot be located are silently ignored // // only the first ('primary') study in a single viewer is used, as this is the only way to get hanging protocols to apply correctly // all priors/linked studies should be loaded automatically via prior/related search anyway, there should probably be some explicit mechanism here var locatedStudies = service.LocateStudiesByUid(new[] { studyInstanceUids.FirstOrDefault() }); if (!locatedStudies.Any()) { return(new IStudyViewer[0]); } vi = new ViewerInfo(this, service.OpenViewer(locatedStudies), studyInstanceUids); _openViewers.Add(vi); return(new IStudyViewer[] { vi }); } } }
private void P2C_ViewerUpdate(MobaMessage msg) { ViewerInfo probufMsg = msg.GetProbufMsg <ViewerInfo>(); int count = probufMsg.count; Singleton <PvpManager> .Instance.ObserverCount = count; }
private void CloseViewer(ViewerInfo vi) { lock (_openViewersSyncRoot) { using (var service = new ViewerService()) { service.CloseViewer(vi.Viewer); _openViewers.Remove(vi); } } }
private IStudyViewer[] ViewStudiesMultiInstance(string[] studyInstanceUids) { lock (_openViewersSyncRoot) { using (var service = new ViewerService()) { var activeViewers = service.GetActiveViewers().ToList(); // for any studies that already have an open viewer, just activate it var needViewer = new List <string>(); foreach (var uid in studyInstanceUids) { var vi = _openViewers.FirstOrDefault(Both(ViewerHasPrimary(uid), ViewerIsActive(activeViewers))); if (vi != null) { continue; } needViewer.Add(uid); } if (needViewer.Any()) { // locate the remaining studies and open new viewers for them // note that any studies that cannot be located are silently ignored - no viewer is opened for them var locatedStudies = service.LocateStudiesByUid(needViewer); foreach (var studyRootStudyIdentifier in locatedStudies) { var vi = new ViewerInfo(this, service.OpenViewer(studyRootStudyIdentifier), new[] { studyRootStudyIdentifier.StudyInstanceUid }); _openViewers.Add(vi); activeViewers.Add(vi.Viewer); // update this list, as it is used again in final query } } // important to return viewers in same order as input array, // which is why we do this final query var viewers = (from uid in studyInstanceUids let vi = _openViewers.FirstOrDefault(Both(ViewerHasPrimary(uid), ViewerIsActive(activeViewers))) where vi != null select vi).ToList(); // ensure the first instance is made active if (viewers.Any()) { service.ActivateViewer(viewers.First().Viewer); } return(viewers.Cast <IStudyViewer>().ToArray()); } } }
private void GetNote(string user) { ViewerInfo info = repo.GetInfo(user); if (info != null && !string.IsNullOrEmpty(info.Note)) { tw.RespondMessage(string.Format("Note for {0}: {1}", info.Username, info.Note)); } else { tw.RespondMessage(string.Format("No note found for {0}.", user)); } }
private static bool ActivateViewer(ViewerInfo vi) { using (var service = new ViewerService()) { return service.ActivateViewer(vi.Viewer); } }
private void CloseViewer(ViewerInfo vi) { lock (_openViewers) { using (var service = new ViewerService()) { service.CloseViewer(vi.Viewer); _openViewers.Remove(vi); } } }
private IStudyViewer[] ViewStudiesMultiInstance(string[] studyInstanceUids) { lock (_openViewers) { using (var service = new ViewerService()) { var activeViewers = service.GetActiveViewers().ToList(); // for any studies that already have an open viewer, just activate it var needViewer = new List<string>(); foreach (var uid in studyInstanceUids) { var vi = _openViewers.FirstOrDefault(Both(ViewerHasPrimary(uid), ViewerIsActive(activeViewers))); if (vi != null) continue; needViewer.Add(uid); } if (needViewer.Any()) { // locate the remaining studies and open new viewers for them // note that any studies that cannot be located are silently ignored - no viewer is opened for them var locatedStudies = service.LocateStudiesByUid(needViewer); foreach (var studyRootStudyIdentifier in locatedStudies) { var vi = new ViewerInfo(this, service.OpenViewer(studyRootStudyIdentifier), new[] { studyRootStudyIdentifier.StudyInstanceUid }); _openViewers.Add(vi); activeViewers.Add(vi.Viewer); // update this list, as it is used again in final query } } // important to return viewers in same order as input array, // which is why we do this final query var viewers = (from uid in studyInstanceUids let vi = _openViewers.FirstOrDefault(Both(ViewerHasPrimary(uid), ViewerIsActive(activeViewers))) where vi != null select vi).ToList(); // ensure the first instance is made active if (viewers.Any()) service.ActivateViewer(viewers.First().Viewer); return viewers.Cast<IStudyViewer>().ToArray(); } } }
private IStudyViewer[] ViewStudiesOneInstance(string[] studyInstanceUids) { lock (_openViewers) { using (var service = new ViewerService()) { var activeViewers = service.GetActiveViewers(); var vi = _openViewers.FirstOrDefault(Both(ViewerContainsAll(studyInstanceUids), ViewerIsActive(activeViewers))); if (vi != null) { service.ActivateViewer(vi.Viewer); return new IStudyViewer[] { vi }; } // locate the studies // note that any studies that cannot be located are silently ignored var locatedStudies = service.LocateStudiesByUid(studyInstanceUids); if (!locatedStudies.Any()) return new IStudyViewer[0]; // open all located studies in a single viewer vi = new ViewerInfo(this, service.OpenViewer(locatedStudies), studyInstanceUids); _openViewers.Add(vi); return new IStudyViewer[] { vi }; } } }
private IStudyViewer[] ViewStudiesOneInstance(string[] studyInstanceUids) { lock (_openViewersSyncRoot) { using (var service = new ViewerService()) { var activeViewers = service.GetActiveViewers(); var vi = _openViewers.FirstOrDefault(Both(ViewerContainsAll(studyInstanceUids), ViewerIsActive(activeViewers))); if (vi != null) { service.ActivateViewer(vi.Viewer); return new IStudyViewer[] { vi }; } // locate the studies // note that any studies that cannot be located are silently ignored // // only the first ('primary') study in a single viewer is used, as this is the only way to get hanging protocols to apply correctly // all priors/linked studies should be loaded automatically via prior/related search anyway, there should probably be some explicit mechanism here var locatedStudies = service.LocateStudiesByUid(new[] {studyInstanceUids.FirstOrDefault()}); if (!locatedStudies.Any()) return new IStudyViewer[0]; vi = new ViewerInfo(this, service.OpenViewer(locatedStudies), studyInstanceUids); _openViewers.Add(vi); return new IStudyViewer[] {vi}; } } }