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 SpmInstitutionMgr { //******************************************************************* // O p e r a t i o n //******************************************************************* // Utilities. //------------------------------------------------------------------- // Create operation. public abstract SpmOperation CreateOperation(SysId departmentId, SysId institutionId); //------------------------------------------------------------------- // Operation exists. public bool OperationExistsById(SysId operationId) { ClearErrorState(); if (!SysId.IsValid(operationId)) return false; SpmOperation.Params prmOperation = new SpmOperation.Params(); prmOperation.IncludedIds.Add(operationId); prmOperation.StatusCat = SpmOperation.StatusCat.Any; return GetOperationCount(prmOperation) == 1; } //------------------------------------------------------------------- // Get operation. public abstract SpmOperation GetOperation(SpmOperation.Params prm); public SpmOperation GetOperationById(SysId operationId) { ClearErrorState(); if (!SysId.IsValid(operationId)) return null; SpmOperation.Params prmOperation = new SpmOperation.Params(); prmOperation.IncludedIds.Add(operationId); prmOperation.StatusCat = SpmOperation.StatusCat.Any; return GetOperation(prmOperation); } public SpmOperation GetOperationByCode(String code) { ClearErrorState(); if (!StringUtil.IsEmpty(code)) return null; SpmOperation.Params prmOperation = new SpmOperation.Params(); prmOperation.CodePartial = code; prmOperation.StatusCat = SpmOperation.StatusCat.Any; return GetOperation(prmOperation); } //------------------------------------------------------------------- // Validate operation data. public bool IsValidOperation(SpmOperation operation) { ClearErrorState(); if (operation == null) return SetErrorState(ErrorMessage.ItemNotSpecified); return IsValidOperationData(operation.GetData(), new SpmOperation.ErrField()); } public virtual bool IsValidOperationData(SpmOperation.Data data, SpmOperation.ErrField errField) { ClearErrorState(); // Operation properties. if (errField.Code != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Code, "Code", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmOperation_Code), true)) { errField.Code = SacsHierarchyItem.ValidValue.Invalid; return false; } if (errField.Description != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Description, "Description", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmOperation_Description), true)) { errField.Description = SacsHierarchyItem.ValidValue.Invalid; return false; } // Common properties. if (!IsValidValue(data.Notes, "notes", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmOperation_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.SwmOperation_Status), true, true)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return false; } if (!SpmOperation.OperationStatuses.Contains(data.Status)) { errField.Status = SacsHierarchyItem.ValidValue.Invalid; return SetErrorState(ErrorMessage.InvalidStatus); } } return true; } //------------------------------------------------------------------- // Operation database interface. public abstract bool InsertOperation(SpmOperation operation, DbUpdateInfo dbUpdateInfo); public abstract bool UpdateOperation(SpmOperation operation, DbUpdateInfo dbUpdateInfo); public virtual bool OperationCanBeDeleted(SpmOperation operation) { ClearErrorState(); return true; } public abstract bool DeleteOperation(SpmOperation operation, DbUpdateInfo dbUpdateInfo); //------------------------------------------------------------------- // Operation list. public abstract ColumnDfn GetOperationColumnDfn(SpmOperation.Column columnId, String caption = "", int width = 0); public abstract List GetOperationQueryFilter(SpmOperation.Params prm); public abstract long GetOperationCount(SpmOperation.Params prm); public abstract List GetOperationList(SpmOperation.Params prm); public abstract DbResultSet ExecuteOperationQuery(List columns, SpmOperation.Params prm); //------------------------------------------------------------------- // D a t a V a l u e s //------------------------------------------------------------------- public DataValue GetOperationDataValue(ColumnDfn column, NamedValue.Map values) { DataValue value = new DataValue(); switch ((SpmOperation.Column)column.Id) { // Notes. case SpmOperation.Column.Notes: value = new DataValue(SacsHierarchyItem.FormatForDisplay(values.GetValue(column.DataName).ToString(), 200)); break; // Status. case SpmOperation.Column.Status_Desc: case SpmOperation.Column.Status_Ind: { String statusCode = values.GetValue(column.DataName).ToString(); SaStatus status = SacsSystem.GetStatusForCode(statusCode); if (column.Id == (int)SpmOperation.Column.Status_Desc) value = new DataValue(SacsSystem.GetStatusDescForCode(statusCode)); else if (column.Id == (int)SpmOperation.Column.Status_Ind) value = new DataValue(SpmOperation.GetStatusTriState(status)); } break; //----------------------------------------------------------- } return value; } //------------------------------------------------------------------- } //======================================================================= }