Exemple #1
0
        public void Test_Constructor()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            Assert.AreEqual(procedure, procedureStep.Procedure);
        }
Exemple #2
0
        public void Test_IsPreStep()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            Assert.IsFalse(procedureStep.IsPreStep);
        }
        public void Test_IsPreStep()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            Assert.IsFalse(procedureStep.IsPreStep);
        }
Exemple #4
0
        public void Test_CreateProcedureSteps()
        {
            var procedure = new Procedure();
            var ps        = new DocumentationProcedureStep(procedure);

            procedure.CreateProcedureSteps();
        }
        public void Test_Constructor()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            Assert.AreEqual(procedure, procedureStep.Procedure);
        }
Exemple #6
0
        public void Test_Schedule_PreStep_And_SchedulingOffset()
        {
            var procedure = new Procedure(new ProcedureType(), "111", "1.111");

            var protocolStep = new ProtocolAssignmentStep(new Protocol(procedure));

            procedure.AddProcedureStep(protocolStep);
            var registrationStep  = new RegistrationProcedureStep(procedure);
            var modalityStep      = new ModalityProcedureStep(procedure, "description", new Modality());
            var documentationStep = new DocumentationProcedureStep(procedure);
            var reportingStep     = new ConcreteReportingProcedureStep(procedure);

            Assert.IsNull(protocolStep.Scheduling.StartTime);
            Assert.IsNull(registrationStep.Scheduling.StartTime);
            Assert.IsNull(modalityStep.Scheduling.StartTime);
            Assert.IsNull(documentationStep.Scheduling.StartTime);
            Assert.IsNull(reportingStep.Scheduling.StartTime);

            var now = DateTime.Now;

            procedure.Schedule(now);

            Assert.AreEqual(now.Truncate(DateTimePrecision.Minute), procedure.ScheduledStartTime);
            Assert.AreEqual(protocolStep.CreationTime, protocolStep.Scheduling.StartTime);
            Assert.AreEqual(procedure.ScheduledStartTime, registrationStep.Scheduling.StartTime);
            Assert.AreEqual(procedure.ScheduledStartTime, modalityStep.Scheduling.StartTime);
            Assert.IsNull(documentationStep.Scheduling.StartTime);
            Assert.IsNull(reportingStep.Scheduling.StartTime);
        }
Exemple #7
0
        public void Test_Name()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            Assert.AreEqual("Documentation", procedureStep.Name);
        }
        public void Test_Name()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            Assert.AreEqual("Documentation", procedureStep.Name);
        }
Exemple #9
0
        public void Test_GetWorkflowHistory_OneLevel()
        {
            var procedure = new Procedure();
            var ps1       = new DocumentationProcedureStep(procedure);
            var ps2       = new DocumentationProcedureStep(procedure);

            Assert.AreEqual(2, procedure.GetWorkflowHistory().Count);
        }
        public void Test_GetLinkedProcedures()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            Assert.IsNotNull(procedureStep.GetLinkedProcedures());
            Assert.IsEmpty(procedureStep.GetLinkedProcedures());
        }
Exemple #11
0
        public void Test_GetLinkedProcedures()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            Assert.IsNotNull(procedureStep.GetLinkedProcedures());
            Assert.IsEmpty(procedureStep.GetLinkedProcedures());
        }
Exemple #12
0
        public void Test_DocumentationProcedureStep()
        {
            var procedure = new Procedure();
            var ps1       = new DocumentationProcedureStep(procedure);
            var ps2       = new ConcreteReportingProcedureStep(procedure);

            Assert.AreEqual(2, procedure.ProcedureSteps.Count);
            Assert.AreEqual(ps1, procedure.DocumentationProcedureStep);
        }
Exemple #13
0
        public void Test_ReportingProcedureSteps()
        {
            var procedure = new Procedure();
            var ps1       = new ConcreteReportingProcedureStep(procedure);
            var ps2       = new DocumentationProcedureStep(procedure);

            Assert.AreEqual(2, procedure.ProcedureSteps.Count);
            Assert.IsTrue(procedure.ReportingProcedureSteps.Contains(ps1));
            Assert.AreEqual(1, procedure.ReportingProcedureSteps.Count);
        }
Exemple #14
0
        public void Test_ModailtyProcedureSteps()
        {
            var procedure = new Procedure();
            var ps1       = new ModalityProcedureStep(procedure, "description", new Modality());
            var ps2       = new DocumentationProcedureStep(procedure);

            Assert.AreEqual(2, procedure.ProcedureSteps.Count);
            Assert.IsTrue(procedure.ModalityProcedureSteps.Contains(ps1));
            Assert.AreEqual(1, procedure.ModalityProcedureSteps.Count);
        }
Exemple #15
0
        public void Test_GetRelatedProcedureSteps()
        {
            Procedure p1 = new Procedure();

            // attach 2 procedure steps to p1
            DocumentationProcedureStep ps11 = new DocumentationProcedureStep(p1);
            DocumentationProcedureStep ps12 = new DocumentationProcedureStep(p1);

            // expect that each ps is only related to itself
            Assert.IsEmpty(ps11.GetRelatedProcedureSteps());
            Assert.IsEmpty(ps12.GetRelatedProcedureSteps());
        }
Exemple #16
0
        public void Test_AddProcedureStep_StepProcedureNotNull()
        {
            var p1 = new Procedure();
            var ps = new DocumentationProcedureStep();

            Assert.IsNull(ps.Procedure);

            p1.AddProcedureStep(ps);
            Assert.AreEqual(p1, ps.Procedure);

            var p2 = new Procedure();

            p2.AddProcedureStep(ps);
        }
Exemple #17
0
        public void Test_AddProcedureStep()
        {
            var procedure = new Procedure();

            var ps = new DocumentationProcedureStep();

            Assert.IsFalse(procedure.ProcedureSteps.Contains(ps));
            Assert.AreNotEqual(procedure, ps.Procedure);

            procedure.AddProcedureStep(ps);

            Assert.IsTrue(procedure.ProcedureSteps.Contains(ps));
            Assert.AreEqual(procedure, ps.Procedure);
        }
        public void Test_Reassign()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);
            procedureStep.Suspend();

            Staff performer = new Staff();
            ProcedureStep newStep = procedureStep.Reassign(performer); // Perform event

            // just need to test that it returns a new instance of this class
            // everything else has been covered in base class tests
            Assert.IsNotNull(newStep);
            Assert.AreNotEqual(this, newStep);
            Assert.IsInstanceOfType(typeof(DocumentationProcedureStep), newStep);
            Assert.AreEqual(procedure, newStep.Procedure);
        }
Exemple #19
0
        public void Test_Reassign()
        {
            Procedure procedure = new Procedure();
            DocumentationProcedureStep procedureStep = new DocumentationProcedureStep(procedure);

            procedureStep.Suspend();

            Staff         performer = new Staff();
            ProcedureStep newStep   = procedureStep.Reassign(performer); // Perform event

            // just need to test that it returns a new instance of this class
            // everything else has been covered in base class tests
            Assert.IsNotNull(newStep);
            Assert.AreNotEqual(this, newStep);
            Assert.IsInstanceOfType(typeof(DocumentationProcedureStep), newStep);
            Assert.AreEqual(procedure, newStep.Procedure);
        }
Exemple #20
0
        public void Test_GetProcedureStep()
        {
            var procedure = new Procedure();

            Assert.IsNull(procedure.GetProcedureStep(delegate { return(true); }));

            var ps1 = new DocumentationProcedureStep(procedure);
            var ps2 = new ModalityProcedureStep(procedure, "new Modality", new Modality());
            var ps3 = new ModalityProcedureStep(procedure, "new Modality", new Modality());
            var ps4 = new ConcreteReportingProcedureStep(procedure);

            Assert.IsNull(procedure.GetProcedureStep(delegate { return(false); }));

            Assert.AreEqual(ps1, procedure.GetProcedureStep(ps => ps is DocumentationProcedureStep));
            Assert.AreEqual(ps2, procedure.GetProcedureStep(ps => ps is ModalityProcedureStep));
            Assert.AreEqual(ps4, procedure.GetProcedureStep(ps => ps is ReportingProcedureStep));
            Assert.IsNull(procedure.GetProcedureStep(ps => ps is ProtocolProcedureStep));
        }
Exemple #21
0
        public void Test_GetProcedureSteps()
        {
            var procedure = new Procedure();

            Assert.IsEmpty(procedure.GetProcedureSteps(delegate { return(true); }));

            var ps1 = new DocumentationProcedureStep(procedure);
            var ps2 = new ModalityProcedureStep(procedure, "1", new Modality());
            var ps3 = new ModalityProcedureStep(procedure, "2", new Modality());
            var ps4 = new ProtocolAssignmentStep();

            procedure.AddProcedureStep(ps4);

            Assert.AreEqual(4, procedure.GetProcedureSteps(delegate { return(true); }).Count);
            Assert.IsEmpty(procedure.GetProcedureSteps(delegate { return(false); }));
            Assert.AreEqual(1, procedure.GetProcedureSteps(ps => ps is DocumentationProcedureStep).Count);
            Assert.AreEqual(2, procedure.GetProcedureSteps(ps => ps is ModalityProcedureStep).Count);
            Assert.AreEqual(0, procedure.GetProcedureSteps(ps => ps is ReportingProcedureStep).Count);
            Assert.AreEqual(1, procedure.GetProcedureSteps(ps => ps is ProtocolProcedureStep).Count);
        }
Exemple #22
0
        public ModalityPerformedProcedureStep Execute(IList <ModalityProcedureStep> modalitySteps, DateTime?startTime, Staff technologist, IWorkflow workflow)
        {
            if (modalitySteps.Count == 0)
            {
                throw new WorkflowException("At least one procedure step is required.");
            }

            // validate that each mps being started is being performed on the same modality
            if (!CollectionUtils.TrueForAll(modalitySteps, step => step.Modality.Equals(modalitySteps[0].Modality)))
            {
                throw new WorkflowException("Procedure steps cannot be started together because they are not on the same modality.");
            }

            // create an mpps
            var mpps = new ModalityPerformedProcedureStep(technologist, startTime);

            workflow.AddEntity(mpps);

            foreach (var mps in modalitySteps)
            {
                mps.Start(technologist, startTime);
                mps.AddPerformedStep(mpps);

                //note: this feature was disabled by request (see #2138) - they want to enforce explicit check-in
                //AutoCheckIn(mps.Procedure, startTime);
            }

            // Create Documentation Step for each RP that has an MPS started by this service call
            foreach (var step in modalitySteps)
            {
                if (step.Procedure.DocumentationProcedureStep == null)
                {
                    ProcedureStep docStep = new DocumentationProcedureStep(step.Procedure);
                    docStep.Start(technologist, startTime);
                    workflow.AddEntity(docStep);
                }
            }

            return(mpps);
        }
		public void Test_ModailtyProcedureSteps()
		{
			var procedure = new Procedure();
			var ps1 = new ModalityProcedureStep(procedure, "description", new Modality());
			var ps2 = new DocumentationProcedureStep(procedure);

			Assert.AreEqual(2, procedure.ProcedureSteps.Count);
			Assert.IsTrue(procedure.ModalityProcedureSteps.Contains(ps1));
			Assert.AreEqual(1, procedure.ModalityProcedureSteps.Count);
		}
		public void Test_GetProcedureSteps()
		{
			var procedure = new Procedure();

			Assert.IsEmpty(procedure.GetProcedureSteps(delegate { return true; }));

			var ps1 = new DocumentationProcedureStep(procedure);
			var ps2 = new ModalityProcedureStep(procedure, "1", new Modality());
			var ps3 = new ModalityProcedureStep(procedure, "2", new Modality());
			var ps4 = new ProtocolAssignmentStep();
			procedure.AddProcedureStep(ps4);

			Assert.AreEqual(4, procedure.GetProcedureSteps(delegate { return true; }).Count);
			Assert.IsEmpty(procedure.GetProcedureSteps(delegate { return false; }));
			Assert.AreEqual(1, procedure.GetProcedureSteps(ps => ps is DocumentationProcedureStep).Count);
			Assert.AreEqual(2, procedure.GetProcedureSteps(ps => ps is ModalityProcedureStep).Count);
			Assert.AreEqual(0, procedure.GetProcedureSteps(ps => ps is ReportingProcedureStep).Count);
			Assert.AreEqual(1, procedure.GetProcedureSteps(ps => ps is ProtocolProcedureStep).Count);
		}
		public void Test_DocumentationProcedureStep()
		{
			var procedure = new Procedure();
			var ps1 = new DocumentationProcedureStep(procedure);
			var ps2 = new ConcreteReportingProcedureStep(procedure);

			Assert.AreEqual(2, procedure.ProcedureSteps.Count);
			Assert.AreEqual(ps1, procedure.DocumentationProcedureStep);
		}
		public void Test_CreateProcedureSteps()
		{
			var procedure = new Procedure();
			var ps = new DocumentationProcedureStep(procedure);

			procedure.CreateProcedureSteps();
		}
		public void Test_GetProcedureStep()
		{
			var procedure = new Procedure();
			Assert.IsNull(procedure.GetProcedureStep(delegate { return true; }));

			var ps1 = new DocumentationProcedureStep(procedure);
			var ps2 = new ModalityProcedureStep(procedure, "new Modality", new Modality());
			var ps3 = new ModalityProcedureStep(procedure, "new Modality", new Modality());
			var ps4 = new ConcreteReportingProcedureStep(procedure);

			Assert.IsNull(procedure.GetProcedureStep(delegate { return false; }));

			Assert.AreEqual(ps1, procedure.GetProcedureStep(ps => ps is DocumentationProcedureStep));
			Assert.AreEqual(ps2, procedure.GetProcedureStep(ps => ps is ModalityProcedureStep));
			Assert.AreEqual(ps4, procedure.GetProcedureStep(ps => ps is ReportingProcedureStep));
			Assert.IsNull(procedure.GetProcedureStep(ps => ps is ProtocolProcedureStep));
		}
		public void Test_AddProcedureStep_StepProcedureNotNull()
		{
			var p1 = new Procedure();
			var ps = new DocumentationProcedureStep();
			Assert.IsNull(ps.Procedure);

			p1.AddProcedureStep(ps);
			Assert.AreEqual(p1, ps.Procedure);

			var p2 = new Procedure();
			p2.AddProcedureStep(ps);
		}
		public void Test_AddProcedureStep()
		{
			var procedure = new Procedure();

			var ps = new DocumentationProcedureStep();
			Assert.IsFalse(procedure.ProcedureSteps.Contains(ps));
			Assert.AreNotEqual(procedure, ps.Procedure);

			procedure.AddProcedureStep(ps);

			Assert.IsTrue(procedure.ProcedureSteps.Contains(ps));
			Assert.AreEqual(procedure, ps.Procedure);
		}
		public void Test_Schedule_PreStep_And_SchedulingOffset()
		{
			var procedure = new Procedure(new ProcedureType(), "111", "1.111");

			var protocolStep = new ProtocolAssignmentStep(new Protocol(procedure));
			procedure.AddProcedureStep(protocolStep);
			var registrationStep = new RegistrationProcedureStep(procedure);
			var modalityStep = new ModalityProcedureStep(procedure, "description", new Modality());
			var documentationStep = new DocumentationProcedureStep(procedure);
			var reportingStep = new ConcreteReportingProcedureStep(procedure);

			Assert.IsNull(protocolStep.Scheduling.StartTime);
			Assert.IsNull(registrationStep.Scheduling.StartTime);
			Assert.IsNull(modalityStep.Scheduling.StartTime);
			Assert.IsNull(documentationStep.Scheduling.StartTime);
			Assert.IsNull(reportingStep.Scheduling.StartTime);

			var now = DateTime.Now;
			procedure.Schedule(now);

			Assert.AreEqual(now.Truncate(DateTimePrecision.Minute), procedure.ScheduledStartTime);
			Assert.AreEqual(protocolStep.CreationTime, protocolStep.Scheduling.StartTime);
			Assert.AreEqual(procedure.ScheduledStartTime, registrationStep.Scheduling.StartTime);
			Assert.AreEqual(procedure.ScheduledStartTime, modalityStep.Scheduling.StartTime);
			Assert.IsNull(documentationStep.Scheduling.StartTime);
			Assert.IsNull(reportingStep.Scheduling.StartTime);
		}
		public void Test_GetWorkflowHistory_OneLevel()
		{
			var procedure = new Procedure();
			var ps1 = new DocumentationProcedureStep(procedure);
			var ps2 = new DocumentationProcedureStep(procedure);

			Assert.AreEqual(2, procedure.GetWorkflowHistory().Count);
		}
Exemple #32
0
		public ModalityPerformedProcedureStep Execute(IList<ModalityProcedureStep> modalitySteps, DateTime? startTime, Staff technologist, IWorkflow workflow)
		{
			if (modalitySteps.Count == 0)
				throw new WorkflowException("At least one procedure step is required.");

			// validate that each mps being started is being performed on the same modality
			if (!CollectionUtils.TrueForAll(modalitySteps, step => step.Modality.Equals(modalitySteps[0].Modality)))
			{
				throw new WorkflowException("Procedure steps cannot be started together because they are not on the same modality.");
			}

			// create an mpps
			var mpps = new ModalityPerformedProcedureStep(technologist, startTime);
			workflow.AddEntity(mpps);

			foreach (var mps in modalitySteps)
			{
				mps.Start(technologist, startTime);
				mps.AddPerformedStep(mpps);

				//note: this feature was disabled by request (see #2138) - they want to enforce explicit check-in
				//AutoCheckIn(mps.Procedure, startTime);
			}

			// Create Documentation Step for each RP that has an MPS started by this service call
			foreach (var step in modalitySteps)
			{
				if (step.Procedure.DocumentationProcedureStep == null)
				{
					ProcedureStep docStep = new DocumentationProcedureStep(step.Procedure);
					docStep.Start(technologist, startTime);
					workflow.AddEntity(docStep);
				}
			}

			return mpps;
		}
		public void Test_ReportingProcedureSteps()
		{
			var procedure = new Procedure();
			var ps1 = new ConcreteReportingProcedureStep(procedure);
			var ps2 = new DocumentationProcedureStep(procedure);

			Assert.AreEqual(2, procedure.ProcedureSteps.Count);
			Assert.IsTrue(procedure.ReportingProcedureSteps.Contains(ps1));
			Assert.AreEqual(1, procedure.ReportingProcedureSteps.Count);
		}
        public void Test_GetRelatedProcedureSteps()
        {
            Procedure p1 = new Procedure();

            // attach 2 procedure steps to p1
            DocumentationProcedureStep ps11 = new DocumentationProcedureStep(p1);
            DocumentationProcedureStep ps12 = new DocumentationProcedureStep(p1);

            // expect that each ps is only related to itself
            Assert.IsEmpty(ps11.GetRelatedProcedureSteps());
            Assert.IsEmpty(ps12.GetRelatedProcedureSteps());
        }