SB 16-May-2019
This commit is contained in:
@@ -0,0 +1,313 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.Bus
|
||||
{
|
||||
//=======================================================================
|
||||
public abstract class SpmAdmissionAction : SacsHierarchyItem
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Columns.
|
||||
public enum Column
|
||||
{
|
||||
Pos,
|
||||
Id,
|
||||
AdmissionId,
|
||||
Type,
|
||||
Type_Desc,
|
||||
// Admission details.
|
||||
Admission_FacilityId,
|
||||
Admission_TemplateId,
|
||||
AdmissionFrom,
|
||||
AdmissionFromDateTime,
|
||||
AdmissionFromDate,
|
||||
AdmissionFromTime,
|
||||
AdmissionTo,
|
||||
AdmissionToDate,
|
||||
AdmissionToTime,
|
||||
AdmissionType,
|
||||
AdmissionTypeDesc,
|
||||
AdmissionNotes,
|
||||
AdmissionFlags,
|
||||
AdmissionStatus,
|
||||
AdmissionStatusInd,
|
||||
// Admission patient details.
|
||||
Patient, // No & display name.
|
||||
PatientId,
|
||||
PatientNo,
|
||||
PatientSurname,
|
||||
PatientForename,
|
||||
// Facility:
|
||||
Facility_Name,
|
||||
Facility_Desc,
|
||||
Facility_Notes,
|
||||
// Facility Template.
|
||||
Template_Name,
|
||||
Template_Desc,
|
||||
Template_Notes,
|
||||
// Session definition (combined template and date-specific session info).
|
||||
SessionDfn_Summary,
|
||||
|
||||
// Common properties.
|
||||
Notes,
|
||||
Flags,
|
||||
Status,
|
||||
Status_Ind,
|
||||
Status_Desc,
|
||||
CreateOn_Date,
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
{
|
||||
//Status = AdmissionActionStatus;
|
||||
}
|
||||
public SysId AdmissionId { get; set; }
|
||||
public Spm.AdmissionActionType AdmissionActionType { get; set; }
|
||||
public DateTime Raised { get; set; }
|
||||
public SysId EmployeeIdRaised { get; set; }
|
||||
public DateTime Completed { get; set; }
|
||||
public SysId EmployeeIdCompleted { get; set; }
|
||||
public String ActionData { get; set; }
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
AdmissionId = data.AdmissionId;
|
||||
AdmissionActionType = data.AdmissionActionType;
|
||||
Raised = data.Raised;
|
||||
EmployeeIdRaised = data.EmployeeIdRaised;
|
||||
Completed = data.Completed;
|
||||
EmployeeIdCompleted = data.EmployeeIdCompleted;
|
||||
ActionData = data.ActionData;
|
||||
base.PopulateFrom(data);
|
||||
}
|
||||
public Data Clone()
|
||||
{
|
||||
Data data = new Data();
|
||||
data.PopulateFrom(this);
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
// ErrField.
|
||||
public new class ErrField : SacsHierarchyItem.ErrField
|
||||
{
|
||||
public ValidValue AdmissionId { get; set; } = ValidValue.Valid;
|
||||
public ValidValue AdmissionActionType { get; set; } = ValidValue.Valid;
|
||||
public ValidValue Raised { get; set; } = ValidValue.Valid;
|
||||
public ValidValue EmployeeIdRaised { get; set; } = ValidValue.Valid;
|
||||
public ValidValue Completed { get; set; } = ValidValue.Valid;
|
||||
public ValidValue EmployeeIdCompleted { get; set; } = ValidValue.Valid;
|
||||
public ValidValue ActionData { get; set; } = ValidValue.Valid;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly Data data = new Data();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
protected SpmAdmissionAction(SysId id, SysId admissionId, Spm.AdmissionActionType admissionActionType) : base(id)
|
||||
{
|
||||
id = Id;
|
||||
admissionId = AdmissionId;
|
||||
admissionActionType = AdmissionActionType;
|
||||
Status = DefaultStatus;
|
||||
base.SetData(data);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Status.
|
||||
private static readonly List<SaStatus> admissionActionStatuses = new List<SaStatus>()
|
||||
{
|
||||
SaStatus.Current,
|
||||
};
|
||||
public static SaStatus DefaultStatus { get { return SaStatus.Current; } }
|
||||
public static List<SaStatus> AdmissionActionStatuses { get { return new List<SaStatus>(admissionActionStatuses); } }
|
||||
public static DataValue.TriStateType GetStatusTriState(SaStatus status)
|
||||
{
|
||||
admissionActionStatuses.Add(SaStatus.Current);
|
||||
|
||||
switch (status)
|
||||
{
|
||||
case SaStatus.Current:
|
||||
return DataValue.TriStateType.Green;
|
||||
}
|
||||
return DataValue.TriStateType.Unknown;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public Data GetData() { return data.Clone(); }
|
||||
public void SetData(Data data)
|
||||
{
|
||||
String fn = GetType().Name + ".SetData";
|
||||
// Properties that cannot be changed if previously specified.
|
||||
if (SysId.IsValid(Id) && SysId.ToInt(Id) != SysId.ToInt(data.Id))
|
||||
throw new NotSupportedException(fn + " Id cannot be changed");
|
||||
this.data.PopulateFrom(data);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Attributes.
|
||||
public SysId AdmissionId
|
||||
{
|
||||
get { return data.AdmissionId; }
|
||||
set { CheckChanged(data.AdmissionId, value); data.AdmissionId = value; }
|
||||
}
|
||||
public Spm.AdmissionActionType AdmissionActionType
|
||||
{
|
||||
get { return data.AdmissionActionType; }
|
||||
set { CheckChanged((int)data.AdmissionActionType, (int)value); data.AdmissionActionType = value; }
|
||||
}
|
||||
public DateTime Raised
|
||||
{
|
||||
get { return data.Raised; }
|
||||
set { CheckChanged(data.Raised, value); data.Raised = value; }
|
||||
}
|
||||
public SysId EmployeeIdRaised
|
||||
{
|
||||
get { return data.EmployeeIdRaised; }
|
||||
set { CheckChanged(data.EmployeeIdRaised, value); data.EmployeeIdRaised = value; }
|
||||
}
|
||||
public DateTime Completed
|
||||
{
|
||||
get { return data.Completed; }
|
||||
set { CheckChanged(data.Completed, value); data.Completed = value; }
|
||||
}
|
||||
public SysId EmployeeIdCompleted
|
||||
{
|
||||
get { return data.EmployeeIdCompleted; }
|
||||
set { CheckChanged(data.EmployeeIdCompleted, value); data.EmployeeIdCompleted = value; }
|
||||
}
|
||||
public String ActionData
|
||||
{
|
||||
get { return data.ActionData; }
|
||||
set { CheckChanged(data.ActionData, value); data.ActionData = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Flags.
|
||||
|
||||
|
||||
|
||||
public int Compare(SpmAdmissionAction action)
|
||||
{
|
||||
SaStatus status1 = new SaStatus();
|
||||
SaStatus status2 = action.Status;
|
||||
// 'Required' actions always occur earlier in the list.
|
||||
if (status1 == SaStatus.Required && status2 != SaStatus.Required) return -1;
|
||||
if (status1 != SaStatus.Required && status2 == SaStatus.Required) return 1;
|
||||
// Followed by 'Completed' actions.
|
||||
if (status1 == SaStatus.Completed && status2 != SaStatus.Completed) return -1;
|
||||
if (status1 != SaStatus.Completed && status2 == SaStatus.Completed) return 1;
|
||||
// Sort by 'Raised' date.
|
||||
int iCompareRaised = Raised.CompareTo(action.Raised);
|
||||
if (iCompareRaised != 0) return iCompareRaised;
|
||||
// Sort by type.
|
||||
if (AdmissionActionType < action.AdmissionActionType) return -1;
|
||||
if (AdmissionActionType > action.AdmissionActionType) return 1;
|
||||
return -1; // To retain previous sequence.
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// A s s o c i a t e d D a t a E l e m e n t s
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a r a m s
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Parameters - used to define the filters that should be applied to a List of Addresses</summary>
|
||||
// List parameters.
|
||||
public enum StatusCat
|
||||
{
|
||||
Any,
|
||||
}
|
||||
/// <summary> Item list parameters. </summary>
|
||||
public new class Params : SacsHierarchyItem.Params
|
||||
{
|
||||
// List filtering.
|
||||
public List<SysId> IncludedIds { get; } = new List<SysId>();
|
||||
public List<SysId> ExcludedIds { get; } = new List<SysId>();
|
||||
// Admission Action.
|
||||
public SysId Id { get; set; }
|
||||
public SysId AdmissionId { get; set; }
|
||||
public SysId DepartmentId { get; set; }
|
||||
public SysId FacilityId { get; set; }
|
||||
public Spm.AdmissionActionType AdmissionActionType { get; set; }
|
||||
public DateTime Raised { get; set; }
|
||||
public SysId EmployeeIdRaised { get; set; }
|
||||
public DateTime Completed { get; set; }
|
||||
public SysId EmployeeIdCompleted { get; set; }
|
||||
public String ActionData { get; set; }
|
||||
public bool RequiredOnly { get; set; } = true;
|
||||
public bool ExcludeCancelled { get; set; } = true;
|
||||
|
||||
public StatusCat StatusCat { get; set; } = StatusCat.Any;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
// AdmissionAction D a t a L i s t
|
||||
//=======================================================================
|
||||
public static class SpmAdmissionActionList
|
||||
{
|
||||
public static int CompareByNameSeq(SpmAdmissionAction action1, SpmAdmissionAction action2)
|
||||
{
|
||||
if (action1 == null || action2 == null) return 0;
|
||||
return action1.Compare(action2);
|
||||
}
|
||||
public enum SortMode { SortActionRequiredRaised, };
|
||||
|
||||
public static void Sort(this List<SpmAdmissionAction> values, SortMode sortActionRequiredRaised, bool ascending = true)
|
||||
{
|
||||
if (sortActionRequiredRaised == SortMode.SortActionRequiredRaised)
|
||||
values.Sort
|
||||
(
|
||||
delegate (SpmAdmissionAction action1, SpmAdmissionAction action2)
|
||||
{
|
||||
return CompareByNameSeq(action1, action2);
|
||||
}
|
||||
);
|
||||
}
|
||||
public static bool SetIdentity(this List<SpmAdmissionAction> values, SpmAdmission admission)
|
||||
{
|
||||
foreach (SpmAdmissionAction admissionAction in values)
|
||||
admissionAction.AdmissionId = admission.Id;
|
||||
return true;
|
||||
}
|
||||
|
||||
// HasAction
|
||||
|
||||
// HasRequiredAction
|
||||
|
||||
public static bool Find(this List<SpmAdmissionAction> values, SpmAdmissionAction admissionAction)
|
||||
{
|
||||
if (admissionAction == null) return false;
|
||||
return (values.Find(item => item == admissionAction) != null);
|
||||
}
|
||||
public static bool FindById(this List<SpmAdmissionAction> values, SysId admissionActionId)
|
||||
{
|
||||
if (!SysId.IsValid(admissionActionId)) return false;
|
||||
return values.Exists(item => item.Id.Equals(admissionActionId));
|
||||
}
|
||||
public static bool FindByType(this List<SpmAdmissionAction> values, String admissionActionType)
|
||||
{
|
||||
if (StringUtil.IsEmpty(admissionActionType)) return false;
|
||||
return values.Exists(item => item.AdmissionActionType.ToString().EqualsCI(admissionActionType));
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user