public GetConversationResponse GetConversation(GetConversationRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.OrderRef, "request.OrderRef");

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

            // select only notes that are actually posted, and meet category filter
            var notes = CollectionUtils.Select(OrderNote.GetNotesForOrder(order),
                                               n => n.IsPosted && (request.CategoryFilters == null || request.CategoryFilters.Count == 0 ||
                                                                   request.CategoryFilters.Contains(n.Category)));

            // put most recent notes first
            notes.Reverse();

            var noteAssembler = new OrderNoteAssembler();

            if (request.CountOnly)
            {
                return(new GetConversationResponse(order.GetRef(), null, notes.Count));
            }

            return(new GetConversationResponse(
                       order.GetRef(),
                       CollectionUtils.Map(notes, (OrderNote n) => noteAssembler.CreateOrderNoteDetail(n, CurrentUserStaff, PersistenceContext)),
                       notes.Count));
        }
Ejemplo n.º 2
0
        private List <OrderNoteDetail> GetNoteDetails(Order order, string category)
        {
            var noteAssembler = new OrderNoteAssembler();

            return(CollectionUtils.Map <OrderNote, OrderNoteDetail>(
                       OrderNote.GetNotesForOrder(order, new[] { category }, false),
                       note => noteAssembler.CreateOrderNoteDetail(note, this.PersistenceContext)));
        }
        public AcknowledgeAndPostResponse AcknowledgeAndPost(AcknowledgeAndPostRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.OrderRef, "request.OrderRef");

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

            // process acknowledgements first
            if (request.OrderNotesToAcknowledge != null)
            {
                var notes = CollectionUtils.Map(request.OrderNotesToAcknowledge,
                                                (EntityRef noteRef) => PersistenceContext.Load <OrderNote>(noteRef));

                foreach (var note in notes)
                {
                    //validate that the note is actually associated with the correct order
                    if (!Equals(note.Order, order))
                    {
                        throw new ArgumentException("Attempt to acknowledge a note that is not associated with this order.");
                    }

                    note.Acknowledge(CurrentUserStaff);
                }
            }

            try
            {
                // process reply note
                OrderNote replyNote     = null;
                var       noteAssembler = new OrderNoteAssembler();
                if (request.OrderNote != null)
                {
                    replyNote = noteAssembler.CreateOrderNote(
                        request.OrderNote, order, CurrentUserStaff, true, PersistenceContext);
                }
                PersistenceContext.SynchState();

                return(replyNote != null ?
                       new AcknowledgeAndPostResponse(noteAssembler.CreateOrderNoteDetail(replyNote, CurrentUserStaff, PersistenceContext))
                                        : new AcknowledgeAndPostResponse(null));
            }
            catch (NoteAcknowledgementException e)
            {
                // occurs when there are notes that this author must ack prior to posting a new note
                throw new RequestValidationException(e.Message);
            }
        }
Ejemplo n.º 4
0
		public OrderRequisition CreateOrderRequisition(Order order, IPersistenceContext context)
		{
			var patientProfileAssembler = new PatientProfileAssembler();
			var visitAssembler = new VisitAssembler();
			var pracAssembler = new ExternalPractitionerAssembler();
			var facilityAssembler = new FacilityAssembler();
			var dsAssembler = new DiagnosticServiceAssembler();
			var attachmentAssembler = new OrderAttachmentAssembler();
			var noteAssembler = new OrderNoteAssembler();
			var resultRecipientAssembler = new ResultRecipientAssembler();

			var requisition = new OrderRequisition
								{
									OrderRef = order.GetRef(),
									Patient =
										patientProfileAssembler.CreatePatientProfileSummary(
											CollectionUtils.FirstElement(order.Procedures).PatientProfile, context),
									Visit = visitAssembler.CreateVisitSummary(order.Visit, context),
									DiagnosticService = dsAssembler.CreateSummary(order.DiagnosticService),
									SchedulingRequestTime = order.SchedulingRequestTime,
									OrderingPractitioner =
										pracAssembler.CreateExternalPractitionerSummary(order.OrderingPractitioner, context),
									OrderingFacility = facilityAssembler.CreateFacilitySummary(order.OrderingFacility),
									ReasonForStudy = order.ReasonForStudy,
									Priority = EnumUtils.GetEnumValueInfo(order.Priority, context),
									ResultRecipients = CollectionUtils.Map<ResultRecipient, ResultRecipientDetail>(
										order.ResultRecipients,
										r => resultRecipientAssembler.CreateResultRecipientDetail(r, context)),
									Procedures = CollectionUtils.Map<Procedure, ProcedureRequisition>(
										order.Procedures,
										procedure => CreateProcedureRequisition(procedure, context)),
									Attachments = CollectionUtils.Map<OrderAttachment, AttachmentSummary>(
										order.Attachments,
										attachment => attachmentAssembler.CreateOrderAttachmentSummary(attachment, context)),
									Notes = CollectionUtils.Map<OrderNote, OrderNoteDetail>(
										OrderNote.GetNotesForOrder(order),
										note => noteAssembler.CreateOrderNoteDetail(note, context)),
									ExtendedProperties = ExtendedPropertyUtils.Copy(order.ExtendedProperties),
									CanModify = !order.IsTerminated
								};

			return requisition;
		}
        public LoadOrderDocumentationDataResponse LoadOrderDocumentationData(LoadOrderDocumentationDataRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.OrderRef, "OrderRef");

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

            var noteAssembler = new OrderNoteAssembler();

            return(new LoadOrderDocumentationDataResponse
            {
                OrderRef = order.GetRef(),
                OrderExtendedProperties = ExtendedPropertyUtils.Copy(order.ExtendedProperties),
                OrderNotes = CollectionUtils.Map <OrderNote, OrderNoteDetail>(
                    OrderNote.GetNotesForOrder(order),
                    note => noteAssembler.CreateOrderNoteDetail(note, PersistenceContext)),
                AssignedInterpreter = GetUniqueAssignedInterpreter(order)
            });
        }
Ejemplo n.º 6
0
        public OrderRequisition CreateOrderRequisition(Order order, IPersistenceContext context)
        {
            var patientProfileAssembler  = new PatientProfileAssembler();
            var visitAssembler           = new VisitAssembler();
            var pracAssembler            = new ExternalPractitionerAssembler();
            var facilityAssembler        = new FacilityAssembler();
            var dsAssembler              = new DiagnosticServiceAssembler();
            var attachmentAssembler      = new OrderAttachmentAssembler();
            var noteAssembler            = new OrderNoteAssembler();
            var resultRecipientAssembler = new ResultRecipientAssembler();

            var requisition = new OrderRequisition
            {
                OrderRef = order.GetRef(),
                Patient  =
                    patientProfileAssembler.CreatePatientProfileSummary(
                        CollectionUtils.FirstElement(order.Procedures).PatientProfile, context),
                Visit                 = visitAssembler.CreateVisitSummary(order.Visit, context),
                DiagnosticService     = dsAssembler.CreateSummary(order.DiagnosticService),
                SchedulingRequestTime = order.SchedulingRequestTime,
                OrderingPractitioner  =
                    pracAssembler.CreateExternalPractitionerSummary(order.OrderingPractitioner, context),
                OrderingFacility = facilityAssembler.CreateFacilitySummary(order.OrderingFacility),
                ReasonForStudy   = order.ReasonForStudy,
                Priority         = EnumUtils.GetEnumValueInfo(order.Priority, context),
                ResultRecipients = CollectionUtils.Map <ResultRecipient, ResultRecipientDetail>(
                    order.ResultRecipients,
                    r => resultRecipientAssembler.CreateResultRecipientDetail(r, context)),
                Procedures = CollectionUtils.Map <Procedure, ProcedureRequisition>(
                    order.Procedures,
                    procedure => CreateProcedureRequisition(procedure, context)),
                Attachments = CollectionUtils.Map <OrderAttachment, AttachmentSummary>(
                    order.Attachments,
                    attachment => attachmentAssembler.CreateOrderAttachmentSummary(attachment, context)),
                Notes = CollectionUtils.Map <OrderNote, OrderNoteDetail>(
                    OrderNote.GetNotesForOrder(order),
                    note => noteAssembler.CreateOrderNoteDetail(note, context)),
                ExtendedProperties = ExtendedPropertyUtils.Copy(order.ExtendedProperties),
                CanModify          = !order.IsTerminated
            };

            return(requisition);
        }
Ejemplo n.º 7
0
		public LoadOrderDocumentationDataResponse LoadOrderDocumentationData(LoadOrderDocumentationDataRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.OrderRef, "OrderRef");

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

			var noteAssembler = new OrderNoteAssembler();

			return new LoadOrderDocumentationDataResponse
			{
				OrderRef = order.GetRef(),
				OrderExtendedProperties = ExtendedPropertyUtils.Copy(order.ExtendedProperties),
				OrderNotes = CollectionUtils.Map<OrderNote, OrderNoteDetail>(
					OrderNote.GetNotesForOrder(order),
					note => noteAssembler.CreateOrderNoteDetail(note, PersistenceContext)),
				AssignedInterpreter = GetUniqueAssignedInterpreter(order)
			};
		}