public StartModalityProcedureStepsResponse StartModalityProcedureSteps(StartModalityProcedureStepsRequest request) { Platform.CheckForNullReference(request, "request"); Platform.CheckMemberIsSet(request.ModalityProcedureSteps, "ModalityProcedureSteps"); // load the set of mps var modalitySteps = CollectionUtils.Map <EntityRef, ModalityProcedureStep>( request.ModalityProcedureSteps, mpsRef => this.PersistenceContext.Load <ModalityProcedureStep>(mpsRef)); var hasProcedureNotCheckedIn = CollectionUtils.Contains( modalitySteps, mps => mps.Procedure.IsPreCheckIn); if (hasProcedureNotCheckedIn) { throw new RequestValidationException(SR.ExceptionProcedureNotCheckedIn); } var op = new StartModalityProcedureStepsOperation(); var mpps = op.Execute(modalitySteps, request.StartTime, this.CurrentUserStaff, new PersistentWorkflow(PersistenceContext)); this.PersistenceContext.SynchState(); var procedurePlanAssembler = new ProcedurePlanAssembler(); var mppsAssembler = new ModalityPerformedProcedureStepAssembler(); return(new StartModalityProcedureStepsResponse( procedurePlanAssembler.CreateProcedurePlanSummary(modalitySteps[0].Procedure.Order, this.PersistenceContext), mppsAssembler.CreateModalityPerformedProcedureStepDetail(mpps, this.PersistenceContext))); }
private void StartModalityProcedureSteps() { try { var checkedItems = ListCheckedSummmaryTableItems(); var firstItem = CollectionUtils.FirstElement(checkedItems); if (CollectionUtils.Contains( checkedItems, item => item.ModalityProcedureStep.Modality.Id != firstItem.ModalityProcedureStep.Modality.Id)) { this.Host.ShowMessageBox("Cannot start procedure steps of different modalities at the same time.", MessageBoxActions.Ok); return; } var checkedMpsRefs = CollectionUtils.Map <ProcedurePlanSummaryTableItem, EntityRef>( checkedItems, item => item.ModalityProcedureStep.ProcedureStepRef); if (checkedMpsRefs.Count > 0) { DateTime?startTime = Platform.Time; if (DowntimeRecovery.InDowntimeRecoveryMode) { if (!DateTimeEntryComponent.PromptForTime(this.Host.DesktopWindow, "Start Time", false, ref startTime)) { return; } } Platform.GetService <IModalityWorkflowService>(service => { var request = new StartModalityProcedureStepsRequest(checkedMpsRefs) { StartTime = DowntimeRecovery.InDowntimeRecoveryMode ? startTime : null }; var response = service.StartModalityProcedureSteps(request); RefreshProcedurePlanSummary(response.ProcedurePlan); UpdateActionEnablement(); _ppsComponent.AddPerformedProcedureStep(response.StartedMpps); }); } } catch (Exception e) { ExceptionHandler.Report(e, this.Host.DesktopWindow); } }