コード例 #1
0
        public CompleteModalityPerformedProcedureStepResponse CompleteModalityPerformedProcedureStep(CompleteModalityPerformedProcedureStepRequest request)
        {
            var mpps = this.PersistenceContext.Load <ModalityPerformedProcedureStep>(request.Mpps.ModalityPerformendProcedureStepRef);

            // update extended properties (should this be in an assembler?)
            ExtendedPropertyUtils.Update(mpps.ExtendedProperties, request.Mpps.ExtendedProperties);

            var dicomSeriesAssembler = new DicomSeriesAssembler();

            dicomSeriesAssembler.SynchronizeDicomSeries(mpps, request.Mpps.DicomSeries, this.PersistenceContext);

            var op = new CompleteModalityPerformedProcedureStepOperation();

            op.Execute(mpps, request.CompletedTime, new PersistentWorkflow(PersistenceContext));

            this.PersistenceContext.SynchState();

            // Drill back to order so we can refresh procedure plan
            var onePs = CollectionUtils.FirstElement(mpps.Activities).As <ProcedureStep>();

            var planAssembler = new ProcedurePlanAssembler();
            var stepAssembler = new ModalityPerformedProcedureStepAssembler();

            return(new CompleteModalityPerformedProcedureStepResponse(
                       planAssembler.CreateProcedurePlanSummary(onePs.Procedure.Order, this.PersistenceContext),
                       stepAssembler.CreateModalityPerformedProcedureStepDetail(mpps, this.PersistenceContext)));
        }
コード例 #2
0
        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)));
        }
コード例 #3
0
        public ListPerformedProcedureStepsResponse ListPerformedProcedureSteps(ListPerformedProcedureStepsRequest request)
        {
            var order = this.PersistenceContext.Load <Order>(request.OrderRef);

            var assembler = new ModalityPerformedProcedureStepAssembler();

            var mppsSet = new HashedSet <PerformedStep>();

            foreach (var procedure in order.Procedures)
            {
                foreach (var mps in procedure.ModalityProcedureSteps)
                {
                    mppsSet.AddAll(mps.PerformedSteps);
                }
            }

            return(new ListPerformedProcedureStepsResponse(
                       CollectionUtils.Map <ModalityPerformedProcedureStep, ModalityPerformedProcedureStepDetail>(
                           mppsSet,
                           mpps => assembler.CreateModalityPerformedProcedureStepDetail(mpps, this.PersistenceContext))));
        }
コード例 #4
0
        public DiscontinueModalityPerformedProcedureStepResponse DiscontinueModalityPerformedProcedureStep(DiscontinueModalityPerformedProcedureStepRequest request)
        {
            var mpps = this.PersistenceContext.Load <ModalityPerformedProcedureStep>(request.Mpps.ModalityPerformendProcedureStepRef);

            // update extended properties (should this be in an assembler?)
            ExtendedPropertyUtils.Update(mpps.ExtendedProperties, request.Mpps.ExtendedProperties);

            var dicomSeriesAssembler = new DicomSeriesAssembler();

            dicomSeriesAssembler.SynchronizeDicomSeries(mpps, request.Mpps.DicomSeries, this.PersistenceContext);

            var op = new DiscontinueModalityPerformedProcedureStepOperation();

            op.Execute(mpps, request.DiscontinuedTime, new PersistentWorkflow(PersistenceContext));

            this.PersistenceContext.SynchState();

            // If discontinuing the MPPS caused any associated procedures to be discontinued,
            // create an HL7 event.
            foreach (var activity in mpps.Activities)
            {
                var procedure = activity.As <ProcedureStep>().Procedure;
                if (procedure.IsTerminated)
                {
                    LogicalHL7Event.ProcedureCancelled.EnqueueEvents(procedure);
                }
            }

            // Drill back to order so we can refresh procedure plan
            var order = CollectionUtils.FirstElement(mpps.Activities).As <ProcedureStep>().Procedure.Order;

            var planAssembler = new ProcedurePlanAssembler();
            var stepAssembler = new ModalityPerformedProcedureStepAssembler();

            return(new DiscontinueModalityPerformedProcedureStepResponse(
                       planAssembler.CreateProcedurePlanSummary(order, this.PersistenceContext),
                       stepAssembler.CreateModalityPerformedProcedureStepDetail(mpps, this.PersistenceContext)));
        }
コード例 #5
0
		public ListPerformedProcedureStepsResponse ListPerformedProcedureSteps(ListPerformedProcedureStepsRequest request)
		{
			var order = this.PersistenceContext.Load<Order>(request.OrderRef);

			var assembler = new ModalityPerformedProcedureStepAssembler();

			var mppsSet = new HashedSet<PerformedStep>();
			foreach (var procedure in order.Procedures)
			{
				foreach (var mps in procedure.ModalityProcedureSteps)
				{
					mppsSet.AddAll(mps.PerformedSteps);
				}
			}

			return new ListPerformedProcedureStepsResponse(
				CollectionUtils.Map<ModalityPerformedProcedureStep, ModalityPerformedProcedureStepDetail>(
					mppsSet,
					mpps => assembler.CreateModalityPerformedProcedureStepDetail(mpps, this.PersistenceContext)));
		}
コード例 #6
0
		public DiscontinueModalityPerformedProcedureStepResponse DiscontinueModalityPerformedProcedureStep(DiscontinueModalityPerformedProcedureStepRequest request)
		{
			var mpps = this.PersistenceContext.Load<ModalityPerformedProcedureStep>(request.Mpps.ModalityPerformendProcedureStepRef);

			// update extended properties (should this be in an assembler?)
			ExtendedPropertyUtils.Update(mpps.ExtendedProperties, request.Mpps.ExtendedProperties);

			var dicomSeriesAssembler = new DicomSeriesAssembler();
			dicomSeriesAssembler.SynchronizeDicomSeries(mpps, request.Mpps.DicomSeries, this.PersistenceContext);

			var op = new DiscontinueModalityPerformedProcedureStepOperation();
			op.Execute(mpps, request.DiscontinuedTime, new PersistentWorkflow(PersistenceContext));

			this.PersistenceContext.SynchState();

			// If discontinuing the MPPS caused any associated procedures to be discontinued,
			// create an HL7 event.
			foreach (var activity in mpps.Activities)
			{
				var procedure = activity.As<ProcedureStep>().Procedure;
				if(procedure.IsTerminated)
					LogicalHL7Event.ProcedureCancelled.EnqueueEvents(procedure);
			}
	
			// Drill back to order so we can refresh procedure plan
			var order = CollectionUtils.FirstElement(mpps.Activities).As<ProcedureStep>().Procedure.Order;

			var planAssembler = new ProcedurePlanAssembler();
			var stepAssembler = new ModalityPerformedProcedureStepAssembler();
			return new DiscontinueModalityPerformedProcedureStepResponse(
				planAssembler.CreateProcedurePlanSummary(order, this.PersistenceContext),
				stepAssembler.CreateModalityPerformedProcedureStepDetail(mpps, this.PersistenceContext));
		}
コード例 #7
0
		public CompleteModalityPerformedProcedureStepResponse CompleteModalityPerformedProcedureStep(CompleteModalityPerformedProcedureStepRequest request)
		{
			var mpps = this.PersistenceContext.Load<ModalityPerformedProcedureStep>(request.Mpps.ModalityPerformendProcedureStepRef);

			// update extended properties (should this be in an assembler?)
			ExtendedPropertyUtils.Update(mpps.ExtendedProperties, request.Mpps.ExtendedProperties);

			var dicomSeriesAssembler = new DicomSeriesAssembler();
			dicomSeriesAssembler.SynchronizeDicomSeries(mpps, request.Mpps.DicomSeries, this.PersistenceContext);

			var op = new CompleteModalityPerformedProcedureStepOperation();
			op.Execute(mpps, request.CompletedTime, new PersistentWorkflow(PersistenceContext));

			this.PersistenceContext.SynchState();

			// Drill back to order so we can refresh procedure plan
			var onePs = CollectionUtils.FirstElement(mpps.Activities).As<ProcedureStep>();

			var planAssembler = new ProcedurePlanAssembler();
			var stepAssembler = new ModalityPerformedProcedureStepAssembler();
			return new CompleteModalityPerformedProcedureStepResponse(
				planAssembler.CreateProcedurePlanSummary(onePs.Procedure.Order, this.PersistenceContext),
				stepAssembler.CreateModalityPerformedProcedureStepDetail(mpps, this.PersistenceContext));
		}
コード例 #8
0
		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));
		}