Пример #1
1
		public AddDiagnosticServiceResponse AddDiagnosticService(AddDiagnosticServiceRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.DiagnosticService, "request.DiagnosticService");

			DiagnosticService item = new DiagnosticService();

			DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();
			assembler.UpdateDiagnosticService(item, request.DiagnosticService, PersistenceContext);

			PersistenceContext.Lock(item, DirtyState.New);
			PersistenceContext.SynchState();

			return new AddDiagnosticServiceResponse(assembler.CreateSummary(item));
		}
Пример #2
0
		public ListDiagnosticServicesResponse ListDiagnosticServices(ListDiagnosticServicesRequest request)
		{
			Platform.CheckForNullReference(request, "request");

			DiagnosticServiceSearchCriteria where = new DiagnosticServiceSearchCriteria();
			where.Id.SortAsc(0);
			if (!string.IsNullOrEmpty(request.Id))
				where.Id.StartsWith(request.Id);
			if (!string.IsNullOrEmpty(request.Name))
				where.Name.Like(string.Format("%{0}%", request.Name));
			if(!request.IncludeDeactivated)
				where.Deactivated.EqualTo(false);

			IDiagnosticServiceBroker broker = PersistenceContext.GetBroker<IDiagnosticServiceBroker>();
			IList<DiagnosticService> items = broker.Find(where, request.Page);

			DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();
			return new ListDiagnosticServicesResponse(
				CollectionUtils.Map<DiagnosticService, DiagnosticServiceSummary>(items,
					delegate(DiagnosticService item)
					{
						return assembler.CreateSummary(item);
					})
				);
		}
Пример #3
0
        public ListDiagnosticServicesResponse ListDiagnosticServices(ListDiagnosticServicesRequest request)
        {
            Platform.CheckForNullReference(request, "request");

            DiagnosticServiceSearchCriteria where = new DiagnosticServiceSearchCriteria();
            where.Id.SortAsc(0);
            if (!string.IsNullOrEmpty(request.Id))
            {
                where.Id.StartsWith(request.Id);
            }
            if (!string.IsNullOrEmpty(request.Name))
            {
                where.Name.Like(string.Format("%{0}%", request.Name));
            }
            if (!request.IncludeDeactivated)
            {
                where.Deactivated.EqualTo(false);
            }

            IDiagnosticServiceBroker  broker = PersistenceContext.GetBroker <IDiagnosticServiceBroker>();
            IList <DiagnosticService> items  = broker.Find(where, request.Page);

            DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();

            return(new ListDiagnosticServicesResponse(
                       CollectionUtils.Map <DiagnosticService, DiagnosticServiceSummary>(items,
                                                                                         delegate(DiagnosticService item)
            {
                return assembler.CreateSummary(item);
            })
                       ));
        }
Пример #4
0
        public LoadDiagnosticServicePlanResponse LoadDiagnosticServicePlan(LoadDiagnosticServicePlanRequest request)
        {
            var dsBroker = this.PersistenceContext.GetBroker <IDiagnosticServiceBroker>();

            var diagnosticService = dsBroker.Load(request.DiagnosticServiceRef);

            var assembler = new DiagnosticServiceAssembler();

            return(new LoadDiagnosticServicePlanResponse(assembler.CreatePlanDetail(diagnosticService, request.IncludeDeactivatedProcedures, PersistenceContext)));
        }
Пример #5
0
        public LoadDiagnosticServiceForEditResponse LoadDiagnosticServiceForEdit(LoadDiagnosticServiceForEditRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.DiagnosticServiceRef, "request.DiagnosticServiceRef");

            DiagnosticService item = PersistenceContext.Load <DiagnosticService>(request.DiagnosticServiceRef);

            DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();

            return(new LoadDiagnosticServiceForEditResponse(assembler.CreateDetail(item)));
        }
Пример #6
0
        public AddDiagnosticServiceResponse AddDiagnosticService(AddDiagnosticServiceRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.DiagnosticService, "request.DiagnosticService");

            DiagnosticService item = new DiagnosticService();

            DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();

            assembler.UpdateDiagnosticService(item, request.DiagnosticService, PersistenceContext);

            PersistenceContext.Lock(item, DirtyState.New);
            PersistenceContext.SynchState();

            return(new AddDiagnosticServiceResponse(assembler.CreateSummary(item)));
        }
Пример #7
0
        public UpdateDiagnosticServiceResponse UpdateDiagnosticService(UpdateDiagnosticServiceRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            Platform.CheckMemberIsSet(request.DiagnosticService, "request.DiagnosticService");
            Platform.CheckMemberIsSet(request.DiagnosticService.DiagnosticServiceRef, "request.DiagnosticService.DiagnosticServiceRef");

            DiagnosticService item = PersistenceContext.Load <DiagnosticService>(request.DiagnosticService.DiagnosticServiceRef);

            DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();

            assembler.UpdateDiagnosticService(item, request.DiagnosticService, PersistenceContext);

            PersistenceContext.SynchState();

            return(new UpdateDiagnosticServiceResponse(assembler.CreateSummary(item)));
        }
        public GetPriorsResponse GetPriors(GetPriorsRequest request)
        {
            Platform.CheckForNullReference(request, "request");
            if (request.OrderRef == null && request.ReportRef == null)
            {
                throw new ArgumentException("Either OrderRef or ReportRef must be non-null");
            }

            var priorReports = new HashedSet <Prior>();
            var broker       = this.PersistenceContext.GetBroker <IPriorReportBroker>();

            // if an order was supplied, find relevant priors for the order
            if (request.OrderRef != null)
            {
                var order = this.PersistenceContext.Load <Order>(request.OrderRef, EntityLoadFlags.Proxy);
                priorReports.AddAll(broker.GetPriors(order, request.RelevantOnly));
            }
            // if a report was supplied, find relevent priors for the report
            else if (request.ReportRef != null)
            {
                var report = this.PersistenceContext.Load <Report>(request.ReportRef, EntityLoadFlags.Proxy);
                priorReports.AddAll(broker.GetPriors(report, request.RelevantOnly));
            }

            // assemble results
            var procedureTypeAssembler     = new ProcedureTypeAssembler();
            var diagnosticServiceAssembler = new DiagnosticServiceAssembler();

            // Note: we use the ProcedureCheckin.CheckOutTime as the PerformedDate
            // because it is the closest to the end of modality procedure step completion time.
            // However, if we change the definition of CheckOutTime in the future, this won't be accurate
            var priorSummaries = CollectionUtils.Map(priorReports,
                                                     (Prior prior) => new PriorProcedureSummary(
                                                         prior.Order.GetRef(),
                                                         prior.Procedure.GetRef(),
                                                         prior.Report.GetRef(),
                                                         prior.Order.AccessionNumber,
                                                         diagnosticServiceAssembler.CreateSummary(prior.Order.DiagnosticService),
                                                         procedureTypeAssembler.CreateSummary(prior.ProcedureType),
                                                         prior.Procedure.Portable,
                                                         EnumUtils.GetEnumValueInfo(prior.Procedure.Laterality, PersistenceContext),
                                                         EnumUtils.GetEnumValueInfo(prior.Report.Status, PersistenceContext),
                                                         prior.Procedure.ProcedureCheckIn.CheckOutTime));

            return(new GetPriorsResponse(priorSummaries));
        }
Пример #9
0
        public TextQueryResponse <DiagnosticServiceSummary> TextQuery(TextQueryRequest request)
        {
            IDiagnosticServiceBroker   broker    = PersistenceContext.GetBroker <IDiagnosticServiceBroker>();
            DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();

            TextQueryHelper <DiagnosticService, DiagnosticServiceSearchCriteria, DiagnosticServiceSummary> helper
                = new TextQueryHelper <DiagnosticService, DiagnosticServiceSearchCriteria, DiagnosticServiceSummary>(
                      delegate
            {
                string rawQuery = request.TextQuery;

                IList <string> terms = TextQueryHelper.ParseTerms(rawQuery);
                List <DiagnosticServiceSearchCriteria> criteria = new List <DiagnosticServiceSearchCriteria>();

                // allow matching on name (assume entire query is a name which may contain spaces)
                DiagnosticServiceSearchCriteria nameCriteria = new DiagnosticServiceSearchCriteria();
                nameCriteria.Name.StartsWith(rawQuery);
                criteria.Add(nameCriteria);

                // allow matching of any term against ID
                criteria.AddRange(CollectionUtils.Map <string, DiagnosticServiceSearchCriteria>(terms,
                                                                                                delegate(string term)
                {
                    DiagnosticServiceSearchCriteria c = new DiagnosticServiceSearchCriteria();
                    c.Id.StartsWith(term);
                    return(c);
                }));

                return(criteria.ToArray());
            },
                      delegate(DiagnosticService ds)
            {
                return(assembler.CreateSummary(ds));
            },
                      delegate(DiagnosticServiceSearchCriteria[] criteria, int threshold)
            {
                return(broker.Count(criteria) <= threshold);
            },
                      delegate(DiagnosticServiceSearchCriteria[] criteria, SearchResultPage page)
            {
                return(broker.Find(criteria, page));
            });

            return(helper.Query(request));
        }
Пример #10
0
		public TextQueryResponse<DiagnosticServiceSummary> TextQuery(TextQueryRequest request)
		{
			IDiagnosticServiceBroker broker = PersistenceContext.GetBroker<IDiagnosticServiceBroker>();
			DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();

			TextQueryHelper<DiagnosticService, DiagnosticServiceSearchCriteria, DiagnosticServiceSummary> helper
				= new TextQueryHelper<DiagnosticService, DiagnosticServiceSearchCriteria, DiagnosticServiceSummary>(
                    delegate
					{
                        string rawQuery = request.TextQuery;

						IList<string> terms = TextQueryHelper.ParseTerms(rawQuery);
						List<DiagnosticServiceSearchCriteria> criteria = new List<DiagnosticServiceSearchCriteria>();

						// allow matching on name (assume entire query is a name which may contain spaces)
						DiagnosticServiceSearchCriteria nameCriteria = new DiagnosticServiceSearchCriteria();
						nameCriteria.Name.StartsWith(rawQuery);
						criteria.Add(nameCriteria);

						// allow matching of any term against ID
						criteria.AddRange(CollectionUtils.Map<string, DiagnosticServiceSearchCriteria>(terms,
									 delegate(string term)
									 {
										 DiagnosticServiceSearchCriteria c = new DiagnosticServiceSearchCriteria();
										 c.Id.StartsWith(term);
										 return c;
									 }));

						return criteria.ToArray();
					},
					delegate(DiagnosticService ds)
					{
						return assembler.CreateSummary(ds);
					},
					delegate(DiagnosticServiceSearchCriteria[] criteria, int threshold)
					{
						return broker.Count(criteria) <= threshold;
					},
					delegate(DiagnosticServiceSearchCriteria[] criteria, SearchResultPage page)
					{
						return broker.Find(criteria, page);
					});
			return helper.Query(request);
		}
Пример #11
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;
		}
Пример #12
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);
        }
Пример #13
0
		private static void UpdateListItem(OrderListItem data, Order order, IPersistenceContext context)
		{
			var practitionerAssembler = new ExternalPractitionerAssembler();
			var dsAssembler = new DiagnosticServiceAssembler();
			var facilityAssembler = new FacilityAssembler();

			data.OrderRef = order.GetRef();
			data.PlacerNumber = order.PlacerNumber;
			data.AccessionNumber = order.AccessionNumber;
			data.DiagnosticService = dsAssembler.CreateSummary(order.DiagnosticService);
			data.EnteredTime = order.EnteredTime;
			data.SchedulingRequestTime = order.SchedulingRequestTime;
			data.OrderingPractitioner = practitionerAssembler.CreateExternalPractitionerSummary(order.OrderingPractitioner, context);
			data.OrderingFacility = facilityAssembler.CreateFacilitySummary(order.OrderingFacility);
			data.ReasonForStudy = order.ReasonForStudy;
			data.OrderPriority = EnumUtils.GetEnumValueInfo(order.Priority, context);
			data.CancelReason = order.CancelInfo != null && order.CancelInfo.Reason != null ? EnumUtils.GetEnumValueInfo(order.CancelInfo.Reason) : null;
			data.OrderStatus = EnumUtils.GetEnumValueInfo(order.Status, context);
			data.OrderScheduledStartTime = order.ScheduledStartTime;
		}
Пример #14
0
        private static void UpdateListItem(OrderListItem data, Order order, IPersistenceContext context)
        {
            var practitionerAssembler = new ExternalPractitionerAssembler();
            var dsAssembler           = new DiagnosticServiceAssembler();
            var facilityAssembler     = new FacilityAssembler();

            data.OrderRef              = order.GetRef();
            data.PlacerNumber          = order.PlacerNumber;
            data.AccessionNumber       = order.AccessionNumber;
            data.DiagnosticService     = dsAssembler.CreateSummary(order.DiagnosticService);
            data.EnteredTime           = order.EnteredTime;
            data.SchedulingRequestTime = order.SchedulingRequestTime;
            data.OrderingPractitioner  = practitionerAssembler.CreateExternalPractitionerSummary(order.OrderingPractitioner, context);
            data.OrderingFacility      = facilityAssembler.CreateFacilitySummary(order.OrderingFacility);
            data.ReasonForStudy        = order.ReasonForStudy;
            data.OrderPriority         = EnumUtils.GetEnumValueInfo(order.Priority, context);
            data.CancelReason          = order.CancelInfo != null && order.CancelInfo.Reason != null?EnumUtils.GetEnumValueInfo(order.CancelInfo.Reason) : null;

            data.OrderStatus             = EnumUtils.GetEnumValueInfo(order.Status, context);
            data.OrderScheduledStartTime = order.ScheduledStartTime;
        }
Пример #15
0
		public LoadDiagnosticServiceForEditResponse LoadDiagnosticServiceForEdit(LoadDiagnosticServiceForEditRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.DiagnosticServiceRef, "request.DiagnosticServiceRef");

			DiagnosticService item = PersistenceContext.Load<DiagnosticService>(request.DiagnosticServiceRef);

			DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();
			return new LoadDiagnosticServiceForEditResponse(assembler.CreateDetail(item));
		}
Пример #16
0
		public UpdateDiagnosticServiceResponse UpdateDiagnosticService(UpdateDiagnosticServiceRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			Platform.CheckMemberIsSet(request.DiagnosticService, "request.DiagnosticService");
			Platform.CheckMemberIsSet(request.DiagnosticService.DiagnosticServiceRef, "request.DiagnosticService.DiagnosticServiceRef");

			DiagnosticService item = PersistenceContext.Load<DiagnosticService>(request.DiagnosticService.DiagnosticServiceRef);

			DiagnosticServiceAssembler assembler = new DiagnosticServiceAssembler();
			assembler.UpdateDiagnosticService(item, request.DiagnosticService, PersistenceContext);

			PersistenceContext.SynchState();

			return new UpdateDiagnosticServiceResponse(assembler.CreateSummary(item));
		}
Пример #17
0
		public GetPriorsResponse GetPriors(GetPriorsRequest request)
		{
			Platform.CheckForNullReference(request, "request");
			if (request.OrderRef == null && request.ReportRef == null)
				throw new ArgumentException("Either OrderRef or ReportRef must be non-null");

			var priorReports = new HashedSet<Prior>();
			var broker = this.PersistenceContext.GetBroker<IPriorReportBroker>();

			// if an order was supplied, find relevant priors for the order
			if (request.OrderRef != null)
			{
				var order = this.PersistenceContext.Load<Order>(request.OrderRef, EntityLoadFlags.Proxy);
				priorReports.AddAll(broker.GetPriors(order, request.RelevantOnly));
			}
			// if a report was supplied, find relevent priors for the report
			else if (request.ReportRef != null)
			{
				var report = this.PersistenceContext.Load<Report>(request.ReportRef, EntityLoadFlags.Proxy);
				priorReports.AddAll(broker.GetPriors(report, request.RelevantOnly));
			}

			// assemble results
			var procedureTypeAssembler = new ProcedureTypeAssembler();
			var diagnosticServiceAssembler = new DiagnosticServiceAssembler();

			// Note: we use the ProcedureCheckin.CheckOutTime as the PerformedDate
			// because it is the closest to the end of modality procedure step completion time.
			// However, if we change the definition of CheckOutTime in the future, this won't be accurate
			var priorSummaries = CollectionUtils.Map(priorReports,
				(Prior prior) => new PriorProcedureSummary(
							prior.Order.GetRef(),
							prior.Procedure.GetRef(),
				         	prior.Report.GetRef(),
							prior.Order.AccessionNumber,
							diagnosticServiceAssembler.CreateSummary(prior.Order.DiagnosticService),
							procedureTypeAssembler.CreateSummary(prior.ProcedureType),
							prior.Procedure.Portable,
							EnumUtils.GetEnumValueInfo(prior.Procedure.Laterality, PersistenceContext),
							EnumUtils.GetEnumValueInfo(prior.Report.Status, PersistenceContext),
							prior.Procedure.ProcedureCheckIn.CheckOutTime));

			return new GetPriorsResponse(priorSummaries);
		}
Пример #18
0
		public LoadDiagnosticServicePlanResponse LoadDiagnosticServicePlan(LoadDiagnosticServicePlanRequest request)
		{
			var dsBroker = this.PersistenceContext.GetBroker<IDiagnosticServiceBroker>();

			var diagnosticService = dsBroker.Load(request.DiagnosticServiceRef);

			var assembler = new DiagnosticServiceAssembler();
			return new LoadDiagnosticServicePlanResponse(assembler.CreatePlanDetail(diagnosticService, request.IncludeDeactivatedProcedures, PersistenceContext));
		}