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)); }
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); } }
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) }); }
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) }; }