コード例 #1
0
        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;
            }
        }
コード例 #2
0
ファイル: FormMain.cs プロジェクト: poll-busily/EduSweep
        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);
            }
        }
コード例 #3
0
ファイル: NodesServer.cs プロジェクト: sarat12/AdmAssist
        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;
        }
コード例 #4
0
 /// <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)));
 }
コード例 #5
0
ファイル: FormImage.cs プロジェクト: letheascetic/confocal
 ///////////////////////////////////////////////////////////////////////////////////////////
 public FormImage(ScanTask scanTask)
 {
     InitializeComponent();
     LoadScanTask(scanTask);
 }
コード例 #6
0
ファイル: ScanReport.cs プロジェクト: poll-busily/EduSweep
 public ScanReport(ScanTask task, List <FileItem> detectedItems, long scannedDirectoryCount) : this(task, detectedItems)
 {
     this.ScannedDirectoryCount = scannedDirectoryCount;
 }
コード例 #7
0
ファイル: ScanReport.cs プロジェクト: poll-busily/EduSweep
 public ScanReport(ScanTask task, List <FileItem> detectedItems) : this(task)
 {
     this.DetectedItems = detectedItems;
 }
コード例 #8
0
 private API_RETURN_CODE ConfigScanTaskHandler(ScanTask scanTask, object paras)
 {
     m_pFormShowBox.ScanTaskConfigured();
     m_pFormScan.ScanTaskConfigured();
     return(API_RETURN_CODE.API_SUCCESS);
 }
コード例 #9
0
ファイル: DicomMassage.cs プロジェクト: lulzzz/iRadiate
        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;
        }
コード例 #10
0
ファイル: DicomMassage.cs プロジェクト: lulzzz/iRadiate
        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);
            }
        }
コード例 #11
0
ファイル: DicomMassage.cs プロジェクト: lulzzz/iRadiate
        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);
            }
        }
コード例 #12
0
 public ErrorScanTask(byte code, string message, ScanTask task)
 {
     this.ErrorCode    = code;
     this.ErrorMessage = message;
     this.task         = task;
 }
コード例 #13
0
 public static void Add(byte code, string message, ScanTask task)
 {
     ErrorScanTasks.Add(new ErrorScanTask(code, message, task));
 }
コード例 #14
0
 public TaskDesigner(ScanTask task) : this()
 {
     mode      = EditMode.MODIFY;
     this.task = task;
 }
コード例 #15
0
ファイル: Program.cs プロジェクト: lulzzz/iRadiate
        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();
        }
コード例 #16
0
ファイル: FormDisplay.cs プロジェクト: letheascetic/confocal
 public void LoadScanTask(ScanTask scanTask)
 {
     m_scanTask = scanTask;
 }
コード例 #17
0
ファイル: ScanReport.cs プロジェクト: poll-busily/EduSweep
 public ScanReport(ScanTask task)
 {
     this.Name    = string.Format("{0} on {1}", task.Name, task.LastStartTimeAsText);
     this.Task    = task;
     this.Creator = task.LastRunOwner;
 }
コード例 #18
0
 private API_RETURN_CODE ScanTaskReleasedHandler(ScanTask scanTask, object paras)
 {
     return(API_RETURN_CODE.API_SUCCESS);
 }