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)); }
private List <PriorProcedureSummary> LoadPriors(bool relevantOnly) { GetPriorsResponse response = null; Platform.GetService <IReportingWorkflowService>(service => { var request = new GetPriorsRequest { RelevantOnly = relevantOnly }; // ReportRef will be null when used from Protocolling component if (this.ReportRef != null) { request.ReportRef = this.ReportRef; } else { request.OrderRef = _worklistItem.OrderRef; } response = service.GetPriors(request); }); return(response.Reports); }