using System; using System.Collections.Generic; using System.Text; using Sarand.Core.App; using Sarand.Core.Base; using Sarand.Core.Bus; using Sarand.Core.Dbas.Base; using Sarand.PatientMgr.Core.App; using Sarand.PatientMgr.Core.Bus; namespace Sarand.PatientMgr.Core.Mgr { //======================================================================= partial class SpmDepartmentMgr { //******************************************************************* // F a c i l i t y S e s s i o n //******************************************************************* // Utilities. //------------------------------------------------------------------- // Create facilitySession. public abstract SpmFacilitySession CreateFacilitySession(SysId facilityId, SysId facilityTemplateId, DateTime sessionDate); //------------------------------------------------------------------- // FacilitySession exists. public bool FacilitySessionExistsById(SysId facilitySessionId) { ClearErrorState(); if (!SysId.IsValid(facilitySessionId)) return false; SpmFacilitySession.Params prmFacilitySession = new SpmFacilitySession.Params(); prmFacilitySession.IncludedIds.Add(facilitySessionId); prmFacilitySession.StatusCat = SpmFacilitySession.StatusCat.Any; return GetFacilitySessionCount(prmFacilitySession) == 1; } //------------------------------------------------------------------- // Get facilitySession. public abstract SpmFacilitySession GetFacilitySession(SpmFacilitySession.Params prm); public SpmFacilitySession GetFacilitySessionById(SysId facilitySessionId) { ClearErrorState(); if (!SysId.IsValid(facilitySessionId)) return null; SpmFacilitySession.Params prmFacilitySession = new SpmFacilitySession.Params(); prmFacilitySession.IncludedIds.Add(facilitySessionId); prmFacilitySession.StatusCat = SpmFacilitySession.StatusCat.Any; return GetFacilitySession(prmFacilitySession); } //------------------------------------------------------------------- // Validate facilitySession data. public bool IsValidFacilitySession(SpmFacilitySession facilitySession) { ClearErrorState(); if (facilitySession == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidFacilitySessionData(facilitySession.GetData(), new SpmFacilitySession.ErrField()); } public virtual bool IsValidFacilitySessionData(SpmFacilitySession.Data data, SpmFacilitySession.ErrField errField) { ClearErrorState(); // FacilitySession properties. if (errField.Name != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Name, "Name", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_Name), true)) { errField.Name = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Description != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Description, "Description", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_Description), true)) { errField.Description = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.SessionCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SessionCode, "SessionCode", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_SessionCode), true)) { errField.SessionCode = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.ConsultantCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ConsultantCode, "ConsultantCode", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_ConsultantCode), true)) { errField.ConsultantCode = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.SpecialityCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.SpecialityCode, "SpecialityCode", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_SpecialityCode), true)) { errField.SpecialityCode = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (!IsValidValue(data.Notes, "notes", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_Notes))) { errField.Notes = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Status != SacsHierarchyItem.ValidValue.Ignore) { if (!IsValidValue(SacsSystem.GetStatusCode(data.Status), "status", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SpmFacilitySession.FacilitySessionStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } return true; } //------------------------------------------------------------------- // FacilitySession database interface. public abstract bool InsertFacilitySession(SpmFacilitySession facilitySession, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateFacilitySession(SpmFacilitySession facilitySession, DbUpdateInfo dbUpdateInfo); public virtual bool FacilitySessionCanBeDeleted(SpmFacilitySession facilitySession) { ClearErrorState(); return true; } public abstract bool DeleteFacilitySession(SpmFacilitySession facilitySession, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // FacilitySession list. public abstract ColumnDfn GetFacilitySessionColumnDfn(SpmFacilitySession.Column columnId, String caption = "", int width = 0); public abstract List GetFacilitySessionQueryFilter(SpmFacilitySession.Params prm); public abstract long GetFacilitySessionCount(SpmFacilitySession.Params prm); public abstract List GetFacilitySessionList(SpmFacilitySession.Params prm); public abstract DbResultSet ExecuteFacilitySessionQuery(List columns, SpmFacilitySession.Params prm); //------------------------------------------------------------------- // D a t a V a l u e s //------------------------------------------------------------------- public DataValue GetFacilitySessionDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SpmFacilitySession.Column)column.Id) { // Notes. case SpmFacilitySession.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; // Status. case SpmFacilitySession.Column.Status_Desc: case SpmFacilitySession.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SpmFacilitySession.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SpmFacilitySession.Column.Status_Ind) value = new DataValue(SpmFacilitySession.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }