Files
PatientMgr-CSharp/SaPatMgrWinDbas/Win/Dbas/Mgr/SpmAdmissionMgr_Dbas-Admission.cs
T

1299 lines
72 KiB
C#

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sarand.Core.App;
using Sarand.Core.Base;
using Sarand.Core.Bus;
using Sarand.Core.Dbas.Base;
using Sarand.Win.Dbas.Base;
using Sarand.PatientMgr.Core.App;
using Sarand.PatientMgr.Core.Bus;
using Sarand.PatientMgr.Core.Mgr;
using Sarand.PatientMgr.Win.Dbas.Bus;
using Sarand.PatientMgr.Win.Dbas.Internal;
//using Sarand.PatientMgr.Win.Dbas.UpdateLog;
using Sarand.Win.Dbas.Data;
namespace Sarand.PatientMgr.Win.Dbas.Mgr
{
//=======================================================================
internal partial class SpmAdmissionMgr_Dbas : SpmAdmissionMgr
{
//*******************************************************************
// A d m i s s i o n s
//*******************************************************************
// Utilities.
public bool CanMoveUp(SpmAdmission admission)
{
ClearErrorState();
return false;
}
public bool CanMoveDown(SpmAdmission admission)
{
ClearErrorState();
return false;
}
public bool Resequence(SysId facilityId, SysId facilityTemplateId, DateTime admissionDate)
{
ClearErrorState();
return false;
}
public short GetNextAdmissionSequence(SpmAdmission admission)
{
ClearErrorState();
return 0;
}
public bool MoveUp(SpmAdmission admission)
{
ClearErrorState();
return false;
}
public bool MoveDown(SpmAdmission admission)
{
ClearErrorState();
return false;
}
public long AdmissionsForFacility(DateTime sessionDate, SysId facilityId)
{
ClearErrorState();
if (DateUtil.IsValid(sessionDate) && SysId.IsValid(facilityId))
{
// Dummy query to set DBMS - for correct formatting of strings and dates etc.
DbQuery qryDummy = new DbQuery(Database != null ? Database.DbmsType : DbmsType.General);
// Filter to identify matching templates.
// Admission.AdmissionFrom <= Session date
// Admission.AdmissionTo >= Session date
// Admission.FacilityId = Facility Id
// Admission.CancelType = None
List<String> filters = new List<String>();
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom) + "<" + DbQuery.FormatDateForCondition(sessionDate.AddDays(1)));
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo) + ">=" + DbQuery.FormatDateForCondition(sessionDate));
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId) + "=" + facilityId.ToString());
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmission_CancelType) + "=" + ((int)Spm.AdmissionCancelType.None).ToString());
return Database.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission), filters.Concat(" AND ", "(", ")"));
}
return 0;
}
public long AdmissionsForTemplate(DateTime sessionDate, SysId templateId)
{
ClearErrorState();
if (DateUtil.IsValid(sessionDate) && SysId.IsValid(templateId))
{
// Dummy query to set DBMS - for correct formatting of strings and dates etc.
DbQuery qryDummy = new DbQuery(Database != null ? Database.DbmsType : DbmsType.General);
// Filter to identify matching templates.
// Admission.AdmissionFrom <= Session date
// Admission.AdmissionTo >= Session date
// Admission.FacilityId = Facility Id
// Admission.CancelType = None
List<String> filters = new List<String>();
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom) + "<" + DbQuery.FormatDateForCondition(sessionDate.AddDays(1)));
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo) + ">=" + DbQuery.FormatDateForCondition(sessionDate));
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId) + "=" + templateId.ToString());
filters.Add(SpmDbDfn.GetColumnName(SpmDbDfn.ColumnIdx.SwmAdmission_CancelType) + "=" + ((int)Spm.AdmissionCancelType.None).ToString());
return Database.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission), filters.Concat(" AND ", "(", ")"));
}
return 0;
}
//-------------------------------------------------------------------
// Create Admission.
public override SpmAdmission CreateAdmission(SysId facilityId, SysId facilityTemplateId)
{
return new SpmAdmission_Dbas(UserContext, facilityId, facilityTemplateId, 0);
}
private SpmAdmission_Dbas CreateAdmission(SwmAdmission_Db dbAdmission)
{
ClearErrorState();
SpmAdmission_Dbas admission = new SpmAdmission_Dbas(UserContext, new SysId(dbAdmission._FacilityId), new SysId(dbAdmission._FacilityTemplateId), (ushort)dbAdmission._Flags);
PopulateFrom(dbAdmission, admission);
return admission;
}
//-------------------------------------------------------------------
// Get Admission.
public override SpmAdmission GetAdmission(SpmAdmission.Params prm)
{
return GetAdmission(GetAdmissionQueryFilter(prm).Concat(" AND ", "(", ")"));
}
private SpmAdmission GetAdmission(String filter)
{
ClearErrorState();
long count = GetAdmissionCount(filter);
if (count == 0) return null;
if (count != 1)
{
SetErrorState("Multiple Admissiones found");
return null;
}
SpmAdmission admission = null;
// Query data.
using (var dbConnection = Database.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
SwmAdmission_Db dbAdmission = new SwmAdmission_Db(DbInfo);
dbAdmission.PopulateFrom(dbCommand, aliasAdmission, filter);
admission = CreateAdmission(dbAdmission);
}
catch (Exception exc)
{
SetErrorState("Database query exception");
Logger.Warn(GetType().Name + ".GetAdmission\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
}
}
return admission;
}
//-------------------------------------------------------------------
// Validate Admission.
public override bool IsValidAdmissionData(SpmAdmission.Data data, SpmAdmission.ErrField errField)
{
ClearErrorState();
if (!base.IsValidAdmissionData(data, errField)) return false;
return true;
}
//-------------------------------------------------------------------
// Insert Admission.
public override bool InsertAdmission(SpmAdmission admission, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
if (!IsValidAdmission(admission)) return false;
if (SysId.IsValid(admission.Id)) return SetErrorState(ErrorMessage.ValiditemId);
using (var dbConnection = Database.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
SwmAdmission_Db dbAdmission = new SwmAdmission_Db(DbInfo);
PopulateTo(dbAdmission, admission, dbUpdateInfo);
if (SwmAdmission_Db.FieldsNonId.Contains("Id"))
{
// Generate next Id.
dbAdmission._Id = SysId.ToInt(Database.GetNextId("Admission", dbUpdateInfo));
}
dbAdmission.ExecuteInsertCommand(dbCommand);
admission.Id = new SysId(dbAdmission._Id);
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Update Admission.
public override bool UpdateAdmission(SpmAdmission admission, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
if (!IsValidAdmission(admission)) return false;
if (!SysId.IsValid(admission.Id)) return SetErrorState(ErrorMessage.InvalidItemId);
using (var dbConnection = Database.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve Admission.
dbConnection.Open();
SwmAdmission_Db dbAdmission = new SwmAdmission_Db(DbInfo);
dbAdmission.PopulateFrom(dbCommand, aliasAdmission, "Id=" + SysId.ToString(admission.Id));
//SpmUpdateLogItemMonitor_Admission updateLogMonitor = new SpmUpdateLogItemMonitor_Admission(UserContext, CreateAdmission(dbAdmission));
// Update properties.
PopulateTo(dbAdmission, admission, dbUpdateInfo);
dbAdmission.ExecuteUpdateCommand(dbCommand);
/* Record updates.
updateLogMonitor.RecordUpdatedValues(admission);
updateLogMonitor.LogUpdates();*/
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Delete Admission.
public override bool AdmissionCanBeDeleted(SpmAdmission admission)
{
ClearErrorState();
if (!base.AdmissionCanBeDeleted(admission)) return false;
return true;
}
public override bool DeleteAdmission(SpmAdmission admission, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
if (!AdmissionCanBeDeleted(admission)) return false;
using (var dbConnection = Database.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
// Retrieve Admission.
dbConnection.Open();
SwmAdmission_Db dbAdmission = new SwmAdmission_Db(DbInfo);
dbAdmission.PopulateFrom(dbCommand, aliasAdmission, "Id=" + admission.Id.ToString());
// Delete Admission.
dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.CommandText = "DELETE FROM " + SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission) + " WHERE Id=" + SysId.ToString(admission.Id) + ";";
dbCommand.ExecuteNonQuery();
}
catch (Exception exc) { SetErrorState(exc.Message); }
}
return !HasErrorState();
}
//-------------------------------------------------------------------
// Copy data properties to and from database.
private void PopulateTo(SwmAdmission_Db dbAdmission, SpmAdmission admission, DbUpdateInfo dbUpdateInfo)
{
dbAdmission._Id = admission.Id.ToInt();
dbAdmission._FacilityId = admission.FacilityId.ToInt();
dbAdmission._FacilityTemplateId = admission.FacilityTemplateId.ToInt();
dbAdmission._AdmissionFrom = admission.AdmissionFrom;
dbAdmission._AdmissionTo = admission.AdmissionTo;
dbAdmission._ToComeIn = admission.ToComeIn;
dbAdmission._Seq = (byte)admission.Seq;
dbAdmission._Type = (short)admission.AdmissionType;
dbAdmission._Occupancy = (short)admission.Occupancy;
dbAdmission._DecisionToReferOn = admission.DecisionToReferOn;
dbAdmission._ReferredOn = admission.ReferredOn;
dbAdmission._DecisionToAdmitOn = admission.DecisionToAdmitOn;
dbAdmission._BreechOn = admission.BreechOn;
dbAdmission._PatientId = admission.PatientId.ToInt();
dbAdmission._PatientNo = admission.PatientNo;
dbAdmission._NhsNumber = admission.NhsNumber;
dbAdmission._Title = admission.Title;
dbAdmission._Forename = admission.Forename;
dbAdmission._Surname = admission.Surname;
dbAdmission._Gender = (short)admission.Gender;
dbAdmission._BirthOn = DateUtil.DateToInt32(admission.BirthOn);
dbAdmission._Age = admission.Age;
dbAdmission._AgeOn = admission.AgeOn;
dbAdmission._FacilityIdWard = admission.FacilityIdWard.ToInt();
dbAdmission._Ward = admission.Ward;
dbAdmission._ProcedureId = admission.ProcedureId.ToInt();
dbAdmission._SpecialityCode = admission.SpecialityCode;
dbAdmission._ProcedureDesc = admission.ProcedureDesc;
dbAdmission._ComplexityCode = admission.ComplexityCode;
dbAdmission._ProcedureIndication = admission.ProcedureIndication;
dbAdmission._PatientHistory = admission.PatientHistory;
dbAdmission._GestationPeriod = admission.GestationPeriod;
dbAdmission._SystemRef = admission.SystemRef;
dbAdmission._DurationExp = (short)admission.DurationExp;
dbAdmission._DurationAct = (short)admission.DurationAct;
dbAdmission._UnitsExp = (short)admission.UnitsExp;
dbAdmission._UnitsAct = (short)admission.UnitsAct;
dbAdmission._Anaesthetic = admission.Anaesthetic;
dbAdmission._Position = admission.Position;
dbAdmission._SpecialEquipment = admission.SpecialEquipment;
dbAdmission._AttendanceType = (short)admission.AttendanceType;
dbAdmission._AttendanceStatus = admission.AttendanceStatus;
dbAdmission._ComfortScore = admission.ComfortScore;
dbAdmission._TimeCalled = admission.TimeCalled;
dbAdmission._TimeArrived = admission.TimeArrived;
dbAdmission._TimeAnaesStart = admission.TimeAnaesStart;
dbAdmission._TimeProcStart = admission.TimeProcStart;
dbAdmission._TimeProcEnd = admission.TimeProcEnd;
dbAdmission._TimeInRecovery = admission.TimeInRecovery;
dbAdmission._TimeInformDest = admission.TimeInformDest;
dbAdmission._TimeLeave = admission.TimeLeave;
dbAdmission._CancelType = (short)admission.CancelType;
dbAdmission._CancelDate = admission.CancelDate;
dbAdmission._CancelCount = (short)admission.CancelCount;
dbAdmission._CancelCode = admission.CancelCode;
dbAdmission._CancelReason = admission.CancelReason;
dbAdmission._Notes = admission.Notes;
dbAdmission._Status = SacsSystem.GetStatusCode(admission.Status);
dbAdmission._Flags = (short)admission.Flags;
if (!SysId.IsValid(admission.Id))
{
dbAdmission._CreateOn = DateTime.UtcNow;
dbAdmission._CreateBy = dbUpdateInfo.UserId.ToInt();
dbAdmission._CreateHost = dbUpdateInfo.Host;
}
dbAdmission._UpdateOn = DateTime.UtcNow;
dbAdmission._UpdateBy = dbUpdateInfo.UserId.ToInt();
dbAdmission._UpdateHost = dbUpdateInfo.Host;
}
private void PopulateFrom(SwmAdmission_Db dbAdmission, SpmAdmission admission)
{
admission.Id = new SysId(dbAdmission._Id);
admission.FacilityId = new SysId(dbAdmission._FacilityId);
admission.FacilityTemplateId = new SysId(dbAdmission._FacilityTemplateId);
admission.AdmissionFrom = dbAdmission._AdmissionFrom;
admission.AdmissionTo = dbAdmission._AdmissionTo;
admission.ToComeIn = dbAdmission._ToComeIn;
admission.Seq = dbAdmission._Seq;
admission.AdmissionType = (Spm.AdmissionType)dbAdmission._Type;
admission.Occupancy = (Spm.AdmissionOccupancy)dbAdmission._Occupancy;
admission.DecisionToReferOn = dbAdmission._DecisionToReferOn;
admission.ReferredOn = dbAdmission._ReferredOn;
admission.DecisionToAdmitOn = dbAdmission._DecisionToAdmitOn;
admission.BreechOn = dbAdmission._BreechOn;
admission.PatientId = new SysId(dbAdmission._PatientId);
admission.PatientNo = dbAdmission._PatientNo;
admission.NhsNumber = dbAdmission._NhsNumber;
admission.Title = dbAdmission._Title;
admission.Forename = dbAdmission._Forename;
admission.Surname = dbAdmission._Surname;
admission.Gender = (Spm.Gender)dbAdmission._Gender;
admission.BirthOn = DateUtil.Int32ToDate(dbAdmission._BirthOn);
admission.Age = dbAdmission._Age;
admission.AgeOn = dbAdmission._AgeOn;
admission.FacilityIdWard = new SysId(dbAdmission._FacilityIdWard);
admission.Ward = dbAdmission._Ward;
admission.ProcedureId = new SysId(dbAdmission._ProcedureId);
admission.SpecialityCode = dbAdmission._SpecialityCode;
admission.ProcedureDesc = dbAdmission._ProcedureDesc;
admission.ComplexityCode = dbAdmission._ComplexityCode;
admission.ProcedureIndication = dbAdmission._ProcedureIndication;
admission.PatientHistory = dbAdmission._PatientHistory;
admission.GestationPeriod = dbAdmission._GestationPeriod;
admission.SystemRef = dbAdmission._SystemRef;
admission.DurationExp = (ushort)dbAdmission._DurationExp;
admission.DurationAct = (ushort)dbAdmission._DurationAct;
admission.UnitsExp = (short)dbAdmission._UnitsExp;
admission.UnitsAct = (short)dbAdmission._UnitsAct;
admission.Anaesthetic = dbAdmission._Anaesthetic;
admission.Position = dbAdmission._Position;
admission.SpecialEquipment = dbAdmission._SpecialEquipment;
admission.AttendanceType = (Spm.AttendanceType)dbAdmission._AttendanceType;
admission.AttendanceStatus = dbAdmission._AttendanceStatus;
admission.ComfortScore = dbAdmission._ComfortScore;
admission.TimeCalled = dbAdmission._TimeCalled;
admission.TimeArrived = dbAdmission._TimeArrived;
admission.TimeAnaesStart = dbAdmission._TimeAnaesStart;
admission.TimeProcStart = dbAdmission._TimeProcStart;
admission.TimeProcEnd = dbAdmission._TimeProcEnd;
admission.TimeInRecovery = dbAdmission._TimeInRecovery;
admission.TimeInformDest = dbAdmission._TimeInformDest;
admission.TimeLeave = dbAdmission._TimeLeave;
admission.CancelType = (Spm.AdmissionCancelType)dbAdmission._CancelType;
admission.CancelDate = dbAdmission._CancelDate;
admission.CancelCount = (ushort)dbAdmission._CancelCount;
admission.CancelCode = dbAdmission._CancelCode;
admission.CancelReason = dbAdmission._CancelReason;
admission.Notes = dbAdmission._Notes;
admission.Status = SacsSystem.GetStatusForCode(dbAdmission._Status);
admission.SetCreateStamp(dbAdmission._CreateOn, new SysId(dbAdmission._CreateBy), dbAdmission._CreateHost);
admission.SetUpdateStamp(dbAdmission._UpdateOn, new SysId(dbAdmission._UpdateBy), dbAdmission._UpdateHost);
admission.AcceptChanges();
}
//-------------------------------------------------------------------
// alias & prefix column definitions.
private static readonly String aliasAdmission = "aAdm";
private static readonly String prefixAdmission = "Adm_";
private static readonly String aliasAdmission_Facility = "aAdmFac";
private static readonly String prefixAdmission_Facility = "AdmFac_";
private static readonly String aliasAdmission_Template = "aAdmTmpl";
private static readonly String prefixAdmission_Template = "AdmTmpl_";
private static readonly String aliasAdmission_Session = "aAdmSess";
private static readonly String prefixAdmission_Session = "AdmSess_";
private static readonly String aliasAdmission_Patient = "aAdmPat";
private static readonly String prefixAdmission_Patient = "AdmPat_";
private static readonly String aliasAdmission_AdmRoleConsOpn = "aAdmArCo";
private static readonly String prefixAdmission_AdmRoleConsOpn = "AdmArCo_";
private static readonly String aliasAdmission_AdmRoleConsRef = "aAdmArCr";
private static readonly String prefixAdmission_AdmRoleConsRef = "AdmArCr_";
private static readonly String aliasAdmission_AdmRoleSurgOpn = "aAdmArSo";
private static readonly String prefixAdmission_AdmRoleSurgOpn = "AdmArSo_";
private static readonly String aliasAdmission_AdmRoleAnaeOpn = "aAdmArAo";
private static readonly String prefixAdmission_AdmRoleAnaeOpn = "AdmArAo_";
private static readonly String colAdmission_CancelTypeDesc = "CancelTypeDesc";
//-------------------------------------------------------------------
// Setting Admission column definitions.
private void SetAdmissionColDfn
(ColumnDfn col, String caption, int width, SpmDbDfn.ColumnIdx dbCol,
ColumnAlignment align = ColumnAlignment.Default, DataValue.DataType dataType = DataValue.DataType.String,
String alias = "", String prefix = "")
{
if (String.IsNullOrEmpty(alias) && SpmDbDfn.GetTableForColumn(dbCol) == SpmDbDfn.TableIdx.SwmAdmission)
alias = aliasAdmission;
col.Set(caption, width, (int)dbCol, prefix + SpmDbDfn.GetColumnName(dbCol, false), SpmDbDfn.GetColumnNameQual(dbCol, alias), dataType, align);
if (dataType == DataValue.DataType.String && dbCol != SpmDbDfn.ColumnIdx.Unknown)
col.MaxLength = (int)SpmDbDfn.GetColTextLen(dbCol);
}
//-------------------------------------------------------------------
// Getting Admission column definition.
public override ColumnDfn GetAdmissionColumnDfn(SpmAdmission.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
switch (columnId)
{
case SpmAdmission.Column.Pos:
SetAdmissionColDfn(columnDfn, "Pos", 42, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Right);
columnDfn.SortMode = ColumnDfn.ColumnSortMode.Off;
columnDfn.ReadOnly = true;
columnDfn.Resizable = false;
break;
case SpmAdmission.Column.Session:
SetAdmissionColDfn(columnDfn, "Session", 120, SpmDbDfn.ColumnIdx.Unknown);
break;
case SpmAdmission.Column.Id:
SetAdmissionColDfn(columnDfn, "Id", 40, SpmDbDfn.ColumnIdx.SwmAdmission_Id, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
// Admission Properties.
case SpmAdmission.Column.FacilityId:
SetAdmissionColDfn(columnDfn, "FacilityId", 45, SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId, ColumnAlignment.Right);
break;
case SpmAdmission.Column.TemplateId:
SetAdmissionColDfn(columnDfn, "TmplId", 45, SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId, ColumnAlignment.Right);
break;
case SpmAdmission.Column.Seq:
SetAdmissionColDfn(columnDfn, "Seq", 45, SpmDbDfn.ColumnIdx.SwmAdmission_Seq, ColumnAlignment.Right);
break;
// Common Properties.
case SpmAdmission.Column.Notes:
SetAdmissionColDfn(columnDfn, "Notes", 200, SpmDbDfn.ColumnIdx.SwmAdmission_Notes);
break;
case SpmAdmission.Column.Status:
SetAdmissionColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmission_Status, ColumnAlignment.Center);
break;
case SpmAdmission.Column.Status_Desc:
SetAdmissionColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmission_Status, ColumnAlignment.Center);
break;
case SpmAdmission.Column.Status_Ind:
SetAdmissionColDfn(columnDfn, "Status", 50, SpmDbDfn.ColumnIdx.SwmAdmission_Status, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SpmAdmission.Column.CreateOn_Date:
SetAdmissionColDfn(columnDfn, "Created", 65, SpmDbDfn.ColumnIdx.SwmAdmission_CreateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
case SpmAdmission.Column.UpdateOn_Date:
SetAdmissionColDfn(columnDfn, "Updated", 65, SpmDbDfn.ColumnIdx.SwmAdmission_UpdateOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.ReadOnly = true;
break;
// Admission dates and times.
case SpmAdmission.Column.AdmissionFromDate:
SetAdmissionColDfn(columnDfn, "Admission", 70, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.AdmissionFromTime:
SetAdmissionColDfn(columnDfn, "Admission at", 75, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, ColumnAlignment.Center, DataValue.DataType.Time);
columnDfn.TimeFormat = "HH:mm";
break;
case SpmAdmission.Column.AdmissionFromDateTime:
SetAdmissionColDfn(columnDfn, "Admission", 100, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, ColumnAlignment.Center, DataValue.DataType.DateTime);
columnDfn.DateFormat = "d-MMM-yy";
columnDfn.TimeFormat = "HH:mm";
break;
case SpmAdmission.Column.AdmissionToDate:
SetAdmissionColDfn(columnDfn, "Discharge", 70, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.AdmissionToTime:
SetAdmissionColDfn(columnDfn, "Discharge at", 75, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo, ColumnAlignment.Center, DataValue.DataType.Time);
columnDfn.TimeFormat = "HH:mm";
break;
case SpmAdmission.Column.AdmissionToDateTime:
SetAdmissionColDfn(columnDfn, "Discharge", 100, SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo, ColumnAlignment.Center, DataValue.DataType.DateTime);
columnDfn.DateFormat = "d-MMM-yy";
columnDfn.TimeFormat = "HH:mm";
break;
case SpmAdmission.Column.Type:
SetAdmissionColDfn(columnDfn, "Type", 40, SpmDbDfn.ColumnIdx.SwmAdmission_Type, ColumnAlignment.Center);
break;
case SpmAdmission.Column.Type_Desc:
SetAdmissionColDfn(columnDfn, "Type", 90, SpmDbDfn.ColumnIdx.SwmAdmission_Type, ColumnAlignment.Center);
break;
// Dates.
case SpmAdmission.Column.DecisionToReferOn:
SetAdmissionColDfn(columnDfn, "DTR", 70, SpmDbDfn.ColumnIdx.SwmAdmission_DecisionToReferOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.ReferredOn:
SetAdmissionColDfn(columnDfn, "Referred", 70, SpmDbDfn.ColumnIdx.SwmAdmission_ReferredOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.BreechOn:
SetAdmissionColDfn(columnDfn, "Breech", 70, SpmDbDfn.ColumnIdx.SwmAdmission_BreechOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.DecisionToAdmitOn:
SetAdmissionColDfn(columnDfn, "DTA", 70, SpmDbDfn.ColumnIdx.SwmAdmission_DecisionToAdmitOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
// Patient.
case SpmAdmission.Column.Patient:
SetAdmissionColDfn(columnDfn, "Patient", 140, SpmDbDfn.ColumnIdx.SwmAdmission_PatientNo);
break;
case SpmAdmission.Column.PatientId:
SetAdmissionColDfn(columnDfn, "Patient Id", 80, SpmDbDfn.ColumnIdx.SwmAdmission_PatientId);
break;
case SpmAdmission.Column.PatientNo:
SetAdmissionColDfn(columnDfn, "Patient No", 80, SpmDbDfn.ColumnIdx.SwmAdmission_PatientNo);
break;
case SpmAdmission.Column.PatientName:
SetAdmissionColDfn(columnDfn, "Patient name", 140, SpmDbDfn.ColumnIdx.SwmAdmission_Surname);
break;
case SpmAdmission.Column.PatientSurname:
SetAdmissionColDfn(columnDfn, "Surname", 90, SpmDbDfn.ColumnIdx.SwmAdmission_Surname);
break;
case SpmAdmission.Column.PatientForename:
SetAdmissionColDfn(columnDfn, "Forename", 90, SpmDbDfn.ColumnIdx.SwmAdmission_Forename);
break;
case SpmAdmission.Column.BirthAge:
SetAdmissionColDfn(columnDfn, "DOB [Age]", 100, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center);
break;
case SpmAdmission.Column.BirthOn:
SetAdmissionColDfn(columnDfn, "DOB", 75, SpmDbDfn.ColumnIdx.SwmAdmission_BirthOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "dd-MMM-yyyy";
break;
case SpmAdmission.Column.Age:
SetAdmissionColDfn(columnDfn, "Age", 40, SpmDbDfn.ColumnIdx.SwmAdmission_Age, ColumnAlignment.Center);
break;
case SpmAdmission.Column.AgeOn:
SetAdmissionColDfn(columnDfn, "AgeOn", 75, SpmDbDfn.ColumnIdx.SwmAdmission_AgeOn, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.FacilityIdWard:
SetAdmissionColDfn(columnDfn, "WardId", 50, SpmDbDfn.ColumnIdx.SwmAdmission_FacilityIdWard, ColumnAlignment.Center);
break;
case SpmAdmission.Column.Ward:
SetAdmissionColDfn(columnDfn, "Ward", 50, SpmDbDfn.ColumnIdx.SwmAdmission_Ward, ColumnAlignment.Center);
break;
// Procedure.
case SpmAdmission.Column.ProcedureId:
SetAdmissionColDfn(columnDfn, "ProcedureId", 80, SpmDbDfn.ColumnIdx.SwmAdmission_ProcedureId, ColumnAlignment.Center);
break;
case SpmAdmission.Column.SpecialityCode:
SetAdmissionColDfn(columnDfn, "Speciality", 80, SpmDbDfn.ColumnIdx.SwmAdmission_SpecialityCode, ColumnAlignment.Center);
break;
case SpmAdmission.Column.Procedure:
SetAdmissionColDfn(columnDfn, "Procedure", 140, SpmDbDfn.ColumnIdx.SwmAdmission_ProcedureDesc);
break;
case SpmAdmission.Column.ComplexityCode:
SetAdmissionColDfn(columnDfn, "Complexity", 80, SpmDbDfn.ColumnIdx.SwmAdmission_ComplexityCode, ColumnAlignment.Center);
break;
case SpmAdmission.Column.ProcedureIndication:
SetAdmissionColDfn(columnDfn, "Indication", 90, SpmDbDfn.ColumnIdx.SwmAdmission_ProcedureIndication, ColumnAlignment.Left);
break;
case SpmAdmission.Column.DurationExp:
SetAdmissionColDfn(columnDfn, "Dur (exp)", 80, SpmDbDfn.ColumnIdx.SwmAdmission_DurationExp, ColumnAlignment.Center);
break;
case SpmAdmission.Column.DurationAct:
SetAdmissionColDfn(columnDfn, "Dur (act)", 80, SpmDbDfn.ColumnIdx.SwmAdmission_DurationAct, ColumnAlignment.Center);
break;
case SpmAdmission.Column.Anaesthetic:
SetAdmissionColDfn(columnDfn, "Anaesthetic", 90, SpmDbDfn.ColumnIdx.SwmAdmission_Anaesthetic);
break;
case SpmAdmission.Column.Position:
SetAdmissionColDfn(columnDfn, "Position", 80, SpmDbDfn.ColumnIdx.SwmAdmission_Position);
break;
case SpmAdmission.Column.SpecialEquipment:
SetAdmissionColDfn(columnDfn, "Special equipment", 140, SpmDbDfn.ColumnIdx.SwmAdmission_SpecialEquipment);
break;
case SpmAdmission.Column.AttendanceStatusDesc:
SetAdmissionColDfn(columnDfn, "Attendance", 90, SpmDbDfn.ColumnIdx.SwmAdmission_AttendanceStatus, ColumnAlignment.Center);
break;
case SpmAdmission.Column.ComfortScore:
SetAdmissionColDfn(columnDfn, "Comfort score", 90, SpmDbDfn.ColumnIdx.SwmAdmission_ComfortScore, ColumnAlignment.Center);
break;
// Admission timings.
case SpmAdmission.Column.TimeCalled:
SetAdmissionColDfn(columnDfn, "Time called", 80, SpmDbDfn.ColumnIdx.SwmAdmission_TimeCalled, ColumnAlignment.Center, DataValue.DataType.Time);
break;
case SpmAdmission.Column.TimeArrived:
SetAdmissionColDfn(columnDfn, "Time Arrived", 80, SpmDbDfn.ColumnIdx.SwmAdmission_TimeArrived, ColumnAlignment.Center, DataValue.DataType.Time);
break;
case SpmAdmission.Column.TimeAnaesStart:
SetAdmissionColDfn(columnDfn, "Time AnaesStart", 80, SpmDbDfn.ColumnIdx.SwmAdmission_TimeAnaesStart, ColumnAlignment.Center, DataValue.DataType.Time);
break;
case SpmAdmission.Column.TimeProcStart:
SetAdmissionColDfn(columnDfn, "Time ProcStart", 80, SpmDbDfn.ColumnIdx.SwmAdmission_TimeProcStart, ColumnAlignment.Center, DataValue.DataType.Time);
break;
case SpmAdmission.Column.TimeProcEnd:
SetAdmissionColDfn(columnDfn, "Time ProcEnd", 80, SpmDbDfn.ColumnIdx.SwmAdmission_TimeProcEnd, ColumnAlignment.Center, DataValue.DataType.Time);
break;
case SpmAdmission.Column.TimeInRecovery:
SetAdmissionColDfn(columnDfn, "Time InRecovery", 80, SpmDbDfn.ColumnIdx.SwmAdmission_TimeInRecovery, ColumnAlignment.Center, DataValue.DataType.Time);
break;
case SpmAdmission.Column.TimeInformDest:
SetAdmissionColDfn(columnDfn, "Time InformDest", 80, SpmDbDfn.ColumnIdx.SwmAdmission_TimeInformDest, ColumnAlignment.Center, DataValue.DataType.Time);
break;
case SpmAdmission.Column.TimeLeave:
SetAdmissionColDfn(columnDfn, "Time Leave", 80, SpmDbDfn.ColumnIdx.SwmAdmission_TimeLeave, ColumnAlignment.Center, DataValue.DataType.Time);
break;
// Cancelations.
case SpmAdmission.Column.CancelType:
SetAdmissionColDfn(columnDfn, "Cancel Type", 90, SpmDbDfn.ColumnIdx.SwmAdmission_CancelType, ColumnAlignment.Center);
break;
case SpmAdmission.Column.CancelTypeDesc:
SetAdmissionColDfn(columnDfn, "Cancel Type", 90, SpmDbDfn.ColumnIdx.SwmAdmission_CancelType, ColumnAlignment.Center);
break;
case SpmAdmission.Column.CancelDate:
SetAdmissionColDfn(columnDfn, "Cancelled", 70, SpmDbDfn.ColumnIdx.SwmAdmission_CancelDate, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.CancelElapsed:
SetAdmissionColDfn(columnDfn, "Elapsed", 60, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center);
break;
case SpmAdmission.Column.CancelReBookBy:
SetAdmissionColDfn(columnDfn, "ReBook by", 70, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Date);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.CancelReBookDue:
SetAdmissionColDfn(columnDfn, "Due", 32, SpmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.TriState);
columnDfn.TriStateFormat = ColumnTriStateFormat.Lights;
break;
case SpmAdmission.Column.CancelCount:
SetAdmissionColDfn(columnDfn, "Cancel#", 54, SpmDbDfn.ColumnIdx.SwmAdmission_CancelCount, ColumnAlignment.Center);
break;
// Facility.
case SpmAdmission.Column.Facility_Type:
SetAdmissionColDfn(columnDfn, "Facility Type", 80, SpmDbDfn.ColumnIdx.SwmFacility_Type, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
break;
case SpmAdmission.Column.Facility_TypeDesc:
SetAdmissionColDfn(columnDfn, "Facility Type", 100, SpmDbDfn.ColumnIdx.SwmFacility_Type, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
break;
case SpmAdmission.Column.Facility_Name:
SetAdmissionColDfn(columnDfn, "Facility Name", 100, SpmDbDfn.ColumnIdx.SwmFacility_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
break;
case SpmAdmission.Column.Facility_Desc:
SetAdmissionColDfn(columnDfn, "Facility Desc", 120, SpmDbDfn.ColumnIdx.SwmFacility_Description, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
break;
case SpmAdmission.Column.Facility_TemplateMapType:
SetAdmissionColDfn(columnDfn, "Facility Tmpl Map Type", 100, SpmDbDfn.ColumnIdx.SwmFacility_TemplateMapType, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
break;
case SpmAdmission.Column.Facility_ApplicFrom:
SetAdmissionColDfn(columnDfn, "Facility Applic From", 80, SpmDbDfn.ColumnIdx.SwmFacility_ApplicFrom, ColumnAlignment.Center, DataValue.DataType.Date, aliasAdmission_Facility, prefixAdmission_Facility);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.Facility_ApplicTo:
SetAdmissionColDfn(columnDfn, "Facility Applic To", 80, SpmDbDfn.ColumnIdx.SwmFacility_ApplicTo, ColumnAlignment.Center, DataValue.DataType.Date, aliasAdmission_Facility, prefixAdmission_Facility);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.Facility_Notes:
SetAdmissionColDfn(columnDfn, "Facility Notes", 200, SpmDbDfn.ColumnIdx.SwmFacility_Notes, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Facility, prefixAdmission_Facility);
break;
// Facility Template.
case SpmAdmission.Column.Template_WeekOfMonth:
SetAdmissionColDfn(columnDfn, "Tmpl Week of Month", 90, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_WeekOfMonth, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_DayOfWeek:
SetAdmissionColDfn(columnDfn, "Tmpl Day of Week", 90, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_DayOfWeek, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_ConsultantId:
SetAdmissionColDfn(columnDfn, "Tmpl Cons Id", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ConsultantId, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_ConsultantCode:
SetAdmissionColDfn(columnDfn, "Tmpl Cons", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ConsultantCode, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_SpecialityCode:
SetAdmissionColDfn(columnDfn, "Tmpl Spec", 60, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_SpecialityCode, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_StartAt:
SetAdmissionColDfn(columnDfn, "Template Id", 60, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_StartAt, ColumnAlignment.Center, DataValue.DataType.Time, aliasAdmission_Template, prefixAdmission_Template);
columnDfn.TimeFormat = "HH:mm";
break;
case SpmAdmission.Column.Template_FinishAt:
SetAdmissionColDfn(columnDfn, "Finish at", 60, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_FinishAt, ColumnAlignment.Center, DataValue.DataType.Time, aliasAdmission_Template, prefixAdmission_Template);
columnDfn.TimeFormat = "HH:mm";
break;
case SpmAdmission.Column.Template_CategoryDesc:
SetAdmissionColDfn(columnDfn, "Tmpl category", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Category, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_TypeDesc:
SetAdmissionColDfn(columnDfn, "Tmpl type", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Type, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_Name:
SetAdmissionColDfn(columnDfn, "Tmpl name", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_Desc:
SetAdmissionColDfn(columnDfn, "Tmpl desc", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Description, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_Group:
SetAdmissionColDfn(columnDfn, "Tmpl group", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Group, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
case SpmAdmission.Column.Template_ApplicFrom:
SetAdmissionColDfn(columnDfn, "Facility Applic From", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ApplicFrom, ColumnAlignment.Center, DataValue.DataType.Date, aliasAdmission_Template, prefixAdmission_Template);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.Template_ApplicTo:
SetAdmissionColDfn(columnDfn, "Facility Applic To", 80, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ApplicTo, ColumnAlignment.Center, DataValue.DataType.Date, aliasAdmission_Template, prefixAdmission_Template);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.Template_Notes:
SetAdmissionColDfn(columnDfn, "Tmpl Notes", 200, SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Notes, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Template, prefixAdmission_Template);
break;
// Facility Session.
case SpmAdmission.Column.Session_TemplateId:
SetAdmissionColDfn(columnDfn, "SessTmplId", 80, SpmDbDfn.ColumnIdx.SwmFacilitySession_FacilityTemplateId, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Session, prefixAdmission_Session);
break;
case SpmAdmission.Column.Session_ConsultantId:
SetAdmissionColDfn(columnDfn, "Sess Cons Id", 80, SpmDbDfn.ColumnIdx.SwmFacilitySession_ConsultantId, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Session, prefixAdmission_Session);
break;
case SpmAdmission.Column.Session_ConsultantCode:
SetAdmissionColDfn(columnDfn, "Sess Cons", 80, SpmDbDfn.ColumnIdx.SwmFacilitySession_ConsultantCode, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Session, prefixAdmission_Session);
break;
case SpmAdmission.Column.Session_SpecialityCode:
SetAdmissionColDfn(columnDfn, "Sess Spec", 60, SpmDbDfn.ColumnIdx.SwmFacilitySession_SpecialityCode, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Session, prefixAdmission_Session);
break;
case SpmAdmission.Column.Session_StartAt:
SetAdmissionColDfn(columnDfn, "Session Id", 60, SpmDbDfn.ColumnIdx.SwmFacilitySession_StartAt, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasAdmission_Session, prefixAdmission_Session);
columnDfn.TimeFormat = "HH:mm";
break;
case SpmAdmission.Column.Session_FinishAt:
SetAdmissionColDfn(columnDfn, "Finish at", 60, SpmDbDfn.ColumnIdx.SwmFacilitySession_FinishAt, ColumnAlignment.Center, DataValue.DataType.DateTime, aliasAdmission_Session, prefixAdmission_Session);
columnDfn.TimeFormat = "HH:mm";
break;
case SpmAdmission.Column.Session_Name:
SetAdmissionColDfn(columnDfn, "Sess Name", 80, SpmDbDfn.ColumnIdx.SwmFacilitySession_Name, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Session, prefixAdmission_Session);
break;
case SpmAdmission.Column.Session_Desc:
SetAdmissionColDfn(columnDfn, "Sess Desc", 80, SpmDbDfn.ColumnIdx.SwmFacilitySession_Description, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Session, prefixAdmission_Session);
break;
case SpmAdmission.Column.Session_Flags:
SetAdmissionColDfn(columnDfn, "Sess Flags", 50, SpmDbDfn.ColumnIdx.SwmFacilitySession_Flags, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Session, prefixAdmission_Session);
break;
case SpmAdmission.Column.Session_Notes:
SetAdmissionColDfn(columnDfn, "Sess Notes", 200, SpmDbDfn.ColumnIdx.SwmFacilitySession_Notes, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Session, prefixAdmission_Session);
break;
// Session definition (combined template and date-specific session info).
case SpmAdmission.Column.SessionDfn_Summary:
SetAdmissionColDfn(columnDfn, "Session", 160, SpmDbDfn.ColumnIdx.Unknown);
break;
case SpmAdmission.Column.SessionDfn_Name:
SetAdmissionColDfn(columnDfn, "Session", 120, SpmDbDfn.ColumnIdx.Unknown);
break;
// Patient.
case SpmAdmission.Column.Patient_PatientNo:
SetAdmissionColDfn(columnDfn, "Pat Patient NO", 90, SpmDbDfn.ColumnIdx.SwmPatient_PatientNo, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Patient, prefixAdmission_Patient);
break;
case SpmAdmission.Column.Patient_Surname:
SetAdmissionColDfn(columnDfn, "Pat Surname", 100, SpmDbDfn.ColumnIdx.SwmPatient_Surname, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Patient, prefixAdmission_Patient);
break;
case SpmAdmission.Column.Patient_Forename:
SetAdmissionColDfn(columnDfn, "Pat Forename", 100, SpmDbDfn.ColumnIdx.SwmPatient_Forename, ColumnAlignment.Default, DataValue.DataType.String, aliasAdmission_Patient, prefixAdmission_Patient);
break;
case SpmAdmission.Column.Patient_BirthOn:
SetAdmissionColDfn(columnDfn, "Pat DOB", 80, SpmDbDfn.ColumnIdx.SwmPatient_BirthOn, ColumnAlignment.Center, DataValue.DataType.Date, aliasAdmission_Patient, prefixAdmission_Patient);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.Patient_Age:
SetAdmissionColDfn(columnDfn, "Pat Age", 80, SpmDbDfn.ColumnIdx.SwmPatient_Age, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_Patient, prefixAdmission_Patient);
break;
case SpmAdmission.Column.Patient_AgeOn:
SetAdmissionColDfn(columnDfn, "Pat Age On", 80, SpmDbDfn.ColumnIdx.SwmPatient_AgeOn, ColumnAlignment.Center, DataValue.DataType.Date, aliasAdmission_Patient, prefixAdmission_Patient);
columnDfn.DateFormat = "d-MMM-yy";
break;
case SpmAdmission.Column.Role_Consultant_Operating_Code:
SetAdmissionColDfn(columnDfn, "Cons. [opn]", 100, SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_AdmRoleConsOpn, prefixAdmission_AdmRoleConsOpn);
break;
case SpmAdmission.Column.Role_Consultant_Referring_Code:
SetAdmissionColDfn(columnDfn, "Cons. [ref]", 100, SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_AdmRoleConsRef, prefixAdmission_AdmRoleConsRef);
break;
//eSwmAdmColRole_Consultant_Attending_Code:
case SpmAdmission.Column.Role_Surgeon_Operating_Code:
SetAdmissionColDfn(columnDfn, "Surg. [opn]", 100, SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_AdmRoleSurgOpn, prefixAdmission_AdmRoleSurgOpn);
break;
//eSwmAdmColRole_Surgeon_Referring_Code:
//eSwmAdmColRole_Surgeon_Attending_Code:
case SpmAdmission.Column.Role_Anaesthetist_Operating_Code:
SetAdmissionColDfn(columnDfn, "Anaesth. [opn]", 100, SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode, ColumnAlignment.Center, DataValue.DataType.String, aliasAdmission_AdmRoleAnaeOpn, prefixAdmission_AdmRoleAnaeOpn);
break;
}
if (!String.IsNullOrEmpty(caption))
columnDfn.Caption = caption;
if (width > 0)
columnDfn.Width = width;
return columnDfn;
}
//-------------------------------------------------------------------
// Admission query filter.
public override List<string> GetAdmissionQueryFilter(SpmAdmission.Params prm)
{
List<String> filters = new List<String>();
// Admission Id.
String includedIds = prm.IncludedIds.Concat(",");
String colAdmissionId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Id, aliasAdmission);
if (!includedIds.IsEmpty())
filters.Add(colAdmissionId + " IN (" + includedIds + ")");
String excludedIds = prm.ExcludedIds.Concat(",");
if (!excludedIds.IsEmpty())
filters.Add(colAdmissionId + " NOT IN (" + excludedIds + ")");
// Template based filters - Department Id and Facility type.
List<String> filterDeptIdFacType = new List<String>();
if (SysId.IsValid(prm.DepartmentId) || prm.FacilityType > Spm.FacilityType.Unknown)
{
if (SysId.IsValid(prm.DepartmentId))
{
// Facility must belong to the specified department.
String colFacility_DepartmentId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_DepartmentId, aliasAdmission_Facility);
filterDeptIdFacType.Add(colFacility_DepartmentId + "=" + prm.DepartmentId.ToString());
}
if (prm.FacilityType > Spm.FacilityType.Unknown)
{
// Facility must be of the specified type.
String colFacilityType = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Type, aliasAdmission_Facility);
filterDeptIdFacType.Add(colFacilityType + "=" + ((int)prm.FacilityType).ToString());
}
else
{
// Sub-query to retrict to facilities that belong to this department.
String colFacilityId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Id, aliasAdmission_Facility);
DbQuery qry = new DbQuery(Database.DbmsType);
qry.Tables.Add(new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacility), aliasAdmission_Facility));
qry.Columns.Add(colFacilityId);
qry.Filters.AddRange(filterDeptIdFacType);
qry.Filters.Add(colFacilityId + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId, aliasAdmission));
filters.Add("EXISTS (" + qry.BuildQuery() + ")");
}
}
// Facility.
String colAdmisssion_FacilityId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId, aliasAdmission);
if (SysId.IsValid(prm.FacilityId))
filters.Add(colAdmisssion_FacilityId + "=" + prm.FacilityId.ToString());
// Facility template.
String colAdmission_FacilityTemplateId = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId, aliasAdmission);
if (SysId.IsValid(prm.FacilityTemplateId))
filters.Add(colAdmission_FacilityTemplateId + "=" + prm.FacilityTemplateId.ToString());
// Admission date.
String colAdmissionFrom = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, aliasAdmission);
String colAdmissionTo = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo, aliasAdmission);
if (DateUtil.IsValid(prm.Admission))
{
filters.Add(colAdmissionFrom + ">=" + DbQuery.FormatDateForCondition(prm.Admission));
filters.Add(colAdmissionTo + "<" + DbQuery.FormatDateForCondition(prm.Admission.AddDays(1)));
}
else
{
// Has a date range been specified.
if (DateUtil.IsValid(prm.AdmissionFrom))
filters.Add(colAdmissionTo + ">=" + DbQuery.FormatDateForCondition(prm.AdmissionFrom));
if (DateUtil.IsValid(prm.AdmissionTo))
filters.Add(colAdmissionFrom + "<" + DbQuery.FormatDateForCondition(prm.AdmissionTo.AddDays(1)));
}
// Admission sequence.
String colSeq = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Seq, aliasAdmission);
if (prm.MinSeq > 0)
filters.Add(colSeq + ">=" + ((int)prm.MinSeq).ToString());
if (prm.MaxSeq > 0)
filters.Add(colSeq + "<=" + ((int)prm.MaxSeq).ToString());
// Cancel type.
String colCancelType = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_CancelType, aliasAdmission);
if (prm.CancelType == Spm.AdmissionCancelType.Cancelled)
filters.Add(colCancelType + "<>" + ((int)Spm.AdmissionCancelType.None).ToString());
else if (prm.CancelType > Spm.AdmissionCancelType.Unknown)
filters.Add(colCancelType + "=" + ((int)prm.CancelType).ToString());
// Patient number.
String colPatientNo = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_PatientNo, aliasAdmission);
String patientNoFull = DbQuery.FormatForCondition(prm.PatientNoFull);
String patientNoPartial = DbQuery.FormatForCondition(prm.PatientNoPartial);
if (!StringUtil.IsEmpty(patientNoFull))
filters.Add(colPatientNo + "='" + patientNoFull + "'");
else if (!StringUtil.IsEmpty(patientNoPartial))
filters.Add(DbQuery.FormatFn_Left(colPatientNo, prm.PatientNoPartial.Length) + "='" + patientNoPartial + "'");
// Patient surname.
String colPatientSurname = SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Surname, aliasAdmission);
String patientSurname = DbQuery.FormatForCondition(prm.PatientSurname);
if (!StringUtil.IsEmpty(patientSurname))
filters.Add(DbQuery.FormatFn_Left(colPatientSurname, prm.PatientSurname.Length) + "='" + patientSurname + "'");
//---------------------------------------------------------------
// Common Properties.
if (filters.Count < 1) filters.Add("1=1");
return filters;
}
//-------------------------------------------------------------------
// Admission sort columns.
public List<String> GetAdmissionSortColumns(SpmAdmission.Params prm)
{
// Sort sequence:
List<String> sortColumnNames = new List<String>();
foreach (var columnDfn in prm.SortColumns)
{
// Need to ensure correct alias used for Admission columns in case of conflict.
String sortCol = String.Empty;
if (SpmDbDfn.GetTableForColumn((SpmDbDfn.ColumnIdx)columnDfn.DbColumn) == SpmDbDfn.TableIdx.SwmAdmission)
{
sortCol = SpmDbDfn.GetColumnNameQual((SpmDbDfn.ColumnIdx)columnDfn.DbColumn, aliasAdmission);
}
else
{
sortCol = columnDfn.DataName;
if (!StringUtil.IsEmpty(columnDfn.SortDataName))
sortCol = columnDfn.SortDataName;
}
if (!sortCol.IsEmpty())
{
DbOrderByNullMode orderByNullMode = DbOrderByNullMode.Default; // eSaOrderByDemoteNulls, eSaOrderByPromoteNulls
sortColumnNames.Add(DbQuery.FormatForOrderBy(sortCol, columnDfn.SortAscending, orderByNullMode).Concat(", "));
}
}
sortColumnNames.RemoveBlanks();
if (sortColumnNames.IsEmpty())
{
// Default sort columns:
//sortColumnNames.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Type, aliasAdmission) + " ASC");
}
return sortColumnNames;
}
//-------------------------------------------------------------------
// Admission count.
private long GetAdmissionCount(String filter)
{
ClearErrorState();
return Database.GetRowCount(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission) + " As " + aliasAdmission, filter);
}
public override long GetAdmissionCount(SpmAdmission.Params prm)
{
ClearErrorState();
return GetAdmissionCount(GetAdmissionQueryFilter(prm).Concat(" AND ", "(", ")"));
}
//-------------------------------------------------------------------
// Admission list.
public override List<SpmAdmission> GetAdmissionList(SpmAdmission.Params prm)
{
List<SpmAdmission> Admissiones = new List<SpmAdmission>();
DbQuery qry = new DbQuery(Database.DbmsType);
qry.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission), aliasAdmission);
qry.Columns.AddRange(SwmAdmission_Db.Fields);
qry.Filters.AddRange(GetAdmissionQueryFilter(prm));
// Query data.
using (var dbConnection = Database.CreateConnection())
using (var dbCommand = dbConnection.CreateCommand())
{
try
{
dbConnection.Open();
dbCommand.CommandText = qry.BuildQuery();
using (DbDataReader dbDataReader = dbCommand.ExecuteReader())
{
while (dbDataReader.Read())
{
SwmAdmission_Db dbAdmission = new SwmAdmission_Db(DbInfo);
dbAdmission.PopulateFrom(dbDataReader);
Admissiones.Add(CreateAdmission(dbAdmission));
}
}
}
catch (Exception exc)
{
Logger.Warn(GetType().Name + ".GetAdmissionList\n\tQuery: " + dbCommand.CommandText + "\n\tException: " + exc.Message);
}
}
return Admissiones;
}
//-------------------------------------------------------------------
// Admission query execution.
public override DbResultSet ExecuteAdmissionQuery(List<ColumnDfn> columns, SpmAdmission.Params prm)
{
ClearErrorState();
//---------------------------------------------------------------
// Construct query.
DbQuery query = new DbQuery(Database.DbmsType);
query.Tables.Add(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission), aliasAdmission);
// Admission Properties - add columns as defined in query list.
if (columns.HasId((int)SpmAdmission.Column.Id))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Id, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.FacilityId))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId));
if (columns.HasId((int)SpmAdmission.Column.TemplateId))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId));
if (columns.HasId((int)SpmAdmission.Column.AdmissionFromDate) || columns.HasId((int)SpmAdmission.Column.AdmissionFromDateTime) || columns.HasId((int)SpmAdmission.Column.AdmissionFromTime))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.AdmissionToDate) || columns.HasId((int)SpmAdmission.Column.AdmissionToDateTime) || columns.HasId((int)SpmAdmission.Column.AdmissionToTime))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionTo, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.Seq))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Seq, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.Type))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Type, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.PatientId))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_PatientId));
if (columns.HasId((int)SpmAdmission.Column.PatientNo))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_PatientNo));
if (columns.HasId((int)SpmAdmission.Column.PatientSurname))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Surname, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.PatientForename))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Forename, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.BirthOn) || columns.HasId((int)SpmAdmission.Column.BirthAge))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_BirthOn));
if (columns.HasId((int)SpmAdmission.Column.Age) || columns.HasId((int)SpmAdmission.Column.BirthAge))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Age));
if (columns.HasId((int)SpmAdmission.Column.AgeOn) || columns.HasId((int)SpmAdmission.Column.BirthAge))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_AgeOn));
if (columns.HasId((int)SpmAdmission.Column.FacilityIdWard) || columns.HasId((int)SpmAdmission.Column.Ward))
{
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityIdWard));
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Ward));
}
if (columns.HasId((int)SpmAdmission.Column.SpecialityCode)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_SpecialityCode));
if (columns.HasId((int)SpmAdmission.Column.ProcedureId)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_ProcedureId));
if (columns.HasId((int)SpmAdmission.Column.Procedure)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_ProcedureDesc));
if (columns.HasId((int)SpmAdmission.Column.ComplexityCode)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_ComplexityCode));
if (columns.HasId((int)SpmAdmission.Column.ProcedureIndication)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_ProcedureIndication));
if (columns.HasId((int)SpmAdmission.Column.DurationExp)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_DurationExp));
if (columns.HasId((int)SpmAdmission.Column.DurationAct)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_DurationAct));
if (columns.HasId((int)SpmAdmission.Column.Anaesthetic)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Anaesthetic));
if (columns.HasId((int)SpmAdmission.Column.Position)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Position));
if (columns.HasId((int)SpmAdmission.Column.SpecialEquipment)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_SpecialEquipment));
if (columns.HasId((int)SpmAdmission.Column.AttendanceStatusDesc)) query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_AttendanceStatus));
if (columns.HasId((int)SpmAdmission.Column.ComfortScore) && Database.ColumnExists(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmission), SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_ComfortScore)))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_ComfortScore));
// Common Properties
if (columns.HasId((int)SpmAdmission.Column.Notes))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Notes, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.Status) || columns.HasId((int)SpmAdmission.Column.Status_Desc) || columns.HasId((int)SpmAdmission.Column.Status_Ind))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Status, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.CreateOn_Date))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_CreateOn, aliasAdmission));
if (columns.HasId((int)SpmAdmission.Column.UpdateOn_Date))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_UpdateOn, aliasAdmission));
// Admission cancellation status.
if (columns.HasId((int)SpmAdmission.Column.CancelType) ||
columns.HasId((int)SpmAdmission.Column.CancelTypeDesc) ||
columns.HasId((int)SpmAdmission.Column.CancelDate) ||
columns.HasId((int)SpmAdmission.Column.CancelElapsed) ||
columns.HasId((int)SpmAdmission.Column.CancelReBookBy) ||
columns.HasId((int)SpmAdmission.Column.CancelReBookDue) ||
columns.HasId((int)SpmAdmission.Column.CancelCount))
{
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_CancelType));
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_CancelDate));
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_CancelCount));
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_CancelCode));
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_CancelReason));
}
if (columns.HasId((int)SpmAdmission.Column.Notes))
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Notes));
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Flags));
query.Columns.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Status));
// Facility.
bool hasFacilityCols = false;
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmission.Column.Facility_Type);
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmission.Column.Facility_Name);
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmission.Column.Facility_Desc);
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmission.Column.Facility_TypeDesc);
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmission.Column.Facility_TemplateMapType);
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmission.Column.Facility_ApplicFrom);
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmission.Column.Facility_ApplicTo);
if (!hasFacilityCols) hasFacilityCols = columns.HasId((int)SpmAdmission.Column.Facility_Notes);
if (hasFacilityCols)
{
// Join to the Facility.
DbQueryJoin joinFacility = new DbQueryJoin(DbJoinType.LeftOuter);
joinFacility.Table = new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacility), aliasAdmission_Facility);
joinFacility.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacility_Id, aliasAdmission_Facility) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityId));
query.Joins.Add(joinFacility);
// Add the Facility columns.
List<SpmDbDfn.ColumnIdx> facilityCols = new List<SpmDbDfn.ColumnIdx>();
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_Type);
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_Name);
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_Description);
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_TemplateMapType);
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_ApplicFrom);
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_ApplicTo);
facilityCols.Add(SpmDbDfn.ColumnIdx.SwmFacility_Notes);
foreach (SpmDbDfn.ColumnIdx dbColumn in facilityCols)
query.Columns.Add(SpmDbDfn.GetColumnNameQual(dbColumn, aliasAdmission_Facility), prefixAdmission_Facility + SpmDbDfn.GetColumnName(dbColumn, false));
}
// Template.
bool hasTemplateCols = false;
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_WeekOfMonth);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_DayOfWeek);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_ConsultantId);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_ConsultantCode);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_SpecialityCode);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_StartAt);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_FinishAt);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_CategoryDesc);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_TypeDesc);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_Name);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_Desc);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_Group);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_ApplicFrom);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_ApplicTo);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.Template_Notes);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.SessionDfn_Summary);
if (!hasTemplateCols) hasTemplateCols = columns.HasId((int)SpmAdmission.Column.SessionDfn_Name);
if (hasTemplateCols)
{
// Join to the Template table.
DbQueryJoin joinTemplate = new DbQueryJoin(DbJoinType.LeftOuter);
joinTemplate.Table = new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacilityTemplate), aliasAdmission_Template);
joinTemplate.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Id, aliasAdmission_Template) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId));
query.Joins.Add(joinTemplate);
// Add the template columns.
List<SpmDbDfn.ColumnIdx> templateCols = new List<SpmDbDfn.ColumnIdx>();
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_WeekOfMonth);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_DayOfWeek);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ConsultantId);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ConsultantCode);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_SpecialityCode);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_StartAt);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_FinishAt);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Category);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Type);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Name);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Description);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Group);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ApplicFrom);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_ApplicTo);
templateCols.Add(SpmDbDfn.ColumnIdx.SwmFacilityTemplate_Notes);
foreach (SpmDbDfn.ColumnIdx dbColumn in templateCols)
query.Columns.Add(SpmDbDfn.GetColumnNameQual(dbColumn, aliasAdmission_Template), prefixAdmission_Template + SpmDbDfn.GetColumnName(dbColumn, false));
}
// Session.
bool hasSessionCols = false;
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_TemplateId);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_ConsultantId);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_ConsultantCode);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_SpecialityCode);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_StartAt);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_FinishAt);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_Name);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_Desc);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_Flags);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.Session_Notes);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.SessionDfn_Summary);
if (!hasSessionCols) hasSessionCols = columns.HasId((int)SpmAdmission.Column.SessionDfn_Name);
if (hasSessionCols)
{
// Join to the Session table.
DbQueryJoin joinTmpl = new DbQueryJoin(DbJoinType.LeftOuter);
joinTmpl.Table = new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmFacilitySession), aliasAdmission_Session);
joinTmpl.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilitySession_FacilityTemplateId, aliasAdmission_Session) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_FacilityTemplateId));
joinTmpl.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmFacilitySession_Session, aliasAdmission_Session) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_AdmissionFrom));
query.Joins.Add(joinTmpl);
// Add the Session columns.
List<SpmDbDfn.ColumnIdx> sessionCols = new List<SpmDbDfn.ColumnIdx>();
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_FacilityTemplateId);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_Name);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_Description);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_ConsultantId);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_ConsultantCode);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_SpecialityCode);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_StartAt);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_FinishAt);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_Flags);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmFacilitySession_Notes);
foreach (SpmDbDfn.ColumnIdx dbColumn in sessionCols)
query.Columns.Add(SpmDbDfn.GetColumnNameQual(dbColumn, aliasAdmission_Session), prefixAdmission_Session + SpmDbDfn.GetColumnName(dbColumn, false));
}
// Patient details.
bool hasPatientCols = false;
if (!hasPatientCols) hasPatientCols = columns.HasId((int)SpmAdmission.Column.Patient_PatientNo);
if (!hasPatientCols) hasPatientCols = columns.HasId((int)SpmAdmission.Column.Patient_Surname);
if (!hasPatientCols) hasPatientCols = columns.HasId((int)SpmAdmission.Column.Patient_Forename);
if (!hasPatientCols) hasPatientCols = columns.HasId((int)SpmAdmission.Column.Patient_BirthOn);
if (!hasPatientCols) hasPatientCols = columns.HasId((int)SpmAdmission.Column.Patient_Age);
if (!hasPatientCols) hasPatientCols = columns.HasId((int)SpmAdmission.Column.Patient_AgeOn);
if (hasPatientCols)
{
// Join to the Patient table.
DbQueryJoin joinPatient = new DbQueryJoin(DbJoinType.LeftOuter);
joinPatient.Table = new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmPatient), aliasAdmission_Patient);
joinPatient.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmPatient_Id, aliasAdmission_Patient) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_PatientId));
query.Joins.Add(joinPatient);
// Add the Patient columns.
List<SpmDbDfn.ColumnIdx> sessionCols = new List<SpmDbDfn.ColumnIdx>();
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmPatient_PatientNo);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmPatient_Surname);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmPatient_Forename);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmPatient_BirthOn);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmPatient_Age);
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmPatient_AgeOn);
foreach (SpmDbDfn.ColumnIdx dbColumn in sessionCols)
query.Columns.Add(SpmDbDfn.GetColumnNameQual(dbColumn, aliasAdmission_Patient), prefixAdmission_Patient + SpmDbDfn.GetColumnName(dbColumn, false));
}
// Admission Roles - Operating Consultant.
bool bHasAdmRoleConsOpnCols = false;
if (!bHasAdmRoleConsOpnCols) bHasAdmRoleConsOpnCols = columns.HasId((int)SpmAdmission.Column.Role_Consultant_Operating_Code);
if (bHasAdmRoleConsOpnCols)
{
// Join to the Admission Role table.
DbQueryJoin joinAdmRole = new DbQueryJoin(DbJoinType.LeftOuter);
joinAdmRole.Table = new StringPair(SpmDbDfn.GetTableName(SpmDbDfn.TableIdx.SwmAdmissionRole), aliasAdmission_AdmRoleConsOpn);
joinAdmRole.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_AdmissionId, aliasAdmission_AdmRoleConsOpn) + "=" + SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmission_Id));
joinAdmRole.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Role, aliasAdmission_AdmRoleConsOpn) + "=" + ((int)Spm.EmployeeRole.Consultant).ToString());
joinAdmRole.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Seq, aliasAdmission_AdmRoleConsOpn) + "=1");
joinAdmRole.Filters.Add(SpmDbDfn.GetColumnNameQual(SpmDbDfn.ColumnIdx.SwmAdmissionRole_Category, aliasAdmission_AdmRoleConsOpn) + " In (0," + ((int)Spm.EmployeeRoleCategory.Operating).ToString() + ")");
query.Joins.Add(joinAdmRole);
// Add the Patient columns.
List<SpmDbDfn.ColumnIdx> sessionCols = new List<SpmDbDfn.ColumnIdx>();
sessionCols.Add(SpmDbDfn.ColumnIdx.SwmAdmissionRole_EmployeeCode);
foreach (SpmDbDfn.ColumnIdx dbColumn in sessionCols)
query.Columns.Add(SpmDbDfn.GetColumnNameQual(dbColumn, aliasAdmission_AdmRoleConsOpn), prefixAdmission_AdmRoleConsOpn + SpmDbDfn.GetColumnName(dbColumn, false));
}
//---------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetAdmissionQueryFilter(prm));
if (prm.IncludedIds.Count != 1)
{
// Configure sort sequence.
foreach (String sortColumn in GetAdmissionSortColumns(prm))
query.OrderBy.Add(sortColumn);
}
//---------------------------------------------------------------
//return new DbResultSet_DataTableReader(Database, query.BuildQuery());
return new Sarand.Win.Dbas.Data.DbResultSet_DataReader(Database, query.BuildQuery());
}
//-------------------------------------------------------------------
}
//=======================================================================
}