private void ValidateWorklistCount() { Async.CancelPending(this); if (_editorMode == WorklistEditorMode.Edit && !this.IsPersonalGroupSelectionEnabled) { return; } _hasWorklistCountError = false; _worklistCountErrorMessage = null; Async.Request(this, (IWorklistAdminService service) => { var request = new GetWorklistEditFormDataRequest { GetWorklistEditValidationRequest = new GetWorklistEditValidationRequest(!_adminMode, _worklistDetail.OwnerGroup) }; return(service.GetWorklistEditFormData(request)); }, response => { _hasWorklistCountError = response.GetWorklistEditValidationResponse.HasError; _worklistCountErrorMessage = response.GetWorklistEditValidationResponse.ErrorMessage; if (_hasWorklistCountError) { ShowValidation(true); } }); }
public GetWorklistEditFormDataResponse GetWorklistEditFormData(GetWorklistEditFormDataRequest request) { var response = new GetWorklistEditFormDataResponse(); if (request.GetWorklistEditFormChoicesRequest != null) { response.GetWorklistEditFormChoicesResponse = GetWorklistEditFormChoices(request.GetWorklistEditFormChoicesRequest); } if (request.GetWorklistEditValidationRequest != null) { response.GetWorklistEditValidationResponse = GetWorklistEditValidation(request.GetWorklistEditValidationRequest); } return(response); }
public override void Start() { Platform.GetService( delegate(IWorklistAdminService service) { var request = new GetWorklistEditFormDataRequest { GetWorklistEditFormChoicesRequest = new GetWorklistEditFormChoicesRequest(false) }; var response = service.GetWorklistEditFormData(request); _worklistClassChoices.Add(_filterNone); response.GetWorklistEditFormChoicesResponse.WorklistClasses.Sort( (x, y) => x.CategoryName.Equals(y.CategoryName) ? x.DisplayName.CompareTo(y.DisplayName) : x.CategoryName.CompareTo(y.CategoryName)); _worklistClassChoices.AddRange(response.GetWorklistEditFormChoicesResponse.WorklistClasses); }); base.Start(); _worklistClass = _filterNone; }
public override void Start() { Platform.GetService( delegate(IWorklistAdminService service) { var request = new GetWorklistEditFormDataRequest { GetWorklistEditFormChoicesRequest = new GetWorklistEditFormChoicesRequest(!_adminMode) }; _formDataResponse = service.GetWorklistEditFormData(request).GetWorklistEditFormChoicesResponse; // initialize _worklistDetail depending on add vs edit vs duplicate mode var procedureTypeGroups = new List <ProcedureTypeGroupSummary>(); if (_mode == WorklistEditorMode.Add) { _worklistDetail = new WorklistAdminDetail { FilterByWorkingFacility = true, // establish initial class name WorklistClass = CollectionUtils.SelectFirst(_formDataResponse.WorklistClasses, wc => wc.ClassName == _initialClassName) }; } else { // load the existing worklist var response = service.LoadWorklistForEdit(new LoadWorklistForEditRequest(_worklistRef)); _worklistDetail = response.Detail; _worklistRef = response.Detail.EntityRef; // determine initial set of proc type groups, since worklist class already known var groupsResponse = service.ListProcedureTypeGroups(new ListProcedureTypeGroupsRequest(_worklistDetail.WorklistClass.ProcedureTypeGroupClassName)); procedureTypeGroups = groupsResponse.ProcedureTypeGroups; } // limit class choices if filter specified if (_worklistClassChoices != null) { _formDataResponse.WorklistClasses = CollectionUtils.Select(_formDataResponse.WorklistClasses, wc => _worklistClassChoices.Contains(wc.ClassName)); } // sort worklist classes so they appear alphabetically in editor _formDataResponse.WorklistClasses = CollectionUtils.Sort(_formDataResponse.WorklistClasses, (x, y) => x.DisplayName.CompareTo(y.DisplayName)); // determine which main page to show (multi or single) if (_mode == WorklistEditorMode.Add && _adminMode) { _detailComponent = new WorklistMultiDetailEditorComponent(_formDataResponse.WorklistClasses, _formDataResponse.OwnerGroupChoices); } else { _detailComponent = new WorklistDetailEditorComponent( _worklistDetail, _formDataResponse.WorklistClasses, _formDataResponse.OwnerGroupChoices, _mode, _adminMode, false); } _detailComponent.ProcedureTypeGroupClassChanged += ProcedureTypeGroupClassChangedEventHandler; _detailComponent.WorklistClassChanged += OnWorklistClassChanged; _detailComponent.WorklistCategoryChanged += OnWorklistCategoryChanged; // create all other pages _filterComponent = new WorklistFilterEditorComponent(_worklistDetail, _formDataResponse.FacilityChoices, _formDataResponse.OrderPriorityChoices, _formDataResponse.PatientClassChoices); _procedureTypeFilterComponent = new SelectorEditorComponent <ProcedureTypeSummary, ProcedureTypeTable>( _formDataResponse.ProcedureTypeChoices, _worklistDetail.ProcedureTypes, s => s.ProcedureTypeRef); _procedureTypeGroupFilterComponent = new SelectorEditorComponent <ProcedureTypeGroupSummary, ProcedureTypeGroupTable>( procedureTypeGroups, _worklistDetail.ProcedureTypeGroups, s => s.ProcedureTypeGroupRef); _departmentFilterComponent = new SelectorEditorComponent <DepartmentSummary, DepartmentTable>( _formDataResponse.DepartmentChoices, _worklistDetail.Departments, s => s.DepartmentRef); _locationFilterComponent = new SelectorEditorComponent <LocationSummary, LocationTable>( _formDataResponse.PatientLocationChoices, _worklistDetail.PatientLocations, s => s.LocationRef); var maxSpanDays = _formDataResponse.CurrentServerConfigurationRequiresTimeFilter ? _formDataResponse.CurrentServerConfigurationMaxSpanDays : 0; _timeWindowComponent = new WorklistTimeWindowEditorComponent( _worklistDetail, _mode == WorklistEditorMode.Add && _formDataResponse.CurrentServerConfigurationRequiresTimeFilter, maxSpanDays); _interpretedByFilterComponent = new StaffSelectorEditorComponent( _formDataResponse.StaffChoices, _worklistDetail.InterpretedByStaff.Staff, _worklistDetail.InterpretedByStaff.IncludeCurrentUser); _transcribedByFilterComponent = new StaffSelectorEditorComponent( _formDataResponse.StaffChoices, _worklistDetail.TranscribedByStaff.Staff, _worklistDetail.TranscribedByStaff.IncludeCurrentUser); _verifiedByFilterComponent = new StaffSelectorEditorComponent( _formDataResponse.StaffChoices, _worklistDetail.VerifiedByStaff.Staff, _worklistDetail.VerifiedByStaff.IncludeCurrentUser); _supervisedByFilterComponent = new StaffSelectorEditorComponent( _formDataResponse.StaffChoices, _worklistDetail.SupervisedByStaff.Staff, _worklistDetail.SupervisedByStaff.IncludeCurrentUser); if (ShowSubscriptionPages) { _staffSubscribersComponent = new SelectorEditorComponent <StaffSummary, StaffSelectorTable>( _formDataResponse.StaffChoices, _worklistDetail.StaffSubscribers, s => s.StaffRef, SubscriptionPagesReadOnly); _groupSubscribersComponent = new SelectorEditorComponent <StaffGroupSummary, StaffGroupTable>( _formDataResponse.GroupSubscriberChoices, _worklistDetail.GroupSubscribers, s => s.StaffGroupRef, SubscriptionPagesReadOnly); } }); // add pages this.Pages.Add(new NavigatorPage("NodeWorklist", _detailComponent)); this.Pages.Add(new NavigatorPage("NodeWorklist/NodeFilters", _filterComponent)); this.Pages.Add(new NavigatorPage("NodeWorklist/NodeFilters/FilterProcedureType", _procedureTypeFilterComponent)); this.Pages.Add(new NavigatorPage("NodeWorklist/NodeFilters/FilterProcedureTypeGroup", _procedureTypeGroupFilterComponent)); if (new WorkflowConfigurationReader().EnableVisitWorkflow) { this.Pages.Add(new NavigatorPage("NodeWorklist/NodeFilters/FilterPatientLocation", _locationFilterComponent)); } this.Pages.Add(_departmentComponentPage = new NavigatorPage("NodeWorklist/NodeFilters/FilterDepartment", _departmentFilterComponent)); _procedureTypeFilterComponent.ItemsAdded += OnProcedureTypeAdded; _procedureTypeGroupFilterComponent.ItemsAdded += OnProcedureTypeGroupAdded; _interpretedByFilterComponentPage = new NavigatorPage("NodeWorklist/NodeFilters/NodeStaff/FilterInterpretedBy", _interpretedByFilterComponent); if (WorklistEditorComponentSettings.Default.ShowTranscribedByPage) { _transcribedByFilterComponentPage = new NavigatorPage("NodeWorklist/NodeFilters/NodeStaff/FilterTranscribedBy", _transcribedByFilterComponent); } _verifiedByFilterComponentPage = new NavigatorPage("NodeWorklist/NodeFilters/NodeStaff/FilterVerifiedBy", _verifiedByFilterComponent); _supervisedByFilterComponentPage = new NavigatorPage("NodeWorklist/NodeFilters/NodeStaff/FilterSupervisedBy", _supervisedByFilterComponent); _timeWindowComponentPage = new NavigatorPage("NodeWorklist/FilterTimeWindow", _timeWindowComponent); ShowWorklistCategoryDependantPages(); if (ShowSubscriptionPages) { this.Pages.Add(new NavigatorPage("NodeWorklist/NodeSubscribers/NodeGroupSubscribers", _groupSubscribersComponent)); this.Pages.Add(new NavigatorPage("NodeWorklist/NodeSubscribers/NodeStaffSubscribers", _staffSubscribersComponent)); } this.Pages.Add(_summaryComponentPage = new NavigatorPage("NodeWorklist/NodeWorklistSummary", _summaryComponent = new WorklistSummaryComponent(_worklistDetail, _adminMode))); this.CurrentPageChanged += WorklistEditorComponent_CurrentPageChanged; this.ValidationStrategy = new AllComponentsValidationStrategy(); base.Start(); // Modify EntityRef and add the word "copy" to the worklist name. // This is done after the Start() call, so changing the worklist name will trigger a component modify changed. if (_mode == WorklistEditorMode.Duplicate) { _worklistDetail.EntityRef = null; ((WorklistDetailEditorComponent)_detailComponent).Name = _worklistDetail.Name + " copy"; } }