public async Task <Models.Examination> Handle(CreateExaminationQuery param) { if (param == null) { throw new ArgumentNullException(nameof(param)); } param.Examination.ExaminationId = Guid.NewGuid().ToString(); param.Examination.MedicalExaminerOfficeResponsibleName = _locationHandler.Handle(new LocationRetrievalByIdQuery(param.Examination.MedicalExaminerOfficeResponsible)).Result.Name; param.Examination.Unassigned = true; param.Examination.CaseBreakdown = new CaseBreakDown(); param.Examination.CaseBreakdown.DeathEvent = new DeathEvent() { Created = param.Examination.CreatedAt.DateTime, DateOfDeath = param.Examination.DateOfDeath, TimeOfDeath = param.Examination.TimeOfDeath, UserId = param.Examination.CreatedBy, UsersRole = param.User.UsersRoleIn(new[] { UserRoles.MedicalExaminer, UserRoles.MedicalExaminerOfficer }).ToString(), UserFullName = param.User.FullName(), GmcNumber = param.User.GmcNumber, EventId = Guid.NewGuid().ToString() }; param.Examination.UpdateCaseUrgencySort(_urgencySettings.DaysToPreCalculateUrgencySort); param.Examination.UpdateCaseStatus(); param.Examination.LastModifiedBy = param.User.UserId; param.Examination.ModifiedAt = DateTime.Now; return(await _databaseAccess.CreateItemAsync(_connectionSettings, param.Examination)); }