예제 #1
0
        public GetLinkableProtocolsResponse GetLinkableProtocols(GetLinkableProtocolsRequest request)
        {
            var step = this.PersistenceContext.Load <ProtocolAssignmentStep>(request.ProtocolAssignmentStepRef, EntityLoadFlags.Proxy);

            var broker         = this.PersistenceContext.GetBroker <IProtocolWorklistItemBroker>();
            var candidateSteps = broker.GetLinkedProtocolCandidates(step, this.CurrentUserStaff);

            // if any candidate steps were found, need to convert them to worklist items
            IList <ReportingWorklistItem> worklistItems;

            if (candidateSteps.Count > 0)
            {
                // because CLR does not support List co-variance, need to map to a list of the more general type (this seems silly!)
                var protocolSteps = CollectionUtils.Map <ProtocolAssignmentStep, ProtocolProcedureStep>(
                    candidateSteps, s => s);

                worklistItems = broker.GetWorklistItems(protocolSteps, WorklistItemField.ProcedureStepCreationTime);
            }
            else
            {
                worklistItems = new List <ReportingWorklistItem>();
            }

            var assembler = new ReportingWorkflowAssembler();

            return(new GetLinkableProtocolsResponse(
                       CollectionUtils.Map <ReportingWorklistItem, ReportingWorklistItemSummary>(
                           worklistItems,
                           item => assembler.CreateWorklistItemSummary(item, this.PersistenceContext))));
        }
        public QueryWorklistResponse <ReportingWorklistItemSummary> QueryWorklist(QueryWorklistRequest request)
        {
            var assembler = new ReportingWorkflowAssembler();

            return(QueryWorklistHelper <ReportingWorklistItem, ReportingWorklistItemSummary>(
                       request,
                       item => assembler.CreateWorklistItemSummary(item, this.PersistenceContext)));
        }
        public TextQueryResponse <ReportingWorklistItemSummary> SearchWorklists(WorklistItemTextQueryRequest request)
        {
            var assembler = new ReportingWorkflowAssembler();
            var broker    = this.PersistenceContext.GetBroker <IReportingWorklistItemBroker>();

            return(SearchHelper <ReportingWorklistItem, ReportingWorklistItemSummary>(
                       request,
                       broker,
                       WorklistItemProjection.ReportingWorklistSearch,
                       item => assembler.CreateWorklistItemSummary(item, this.PersistenceContext)));
        }