/// <summary> /// Creates the program enrollment. /// </summary> /// <param name="programOffering">The program offering.</param> /// <param name="clinicalCase">The clinical case.</param> /// <param name="enrollmentDate">The enrollment date.</param> /// <param name="enrollingStaff">The enrolling staff.</param> /// <returns> /// A ProgramEnrollment. /// </returns> public ProgramEnrollment CreateProgramEnrollment(ProgramOffering programOffering, ClinicalCase clinicalCase, DateTime enrollmentDate, Staff enrollingStaff) { Check.IsNotNull(programOffering, "Program Offering is required."); Check.IsNotNull(clinicalCase, "Clinical Case is required."); Check.IsNotNull(enrollmentDate, "Enrollment Date is required."); Check.IsNotNull(enrollingStaff, "Enrolling Staff is required."); var newProgramEnrollment = new ProgramEnrollment(programOffering, clinicalCase, enrollmentDate, enrollingStaff); ProgramEnrollment createdProgramEnrollment = null; DomainRuleEngine.CreateRuleEngine(newProgramEnrollment, "CreateProgramEnrollmentRuleSet") .WithContext(enrollmentDate) .WithContext(enrollingStaff) .Execute(() => { _programEnrollmentRepository.MakePersistent(newProgramEnrollment); createdProgramEnrollment = newProgramEnrollment; }); return(createdProgramEnrollment); }