Exemplo n.º 1
0
        public ListOrdersForPatientResponse ListActiveOrdersForPatient(ListOrdersForPatientRequest request)
        {
            var criteria = new OrderSearchCriteria();

            var profile = this.PersistenceContext.Load <PatientProfile>(request.PatientProfileRef);

            criteria.Patient.EqualTo(profile.Patient);
            criteria.Status.In(new[] { OrderStatus.SC, OrderStatus.IP });

            var assembler = new OrderAssembler();

            return(new ListOrdersForPatientResponse(
                       CollectionUtils.Map <Order, OrderSummary, List <OrderSummary> >(
                           this.PersistenceContext.GetBroker <IOrderBroker>().Find(criteria),
                           order => assembler.CreateOrderSummary(order, this.PersistenceContext))));
        }
Exemplo n.º 2
0
        public PlaceOrderResponse PlaceOrder(PlaceOrderRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.Requisition, "Requisition");

            var order = PlaceOrderHelper(request.Requisition);

            ValidateVisitsExist(order);

            // ensure the new order is assigned an OID before using it in the return value
            this.PersistenceContext.SynchState();

            LogicalHL7Event.OrderCreated.EnqueueEvents(order);

            var orderAssembler = new OrderAssembler();

            return(new PlaceOrderResponse(orderAssembler.CreateOrderSummary(order, this.PersistenceContext)));
        }
Exemplo n.º 3
0
        public ModifyOrderResponse ModifyOrder(ModifyOrderRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.Requisition, "Requisition");
            Platform.CheckMemberIsSet(request.Requisition.OrderRef, "OrderRef");

            var order = this.PersistenceContext.Load <Order>(request.Requisition.OrderRef);

            var assembler = new OrderEntryAssembler();

            assembler.UpdateOrderFromRequisition(order, request.Requisition, this.CurrentUserStaff, this.PersistenceContext);

            UpdateProceduresHelper(order, request.Requisition.Procedures, request);
            ValidateVisitsExist(order);

            this.PersistenceContext.SynchState();

            var orderAssembler = new OrderAssembler();

            return(new ModifyOrderResponse(orderAssembler.CreateOrderSummary(order, this.PersistenceContext)));
        }
Exemplo n.º 4
0
        public TimeShiftOrderResponse TimeShiftOrder(TimeShiftOrderRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.OrderRef, "OrderRef");

            // load the order, explicitly ignoring the version (since this is only used for testing/demo data creation, we don't care)
            var order = this.PersistenceContext.Load <Order>(request.OrderRef, EntityLoadFlags.None);

            // shift the order, which will also shift all procedures, etc.
            order.TimeShift(request.NumberOfMinutes);

            // shift the visit
            order.Visit.TimeShift(request.NumberOfMinutes);

            this.PersistenceContext.SynchState();

            LogicalHL7Event.OrderModified.EnqueueEvents(order);

            var orderAssembler = new OrderAssembler();

            return(new TimeShiftOrderResponse(orderAssembler.CreateOrderSummary(order, this.PersistenceContext)));
        }
Exemplo n.º 5
0
        public ReplaceOrderResponse ReplaceOrder(ReplaceOrderRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.OrderRef, "OrderRef");
            Platform.CheckMemberIsSet(request.Requisition, "Requisition");

            var orderToReplace = this.PersistenceContext.Load <Order>(request.OrderRef);

            ValidateOrderReplacable(orderToReplace);

            // reason is optional
            var reason = (request.CancelReason != null) ?
                         EnumUtils.GetEnumValue <OrderCancelReasonEnum>(request.CancelReason, this.PersistenceContext) : null;

            // duplicate any attachments in the requisition,
            // so that the replacement order gets a copy while the replaced order
            // retains the association to the originals
            DuplicateAttachmentsForOrderReplace(orderToReplace, request.Requisition);

            // place new order
            var newOrder = PlaceOrderHelper(request.Requisition);

            ValidateVisitsExist(newOrder);

            // cancel existing order
            CancelOrderHelper(orderToReplace, new OrderCancelInfo(reason, this.CurrentUserStaff, null, newOrder));

            this.PersistenceContext.SynchState();

            LogicalHL7Event.OrderCreated.EnqueueEvents(newOrder);
            LogicalHL7Event.OrderCancelled.EnqueueEvents(orderToReplace);

            var orderAssembler = new OrderAssembler();

            return(new ReplaceOrderResponse(orderAssembler.CreateOrderSummary(newOrder, this.PersistenceContext)));
        }
Exemplo n.º 6
0
		public ListOrdersForPatientResponse ListActiveOrdersForPatient(ListOrdersForPatientRequest request)
		{
			var criteria = new OrderSearchCriteria();

			var profile = this.PersistenceContext.Load<PatientProfile>(request.PatientProfileRef);
			criteria.Patient.EqualTo(profile.Patient);
			criteria.Status.In(new[] { OrderStatus.SC, OrderStatus.IP });

			var assembler = new OrderAssembler();
			return new ListOrdersForPatientResponse(
				CollectionUtils.Map<Order, OrderSummary, List<OrderSummary>>(
					this.PersistenceContext.GetBroker<IOrderBroker>().Find(criteria),
					order => assembler.CreateOrderSummary(order, this.PersistenceContext)));
		}
Exemplo n.º 7
0
		public TimeShiftOrderResponse TimeShiftOrder(TimeShiftOrderRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.OrderRef, "OrderRef");

			// load the order, explicitly ignoring the version (since this is only used for testing/demo data creation, we don't care)
			var order = this.PersistenceContext.Load<Order>(request.OrderRef, EntityLoadFlags.None);

			// shift the order, which will also shift all procedures, etc.
			order.TimeShift(request.NumberOfMinutes);

			// shift the visit
			order.Visit.TimeShift(request.NumberOfMinutes);

			this.PersistenceContext.SynchState();

			LogicalHL7Event.OrderModified.EnqueueEvents(order);

			var orderAssembler = new OrderAssembler();
			return new TimeShiftOrderResponse(orderAssembler.CreateOrderSummary(order, this.PersistenceContext));
		}
Exemplo n.º 8
0
		public ReplaceOrderResponse ReplaceOrder(ReplaceOrderRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.OrderRef, "OrderRef");
			Platform.CheckMemberIsSet(request.Requisition, "Requisition");

			var orderToReplace = this.PersistenceContext.Load<Order>(request.OrderRef);
			ValidateOrderReplacable(orderToReplace);

			// reason is optional
			var reason = (request.CancelReason != null) ?
				EnumUtils.GetEnumValue<OrderCancelReasonEnum>(request.CancelReason, this.PersistenceContext) : null;

			// duplicate any attachments in the requisition,
			// so that the replacement order gets a copy while the replaced order
			// retains the association to the originals
			DuplicateAttachmentsForOrderReplace(orderToReplace, request.Requisition);

			// place new order
			var newOrder = PlaceOrderHelper(request.Requisition);
			ValidateVisitsExist(newOrder);

			// cancel existing order
			CancelOrderHelper(orderToReplace, new OrderCancelInfo(reason, this.CurrentUserStaff, null, newOrder));

			this.PersistenceContext.SynchState();

			LogicalHL7Event.OrderCreated.EnqueueEvents(newOrder);
			LogicalHL7Event.OrderCancelled.EnqueueEvents(orderToReplace);

			var orderAssembler = new OrderAssembler();
			return new ReplaceOrderResponse(orderAssembler.CreateOrderSummary(newOrder, this.PersistenceContext));
		}
Exemplo n.º 9
0
		public ModifyOrderResponse ModifyOrder(ModifyOrderRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.Requisition, "Requisition");
			Platform.CheckMemberIsSet(request.Requisition.OrderRef, "OrderRef");

			var order = this.PersistenceContext.Load<Order>(request.Requisition.OrderRef);

			var assembler = new OrderEntryAssembler();
			assembler.UpdateOrderFromRequisition(order, request.Requisition, this.CurrentUserStaff, this.PersistenceContext);

			UpdateProceduresHelper(order, request.Requisition.Procedures, request);
			ValidateVisitsExist(order);

			this.PersistenceContext.SynchState();

			var orderAssembler = new OrderAssembler();
			return new ModifyOrderResponse(orderAssembler.CreateOrderSummary(order, this.PersistenceContext));
		}
Exemplo n.º 10
0
		public PlaceOrderResponse PlaceOrder(PlaceOrderRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.Requisition, "Requisition");

			var order = PlaceOrderHelper(request.Requisition);

			ValidateVisitsExist(order);

			// ensure the new order is assigned an OID before using it in the return value
			this.PersistenceContext.SynchState();

			LogicalHL7Event.OrderCreated.EnqueueEvents(order);

			var orderAssembler = new OrderAssembler();
			return new PlaceOrderResponse(orderAssembler.CreateOrderSummary(order, this.PersistenceContext));
		}