private static OperationData Capture(DiscontinueModalityProcedureStepsRequest request, IPersistenceContext persistenceContext) { var procedures = request.ModalityProcedureSteps.Select(r => persistenceContext.Load <ModalityProcedureStep>(r, EntityLoadFlags.None).Procedure).ToList(); var order = procedures.First().Order; var patientProfile = procedures.First().PatientProfile; return(new OperationData(Operations.Discontinue, patientProfile, order, procedures)); }
private void DiscontinueModalityProcedureSteps() { try { var checkedMpsRefs = CollectionUtils.Map <ProcedurePlanSummaryTableItem, EntityRef, List <EntityRef> >( ListCheckedSummmaryTableItems(), item => item.ModalityProcedureStep.ProcedureStepRef); if (checkedMpsRefs.Count > 0) { if (this.Host.DesktopWindow.ShowMessageBox("Are you sure you want to discontinue the selected procedure(s)?", MessageBoxActions.YesNo) != DialogBoxAction.No) { DateTime?discontinueTime = Platform.Time; if (DowntimeRecovery.InDowntimeRecoveryMode) { if (!DateTimeEntryComponent.PromptForTime(this.Host.DesktopWindow, "Cancel Time", false, ref discontinueTime)) { return; } } Platform.GetService <IModalityWorkflowService>(service => { var request = new DiscontinueModalityProcedureStepsRequest(checkedMpsRefs) { DiscontinuedTime = DowntimeRecovery.InDowntimeRecoveryMode ? discontinueTime : null }; var response = service.DiscontinueModalityProcedureSteps(request); RefreshProcedurePlanSummary(response.ProcedurePlan); UpdateActionEnablement(); }); } } } catch (Exception e) { ExceptionHandler.Report(e, this.Host.DesktopWindow); } }
public DiscontinueModalityProcedureStepsResponse DiscontinueModalityProcedureSteps(DiscontinueModalityProcedureStepsRequest 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)); foreach (var step in modalitySteps) { var op = new DiscontinueModalityProcedureStepOperation(); op.Execute(step, request.DiscontinuedTime, new PersistentWorkflow(this.PersistenceContext)); // If discontinuing the procedure step caused the parent procedure to be discontinued, // create an HL7 event. if (step.Procedure.IsTerminated) { LogicalHL7Event.ProcedureCancelled.EnqueueEvents(step.Procedure); } } this.PersistenceContext.SynchState(); var assembler = new ProcedurePlanAssembler(); return(new DiscontinueModalityProcedureStepsResponse( assembler.CreateProcedurePlanSummary(modalitySteps[0].Procedure.Order, this.PersistenceContext))); }