1299 lines
72 KiB
C#
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());
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|