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