Exemple #1
0
        public void Add_RaisesValidationFailedEvent_WhenPatientCancelsForTheSecondTimeAndPeriodIsNotStopped()
        {
            // Arrange
            var rttPeriod      = GetCancerPeriod();
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.PatientCancelEvent
                }, EventDate = new DateTime(2001, 1, 8), Period = rttPeriod
            };

            rttPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.PatientCancelEvent
                }, EventDate = new DateTime(2001, 1, 9)
            });
            var eventRaised = false;

            rttPeriod.ValidationFailed += delegate { eventRaised = true; };

            // Act
            rttPeriod.Add(completedEvent);

            // Assert
            Assert.IsNotNull(eventRaised);
        }
        public void ApplyTo_CorrectlyOverwritesTargetDate_WhenEventCodeIsOutpatientFirstAppointmentAttended()
        {
            // Arrange
            var period = new RTT18WeekPeriod();

            period.Add(new ClockStartingCompletedEvent
            {
                EventDate = new DateTime(2000, 6, 1),
                Name      = new EventName {
                    Code = EventCode.ReferralReceived
                }
            });
            var clockTickingEvent = new ClockTickingCompletedEvent
            {
                Cancer     = true,
                TargetDate = new DateTime(2000, 12, 1),
                Name       = new EventName {
                    Code = EventCode.AttendedOutpatientFirstAppointment
                },
                Period = period
            };
            var sut = new CompletedEventTargetDateCancerPolicy();

            // Act
            sut.ApplyTo(clockTickingEvent);

            // Assert
            Assert.AreEqual(new DateTime(2000, 6, 1).AddDays(Constants.OutpatientFirstAppointmentAttendedTargetNumberOfDaysForCancer), clockTickingEvent.TargetDate);
        }
Exemple #3
0
        public void Add_RaisesValidationFailedEvent_WhenPatientIsNotAChildAndDoesNotAttendForTheSecondTimeAndPeriodIsNotStopped()
        {
            // Arrange

            var rttPeriod      = GetCancerPeriod();
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.DidNotAttend
                }, EventDate = new DateTime(2001, 1, 8), Period = rttPeriod
            };

            rttPeriod.Pathway.Patient.DateOfBirth = new DateTime(1980, 3, 5);
            rttPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.DidNotAttend
                }, EventDate = new DateTime(2001, 1, 9)
            });

            RuleViolation eventRaised = null;

            rttPeriod.ValidationFailed += delegate { eventRaised = new RuleViolation(); };

            // Act
            rttPeriod.Add(completedEvent);

            // Assert
            Assert.IsNotNull(eventRaised);
        }
Exemple #4
0
        public void GetRemainingDays_ReturnsComputedDaysNumber_WhenBreachDateIsNotNull()
        {
            // Arrange
            var period = new RTT18WeekPeriod();

            period.Add(new ClockStartingCompletedEvent
            {
                EventDate  = new DateTime(2014, 7, 1),
                TargetDate = new DateTime(2014, 7, 1)
            });
            var @event = new ClockTickingCompletedEvent
            {
                Period    = period,
                EventDate = new DateTime(2014, 7, 1)
            };
            var eventMilestone = new EventMilestone
            {
                TargetNumberOfDays     = 3,
                DateReferenceForTarget = new DateTime(2014, 7, 1),
                Id             = 1,
                CompletedEvent = @event
            };


            // Act
            var result = eventMilestone.GetDaysToBreachAt(new DateTime(2014, 7, 6));

            // Assert
            Assert.AreEqual(-2, result);
        }
        public void ApplyTo_CorrectlyOverwritesTargetDate_WhenEventCodeIsDiagnosticTestResultAvailable()
        {
            // Arrange
            var period = new RTT18WeekPeriod();

            period.Add(new ClockStartingCompletedEvent
            {
                EventDate = new DateTime(2000, 6, 1),
                Name      = new EventName {
                    Code = EventCode.ReferralReceived
                }
            });

            var clockTickingEvent = new ClockTickingCompletedEvent
            {
                Cancer     = true,
                TargetDate = new DateTime(2000, 12, 1),
                Name       = new EventName {
                    Code = EventCode.DiagnosticsTestResultAvailable
                },
                Period = period
            };
            var sut = new CompletedEventTargetDateCancerPolicy();

            // Act
            sut.ApplyTo(clockTickingEvent);

            // Assert
            Assert.AreEqual(new DateTime(2000, 6, 1).AddDays(Constants.DignosticTestResultAvailableTargetNumberOfDaysForCancer), clockTickingEvent.TargetDate);
        }
Exemple #6
0
        public void Validate_RaisesValidationFailedEvent_WhenPatientIsAChildAndDoesNotAttendForTheSecondTimeAndPeriodIsNotStopped()
        {
            // Arrange
            var period = new RTT18WeekPeriod {
                Pathway = new Pathway {
                    Patient = new Patient {
                        DateOfBirth = new DateTime(1990, 3, 5)
                    }
                }
            };
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.DidNotAttend
                }, EventDate = new DateTime(2001, 1, 8), Period = period
            };

            period.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.DidNotAttend
                }, EventDate = new DateTime(2001, 1, 9)
            });

            var eventRaised = false;

            completedEvent.ValidationFailed += delegate { eventRaised = true; };

            // Act
            completedEvent.Validate();

            // Assert
            Assert.IsTrue(eventRaised);
        }
Exemple #7
0
        public void MapEventMilestoneToCompletedEvent_DoesNotRaiseValidationFailedEvent_WhenCurrentEventHasTargetReferenceEvent()
        {
            //Arrange
            var non18WeekPeriod = new Non18WeekPeriod {
                Pathway = new Pathway {
                    Patient = new Patient {
                        Name = "John Doe", DateOfBirth = new DateTime(1990, 2, 2)
                    }, PPINumber = "ppi"
                }, Name = "period 1"
            };
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.AttendedOutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 20), Period = non18WeekPeriod
            };

            non18WeekPeriod.Add(new ClockStartingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.ReferralReceived
                }, EventDate = new DateTime(2014, 5, 6)
            });
            non18WeekPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.ReferralReview
                }, EventDate = new DateTime(2014, 5, 10)
            });
            non18WeekPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.BookedOutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 12)
            });
            non18WeekPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.OutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 14)
            });
            non18WeekPeriod.Add(completedEvent);

            var eventMilestone = new EventMilestone {
                Name = new EventName {
                    Code = EventCode.OutcomedOutpatientFirstAppointment
                }
            };

            RuleViolation eventRaised = null;

            non18WeekPeriod.ValidationFailed += delegate { eventRaised = new RuleViolation(); };

            //Act
            non18WeekPeriod.MapEventMilestoneToCompletedEvent(completedEvent, eventMilestone, new EventName {
                Code = EventCode.AttendedOutpatientFirstAppointment, Description = "Attended Outpatient First Appointment"
            });

            //Assert
            Assert.IsNull(eventRaised);
        }
Exemple #8
0
        public void MapEventMilestoneToCompletedEvent_RaisesValidationFailedEvent_WhenCurrentEventDoesNotHaveTargetReferenceEvent()
        {
            //Arrange

            var rttPeriod = new RTT18WeekPeriod {
                Pathway = new Pathway()
            };
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.AttendedOutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 20), Period = rttPeriod
            };

            rttPeriod.Add(new ClockStartingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.ReferralReceived
                }, EventDate = new DateTime(2014, 5, 6)
            });
            rttPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.ReferralReview
                }, EventDate = new DateTime(2014, 5, 10)
            });
            rttPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.BookedOutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 12)
            });
            rttPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.OutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 14)
            });

            var eventMilestone = new EventMilestone {
                Name = new EventName {
                    Code = EventCode.OutcomedOutpatientFirstAppointment
                }
            };

            RuleViolation eventRaised = null;

            rttPeriod.ValidationFailed += delegate { eventRaised = new RuleViolation(); };

            //Act
            rttPeriod.MapEventMilestoneToCompletedEvent(completedEvent, eventMilestone, new EventName {
                Code = EventCode.AttendedOutpatientFirstAppointment, Description = "Attended Outpatient First Appointment"
            });

            //Assert
            Assert.IsNotNull(eventRaised);
        }
Exemple #9
0
        public void Add_DoesNotRaiseValidationFailedEvent_WhenCurrentEventHasTargetReferenceEvent()
        {
            //Arrange
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.AttendedOutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 20)
            };
            var cancerPeriod = new CancerPeriod();

            cancerPeriod.Add(new ClockStartingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.ReferralReceived
                }, EventDate = new DateTime(2014, 5, 6)
            });
            cancerPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.ReferralReview
                }, EventDate = new DateTime(2014, 5, 10)
            });
            cancerPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.BookedOutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 12)
            });
            cancerPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.OutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 14)
            });
            cancerPeriod.Add(completedEvent);

            var eventMilestone = new EventMilestone {
                Name = new EventName {
                    Code = EventCode.OutcomedOutpatientFirstAppointment
                }
            };

            var eventRaised = false;

            cancerPeriod.ValidationFailed += delegate { eventRaised = true; };

            //Act
            cancerPeriod.MapEventMilestoneToCompletedEvent(completedEvent, eventMilestone, new EventName {
                Code = EventCode.AttendedOutpatientFirstAppointment, Description = "Attended Outpatient First Appointment"
            });

            //Assert
            Assert.IsFalse(eventRaised);
        }
        public void ApplyTo_DoesntOverwriteTargetDate_WhenEventIsNotCancer()
        {
            // Arrange
            var clockTickingEvent = new ClockTickingCompletedEvent {
                TargetDate = new DateTime(2000, 12, 1)
            };
            var sut = new CompletedEventTargetDateCancerPolicy();

            // Act
            sut.ApplyTo(clockTickingEvent);

            // Assert
            Assert.AreEqual(new DateTime(2000, 12, 1), clockTickingEvent.TargetDate);
        }
Exemple #11
0
        public void EventStatus_ReturnCorrectEventStatus_WhenEventTypeIsClockTickingEventAndIsNotBreached()
        {
            //Arrange
            var completedEvent = new ClockTickingCompletedEvent
            {
                Name = new EventName {
                    Code = EventCode.ReferralReceived
                },
                EventDate  = new DateTime(2014, 8, 10),
                IsBreached = false
            };

            //Act
            var result = completedEvent.EventStatus;

            //Assert
            Assert.AreEqual(EventStatus.Success, result);
        }
Exemple #12
0
        public void BreachStatus_ReturnCorrectBreachStatus_WhenEventStatusIsNotBreached()
        {
            //Arrange
            var completedEvent = new ClockTickingCompletedEvent
            {
                Name = new EventName {
                    Code = EventCode.InpatientTCIAgreed
                },
                EventDate  = new DateTime(2014, 8, 10),
                TargetDate = new DateTime(2014, 8, 11)
            };

            //Act
            var result = completedEvent.BreachStatus;

            //Assert
            Assert.AreEqual(EventBreachStatus.Success, result);
        }
Exemple #13
0
        public void Add_RaisesValidationFailedEvent_WhenCurrentEventHasADateBeforeAnotherEvent()
        {
            // Arrange
            var rttPeriod      = GetRTT18WeekPeriod();
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.InpatientPatientAttendancePreOperativeAssessment
                }, EventDate = new DateTime(2000, 12, 26), Period = rttPeriod
            };
            RuleViolation eventRaised = null;

            rttPeriod.ValidationFailed += delegate { eventRaised = new RuleViolation(); };

            // Act
            rttPeriod.Add(completedEvent);

            // Assert
            Assert.IsNotNull(eventRaised);
        }
Exemple #14
0
        public void Add_RaisesValidationFailedEvent_WhenCurrentEventHasADateBeforeAnotherEvent()
        {
            // Arrange
            var cancerPeriod   = GetCancerPeriodWithoutDiagnosticTestResultAvailable();
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.InpatientPatientAttendancePreOperativeAssessment
                }, EventDate = new DateTime(2000, 12, 2), Period = cancerPeriod
            };
            RuleViolation eventRaised = null;

            cancerPeriod.ValidationFailed += delegate { eventRaised = new RuleViolation(); };

            // Act
            cancerPeriod.Add(completedEvent);

            // Assert
            Assert.IsNotNull(eventRaised);
        }
Exemple #15
0
        public void EventStatus_ReturnCorrectEventStatus_WhenEventTypeIsClockTickingEventAndIsBreached()
        {
            //Arrange
            var completedEvent = new ClockTickingCompletedEvent
            {
                Name = new EventName {
                    Code = EventCode.InpatientTCIAgreed
                },
                EventDate  = new DateTime(2014, 8, 10),
                TargetDate = new DateTime(2014, 8, 9),
                IsBreached = true
            };

            //Act
            var result = completedEvent.EventStatus;

            //Assert
            Assert.AreEqual(EventStatus.Breached, result);
        }
Exemple #16
0
        private void GenerateCompletedEvents_Click(object sender, EventArgs e)
        {
            using (var unitOfWork = new UnitOfWork())
            {
                var sourceEvents = unitOfWork.SourceEvents
                                   .Include(s => s.NextPossibleEvents.Select(d => d.EventForDateReferenceForTarget))
                                   .Include(s => s.SourceName)
                                   .ToList();

                var possibleConnectionsList = (from sourceEvent in sourceEvents
                                               where sourceEvent.NextPossibleEvents != null
                                               from destinationEvent in sourceEvent.NextPossibleEvents
                                               select new EventConnection
                {
                    Parent = sourceEvent.SourceName.Code,
                    Child = destinationEvent.DestinationName.Code,
                    TargetNumberOfDays = destinationEvent.TargetNumberOfDays,
                    EventForDateReferenceForTarget = destinationEvent.EventForDateReferenceForTarget != null ? destinationEvent.EventForDateReferenceForTarget.Code : (EventCode?)null
                }).ToList();

                GenerateEventConnections(possibleConnectionsList, new List <EventConnection>(), EventCode.ReferralReceived);

                var pathways   = unitOfWork.Pathways.ToList();
                var clinicians = unitOfWork.Clinicians.ToList();

                var pathwayIndex = 0;

                var periodCount = string.IsNullOrEmpty(txtPeriodCount.Text) ? _eventConnections.Count : Int32.Parse(txtPeriodCount.Text);

                var eventNames = unitOfWork.EventNames.ToList();

                for (var periodIndex = 0; periodIndex < periodCount; periodIndex++)
                {
                    var eventList = _eventConnections[periodIndex];

                    var period = new RTT18WeekPeriod
                    {
                        Pathway   = pathways[pathwayIndex],
                        IsActive  = true,
                        Name      = "Period 1",
                        StartDate = new DateTime(DateTime.Now.Year, _random.Next(1, DateTime.Now.Month + 1), _random.Next(1, 28))
                    };

                    unitOfWork.Periods.Add(period);
                    Console.WriteLine("Added period {0} to UOW", period.Name);

                    pathwayIndex++;

                    for (var eventIndex = 0; eventIndex < eventList.Count; eventIndex++)
                    {
                        var eventCode = eventList[eventIndex].Parent;
                        var eventName = eventNames.FirstOrDefault(name => name.Code == (EventCode)eventCode);

                        var eventForReference = period.CompletedEvents.FirstOrDefault(completedEvent => completedEvent.Name.Code == (EventCode?)eventList[eventIndex].EventForDateReferenceForTarget);

                        if (eventIndex == 0)
                        {
                            var completedEvent = new ClockStartingCompletedEvent
                            {
                                Cancer     = false,
                                Period     = period,
                                Name       = eventName,
                                Comments   = string.Empty,
                                EventDate  = period.StartDate,
                                Clinician  = clinicians[_random.Next(0, clinicians.Count - 1)],
                                IsActive   = eventIndex == eventList.Count - 1,
                                TargetDate = null
                            };

                            unitOfWork.CompletedEvents.Add(completedEvent);
                            Console.WriteLine("Added completed event {0} to UOW", completedEvent.Name.Description);
                            GenerateEventMilestonesForEvent(period, completedEvent, eventNames, unitOfWork);
                            Console.WriteLine("Added event milestones for event {0} to UOW", completedEvent.Name.Description);
                        }
                        else
                        {
                            var targetDate = (eventForReference != null && eventList[eventIndex].TargetNumberOfDays != null)
                                ? eventForReference.EventDate.AddDays((int)eventList[eventIndex].TargetNumberOfDays)
                                : (DateTime?)null;
                            var lastCompletedEvent = period.CompletedEvents.LastOrDefault();

                            var eventDateBasedOnTarget = (targetDate != null)
                                ? targetDate.Value.AddDays(_random.Next(-5, 5))
                                : (DateTime?)null;

                            var eventDate = (eventDateBasedOnTarget != null && lastCompletedEvent != null)
                                ? (eventDateBasedOnTarget >= lastCompletedEvent.EventDate
                                    ? (DateTime)eventDateBasedOnTarget
                                    : lastCompletedEvent.EventDate.AddDays(_random.Next(0, 5)))
                                : lastCompletedEvent.EventDate.AddDays(_random.Next(0, 5));

                            var completedEvent = new ClockTickingCompletedEvent
                            {
                                Cancer     = false,
                                Period     = period,
                                Name       = eventName,
                                Comments   = string.Empty,
                                EventDate  = eventDate,
                                Clinician  = clinicians[_random.Next(0, clinicians.Count - 1)],
                                IsActive   = eventIndex == eventList.Count - 1,
                                TargetDate = targetDate
                            };
                            unitOfWork.CompletedEvents.Add(completedEvent);
                            Console.WriteLine("Added completed event {0} to UOW", completedEvent.Name.Description);

                            GenerateEventMilestonesForEvent(period, completedEvent, eventNames, unitOfWork);
                            Console.WriteLine("Added event milestones for event {0} to UOW", completedEvent.Name.Description);
                        }
                    }

                    Console.WriteLine("Persisting UOW to DB...");
                    unitOfWork.SaveChanges();
                    Console.WriteLine("Done Adding events!");
                }
            }
        }
Exemple #17
0
 public void PerTestSetup()
 {
     _clockTickingCompletedEvent = new ClockTickingCompletedEvent {
         EventDate = new DateTime(2000, 12, 25)
     };
 }
Exemple #18
0
        public void Add_RaisesValidationFailedEvent_WhenCurrentEventDoesNotHaveTargetReferenceEvent()
        {
            //Arrange
            var completedEvent = new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.AttendedOutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 20), Period = new RTT18WeekPeriod {
                    Pathway = new Pathway {
                        PPINumber = "ppi"
                    }, Name = "period 1"
                }
            };
            var cancerPeriod = new CancerPeriod();

            cancerPeriod.Add(new ClockStartingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.ReferralReceived
                }, EventDate = new DateTime(2014, 5, 6), Period = new RTT18WeekPeriod {
                    Pathway = new Pathway {
                        PPINumber = "ppi"
                    }, Name = "period 1"
                }
            });
            cancerPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.ReferralReview
                }, EventDate = new DateTime(2014, 5, 10), Period = new RTT18WeekPeriod {
                    Pathway = new Pathway {
                        PPINumber = "ppi"
                    }, Name = "period 1"
                }
            });
            cancerPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.BookedOutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 12), Period = new RTT18WeekPeriod {
                    Pathway = new Pathway {
                        PPINumber = "ppi"
                    }, Name = "period 1"
                }
            });
            cancerPeriod.Add(new ClockTickingCompletedEvent {
                Name = new EventName {
                    Code = EventCode.OutpatientFirstAppointment
                }, EventDate = new DateTime(2014, 5, 14), Period = new RTT18WeekPeriod {
                    Pathway = new Pathway {
                        PPINumber = "ppi"
                    }, Name = "period 1"
                }
            });

            var eventMilestone = new EventMilestone {
                Name = new EventName {
                    Code = EventCode.OutcomedOutpatientFirstAppointment
                }
            };

            var eventRaised = false;

            cancerPeriod.ValidationFailed += delegate { eventRaised = true; };

            //Act
            cancerPeriod.MapEventMilestoneToCompletedEvent(completedEvent, eventMilestone, new EventName {
                Code = EventCode.AttendedOutpatientFirstAppointment, Description = "Attended Outpatient First Appointment"
            });

            //Assert
            Assert.IsTrue(eventRaised);
        }
Exemple #19
0
        private CompletedEvent BuildCompletedEvent(ClockType clockType, EventCode eventCode, DateTime eventDate, Period period)
        {
            CompletedEvent newCompletedEvent;

            if (eventCode == EventCode.PatientCancelEvent && period.IsSecondCancelByPatient(EventCode.PatientCancelEvent))
            {
                newCompletedEvent = new ClockStoppingCompletedEvent();
            }
            else
            {
                if (eventCode == EventCode.HospitalCancelEvent)
                {
                    newCompletedEvent = new ClockTickingCompletedEvent();
                }
                else
                {
                    if (eventCode == EventCode.DidNotAttend &&
                        (period.IsSecondDidNotAttend(eventCode) && period.Pathway.Patient.IsChild(eventDate) ||
                         period.IsSecondDidNotAttend(eventCode) && period.AbleToNotAttendFirstEvent ||
                         !(period.Pathway.Patient.IsChild(eventDate) || period.AbleToNotAttendFirstEvent)))
                    {
                        newCompletedEvent = new ClockStoppingCompletedEvent();
                    }
                    else
                    {
                        switch (clockType)
                        {
                        case ClockType.ClockStarting:
                        {
                            newCompletedEvent = new ClockStartingCompletedEvent();
                            break;
                        }

                        case ClockType.ClockTicking:
                        {
                            newCompletedEvent = new ClockTickingCompletedEvent();
                            break;
                        }

                        case ClockType.ClockPausing:
                        {
                            newCompletedEvent = new ClockPausingCompletedEvent();
                            break;
                        }

                        case ClockType.ClockStopping:
                        {
                            newCompletedEvent = new ClockStoppingCompletedEvent();
                            break;
                        }

                        default:
                        {
                            newCompletedEvent = new ClockTickingCompletedEvent();
                            break;
                        }
                        }
                    }
                }
            }
            return(newCompletedEvent);
        }