Пример #1
0
        public void ApplyTo_DoesntOverwriteTargetNumberOfDays_WhenEventIsNotCancer()
        {
            // Arrange
            var eventMilestone = new EventMilestone
            {
                TargetNumberOfDays = 5,
                CompletedEvent     = new ClockTickingCompletedEvent()
            };

            var sut = new EventMilestoneTargetNumberOfDaysCancerPolicy();

            // Act
            sut.ApplyTo(eventMilestone);

            // Assert
            Assert.AreEqual(5, eventMilestone.TargetNumberOfDays);
        }
Пример #2
0
        public void ApplyTo_CorrectlyOverwritesTargetNumberOfDays_WhenEventCodeIsDiagnosticTestResultAvailable()
        {
            // Arrange
            var eventMilestone = new EventMilestone
            {
                TargetNumberOfDays = 5,
                Name = new EventName {
                    Code = EventCode.DiagnosticsTestResultAvailable
                },
                CompletedEvent = new ClockTickingCompletedEvent
                {
                    Cancer = true
                }
            };

            var sut = new EventMilestoneTargetNumberOfDaysCancerPolicy();

            // Act
            sut.ApplyTo(eventMilestone);

            // Assert
            Assert.AreEqual(Constants.DignosticTestResultAvailableTargetNumberOfDaysForCancer, eventMilestone.TargetNumberOfDays);
        }
Пример #3
0
        public void ApplyTo_CorrectlyOverwritesTargetNumberOfDays_WhenEventCodeIsOutpatientFirstAppointmentAttended()
        {
            // Arrange
            var eventMilestone = new EventMilestone
            {
                TargetNumberOfDays = 5,
                Name = new EventName {
                    Code = EventCode.AttendedOutpatientFirstAppointment
                },
                CompletedEvent = new ClockTickingCompletedEvent
                {
                    Cancer = true
                }
            };

            var sut = new EventMilestoneTargetNumberOfDaysCancerPolicy();

            // Act
            sut.ApplyTo(eventMilestone);

            // Assert
            Assert.AreEqual(Constants.OutpatientFirstAppointmentAttendedTargetNumberOfDaysForCancer, eventMilestone.TargetNumberOfDays);
        }
Пример #4
0
        private void GenerateEventMilestonesForEvent(Period period, CompletedEvent currentCompletedEvent, List <EventName> eventNames, UnitOfWork unitOfWork)
        {
            var eventMilestoneDateReferenceForTargetCancerPolicy = new EventMilestoneDateReferenceForTargetCancerPolicy();
            var eventMilestoneTargetNumberOfDaysCancerPolicy     = new EventMilestoneTargetNumberOfDaysCancerPolicy();

            var destinationEvents = GetDestinationEventsForSourceEventType(currentCompletedEvent.Name.Code, unitOfWork);

            foreach (var destinationEvent in destinationEvents)
            {
                var dateReferenceForTarget = ComputeDateReference(destinationEvent, currentCompletedEvent, period);

                var eventMilestone = new EventMilestone
                {
                    CompletedEvent     = currentCompletedEvent,
                    IsMandatory        = destinationEvent.IsMandatory,
                    TargetNumberOfDays = destinationEvent.TargetNumberOfDays,
                    Name = eventNames.FirstOrDefault(name => name.Code == destinationEvent.DestinationName.Code),
                    DateReferenceForTarget = dateReferenceForTarget
                };

                eventMilestoneDateReferenceForTargetCancerPolicy.ApplyTo(eventMilestone);
                eventMilestoneTargetNumberOfDaysCancerPolicy.ApplyTo(eventMilestone);

                if (((currentCompletedEvent.Name.Code == EventCode.PatientCancelEvent || currentCompletedEvent.Name.Code == EventCode.HospitalCancelEvent || currentCompletedEvent.Name.Code == EventCode.DidNotAttend) && (period.CompletedEvents.Any(e => e.Name.Code == destinationEvent.EventForDateReferenceForTarget.Code))) ||
                    (currentCompletedEvent.Name.Code != EventCode.PatientCancelEvent && currentCompletedEvent.Name.Code != EventCode.HospitalCancelEvent && currentCompletedEvent.Name.Code != EventCode.DidNotAttend))
                {
                    if (destinationEvent.EventForDateReferenceForTarget != null)
                    {
                        period.MapEventMilestoneToCompletedEvent(currentCompletedEvent, eventMilestone,
                                                                 eventNames.FirstOrDefault(name => name.Code == destinationEvent.EventForDateReferenceForTarget.Code));
                    }

                    unitOfWork.EventMilestones.Add(eventMilestone);
                }
            }
        }