/// <summary>
		/// Class constructor.
		/// </summary>
		static WorklistItemProjection()
		{
			// define the base procedure step projection (without the time field)
			_procedureStepBase = new WorklistItemProjection(
				new [] {
					WorklistItemField.ProcedureStep,
					WorklistItemField.ProcedureStepName,
					WorklistItemField.ProcedureStepState,
                    WorklistItemField.Procedure,
                    WorklistItemField.Order,
                    WorklistItemField.Patient,
                    WorklistItemField.PatientProfile,
                    WorklistItemField.Mrn,
                    WorklistItemField.PatientName,
                    WorklistItemField.AccessionNumber,
                    WorklistItemField.Priority,
                    WorklistItemField.PatientClass,
                    WorklistItemField.DiagnosticServiceName,
                    WorklistItemField.ProcedureTypeName,
					WorklistItemField.ProcedurePortable,
					WorklistItemField.ProcedureLaterality,
				});

			// define the base reporting procedure step projection
			_reportingBase = _procedureStepBase.AddFields(
				new [] {
					WorklistItemField.Report,
					WorklistItemField.ReportPartIndex
				});

			// initialize the "search" projections for each type of worklist

			ModalityWorklistSearch = GetDefaultProjection(WorklistItemField.ProcedureScheduledStartTime);

			// need to display the correct time field
			// ProcedureScheduledStartTime seems like a reasonable choice for registration homepage search,
			// as it gives a general sense of when the procedure occurs in time
			RegistrationWorklistSearch = GetDefaultProjection(WorklistItemField.ProcedureScheduledStartTime);

			ReportingWorklistSearch = GetReportingProjection(WorklistItemField.ProcedureStartTime);

			// TODO: this timefield is the value from when this broker was part of ReportingWorklistBroker,
			// but what should it really be?  
			ProtocolWorklistSearch = GetDefaultProjection(WorklistItemField.ProcedureStartTime);

		}
        /// <summary>
        /// Class constructor.
        /// </summary>
        static WorklistItemProjection()
        {
            // define the base procedure step projection (without the time field)
            _procedureStepBase = new WorklistItemProjection(
                new [] {
                WorklistItemField.ProcedureStep,
                WorklistItemField.ProcedureStepName,
                WorklistItemField.ProcedureStepState,
                WorklistItemField.Procedure,
                WorklistItemField.Order,
                WorklistItemField.Patient,
                WorklistItemField.PatientProfile,
                WorklistItemField.Mrn,
                WorklistItemField.PatientName,
                WorklistItemField.AccessionNumber,
                WorklistItemField.Priority,
                WorklistItemField.PatientClass,
                WorklistItemField.DiagnosticServiceName,
                WorklistItemField.ProcedureTypeName,
                WorklistItemField.ProcedurePortable,
                WorklistItemField.ProcedureLaterality,
            });

            // define the base reporting procedure step projection
            _reportingBase = _procedureStepBase.AddFields(
                new [] {
                WorklistItemField.Report,
                WorklistItemField.ReportPartIndex
            });

            // initialize the "search" projections for each type of worklist

            ModalityWorklistSearch = GetDefaultProjection(WorklistItemField.ProcedureScheduledStartTime);

            // need to display the correct time field
            // ProcedureScheduledStartTime seems like a reasonable choice for registration homepage search,
            // as it gives a general sense of when the procedure occurs in time
            RegistrationWorklistSearch = GetDefaultProjection(WorklistItemField.ProcedureScheduledStartTime);

            ReportingWorklistSearch = GetReportingProjection(WorklistItemField.ProcedureStartTime);

            // TODO: this timefield is the value from when this broker was part of ReportingWorklistBroker,
            // but what should it really be?
            ProtocolWorklistSearch = GetDefaultProjection(WorklistItemField.ProcedureStartTime);
        }
 /// <summary>
 /// Gets the reporting worklist item projection using the specified time field.
 /// </summary>
 /// <param name="timeField"></param>
 /// <returns></returns>
 public static WorklistItemProjection GetReportingProjection(WorklistItemField timeField)
 {
     return(_reportingBase.AddFields(new[] { timeField }));
 }
 /// <summary>
 /// Gets the default worklist item projection using the specified time field.
 /// </summary>
 /// <param name="timeField"></param>
 /// <returns></returns>
 public static WorklistItemProjection GetDefaultProjection(WorklistItemField timeField)
 {
     return(_procedureStepBase.AddFields(new[] { timeField }));
 }