diff --git a/SaPatMgrCore/Core/App/SpmInternals.cs b/SaPatMgrCore/Core/App/SpmInternals.cs new file mode 100644 index 0000000..36459cf --- /dev/null +++ b/SaPatMgrCore/Core/App/SpmInternals.cs @@ -0,0 +1,129 @@ +using Sarand.Core.Base; +using Sarand.Core.CodeTypes; +using Sarand.Core.Interfaces; +using Sarand.Core.ItemDocs; +using Sarand.Core.ItemOptions; +using Sarand.Core.Security; +using Sarand.Core.UpdateLog; +using Sarand.PatientMgr.Core.Mgr; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Sarand.PatientMgr.Core.App +{ + //======================================================================= + public class SpmInternals : SacsDisposable + { + //------------------------------------------------------------------- + // Data members. + private readonly SpmSystem system = SpmGlobals.System; + + // Managers. + private SpmAdmissionMgr admissionMgr = null; + private SpmDepartmentMgr departmentMgr = null; + private SpmInstitutionMgr institutionMgr = null; + + // Consoles. + private SaSecurityConsole securityConsole; + private SaCodeTypeConsole codeTypeConsole; + private SaUpdateLogConsole updateLogConsole; + private SaItemOptionConsole itemOptionConsole; + + //------------------------------------------------------------------- + // Construction. + public SpmInternals(SpmUserContext userContext) + { + UserContext = userContext; + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (admissionMgr != null) admissionMgr.Dispose(); + if (departmentMgr != null) departmentMgr.Dispose(); + } + } + //------------------------------------------------------------------- + // Properties. + + + //------------------------------------------------------------------- + // Session. + public SpmUserContext UserContext { get; } + public SpmSessionContext SessionContext { get { return UserContext.SessionContext; } } + public SpmSecurityProfile SecurityProfile { get { return UserContext.SecurityProfile; } } + + + //------------------------------------------------------------------- + // Managers. + public SpmAdmissionMgr AdmissionMgr { + get + { + if (admissionMgr == null) + admissionMgr = system.CreateAdmissionMgr(UserContext); + return admissionMgr; + } + } + public SpmDepartmentMgr DepartmentMgr + { + get + { + if (departmentMgr == null) + departmentMgr = SpmGlobals.System.CreateDepartmentMgr(UserContext); + return departmentMgr; + } + } + public SpmInstitutionMgr InstitutionMgr + { + get + { + if (institutionMgr == null) + institutionMgr = system.CreateInstitutionMgr(UserContext); + return institutionMgr; + } + } + + //------------------------------------------------------------------- + // Consoles. + public SaSecurityConsole SecurityConsole + { + get + { + if (securityConsole == null) + securityConsole = SpmGlobals.GetSecurityConsole(UserContext); + return securityConsole; + } + } + public SaCodeTypeConsole CodeTypeConsole + { + get + { + if (codeTypeConsole == null) + codeTypeConsole = SpmGlobals.GetCodeTypeConsole(UserContext); + return codeTypeConsole; + } + } + public SaUpdateLogConsole UpdateLogConsole + { + get + { + if (updateLogConsole == null) + updateLogConsole = SpmGlobals.GetUpdateLogConsole(UserContext); + return updateLogConsole; + } + } + public SaItemOptionConsole ItemOptionConsole + { + get + { + if (itemOptionConsole == null) + itemOptionConsole = SpmGlobals.GetItemOptionConsole(UserContext); + return itemOptionConsole; + } + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrCore/Core/Bus/SpmAdmission.cs b/SaPatMgrCore/Core/Bus/SpmAdmission.cs index 52cf73d..ea3f908 100644 --- a/SaPatMgrCore/Core/Bus/SpmAdmission.cs +++ b/SaPatMgrCore/Core/Bus/SpmAdmission.cs @@ -79,7 +79,6 @@ namespace Sarand.PatientMgr.Core.Bus CancelReBookBy, CancelReBookDue, CancelCount, - Notes, // Facility. Facility_Type, Facility_TypeDesc, @@ -136,7 +135,7 @@ namespace Sarand.PatientMgr.Core.Bus Role_Anaesthetist_Operating_Code, // Common properties. - //Notes, + Notes, Flags, Status, Status_Ind, diff --git a/SaPatMgrCore/Core/Bus/SpmFacilityTemplate.cs b/SaPatMgrCore/Core/Bus/SpmFacilityTemplate.cs index d3dfbba..33a9ab6 100644 --- a/SaPatMgrCore/Core/Bus/SpmFacilityTemplate.cs +++ b/SaPatMgrCore/Core/Bus/SpmFacilityTemplate.cs @@ -18,8 +18,10 @@ namespace Sarand.PatientMgr.Core.Bus { Pos, Id, + Category, Type, + Type_Desc, Sort, Group, Name, diff --git a/SaPatMgrCore/Core/Bus/SpmTemplateData.cs b/SaPatMgrCore/Core/Bus/SpmTemplateData.cs index 1ddb426..74069d2 100644 --- a/SaPatMgrCore/Core/Bus/SpmTemplateData.cs +++ b/SaPatMgrCore/Core/Bus/SpmTemplateData.cs @@ -16,6 +16,12 @@ namespace Sarand.PatientMgr.Core.Bus // Columns. public enum Column { + Pos, + /*Id, + FacilityTemplateId, + Type, + Seq,*/ + // Common properties. Notes, Flags, diff --git a/SaPatMgrWinForms/SaPatMgrWinForms.csproj b/SaPatMgrWinForms/SaPatMgrWinForms.csproj index b4ada52..ec38b9d 100644 --- a/SaPatMgrWinForms/SaPatMgrWinForms.csproj +++ b/SaPatMgrWinForms/SaPatMgrWinForms.csproj @@ -33,6 +33,8 @@ + + @@ -43,6 +45,204 @@ + + Component + + + SpmItemListView_Procedure.cs + + + Component + + + SpmItemListView_TemplateData.cs + + + Component + + + SpmItemListView_Operation.cs + + + Component + + + SpmItemListView_Patient.cs + + + Component + + + SpmItemListView_Department.cs + + + Component + + + SpmItemListView_Institution.cs + + + Component + + + SpmItemListView_Employee.cs + + + Component + + + SpmItemListView_EmployeeRole.cs + + + Component + + + SpmItemListView_Facility.cs + + + Component + + + SpmItemListView_FacilitySession.cs + + + Component + + + SpmItemListView_FacilityTemplate.cs + + + Component + + + SpmItemListView_AdmissionData.cs + + + Component + + + SpmItemListView_AdmissionAction.cs + + + Component + + + SpmItemListView_AdmissionRole.cs + + + Component + + + SpmItemListView_Admission.cs + + + Component + + + SpmItemListView.cs + + + UserControl + + + SpmItemListFilter_Patient.cs + + + UserControl + + + SpmItemListFilter_Procedure.cs + + + UserControl + + + SpmItemListFilter_TemplateData.cs + + + UserControl + + + SpmItemListFilter_Operation.cs + + + UserControl + + + SpmItemListFilter_Institution.cs + + + UserControl + + + SpmItemListFilter_FacilityTemplate.cs + + + UserControl + + + SpmItemListFilter_Facility.cs + + + UserControl + + + SpmItemListFilter_FacilitySession.cs + + + UserControl + + + SpmItemListFilter_EmployeeRole.cs + + + UserControl + + + SpmItemListFilter_Employee.cs + + + UserControl + + + SpmItemListFilter_Department.cs + + + UserControl + + + SpmItemListFilter_AdmissionRole.cs + + + UserControl + + + SpmItemListFilter_AdmissionData.cs + + + UserControl + + + SpmItemListFilter_AdmissionAction.cs + + + UserControl + + + SpmItemListFilter_Admission.cs + + + UserControl + + + SpmItemListFilter.cs + + + UserControl + + + SpmPanel.cs + @@ -62,9 +262,7 @@ - - - + @@ -72,5 +270,52 @@ + + + SpmItemListFilter_Patient.cs + + + SpmItemListFilter_Procedure.cs + + + SpmItemListFilter_TemplateData.cs + + + SpmItemListFilter_Operation.cs + + + SpmItemListFilter_Institution.cs + + + SpmItemListFilter_FacilityTemplate.cs + + + SpmItemListFilter_Facility.cs + + + SpmItemListFilter_FacilitySession.cs + + + SpmItemListFilter_EmployeeRole.cs + + + SpmItemListFilter_Employee.cs + + + SpmItemListFilter_Department.cs + + + SpmItemListFilter_AdmissionRole.cs + + + SpmItemListFilter_AdmissionData.cs + + + SpmItemListFilter_AdmissionAction.cs + + + SpmItemListFilter_Admission.cs + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Base/SpmPanel.Designer.cs b/SaPatMgrWinForms/Win/Forms/Base/SpmPanel.Designer.cs new file mode 100644 index 0000000..c5168dd --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Base/SpmPanel.Designer.cs @@ -0,0 +1,24 @@ +namespace Sarand.PatientMgr.Win.Forms.Base +{ + partial class SpmPanel + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Base/SpmPanel.cs b/SaPatMgrWinForms/Win/Forms/Base/SpmPanel.cs new file mode 100644 index 0000000..25680cc --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Base/SpmPanel.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.Win.Forms.Controls; +using Sarand.PatientMgr.Core.App; +using Sarand.PatientMgr.Win.Forms.App; +using Sarand.PatientMgr.Core.Mgr; +using Sarand.Core.Security; +using Sarand.Core.CodeTypes; +using Sarand.Core.ItemOptions; +using Sarand.Core.UpdateLog; + +namespace Sarand.PatientMgr.Win.Forms.Base +{ + //======================================================================= + public partial class SpmPanel : SacsChildPanel + { + //------------------------------------------------------------------- + // Configuration. + public new class Config : SacsChildPanel.Config + { + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly SpmInternals internals; + + //------------------------------------------------------------------- + // Construction. + public SpmPanel() : this(new Config()) { } + public SpmPanel(Config config) : base() + { + SetConfig(config); + InitializeComponent(); + internals = new SpmInternals(SessionProfile != null ? SessionProfile.UserContext : null); + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + if (internals != null) internals.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + + // Session. + protected SpmSessionProfile_Win SessionProfile { get; } = SpmGlobals_Win.SessionProfile; + protected SpmUserContext UserContext { get { return (SessionProfile != null ? SessionProfile.UserContext : null); } } + protected SpmSessionContext SessionContext { get { return (UserContext != null ? UserContext.SessionContext : null); } } + + // Security. + protected SpmSecurityProfile SecurityProfile { get { return internals.SecurityProfile; } } + + + // Managers. + protected SpmDepartmentMgr DepartmentMgr { get { return internals.DepartmentMgr; } } + protected SpmInstitutionMgr InstitutionMgr { get { return internals.InstitutionMgr; } } + + // Consoles. + protected SaSecurityConsole SecurityConsole { get { return internals.SecurityConsole; } } + protected SaCodeTypeConsole CodeTypeConsole { get { return internals.CodeTypeConsole; } } + protected SaUpdateLogConsole UpdateLogConsole { get { return internals.UpdateLogConsole; } } + protected SaItemOptionConsole ItemOptionConsole { get { return internals.ItemOptionConsole; } } + + //------------------------------------------------------------------- + // Configure. + protected void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView.Designer.cs new file mode 100644 index 0000000..30b971c --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView.cs new file mode 100644 index 0000000..aa47625 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView.cs @@ -0,0 +1,102 @@ +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Sarand.PatientMgr.Core.App; +using Sarand.PatientMgr.Win.Forms.App; +using Sarand.PatientMgr.Core.Mgr; +using Sarand.Core.Security; +using Sarand.Core.CodeTypes; +using Sarand.Core.UpdateLog; +using Sarand.Core.ItemOptions; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView : SacsListView + { + //------------------------------------------------------------------- + // Configuration. + public class Config + { + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly SpmInternals internals; + + //------------------------------------------------------------------- + // Construction. + private SpmItemListView() : this(new Config()) { } + public SpmItemListView(Config config) + { + this.config = config; + InitializeComponent(); + internals = new SpmInternals(SessionProfile != null ? SessionProfile.UserContext : null); + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + if (internals != null) internals.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + /// Flag to indicate initial population + [Browsable(false), ReadOnly(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public virtual bool InitialPopulation { get; protected set; } = true; + [Browsable(false), ReadOnly(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public virtual int DisplayRecordsBatchSize { get; } = 32; + /// Total number of items to be displayed (not items already in the list). + [Browsable(false), ReadOnly(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public virtual int ItemTotal { get; protected set; } = 0; + + + // Session. + protected SpmSessionProfile_Win SessionProfile { get; } = SpmGlobals_Win.SessionProfile; + protected SpmUserContext UserContext { get { return (SessionProfile != null ? SessionProfile.UserContext : null); } } + protected SpmSessionContext SessionContext { get { return (UserContext != null ? UserContext.SessionContext : null); } } + + // Security. + protected SpmSecurityProfile SecurityProfile { get { return internals.SecurityProfile; } } + + // Managers. + protected SpmAdmissionMgr AdmissionMgr { get { return internals.AdmissionMgr; } } + protected SpmDepartmentMgr DepartmentMgr { get { return internals.DepartmentMgr; } } + protected SpmInstitutionMgr InstitutionMgr { get { return internals.InstitutionMgr; } } + + // Consoles. + protected SaSecurityConsole SecurityConsole { get { return internals.SecurityConsole; } } + protected SaCodeTypeConsole CodeTypeConsole { get { return internals.CodeTypeConsole; } } + protected SaUpdateLogConsole UpdateLogConsole { get { return internals.UpdateLogConsole; } } + protected SaItemOptionConsole ItemOptionConsole { get { return internals.ItemOptionConsole; } } + + //------------------------------------------------------------------- + // Configure. + protected void SetConfig(Config config) + { + this.config = config; + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Admission.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Admission.Designer.cs new file mode 100644 index 0000000..22bfc31 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Admission.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_Admission + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Admission.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Admission.cs new file mode 100644 index 0000000..d3f1830 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Admission.cs @@ -0,0 +1,400 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_Admission : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmAdmission.Params prmAdmission; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_Admission() : this(new Config()) { } + public SpmItemListView_Admission(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedAdmissionId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmAdmission SelectedAdmission + { + get + { + if (SelectedItemCount == 1) + return AdmissionMgr.GetAdmissionById(SelectedAdmissionId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitAdmissionList(true); + } + + + //------------------------------------------------------------------- + private void InitAdmissionList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.FacilityId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TemplateId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Seq)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.AdmissionFromDate)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.AdmissionFromTime)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.AdmissionFromDateTime)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.AdmissionToDate)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.AdmissionToTime)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.AdmissionToDateTime)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Type)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Type_Desc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.DecisionToReferOn)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.ReferredOn)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.BreechOn)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.DecisionToAdmitOn)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Patient)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.PatientId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.PatientNo)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.PatientName)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.PatientSurname)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.PatientForename)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.BirthAge)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.BirthOn)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Age)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.AgeOn)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.FacilityIdWard)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Ward)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.ProcedureId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.SpecialityCode)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Procedure)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.ComplexityCode)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.ProcedureIndication)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.DurationExp)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.DurationAct)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Anaesthetic)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Position)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.SpecialEquipment)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.AttendanceStatusDesc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.ComfortScore)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TimeCalled)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TimeArrived)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TimeAnaesStart)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TimeProcStart)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TimeProcEnd)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TimeInRecovery)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TimeInformDest)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.TimeLeave)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.CancelType)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.CancelTypeDesc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.CancelDate)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.CancelElapsed)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.CancelReBookBy)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.CancelReBookDue)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.CancelCount)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Facility_Type)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Facility_TypeDesc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Facility_Name)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Facility_Desc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Facility_TemplateMapType)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Facility_ApplicFrom)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Facility_ApplicTo)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Facility_Notes)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_WeekOfMonth)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_DayOfWeek)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_ConsultantId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_ConsultantCode)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_SpecialityCode)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_StartAt)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_FinishAt)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_CategoryDesc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_TypeDesc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_Name)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_Desc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_Group)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_ApplicFrom)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_ApplicTo)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Template_Notes)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_TemplateId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_ConsultantId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_ConsultantCode)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_SpecialityCode)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_StartAt)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_FinishAt)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_Name)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_Desc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_Flags)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Session_Notes)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.SessionDfn_Summary)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.SessionDfn_Name)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Patient_PatientNo)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Patient_Surname)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Patient_Forename)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Patient_BirthOn)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Patient_Age)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Patient_AgeOn)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Role_Consultant_Operating_Code)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Role_Consultant_Referring_Code)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Role_Surgeon_Operating_Code)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Role_Anaesthetist_Operating_Code)); + +#if DEBUG + columnsDisplay.Add(AdmissionMgr.GetAdmissionColumnDfn(SpmAdmission.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmAdmission.Column.FacilityId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmAdmission.Params prmAdmission) + { + if (prmAdmission == null) return false; + return true; + } + public void RefreshAdmissions(SpmAdmission.Params prmAdmission) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmAdmission = prmAdmission; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmAdmission)) return; + // Query data. + ItemTotal = (int)AdmissionMgr.GetAdmissionCount(prmAdmission); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData Admission count: " + ItemTotal); + dbResultSet = AdmissionMgr.ExecuteAdmissionQuery(columnsQuery, prmAdmission); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshAdmission(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmAdmission.Params prm = new SpmAdmission.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = AdmissionMgr.ExecuteAdmissionQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmAdmission.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = AdmissionMgr.GetAdmissionDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionAction.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionAction.Designer.cs new file mode 100644 index 0000000..d95fc33 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionAction.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_AdmissionAction + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionAction.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionAction.cs new file mode 100644 index 0000000..13260d0 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionAction.cs @@ -0,0 +1,315 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_AdmissionAction : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmAdmissionAction.Params prmAdmissionAction; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_AdmissionAction() : this(new Config()) { } + public SpmItemListView_AdmissionAction(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedAdmissionActionId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmAdmissionAction SelectedAdmissionAction + { + get + { + if (SelectedItemCount == 1) + return AdmissionMgr.GetAdmissionActionById(SelectedAdmissionActionId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitAdmissionActionList(true); + } + + + //------------------------------------------------------------------- + private void InitAdmissionActionList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.Type)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.Type_Desc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.Admission_FacilityId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.Admission_TemplateId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionFrom)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionFromDateTime)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionFromDate)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionFromTime)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionTo)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionToDate)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionToTime)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionType)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionTypeDesc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionNotes)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionFlags)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionStatus)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.AdmissionStatusInd)); + +#if DEBUG + columnsDisplay.Add(AdmissionMgr.GetAdmissionActionColumnDfn(SpmAdmissionAction.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmAdmissionAction.Column.AdmissionId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmAdmissionAction.Params prmAdmissionAction) + { + if (prmAdmissionAction == null) return false; + return true; + } + public void RefreshAdmissionActions(SpmAdmissionAction.Params prmAdmissionAction) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmAdmissionAction = prmAdmissionAction; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmAdmissionAction)) return; + // Query data. + ItemTotal = (int)AdmissionMgr.GetAdmissionActionCount(prmAdmissionAction); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData AdmissionAction count: " + ItemTotal); + dbResultSet = AdmissionMgr.ExecuteAdmissionActionQuery(columnsQuery, prmAdmissionAction); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshAdmissionAction(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmAdmissionAction.Params prm = new SpmAdmissionAction.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = AdmissionMgr.ExecuteAdmissionActionQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmAdmissionAction.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = AdmissionMgr.GetAdmissionActionDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionData.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionData.Designer.cs new file mode 100644 index 0000000..6852f61 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionData.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_AdmissionData + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionData.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionData.cs new file mode 100644 index 0000000..c6e0d7c --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionData.cs @@ -0,0 +1,301 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_AdmissionData : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmAdmissionData.Params prmAdmissionData; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_AdmissionData() : this(new Config()) { } + public SpmItemListView_AdmissionData(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedAdmissionDataId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmAdmissionData SelectedAdmissionData + { + get + { + if (SelectedItemCount == 1) + return AdmissionMgr.GetAdmissionDataById(SelectedAdmissionDataId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitAdmissionDataList(true); + } + + + //------------------------------------------------------------------- + private void InitAdmissionDataList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(AdmissionMgr.GetAdmissionDataColumnDfn(SpmAdmissionData.Column.AdmissionId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionDataColumnDfn(SpmAdmissionData.Column.Type)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionDataColumnDfn(SpmAdmissionData.Column.Type_Desc)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionDataColumnDfn(SpmAdmissionData.Column.AdmissionData)); + +#if DEBUG + columnsDisplay.Add(AdmissionMgr.GetAdmissionDataColumnDfn(SpmAdmissionData.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmAdmissionData.Column.AdmissionId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmAdmissionData.Params prmAdmissionData) + { + if (prmAdmissionData == null) return false; + return true; + } + public void RefreshAdmissionDatas(SpmAdmissionData.Params prmAdmissionData) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmAdmissionData = prmAdmissionData; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmAdmissionData)) return; + // Query data. + ItemTotal = (int)AdmissionMgr.GetAdmissionDataCount(prmAdmissionData); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData AdmissionData count: " + ItemTotal); + dbResultSet = AdmissionMgr.ExecuteAdmissionDataQuery(columnsQuery, prmAdmissionData); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshAdmissionData(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmAdmissionData.Params prm = new SpmAdmissionData.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = AdmissionMgr.ExecuteAdmissionDataQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmAdmissionData.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = AdmissionMgr.GetAdmissionDataDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionRole.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionRole.Designer.cs new file mode 100644 index 0000000..fe7672b --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionRole.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_AdmissionRole + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionRole.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionRole.cs new file mode 100644 index 0000000..3d936e6 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_AdmissionRole.cs @@ -0,0 +1,303 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_AdmissionRole : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmAdmissionRole.Params prmAdmissionRole; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_AdmissionRole() : this(new Config()) { } + public SpmItemListView_AdmissionRole(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedAdmissionRoleId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmAdmissionRole SelectedAdmissionRole + { + get + { + if (SelectedItemCount == 1) + return AdmissionMgr.GetAdmissionRoleById(SelectedAdmissionRoleId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitAdmissionRoleList(true); + } + + + //------------------------------------------------------------------- + private void InitAdmissionRoleList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(AdmissionMgr.GetAdmissionRoleColumnDfn(SpmAdmissionRole.Column.AdmissionId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionRoleColumnDfn(SpmAdmissionRole.Column.Role)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionRoleColumnDfn(SpmAdmissionRole.Column.Category)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionRoleColumnDfn(SpmAdmissionRole.Column.Seq)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionRoleColumnDfn(SpmAdmissionRole.Column.EmployeeRoleId)); + columnsDisplay.Add(AdmissionMgr.GetAdmissionRoleColumnDfn(SpmAdmissionRole.Column.EmployeeCode)); + +#if DEBUG + columnsDisplay.Add(AdmissionMgr.GetAdmissionRoleColumnDfn(SpmAdmissionRole.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmAdmissionRole.Column.AdmissionId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmAdmissionRole.Params prmAdmissionRole) + { + if (prmAdmissionRole == null) return false; + return true; + } + public void RefreshAdmissionRoles(SpmAdmissionRole.Params prmAdmissionRole) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmAdmissionRole = prmAdmissionRole; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmAdmissionRole)) return; + // Query data. + ItemTotal = (int)AdmissionMgr.GetAdmissionRoleCount(prmAdmissionRole); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData AdmissionRole count: " + ItemTotal); + dbResultSet = AdmissionMgr.ExecuteAdmissionRoleQuery(columnsQuery, prmAdmissionRole); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshAdmissionRole(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmAdmissionRole.Params prm = new SpmAdmissionRole.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = AdmissionMgr.ExecuteAdmissionRoleQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmAdmissionRole.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = AdmissionMgr.GetAdmissionRoleDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Department.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Department.Designer.cs new file mode 100644 index 0000000..6f4cbc6 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Department.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_Department + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Department.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Department.cs new file mode 100644 index 0000000..f9f6530 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Department.cs @@ -0,0 +1,304 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_Department : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmDepartment.Params prmDepartment; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_Department() : this(new Config()) { } + public SpmItemListView_Department(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedDepartmentId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmDepartment SelectedDepartment + { + get + { + if (SelectedItemCount == 1) + return DepartmentMgr.GetDepartmentById(SelectedDepartmentId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitDepartmentList(true); + } + + + //------------------------------------------------------------------- + private void InitDepartmentList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(DepartmentMgr.GetDepartmentColumnDfn(SpmDepartment.Column.Name)); + columnsDisplay.Add(DepartmentMgr.GetDepartmentColumnDfn(SpmDepartment.Column.ApplicatonFrom)); + columnsDisplay.Add(DepartmentMgr.GetDepartmentColumnDfn(SpmDepartment.Column.ApplicationTo)); + +#if DEBUG + columnsDisplay.Add(DepartmentMgr.GetDepartmentColumnDfn(SpmDepartment.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmDepartment.Column.Name); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmDepartment.Params prmDepartment) + { + if (prmDepartment == null) return false; + return true; + } + public void RefreshDepartments(SpmDepartment.Params prmDepartment) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmDepartment = prmDepartment; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmDepartment)) return; + // Query data. + ItemTotal = (int)DepartmentMgr.GetDepartmentCount(prmDepartment); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData Department count: " + ItemTotal); + dbResultSet = DepartmentMgr.ExecuteDepartmentQuery(columnsQuery, prmDepartment); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshDepartment(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmDepartment.Params prm = new SpmDepartment.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = DepartmentMgr.ExecuteDepartmentQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmDepartment.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = DepartmentMgr.GetDepartmentDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Employee.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Employee.Designer.cs new file mode 100644 index 0000000..970567c --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Employee.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_Employee + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Employee.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Employee.cs new file mode 100644 index 0000000..0af1fa6 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Employee.cs @@ -0,0 +1,304 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_Employee : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmEmployee.Params prmEmployee; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_Employee() : this(new Config()) { } + public SpmItemListView_Employee(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedEmployeeId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmEmployee SelectedEmployee + { + get + { + if (SelectedItemCount == 1) + return InstitutionMgr.GetEmployeeById(SelectedEmployeeId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitEmployeeList(true); + } + + + //------------------------------------------------------------------- + private void InitEmployeeList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(InstitutionMgr.GetEmployeeColumnDfn(SpmEmployee.Column.InstitutionId)); + columnsDisplay.Add(InstitutionMgr.GetEmployeeColumnDfn(SpmEmployee.Column.EmployeeNo)); + columnsDisplay.Add(InstitutionMgr.GetEmployeeColumnDfn(SpmEmployee.Column.Code)); + columnsDisplay.Add(InstitutionMgr.GetEmployeeColumnDfn(SpmEmployee.Column.Initials)); + columnsDisplay.Add(InstitutionMgr.GetEmployeeColumnDfn(SpmEmployee.Column.Title)); + columnsDisplay.Add(InstitutionMgr.GetEmployeeColumnDfn(SpmEmployee.Column.Forename)); + columnsDisplay.Add(InstitutionMgr.GetEmployeeColumnDfn(SpmEmployee.Column.Surname)); + +#if DEBUG + columnsDisplay.Add(InstitutionMgr.GetEmployeeColumnDfn(SpmEmployee.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmEmployee.Column.InstitutionId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmEmployee.Params prmEmployee) + { + if (prmEmployee == null) return false; + return true; + } + public void RefreshEmployees(SpmEmployee.Params prmEmployee) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmEmployee = prmEmployee; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmEmployee)) return; + // Query data. + ItemTotal = (int)InstitutionMgr.GetEmployeeCount(prmEmployee); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData Employee count: " + ItemTotal); + dbResultSet = InstitutionMgr.ExecuteEmployeeQuery(columnsQuery, prmEmployee); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshEmployee(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmEmployee.Params prm = new SpmEmployee.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = InstitutionMgr.ExecuteEmployeeQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmEmployee.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = InstitutionMgr.GetEmployeeDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_EmployeeRole.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_EmployeeRole.Designer.cs new file mode 100644 index 0000000..4616968 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_EmployeeRole.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_EmployeeRole + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_EmployeeRole.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_EmployeeRole.cs new file mode 100644 index 0000000..e6ce8b0 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_EmployeeRole.cs @@ -0,0 +1,302 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_EmployeeRole : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmEmployeeRole.Params prmEmployeeRole; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_EmployeeRole() : this(new Config()) { } + public SpmItemListView_EmployeeRole(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedEmployeeRoleId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmEmployeeRole SelectedEmployeeRole + { + get + { + if (SelectedItemCount == 1) + return DepartmentMgr.GetEmployeeRoleById(SelectedEmployeeRoleId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitEmployeeRoleList(true); + } + + + //------------------------------------------------------------------- + private void InitEmployeeRoleList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(DepartmentMgr.GetEmployeeRoleColumnDfn(SpmEmployeeRole.Column.DepartmentId)); + columnsDisplay.Add(DepartmentMgr.GetEmployeeRoleColumnDfn(SpmEmployeeRole.Column.EmployeeId)); + columnsDisplay.Add(DepartmentMgr.GetEmployeeRoleColumnDfn(SpmEmployeeRole.Column.Role)); + columnsDisplay.Add(DepartmentMgr.GetEmployeeRoleColumnDfn(SpmEmployeeRole.Column.ApplicationFrom)); + columnsDisplay.Add(DepartmentMgr.GetEmployeeRoleColumnDfn(SpmEmployeeRole.Column.ApplicationTo)); + +#if DEBUG + columnsDisplay.Add(DepartmentMgr.GetEmployeeRoleColumnDfn(SpmEmployeeRole.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmEmployeeRole.Column.DepartmentId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmEmployeeRole.Params prmEmployeeRole) + { + if (prmEmployeeRole == null) return false; + return true; + } + public void RefreshEmployeeRoles(SpmEmployeeRole.Params prmEmployeeRole) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmEmployeeRole = prmEmployeeRole; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmEmployeeRole)) return; + // Query data. + ItemTotal = (int)DepartmentMgr.GetEmployeeRoleCount(prmEmployeeRole); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData EmployeeRole count: " + ItemTotal); + dbResultSet = DepartmentMgr.ExecuteEmployeeRoleQuery(columnsQuery, prmEmployeeRole); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshEmployeeRole(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmEmployeeRole.Params prm = new SpmEmployeeRole.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = DepartmentMgr.ExecuteEmployeeRoleQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmEmployeeRole.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = DepartmentMgr.GetEmployeeRoleDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Facility.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Facility.Designer.cs new file mode 100644 index 0000000..c0ea3ed --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Facility.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_Facility + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Facility.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Facility.cs new file mode 100644 index 0000000..e46ebaf --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Facility.cs @@ -0,0 +1,302 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_Facility : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmFacility.Params prmFacility; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_Facility() : this(new Config()) { } + public SpmItemListView_Facility(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedFacilityId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmFacility SelectedFacility + { + get + { + if (SelectedItemCount == 1) + return DepartmentMgr.GetFacilityById(SelectedFacilityId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitFacilityList(true); + } + + + //------------------------------------------------------------------- + private void InitFacilityList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(DepartmentMgr.GetFacilityColumnDfn(SpmFacility.Column.DepartmentId)); + columnsDisplay.Add(DepartmentMgr.GetFacilityColumnDfn(SpmFacility.Column.Type)); + columnsDisplay.Add(DepartmentMgr.GetFacilityColumnDfn(SpmFacility.Column.Type_Desc)); + columnsDisplay.Add(DepartmentMgr.GetFacilityColumnDfn(SpmFacility.Column.Name)); + columnsDisplay.Add(DepartmentMgr.GetFacilityColumnDfn(SpmFacility.Column.SortCode)); + +#if DEBUG + columnsDisplay.Add(DepartmentMgr.GetFacilityColumnDfn(SpmFacility.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmFacility.Column.DepartmentId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmFacility.Params prmFacility) + { + if (prmFacility == null) return false; + return true; + } + public void RefreshFacilitys(SpmFacility.Params prmFacility) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmFacility = prmFacility; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmFacility)) return; + // Query data. + ItemTotal = (int)DepartmentMgr.GetFacilityCount(prmFacility); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData Facility count: " + ItemTotal); + dbResultSet = DepartmentMgr.ExecuteFacilityQuery(columnsQuery, prmFacility); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshFacility(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmFacility.Params prm = new SpmFacility.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = DepartmentMgr.ExecuteFacilityQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmFacility.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = DepartmentMgr.GetFacilityDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilitySession.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilitySession.Designer.cs new file mode 100644 index 0000000..1d5b3d2 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilitySession.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_FacilitySession + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilitySession.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilitySession.cs new file mode 100644 index 0000000..a132faf --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilitySession.cs @@ -0,0 +1,299 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_FacilitySession : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmFacilitySession.Params prmFacilitySession; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_FacilitySession() : this(new Config()) { } + public SpmItemListView_FacilitySession(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedFacilitySessionId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmFacilitySession SelectedFacilitySession + { + get + { + if (SelectedItemCount == 1) + return DepartmentMgr.GetFacilitySessionById(SelectedFacilitySessionId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitFacilitySessionList(true); + } + + + //------------------------------------------------------------------- + private void InitFacilitySessionList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(DepartmentMgr.GetFacilitySessionColumnDfn(SpmFacilitySession.Column.Facility_TypeDesc)); + columnsDisplay.Add(DepartmentMgr.GetFacilitySessionColumnDfn(SpmFacilitySession.Column.Facility_Name)); + columnsDisplay.Add(DepartmentMgr.GetFacilitySessionColumnDfn(SpmFacilitySession.Column.Facility_SortCode)); + columnsDisplay.Add(DepartmentMgr.GetFacilitySessionColumnDfn(SpmFacilitySession.Column.Facility_Desc)); + columnsDisplay.Add(DepartmentMgr.GetFacilitySessionColumnDfn(SpmFacilitySession.Column.Facility_TemplateMapTypeDesc)); + + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmFacilitySession.Column.Facility_Name); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmFacilitySession.Params prmFacilitySession) + { + if (prmFacilitySession == null) return false; + return true; + } + public void RefreshFacilitySessions(SpmFacilitySession.Params prmFacilitySession) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmFacilitySession = prmFacilitySession; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmFacilitySession)) return; + // Query data. + ItemTotal = (int)DepartmentMgr.GetFacilitySessionCount(prmFacilitySession); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData FacilitySession count: " + ItemTotal); + dbResultSet = DepartmentMgr.ExecuteFacilitySessionQuery(columnsQuery, prmFacilitySession); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshFacilitySession(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmFacilitySession.Params prm = new SpmFacilitySession.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = DepartmentMgr.ExecuteFacilitySessionQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmFacilitySession.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = DepartmentMgr.GetFacilitySessionDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilityTemplate.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilityTemplate.Designer.cs new file mode 100644 index 0000000..eb7e53e --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilityTemplate.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_FacilityTemplate + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilityTemplate.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilityTemplate.cs new file mode 100644 index 0000000..698a75e --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_FacilityTemplate.cs @@ -0,0 +1,302 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_FacilityTemplate : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmFacilityTemplate.Params prmFacilityTemplate; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_FacilityTemplate() : this(new Config()) { } + public SpmItemListView_FacilityTemplate(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedFacilityTemplateId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmFacilityTemplate SelectedFacilityTemplate + { + get + { + if (SelectedItemCount == 1) + return DepartmentMgr.GetFacilityTemplateById(SelectedFacilityTemplateId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitFacilityTemplateList(true); + } + + + //------------------------------------------------------------------- + private void InitFacilityTemplateList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(DepartmentMgr.GetFacilityTemplateColumnDfn(SpmFacilityTemplate.Column.Category)); + columnsDisplay.Add(DepartmentMgr.GetFacilityTemplateColumnDfn(SpmFacilityTemplate.Column.Type)); + columnsDisplay.Add(DepartmentMgr.GetFacilityTemplateColumnDfn(SpmFacilityTemplate.Column.Type_Desc)); + columnsDisplay.Add(DepartmentMgr.GetFacilityTemplateColumnDfn(SpmFacilityTemplate.Column.Sort)); + columnsDisplay.Add(DepartmentMgr.GetFacilityTemplateColumnDfn(SpmFacilityTemplate.Column.Group)); + +#if DEBUG + columnsDisplay.Add(DepartmentMgr.GetFacilityTemplateColumnDfn(SpmFacilityTemplate.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmFacilityTemplate.Column.Name); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmFacilityTemplate.Params prmFacilityTemplate) + { + if (prmFacilityTemplate == null) return false; + return true; + } + public void RefreshFacilityTemplates(SpmFacilityTemplate.Params prmFacilityTemplate) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmFacilityTemplate = prmFacilityTemplate; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmFacilityTemplate)) return; + // Query data. + ItemTotal = (int)DepartmentMgr.GetFacilityTemplateCount(prmFacilityTemplate); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData FacilityTemplate count: " + ItemTotal); + dbResultSet = DepartmentMgr.ExecuteFacilityTemplateQuery(columnsQuery, prmFacilityTemplate); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshFacilityTemplate(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmFacilityTemplate.Params prm = new SpmFacilityTemplate.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = DepartmentMgr.ExecuteFacilityTemplateQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmFacilityTemplate.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = DepartmentMgr.GetFacilityTemplateDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Institution.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Institution.Designer.cs new file mode 100644 index 0000000..39728f5 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Institution.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_Institution + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Institution.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Institution.cs new file mode 100644 index 0000000..737c662 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Institution.cs @@ -0,0 +1,302 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_Institution : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmInstitution.Params prmInstitution; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_Institution() : this(new Config()) { } + public SpmItemListView_Institution(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedInstitutionId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmInstitution SelectedInstitution + { + get + { + if (SelectedItemCount == 1) + return InstitutionMgr.GetInstitutionById(SelectedInstitutionId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitInstitutionList(true); + } + + + //------------------------------------------------------------------- + private void InitInstitutionList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(InstitutionMgr.GetInstitutionColumnDfn(SpmInstitution.Column.Name)); + +#if DEBUG + columnsDisplay.Add(InstitutionMgr.GetInstitutionColumnDfn(SpmInstitution.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmInstitution.Column.Name); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmInstitution.Params prmInstitution) + { + if (prmInstitution == null) return false; + return true; + } + public void RefreshInstitutions(SpmInstitution.Params prmInstitution) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmInstitution = prmInstitution; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmInstitution)) return; + // Query data. + ItemTotal = (int)InstitutionMgr.GetInstitutionCount(prmInstitution); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData Institution count: " + ItemTotal); + dbResultSet = InstitutionMgr.ExecuteInstitutionQuery(columnsQuery, prmInstitution); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshInstitution(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmInstitution.Params prm = new SpmInstitution.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = InstitutionMgr.ExecuteInstitutionQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmInstitution.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = InstitutionMgr.GetInstitutionDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Operation.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Operation.Designer.cs new file mode 100644 index 0000000..add399b --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Operation.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_Operation + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Operation.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Operation.cs new file mode 100644 index 0000000..960d2c5 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Operation.cs @@ -0,0 +1,300 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_Operation : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmOperation.Params prmOperation; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_Operation() : this(new Config()) { } + public SpmItemListView_Operation(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedOperationId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmOperation SelectedOperation + { + get + { + if (SelectedItemCount == 1) + return InstitutionMgr.GetOperationById(SelectedOperationId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitOperationList(true); + } + + + //------------------------------------------------------------------- + private void InitOperationList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(InstitutionMgr.GetOperationColumnDfn(SpmOperation.Column.InstitutionId)); + columnsDisplay.Add(InstitutionMgr.GetOperationColumnDfn(SpmOperation.Column.Code)); + columnsDisplay.Add(InstitutionMgr.GetOperationColumnDfn(SpmOperation.Column.Description)); + +#if DEBUG + columnsDisplay.Add(InstitutionMgr.GetOperationColumnDfn(SpmOperation.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmOperation.Column.InstitutionId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmOperation.Params prmOperation) + { + if (prmOperation == null) return false; + return true; + } + public void RefreshOperations(SpmOperation.Params prmOperation) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmOperation = prmOperation; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmOperation)) return; + // Query data. + ItemTotal = (int)InstitutionMgr.GetOperationCount(prmOperation); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData Operation count: " + ItemTotal); + dbResultSet = InstitutionMgr.ExecuteOperationQuery(columnsQuery, prmOperation); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshOperation(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmOperation.Params prm = new SpmOperation.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = InstitutionMgr.ExecuteOperationQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmOperation.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = InstitutionMgr.GetOperationDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Patient.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Patient.Designer.cs new file mode 100644 index 0000000..5419a86 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Patient.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_Patient + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Patient.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Patient.cs new file mode 100644 index 0000000..f5035ed --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Patient.cs @@ -0,0 +1,302 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_Patient : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmPatient.Params prmPatient; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_Patient() : this(new Config()) { } + public SpmItemListView_Patient(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedPatientId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmPatient SelectedPatient + { + get + { + if (SelectedItemCount == 1) + return InstitutionMgr.GetPatientById(SelectedPatientId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitPatientList(true); + } + + + //------------------------------------------------------------------- + private void InitPatientList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(InstitutionMgr.GetPatientColumnDfn(SpmPatient.Column.InstitutionId)); + columnsDisplay.Add(InstitutionMgr.GetPatientColumnDfn(SpmPatient.Column.PatientNo)); + columnsDisplay.Add(InstitutionMgr.GetPatientColumnDfn(SpmPatient.Column.NhsNumber)); + columnsDisplay.Add(InstitutionMgr.GetPatientColumnDfn(SpmPatient.Column.Title)); + columnsDisplay.Add(InstitutionMgr.GetPatientColumnDfn(SpmPatient.Column.Forename)); + +#if DEBUG + columnsDisplay.Add(InstitutionMgr.GetPatientColumnDfn(SpmPatient.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmPatient.Column.InstitutionId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmPatient.Params prmPatient) + { + if (prmPatient == null) return false; + return true; + } + public void RefreshPatients(SpmPatient.Params prmPatient) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmPatient = prmPatient; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmPatient)) return; + // Query data. + ItemTotal = (int)InstitutionMgr.GetPatientCount(prmPatient); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData Patient count: " + ItemTotal); + dbResultSet = InstitutionMgr.ExecutePatientQuery(columnsQuery, prmPatient); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshPatient(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmPatient.Params prm = new SpmPatient.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = InstitutionMgr.ExecutePatientQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmPatient.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = InstitutionMgr.GetPatientDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Procedure.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Procedure.Designer.cs new file mode 100644 index 0000000..680beb2 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Procedure.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_Procedure + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Procedure.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Procedure.cs new file mode 100644 index 0000000..72aba92 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_Procedure.cs @@ -0,0 +1,302 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_Procedure : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmProcedure.Params prmProcedure; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_Procedure() : this(new Config()) { } + public SpmItemListView_Procedure(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedProcedureId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmProcedure SelectedProcedure + { + get + { + if (SelectedItemCount == 1) + return DepartmentMgr.GetProcedureById(SelectedProcedureId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitProcedureList(true); + } + + + //------------------------------------------------------------------- + private void InitProcedureList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + columnsDisplay.Add(DepartmentMgr.GetProcedureColumnDfn(SpmProcedure.Column.DepartmentId)); + columnsDisplay.Add(DepartmentMgr.GetProcedureColumnDfn(SpmProcedure.Column.OperationId)); + columnsDisplay.Add(DepartmentMgr.GetProcedureColumnDfn(SpmProcedure.Column.Description)); + columnsDisplay.Add(DepartmentMgr.GetProcedureColumnDfn(SpmProcedure.Column.SpecialityCode)); + columnsDisplay.Add(DepartmentMgr.GetProcedureColumnDfn(SpmProcedure.Column.ComplexityCode)); + +#if DEBUG + columnsDisplay.Add(DepartmentMgr.GetProcedureColumnDfn(SpmProcedure.Column.Id)); +#endif + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + SortColumnIdx = GetColumnIdxById((int)SpmProcedure.Column.DepartmentId); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmProcedure.Params prmProcedure) + { + if (prmProcedure == null) return false; + return true; + } + public void RefreshProcedures(SpmProcedure.Params prmProcedure) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmProcedure = prmProcedure; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmProcedure)) return; + // Query data. + ItemTotal = (int)DepartmentMgr.GetProcedureCount(prmProcedure); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData Procedure count: " + ItemTotal); + dbResultSet = DepartmentMgr.ExecuteProcedureQuery(columnsQuery, prmProcedure); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshProcedure(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmProcedure.Params prm = new SpmProcedure.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = DepartmentMgr.ExecuteProcedureQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmProcedure.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = DepartmentMgr.GetProcedureDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_TemplateData.Designer.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_TemplateData.Designer.cs new file mode 100644 index 0000000..0148ede --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_TemplateData.Designer.cs @@ -0,0 +1,23 @@ +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + partial class SpmItemListView_TemplateData + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_TemplateData.cs b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_TemplateData.cs new file mode 100644 index 0000000..3af169c --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Controls/SpmItemListView_TemplateData.cs @@ -0,0 +1,298 @@ +using Sarand.Core.Base; +using Sarand.Core.Bus; +using Sarand.Core.Dbas.Base; +using Sarand.PatientMgr.Core.Bus; +using Sarand.Win.Forms.Controls; +using Sarand.Win.Forms.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Windows.Forms; + +namespace Sarand.PatientMgr.Win.Forms.Controls +{ + //======================================================================= + public partial class SpmItemListView_TemplateData : SpmItemListView + { + //------------------------------------------------------------------- + // Configuration. + public enum ListMode + { + General, + } + + public new class Config : SpmItemListView.Config + { + public ListMode Mode { get; set; } = ListMode.General; + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + private readonly List columnsDisplay = new List(); + private readonly List columnsQuery = new List(); + private Timer timerQueryData = null; + private Timer timerDisplayItem = null; + private ColumnDfn columnDfnId = null; + private DbResultSet dbResultSet = null; + private SpmTemplateData.Params prmTemplateData; + + //------------------------------------------------------------------- + // Construction. + public SpmItemListView_TemplateData() : this(new Config()) { } + public SpmItemListView_TemplateData(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + + /* ToDo Timers function need modifying. + timerQueryData = new Timer() { Interval = 250 }; + timerQueryData.Tick += OnTimerQueryData; + timerDisplayItem = new Timer() { Interval = 5 }; + timerDisplayItem.Tick += OnTimerDisplayItem;*/ + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + timerQueryData.Dispose(); + timerDisplayItem.Dispose(); + ClearResultSet(); + } + base.Dispose(disposing); + } + private void ClearResultSet() + { + if (dbResultSet != null) + dbResultSet.Dispose(); + dbResultSet = null; + } + + //------------------------------------------------------------------- + // Properties. + [Browsable(false)] + public List DisplayColumns { get { return new List(columnsDisplay); } } + [Browsable(false)] + public SysId SelectedTemplateDataId { get { return SelectedItemId; } } + [Browsable(false)] + public SpmTemplateData SelectedTemplateData + { + get + { + if (SelectedItemCount == 1) + return DepartmentMgr.GetTemplateDataById(SelectedTemplateDataId); + return null; + } + } + + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureList(); + } + + //------------------------------------------------------------------- + // Initialisation. + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + } + private void ConfigureList() + { + if (!this.Created) return; + + InitTemplateDataList(true); + } + + + //------------------------------------------------------------------- + private void InitTemplateDataList(bool forceInit = false) + { + // Clear the existing list. + if (Columns.Count > 0 && !forceInit) return; + Clear(); + columnsDisplay.Clear(); + columnsQuery.Clear(); + + // Populate list of columns to be displayed. + //columnsDisplay.Add(DepartmentMgr.GetTemplateDataColumnDfn(SpmTemplateData.Column.Name)); + +/*#if DEBUG + columnsDisplay.Add(DepartmentMgr.GetTemplateDataColumnDfn(SpmTemplateData.Column.Id)); +#endif*/ + // Populate columns to list view. + SetColumns(columnsDisplay); + + // Default sort column. + //SortColumnIdx = GetColumnIdxById((int)SpmTemplateData.Column.Name); + Refresh(); + + // Initialise list of columns to be queries - ensure Id column in list. + columnsQuery.Clear(); + columnsQuery.AddRange(columnsDisplay); + if (!columnsQuery.HasId(columnDfnId.Id)) + columnsQuery.Add(columnDfnId); + } + + //------------------------------------------------------------------- + // P o p u l a t i o n + //------------------------------------------------------------------- + public bool IsValidFiter(SpmTemplateData.Params prmTemplateData) + { + if (prmTemplateData == null) return false; + return true; + } + public void RefreshTemplateDatas(SpmTemplateData.Params prmTemplateData) + { + // Clear timers. + /*timerQueryData.Enabled = false; + timerDisplayItem.Enabled = false;*/ + // Item Ids in the 'Initial selection' list are automatically selected on population. + // Subsequent refreshes automatically select the current selection by repopulation of the 'Initial selection' list. + if (!InitialPopulation) + { + InitiallySelectedItemIds.Clear(); + InitiallySelectedItemIds.AddRange(SelectedItemIds); + } + SelectedIndices.Clear(); + // Clear previous results. + ItemTotal = 0; + Items.Clear(); + // Prepare query. + ClearResultSet(); + this.prmTemplateData = prmTemplateData; + // Enable timer. + } + void OnTimerQueryData(Object myObject, EventArgs myEventArgs) + { + //timerQueryData.Enabled = false; + QueryData(); + } + private void QueryData() + { + ClearResultSet(); + if (!IsValidFiter(prmTemplateData)) return; + // Query data. + ItemTotal = (int)DepartmentMgr.GetTemplateDataCount(prmTemplateData); + if (ItemTotal > 0) Logger.Trace(GetType().Name + ".QueryData TemplateData count: " + ItemTotal); + dbResultSet = DepartmentMgr.ExecuteTemplateDataQuery(columnsQuery, prmTemplateData); + //timerDisplayItem.Enabled = true; + InitialPopulation = false; + } + public void RefreshTemplateData(SysId affiliateId) + { + // Parameters to query single item: + if (!SysId.IsValid(affiliateId)) return; + SpmTemplateData.Params prm = new SpmTemplateData.Params(); + prm.IncludedIds.Add(affiliateId); + + // Query data. + using (DbResultSet dbResultSet = DepartmentMgr.ExecuteTemplateDataQuery(columnsQuery, prm)) + { + if (dbResultSet.NextRecord()) + DisplayItem(dbResultSet.GetRecordValues(), true); + } + } + + //------------------------------------------------------------------- + // D i s p l a y I t e m s + //------------------------------------------------------------------- + private void OnTimerDisplayItem(Object myObject, EventArgs myEventArgs) + { + //timerDisplayItem.Enabled = false; + DisplayNextItems(); + } + private void DisplayNextItems() + { + if (dbResultSet == null) return; + for (int itemCount = 0; itemCount <= Math.Min(64, Math.Max(0, DisplayRecordsBatchSize)); itemCount++) + { + if (dbResultSet.NextRecord()) + { + DisplayItem(dbResultSet.GetRecordValues()); + //timerDisplayItem.Enabled = true; + } + else + { + ClearResultSet(); + return; + } + } + } + private void DisplayItem(NamedValue.Map values, bool highlight = false) + { + // Item identity. + SysId itemId = new SysId(StringUtil.ToInt(values.GetValue(columnDfnId.DataName).ToString())); + String itemName = SysId.ToString(itemId); + bool addNewItem = false; + ListViewItem item = FindItemWithName(itemName); + if (item == null) + { + // New item to be added. + item = new ListViewItem(); + item.Name = itemName; + addNewItem = true; + } + else + { + // Clear sub items for existing item. + item.SubItems.Clear(); + item.Name = itemName; + } + + // Populate list view item. + int columnIdx = -1; + foreach (var column in columnsDisplay) + { + DataValue value = new DataValue(); + if (column.Id == (int)SpmTemplateData.Column.Pos) + { + value = new DataValue((Items.Count + 1).ToString() + "."); + } + else + { + value = DepartmentMgr.GetTemplateDataDataValue(column, values); + if (!value.IsValid()) + value = new DataValue(column.FormatValue(values)); + } + if (++columnIdx == 0) + item.Text = value.ToString(); + else + item.SubItems.Add(new ListViewSubItemExtended(column, value)); + } + // Add to list if required (otherwise item has already been updated in list. + if (addNewItem) + { + ListViewItem itemAdded = Items.Add(item); + } + // Check for selection: + if (!highlight && InitiallySelectedItemIds.Contains(itemId)) + highlight = true; + if (highlight) + { + item.Selected = true; + item.Focused = true; + EnsureVisible(item.Index); + } + } + + //------------------------------------------------------------------- + // C o n t r o l E v e n t s + //------------------------------------------------------------------- + protected override void OnResize(EventArgs e) + { + base.OnResize(e); + + //Logger.Debug(GetType().Name + ".OnResize Size: " + Size.ToString()); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter.Designer.cs new file mode 100644 index 0000000..d2d6655 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter.Designer.cs @@ -0,0 +1,25 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + } + + #endregion + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter.cs new file mode 100644 index 0000000..ba728fd --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter : SpmPanel + { + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmPanel.Config + { + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter() : this(new Config()) { } + public SpmItemListFilter(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + DoubleBuffered = true; + } + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Filter Events. + public event EventHandler FilterChanged; + protected void InvokeFilterChangedEvent(EventArgs e) + { + FilterChanged?.Invoke(this, e); + } + + //------------------------------------------------------------------- + // Panel Drawing. + protected override void OnPaintBackground(PaintEventArgs e) + { + base.OnPaintBackground(e); + } + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.Designer.cs new file mode 100644 index 0000000..d76f05c --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_Admission + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_Admission + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_Admission"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.cs new file mode 100644 index 0000000..7fece54 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_Admission : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_Admission() : this(new Config()) { } + public SpmItemListFilter_Admission(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Admission.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.Designer.cs new file mode 100644 index 0000000..348cb13 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_AdmissionAction + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_AdmissionAction + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_AdmissionAction"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.cs new file mode 100644 index 0000000..6acdf0e --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_AdmissionAction : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_AdmissionAction() : this(new Config()) { } + public SpmItemListFilter_AdmissionAction(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionAction.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.Designer.cs new file mode 100644 index 0000000..9dc7b91 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_AdmissionData + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_AdmissionData + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_AdmissionData"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.cs new file mode 100644 index 0000000..36252f0 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_AdmissionData : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_AdmissionData() : this(new Config()) { } + public SpmItemListFilter_AdmissionData(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionData.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.Designer.cs new file mode 100644 index 0000000..465b31e --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_AdmissionRole + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_AdmissionRole + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_AdmissionRole"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.cs new file mode 100644 index 0000000..38344a8 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_AdmissionRole : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_AdmissionRole() : this(new Config()) { } + public SpmItemListFilter_AdmissionRole(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_AdmissionRole.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.Designer.cs new file mode 100644 index 0000000..36a4426 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_Department + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_Department + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_Department"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.cs new file mode 100644 index 0000000..67a793c --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_Department : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_Department() : this(new Config()) { } + public SpmItemListFilter_Department(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Department.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.Designer.cs new file mode 100644 index 0000000..7b9a104 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_Employee + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_Employee + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_Employee"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.cs new file mode 100644 index 0000000..e99a9de --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_Employee : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_Employee() : this(new Config()) { } + public SpmItemListFilter_Employee(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Employee.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.Designer.cs new file mode 100644 index 0000000..3b67e41 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_EmployeeRole + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_EmployeeRole + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_EmployeeRole"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.cs new file mode 100644 index 0000000..3d9ea4e --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_EmployeeRole : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_EmployeeRole() : this(new Config()) { } + public SpmItemListFilter_EmployeeRole(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_EmployeeRole.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.Designer.cs new file mode 100644 index 0000000..c213d78 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_Facility + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_Facility + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_Facility"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.cs new file mode 100644 index 0000000..afb379a --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_Facility : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_Facility() : this(new Config()) { } + public SpmItemListFilter_Facility(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Facility.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.Designer.cs new file mode 100644 index 0000000..8c5f517 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_FacilitySession + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_FacilitySession + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_FacilitySession"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.cs new file mode 100644 index 0000000..b71e038 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_FacilitySession : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_FacilitySession() : this(new Config()) { } + public SpmItemListFilter_FacilitySession(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilitySession.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.Designer.cs new file mode 100644 index 0000000..ba438a3 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_FacilityTemplate + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_FacilityTemplate + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_FacilityTemplate"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.cs new file mode 100644 index 0000000..e0b1a80 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_FacilityTemplate : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_FacilityTemplate() : this(new Config()) { } + public SpmItemListFilter_FacilityTemplate(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_FacilityTemplate.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.Designer.cs new file mode 100644 index 0000000..d98af38 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_Institution + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_Institution + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_Institution"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.cs new file mode 100644 index 0000000..c4befd6 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_Institution : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_Institution() : this(new Config()) { } + public SpmItemListFilter_Institution(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Institution.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.Designer.cs new file mode 100644 index 0000000..f4c6e37 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_Operation + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_Operation + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_Operation"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.cs new file mode 100644 index 0000000..1de1e96 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_Operation : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_Operation() : this(new Config()) { } + public SpmItemListFilter_Operation(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Operation.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.Designer.cs new file mode 100644 index 0000000..0bc8391 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_Patient + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_Patient + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_Patient"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.cs new file mode 100644 index 0000000..3b4ea9e --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_Patient : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_Patient() : this(new Config()) { } + public SpmItemListFilter_Patient(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Patient.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.Designer.cs new file mode 100644 index 0000000..dd3ebaa --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_Procedure + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_Procedure + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_Procedure"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.cs new file mode 100644 index 0000000..c8c25bd --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_Procedure : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_Procedure() : this(new Config()) { } + public SpmItemListFilter_Procedure(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_Procedure.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.Designer.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.Designer.cs new file mode 100644 index 0000000..ef72ff3 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.Designer.cs @@ -0,0 +1,60 @@ +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + partial class SpmItemListFilter_TemplateData + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelAttrFilter = new Sarand.Win.Forms.Controls.SacsPanelAttrFilter(); + this.buttonClear = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panelAttrFilter + // + this.panelAttrFilter.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panelAttrFilter.Location = new System.Drawing.Point(5, 4); + this.panelAttrFilter.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.panelAttrFilter.Name = "panelAttrFilter"; + this.panelAttrFilter.Size = new System.Drawing.Size(273, 30); + this.panelAttrFilter.TabIndex = 0; + // + // buttonClear + // + this.buttonClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.buttonClear.Location = new System.Drawing.Point(289, 4); + this.buttonClear.Margin = new System.Windows.Forms.Padding(4); + this.buttonClear.Name = "buttonClear"; + this.buttonClear.Size = new System.Drawing.Size(100, 28); + this.buttonClear.TabIndex = 1; + this.buttonClear.Text = "Clear"; + this.buttonClear.UseVisualStyleBackColor = true; + // + // SpmItemListFilter_TemplateData + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.buttonClear); + this.Controls.Add(this.panelAttrFilter); + this.Name = "SpmItemListFilter_TemplateData"; + this.Size = new System.Drawing.Size(393, 37); + this.ResumeLayout(false); + + } + + #endregion + + private Sarand.Win.Forms.Controls.SacsPanelAttrFilter panelAttrFilter; + private System.Windows.Forms.Button buttonClear; + } +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.cs b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.cs new file mode 100644 index 0000000..06ef8d0 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Sarand.PatientMgr.Win.Forms.Base; +using Sarand.Win.Forms.Utils; +using Sarand.Win.Forms.Controls; +using Sarand.Core.Base; + +namespace Sarand.PatientMgr.Win.Forms.Filters +{ + //======================================================================= + public partial class SpmItemListFilter_TemplateData : SpmItemListFilter + { + //------------------------------------------------------------------- + // Filter attribute types. + public enum AttrType + { + Notes, + } + //------------------------------------------------------------------- + // Configuration. + public new class Config : SpmItemListFilter.Config + { + + } + + //------------------------------------------------------------------- + // Data members. + private Config config = new Config(); + + //------------------------------------------------------------------- + // Construction. + public SpmItemListFilter_TemplateData() : this(new Config()) { } + public SpmItemListFilter_TemplateData(Config config) : base(config) + { + this.config = config; + InitializeComponent(); + } + // Dispose. + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (components != null) components.Dispose(); + } + base.Dispose(disposing); + } + + //------------------------------------------------------------------- + // Properties. + // Filter values. + [Browsable(false)] + public String GetAttrTypeValue(AttrType attrType) + { + return panelAttrFilter.GetAttrValue((int)attrType); + } + + //------------------------------------------------------------------- + // Configure. + public void SetConfig(Config config) + { + base.SetConfig(config); + this.config = config; + ConfigureFilter(); + } + private void ConfigureFilter() + { + if (!this.Created) return; + + ConfigureAttrTypeFilter(); + } + + //------------------------------------------------------------------- + // I n i t i a l i s a t i o n + //------------------------------------------------------------------- + protected override void OnCreateControl() + { + base.OnCreateControl(); + if (this.IsDesignerHosted()) return; + + // Filter attribute types. + panelAttrFilter.BorderStyle = BorderStyle.None; + ConfigureAttrTypeFilter(); + + SetControlActivity(); + } + + //------------------------------------------------------------------- + // F i l t e r A t t r i b u t e s + //------------------------------------------------------------------- + private void ConfigureAttrTypeFilter() + { + SacsPanelAttrFilter.Config filterConfig = new SacsPanelAttrFilter.Config() { AttrTypeControlWidth = 90, AttrValueControlWidth = 100 }; + filterConfig.AttrTypes.Add(AttrType.Notes, "Notes", SacsPanelAttrFilter.ControlType.TextBox); + panelAttrFilter.SetFilterConfig(filterConfig); + } + public List GetAttrTypeValues(int type) + { + return GetAttrTypeValues(type); + } + + //------------------------------------------------------------------- + // C o n t r o l A c t i v i t y + //------------------------------------------------------------------- + protected override void SetControlActivity() + { + SetControlsReadOnly(); + panelAttrFilter.Enabled = Enabled; + } + protected override void SetControlsReadOnly() + { + } + + //------------------------------------------------------------------- + // F i l t e r E v e n t s + //------------------------------------------------------------------- + + //------------------------------------------------------------------- + } + //======================================================================= +} diff --git a/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.resx b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SaPatMgrWinForms/Win/Forms/Filters/SpmItemListFilter_TemplateData.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file