private void AddTask() { if (SelectedTaskType == null) { DesktopApplication.ShowDialog("Error", "Please select a type of task"); return; } if (SelectedTaskType == "Arrival") { ArrivalTask a = new ArrivalTask(); ((Appointment)Item).Tasks.Add(a); a.Appointment = ((Appointment)Item); a.ScheduledCompletionTime = ((Appointment)Item).ScheduledArrivalTime.Date.Add(SelectedTaskTime.TimeOfDay); Tasks.Add(a); return; } if (SelectedTaskType == "Injection") { DoseAdministrationTask d = new DoseAdministrationTask(); ((Appointment)Item).Tasks.Add(d); d.Appointment = ((Appointment)Item); d.ScheduledCompletionTime = ((Appointment)Item).ScheduledArrivalTime.Date.Add(SelectedTaskTime.TimeOfDay); Tasks.Add(d); return; } if (SelectedTaskType == "Scan") { ScanTask d = new ScanTask(); ((Appointment)Item).Tasks.Add(d); d.Appointment = ((Appointment)Item); d.ScheduledCommencementTime = ((Appointment)Item).ScheduledArrivalTime.Date.Add(SelectedTaskTime.TimeOfDay); d.ScheduledCompletionTime = d.ScheduledCommencementTime.AddMinutes(15); Tasks.Add(d); return; } }
private void TaskControlActionClone() { ScanTask selectedTask = typedTaskList.SelectedObject; try { logger.Debug("Cloning task {0}", selectedTask.Name); ScanTaskManager.CloneTask(selectedTask, AppFolders.TaskFolder); LoadTaskList(); } catch (Exception ex) { MessageBox.Show( string.Format( "'{0}' could not be cloned.{1}Detail:{2}", selectedTask.Name, Environment.NewLine, ex.Message), "Task Manager", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } }
public static void ScanNode(ScanTask task) { task.Node[Constants.StatusColumnName] = null; if (!task.Node.ContainsKey(Constants.IpColumnName) || !(task.Node[Constants.IpColumnName] is IPAddress)) { throw new ArgumentException("Node doesn't contain ip adress!"); } var ip = (IPAddress)task.Node[Constants.IpColumnName]; bool isOnline = NetTools.IsOnline(ip); if (isOnline || ConfigurationManager.Configuration.ScanningOptions.ScanOfflineHost) { try { Dns.Resolve(ip, task.Node); } catch { // do nothing by desing } try { RemoteArp.GetInfo(ip, task.Node); } catch { // do nothing by desing } try { RemoteNetBios.GetInfo(ip, 137, task.Node); } catch { // do nothing by desing } try { RemoteRegistry.GetInfo(ip, task.Node); } catch { // do nothing by desing } try { RemoteSnmp.GetAllInfo(ip, task.Node); } catch { // do nothing by desing } try { RemoteWmi.GetInfo(ip, task.Node); } catch { // do nothing by desing } } task.Node[Constants.StatusColumnName] = isOnline; }
/// <summary> /// Delete a scan task. /// </summary> /// <param name="task">The ScanTask instance to be deleted.</param> public static void RemoveTask(ScanTask task) { File.Delete(Path.Combine(AppFolders.TaskFolder, string.Format("{0}.json", task.Guid))); }
/////////////////////////////////////////////////////////////////////////////////////////// public FormImage(ScanTask scanTask) { InitializeComponent(); LoadScanTask(scanTask); }
public ScanReport(ScanTask task, List <FileItem> detectedItems, long scannedDirectoryCount) : this(task, detectedItems) { this.ScannedDirectoryCount = scannedDirectoryCount; }
public ScanReport(ScanTask task, List <FileItem> detectedItems) : this(task) { this.DetectedItems = detectedItems; }
private API_RETURN_CODE ConfigScanTaskHandler(ScanTask scanTask, object paras) { m_pFormShowBox.ScanTaskConfigured(); m_pFormScan.ScanTaskConfigured(); return(API_RETURN_CODE.API_SUCCESS); }
public static List <ScanTask> SortIntoTasks(List <PatientImage> images) { var result = new List <ScanTask>(); foreach (PatientImage im in images.OrderBy(x => x.SeriesDateTime)) { ScanTask st = GetScanTaskForImage(im, 30); if (st != null) { if (st.Patient != null) { if (result.Contains(st) == false) { result.Add(st); } } } } return(result); //var result = new List<ScanTask>(); //var rooms = new List<Room>(); //ScanTask task = new ScanTask(); //int counter = 0; //DateTime lastSeriesFinish = new DateTime(); //foreach (PatientImage img in images.OrderBy(z=>z.ManufacturerModelName).ThenBy(x => x.SeriesDateTime)) //{ // var room = GetRoom(img); // if (room == null) // continue; // if (counter == 0) // { // result.Add(task); // img.ScanTask = task; // task.PatientImages.Add(img); // task.Room = room; // task.Appointment = img.Appointment; // task.Commenced = true; // task.CommencentTime = img.SeriesDateTime.AddMinutes(-3); // task.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); // lastSeriesFinish = img.ScanFinishedDateTime; // task.Completed = true; // } // else // { // if(room.ID != task.Room.ID) // { // task = new ScanTask(); // result.Add(task); // img.ScanTask = task; // task.Room = room; // task.PatientImages.Add(img); // task.Appointment = img.Appointment; // task.Commenced = true; // task.CommencentTime = img.SeriesDateTime.AddMinutes(-3); // task.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); // lastSeriesFinish = img.ScanFinishedDateTime; // task.Completed = true; // } // else if (room.ID == task.Room.ID) // { // if(img.Patient.MRN != task.Patient.MRN) // { // task = new ScanTask(); // result.Add(task); // img.ScanTask = task; // task.PatientImages.Add(img); // task.Room = room; // task.Appointment = img.Appointment; // task.Commenced = true; // task.CommencentTime = img.SeriesDateTime.AddMinutes(-3); // task.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); // lastSeriesFinish = img.ScanFinishedDateTime; // task.Completed = true; // } // else // { // if((img.SeriesDateTime - lastSeriesFinish).TotalMinutes > 10) // { // task = new ScanTask(); // img.ScanTask = task; // task.PatientImages.Add(img); // task.Room = room; // task.Appointment = img.Appointment; // task.Commenced = true; // task.CommencentTime = img.SeriesDateTime.AddMinutes(-3); // task.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); // task.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); // lastSeriesFinish = img.ScanFinishedDateTime; // task.Completed = true; // } // else // { // if (img.ScanFinishedDateTime > lastSeriesFinish) // { // task.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); // lastSeriesFinish = img.ScanFinishedDateTime; // } // task.PatientImages.Add(img); // img.ScanTask = task; // } // } // } // } // counter++; //} //return result; }
public static void MergeScanTasks(Appointment app, int tolerance) { logger.Info("Merging scan tasks for " + app.Patient.FullName + " " + app.Name); logger.Info("Trimming current scanTasks...."); foreach (ScanTask st in app.Tasks.Where(x => x is ScanTask).OrderBy(y => y.SchedulingTime)) { //MassageScanTask(st); } logger.Info("Trimming current scanTasks....Done"); logger.Info("Splitting tasks with gaps..."); List <ScanTask> offshoots = new List <ScanTask>(); foreach (ScanTask st in app.Tasks.Where(x => x is ScanTask).OrderBy(y => y.SchedulingTime)) { if (ScanTaskHasGaps(st, tolerance)) { logger.Info("ScanTask " + st.ID + " has gaps"); ScanTask offshoot = SplitScanTask(st, tolerance); if (offshoot != null) { offshoots.Add(offshoot); } } } logger.Info("Splitting tasks with gaps...Done"); foreach (ScanTask st in offshoots) { app.Tasks.Add(st); } int counter = 0; DateTime previousFinish = new DateTime(); ScanTask previousTask = null; offshoots.Clear(); foreach (ScanTask currentTask in app.Tasks.Where(x => x is ScanTask).OrderBy(y => y.SchedulingTime)) { if (counter == 0) { previousFinish = currentTask.ValidCompletionTime; previousTask = currentTask; } else { if (((currentTask.ValidCommencementTime - previousTask.ValidCompletionTime).TotalMinutes < tolerance) || currentTask.ValidCommencementTime < previousTask.ValidCompletionTime) { foreach (PatientImage im in currentTask.PatientImages) { im.ScanTask = previousTask; } //st.Deleted = true; //st.DeletionDate = DateTime.Now; //offshoots.Add(st); //MassageScanTask(previousTask); } previousFinish = currentTask.ValidCompletionTime; previousTask = currentTask; counter++; } } offshoots.Clear(); foreach (ScanTask st in app.Tasks.Where(x => x is ScanTask && (x as ScanTask).PatientImages.Any() == false)) { offshoots.Add(st); } foreach (ScanTask st in offshoots) { app.Tasks.Remove(st); st.Appointment = null; logger.Info("Scantask " + st.ID + " assigned to null appointment"); Platform.Retriever.SaveItem(st); } }
public static ScanTask GetScanTaskForImage(PatientImage img, int tolerance) { logger.Info("GetScanTaskForImage(PatientImage.ID = " + img.ID); if (img.ID == 0) { logger.Error("Cannot assign a scan task to a PatientImage with ID = 0"); return(null); } if (img.ScanTask != null) { return(img.ScanTask); } Appointment a = img.Appointment; Room room = GetRoom(img); if (a == null) { logger.Error("Cannot assign image to scantask when appointment is null"); return(null); } if (room == null) { logger.Error("Cannot assign image to scan task when image room is null"); return(null); } if (img.SeriesDateTime == null) { logger.Error("Cannot assign image to scan task when image SeriesDateTime is null"); return(null); } if (img is SPECTNMImage) { logger.Error("Scan tasks are not assigned to Recon images"); return(null); } ///Are there any tasks available in the appointment if (a.Tasks.Where(x => x is ScanTask && x.IsCancelled == false && x.Deleted == false).Any()) { ///Valid tasks are those scan taks which have not been deleted or cancelled; var validTasks = a.Tasks.Where(x => x is ScanTask && x.IsCancelled == false && x.Deleted == false).ToList(); ///Non-empty valid tasks are those which already have at least one patient image in them - THEY CANNOT BE MOVED var nonEmptyValidTasks = validTasks.Where(z => (z as ScanTask).PatientImages.Any() && z.Room != null).ToList(); ///Empty valid tasks are those which do not have any patient images in them - THEY CAN BE MOVED AND RESCHEDULED var emptyValidTasks = validTasks.Where(j => (j as ScanTask).PatientImages.Any() == false && j.Room != null).ToList(); ///Are there any non-empty valid tasks on the same camera is the img that start before the paitent image and finish no more than 15 minutes before we start if (nonEmptyValidTasks.Where(b => (b as ScanTask).Room.ID == room.ID && GetImageToTaskDifference((b as ScanTask), img) < tolerance).Any()) { //grab the first one ScanTask st = nonEmptyValidTasks.Where(b => (b as ScanTask).Room.ID == room.ID && GetImageToTaskDifference((b as ScanTask), img) < tolerance).First() as ScanTask; logger.Info("Image being added to Scan task " + st.ID + " which already has images"); st.PatientImages.Add(img); if (img.ScanFinishedDateTime.AddMinutes(3) > st.CompletionTime) { st.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); if (st.CompletionTime < DateTime.Now.AddMinutes(10)) { st.Completed = false; logger.Info("ScanTask " + st.ID + " being mark as incomplete because last image was finished less than 10 minutes ago"); } else { st.Completed = true; } } Platform.Retriever.SaveItem(st); return(st); } else if (emptyValidTasks.Any()) { logger.Info("Image being added to empty ScanTask"); ScanTask st = emptyValidTasks.First() as ScanTask; st.Room = room; st.PatientImages.Add(img); st.Commenced = true; st.CommencentTime = img.SeriesDateTime.AddMinutes(-3); if (img.ScanFinishedDateTime < DateTime.Now.AddMinutes(10)) { st.Completed = false; st.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); } else { st.Completed = true; } Platform.Retriever.SaveItem(st); return(st); } else { logger.Info("New ScanTask created for PatientImage.ID = " + img.ID); ScanTask st = new ScanTask(); a.Tasks.Add(st); st.Appointment = a; st.Room = room; st.PatientImages.Add(img); st.Commenced = true; st.CommencentTime = img.SeriesDateTime.AddMinutes(-3); if (img.ScanFinishedDateTime < DateTime.Now.AddMinutes(10)) { st.Completed = false; st.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); } else { st.Completed = true; } Platform.Retriever.SaveItem(st); return(st); } } else//if not we will make a new task { logger.Info("New ScanTask created for PatientImage.ID = " + img.ID); ScanTask st = new ScanTask(); a.Tasks.Add(st); st.Appointment = a; st.Room = room; st.PatientImages.Add(img); st.Commenced = true; st.CommencentTime = img.SeriesDateTime.AddMinutes(-3); if (img.ScanFinishedDateTime < DateTime.Now.AddMinutes(10)) { st.Completed = false; st.CompletionTime = img.ScanFinishedDateTime.AddMinutes(3); } else { st.Completed = true; } Platform.Retriever.SaveItem(st); return(st); } }
public ErrorScanTask(byte code, string message, ScanTask task) { this.ErrorCode = code; this.ErrorMessage = message; this.task = task; }
public static void Add(byte code, string message, ScanTask task) { ErrorScanTasks.Add(new ErrorScanTask(code, message, task)); }
public TaskDesigner(ScanTask task) : this() { mode = EditMode.MODIFY; this.task = task; }
static void Main(string[] args) { DateTime starttime = DateTime.Now; logger.Info("DicomTest start " + DateTime.Now); DicomConnector dc = new DicomConnector(); var links = dc.GetPatientImageByStudy(DateTime.Today.AddDays(0)); logger.Info("links has returned"); if (links.Any()) { logger.Info(links.Count + " links found"); foreach (DicomLink link in links) { if (link == null) { logger.Warn("A null link was returned by the DicomConnector"); continue; } if (link.PatientImage == null) { logger.Warn("A link was returned by the dataconnector with a null patientIage"); continue; } ScanTask t = link.PatientImage.ScanTask; if (t == null) { logger.Error("Null ScanTaskFound for PatientImage " + link.PatientImage.ID); continue; } logger.Info("PatientImage.SeriesDescription = " + link.PatientImage.SeriesDescription); //link.PatientImage.Debug(); //DicomMassage.MassageScanTask(link.PatientImage.ScanTask); } } else { logger.Info("No links returned"); } RetrievalCriteria rc1 = new RetrievalCriteria("ScheduledArrivalTime", CriteraType.GreaterThan, DateTime.Today); RetrievalCriteria rc2 = new RetrievalCriteria("ScheduledArrivalTime", CriteraType.LessThan, DateTime.Today.AddDays(1)); List <RetrievalCriteria> rcList = new List <RetrievalCriteria>(); rcList.Add(rc1); rcList.Add(rc2); var appointments = Platform.Retriever.RetrieveItems(typeof(Appointment), rcList); foreach (Appointment a in appointments) { foreach (ScanTask st in a.Tasks.Where(x => x is ScanTask)) { DicomMassage.MassageScanTask(st); } } logger.Info("DicomTest finish " + DateTime.Now + " - total " + (DateTime.Now - starttime).TotalMinutes + " minutes"); //Console.ReadLine(); }
public void LoadScanTask(ScanTask scanTask) { m_scanTask = scanTask; }
public ScanReport(ScanTask task) { this.Name = string.Format("{0} on {1}", task.Name, task.LastStartTimeAsText); this.Task = task; this.Creator = task.LastRunOwner; }
private API_RETURN_CODE ScanTaskReleasedHandler(ScanTask scanTask, object paras) { return(API_RETURN_CODE.API_SUCCESS); }