TS - Bus objects updated + Service classes and forms added
This commit is contained in:
@@ -144,75 +144,432 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId FacilityId { get; set; } = new SysId();
|
||||
public SysId FacilityTemplateId { get; set; } = new SysId();
|
||||
public DateTime AdmissionFrom { get; set; } = DateTime.MinValue;
|
||||
public DateTime AdmissionTo { get; set; } = DateTime.MinValue;
|
||||
public DateTime ToComeIn { get; set; } = DateTime.MinValue;
|
||||
public bool RequiresSeq () { return RequiresSeq(/*AdmissionType*/); }
|
||||
public ushort Seq { get; set; } = 0;
|
||||
public Spm.AdmissionType AdmissionType { get; set; } = Spm.AdmissionType.Unknown;
|
||||
public Spm.AdmissionOccupancy Occupancy { get; set; } = Spm.AdmissionOccupancy.Unknown;
|
||||
public DateTime DecisionToReferOn { get; set; } = DateTime.MinValue;
|
||||
public DateTime ReferredOn { get; set; } = DateTime.MinValue;
|
||||
public DateTime DecisionToAdmitOn { get; set; } = DateTime.MinValue;
|
||||
public DateTime BreechOn { get; set; } = DateTime.MinValue;
|
||||
public SysId PatientId { get; set; } = new SysId();
|
||||
public String PatientNo { get; set; } = "";
|
||||
public String NhsNumber { get; set; } = "";
|
||||
public String Title { get; set; } = "";
|
||||
public String Forename { get; set; } = "";
|
||||
public String Surname { get; set; } = "";
|
||||
public Spm.Gender Gender { get; set; } = Spm.Gender.Unknown;
|
||||
public DateTime BirthOn { get; set; } = DateTime.MinValue;
|
||||
public String Age { get; set; } = "";
|
||||
public DateTime AgeOn { get; set; } = DateTime.MinValue;
|
||||
public SysId FacilityIdWard { get; set; } = new SysId();
|
||||
public String Ward { get; set; } = "";
|
||||
public SysId ProcedureId { get; set; } = new SysId();
|
||||
public String SpecialityCode { get; set; } = "";
|
||||
public String ProcedureDesc { get; set; } = "";
|
||||
public String ComplexityCode { get; set; } = "";
|
||||
public String ProcedureIndication { get; set; } = "";
|
||||
public String PatientHistory { get; set; } = "";
|
||||
public String GestationPeriod { get; set; } = "";
|
||||
public String SystemRef { get; set; } = "";
|
||||
public ushort DurationExp { get; set; } = 0;
|
||||
public ushort DurationAct { get; set; } = 0;
|
||||
public decimal UnitsExp { get; set; } = 0.0m;
|
||||
public decimal UnitsAct { get; set; } = 0.0m;
|
||||
public String Anaesthetic { get; set; } = "";
|
||||
public String Position { get; set; } = "";
|
||||
public String SpecialEquipment { get; set; } = "";
|
||||
public Spm.AttendanceType AttendanceType { get; set; } = Spm.AttendanceType.Unknown;
|
||||
public String AttendanceStatus { get; set; } = "";
|
||||
public String ComfortScore { get; set; } = "";
|
||||
|
||||
// Admission times.
|
||||
public DateTime TimeCalled { get; set; } = DateTime.MinValue;
|
||||
public DateTime TimeArrived { get; set; } = DateTime.MinValue;
|
||||
public DateTime TimeAnaesStart { get; set; } = DateTime.MinValue;
|
||||
public DateTime TimeProcStart { get; set; } = DateTime.MinValue;
|
||||
public DateTime TimeProcEnd { get; set; } = DateTime.MinValue;
|
||||
public DateTime TimeInRecovery { get; set; } = DateTime.MinValue;
|
||||
public DateTime TimeInformDest { get; set; } = DateTime.MinValue;
|
||||
public DateTime TimeLeave { get; set; } = DateTime.MinValue;
|
||||
|
||||
// Cancellation.
|
||||
public static bool IsCancelled (Spm.AdmissionCancelType cancel) { return (cancel != Spm.AdmissionCancelType.None); }
|
||||
public bool IsCancelled () { return IsCancelled(/*CancelType*/); }
|
||||
public Spm.AdmissionCancelType CancelType { get; set; }
|
||||
public DateTime CancelDate { get; set; } = DateTime.MinValue;
|
||||
public ushort CancelCount { get; set; } = 0;
|
||||
public String CancelCode { get; set; } = "";
|
||||
public String CancelReason { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data()
|
||||
{
|
||||
//Status = AdmissionStatus;
|
||||
}
|
||||
public SysId FacilityId { get; set; }
|
||||
public SysId FacilityTemplateId { get; set; }
|
||||
public DateTime AdmissionFrom { get; set; }
|
||||
public DateTime AdmissionTo { get; set; }
|
||||
public DateTime ToComeIn { get; set; }
|
||||
public bool RequiresSeq() { return RequiresSeq(/*AdmissionType*/); }
|
||||
public ushort Seq { get; set; }
|
||||
public Spm.AdmissionType AdmissionType { get; set; }
|
||||
public Spm.AdmissionOccupancy Occupancy { get; set; }
|
||||
public DateTime DecisionToReferOn { get; set; }
|
||||
public DateTime ReferredOn { get; set; }
|
||||
public DateTime DecisionToAdmitOn { get; set; }
|
||||
public DateTime BreechOn { get; set; }
|
||||
public SysId PatientId { get; set; }
|
||||
public String PatientNo { get; set; }
|
||||
public String NhsNumber { get; set; }
|
||||
public String Title { get; set; }
|
||||
public String Forename { get; set; }
|
||||
public String Surname { get; set; }
|
||||
public Spm.Gender Gender { get; set; }
|
||||
public DateTime BirthOn { get; set; }
|
||||
public String Age { get; set; }
|
||||
public DateTime AgeOn { get; set; }
|
||||
public SysId FacilityIdWard { get; set; }
|
||||
public String Ward { get; set; }
|
||||
public SysId ProcedureId { get; set; }
|
||||
public String SpecialityCode { get; set; }
|
||||
public String ProcedureDesc { get; set; }
|
||||
public String ComplexityCode { get; set; }
|
||||
public String ProcedureIndication { get; set; }
|
||||
public String PatientHistory { get; set; }
|
||||
public String GestationPeriod { get; set; }
|
||||
public String SystemRef { get; set; }
|
||||
public ushort DurationExp { get; set; }
|
||||
public ushort DurationAct { get; set; }
|
||||
public decimal UnitsExp { get; set; }
|
||||
public decimal UnitsAct { get; set; }
|
||||
public String Anaesthetic { get; set; }
|
||||
public String Position { get; set; }
|
||||
public String SpecialEquipment { get; set; }
|
||||
public Spm.AttendanceType AttendanceType { get; set; }
|
||||
public String AttendanceStatus { get; set; }
|
||||
public String ComfortScore { get; set; }
|
||||
|
||||
// Admission times.
|
||||
public DateTime TimeCalled { get; set; }
|
||||
public DateTime TimeArrived { get; set; }
|
||||
public DateTime TimeAnaesStart { get; set; }
|
||||
public DateTime TimeProcStart { get; set; }
|
||||
public DateTime TimeProcEnd { get; set; }
|
||||
public DateTime TimeInRecovery { get; set; }
|
||||
public DateTime TimeInformDest { get; set; }
|
||||
public DateTime TimeLeave { get; set; }
|
||||
public SysId FacilityId
|
||||
{
|
||||
get { return data.FacilityId; }
|
||||
set { CheckChanged(data.FacilityId, value); data.FacilityId = value; }
|
||||
}
|
||||
public SysId FacilityTemplateId
|
||||
{
|
||||
get { return data.FacilityTemplateId; }
|
||||
set { CheckChanged(data.FacilityTemplateId, value); data.FacilityTemplateId = value; }
|
||||
}
|
||||
public DateTime AdmissionFrom
|
||||
{
|
||||
get { return data.AdmissionFrom; }
|
||||
set { CheckChanged(data.AdmissionFrom, value); data.AdmissionFrom = value; }
|
||||
}
|
||||
public DateTime AdmissionTo
|
||||
{
|
||||
get { return data.AdmissionTo; }
|
||||
set { CheckChanged(data.AdmissionTo, value); data.AdmissionTo = value; }
|
||||
}
|
||||
public DateTime ToComeIn
|
||||
{
|
||||
get { return data.ToComeIn; }
|
||||
set { CheckChanged(data.ToComeIn, value); data.ToComeIn = value; }
|
||||
}
|
||||
public static bool RequiresSeq (Spm.AdmissionType admissionType)
|
||||
{
|
||||
switch (admissionType)
|
||||
{
|
||||
// Ward and clinic admission do not require a sequence.
|
||||
case Spm.AdmissionType.WardAdmission:
|
||||
case Spm.AdmissionType.WardReservation:
|
||||
case Spm.AdmissionType.ClinicBooking:
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public ushort Seq
|
||||
{
|
||||
get { return data.Seq; }
|
||||
set { CheckChanged(data.Seq, value); data.Seq = value; }
|
||||
}
|
||||
public Spm.AdmissionType AdmissionType
|
||||
{
|
||||
get { return data.AdmissionType; }
|
||||
set { CheckChanged((int)data.AdmissionType, (int)value); data.AdmissionType = value; }
|
||||
}
|
||||
public Spm.AdmissionOccupancy Occupancy
|
||||
{
|
||||
get { return data.Occupancy; }
|
||||
set { CheckChanged((int)data.Occupancy, (int)value); data.Occupancy = value; }
|
||||
}
|
||||
|
||||
public bool IsTheatreAdmission ()
|
||||
{
|
||||
switch (AdmissionType)
|
||||
{
|
||||
case Spm.AdmissionType.TheatreDayCase:
|
||||
case Spm.AdmissionType.TheatreInPatientElective:
|
||||
case Spm.AdmissionType.TheatreEmergency:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool IsClinicAdmission ()
|
||||
{
|
||||
switch (AdmissionType)
|
||||
{
|
||||
case Spm.AdmissionType.ClinicBooking:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public bool IsWardAdmission ()
|
||||
{
|
||||
switch (AdmissionType)
|
||||
{
|
||||
case Spm.AdmissionType.WardAdmission:
|
||||
case Spm.AdmissionType.WardReservation:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public DateTime DecisionToReferOn
|
||||
{
|
||||
get { return data.DecisionToReferOn; }
|
||||
set { CheckChanged(data.DecisionToReferOn, value); data.DecisionToReferOn = value; }
|
||||
}
|
||||
public DateTime ReferredOn
|
||||
{
|
||||
get { return data.ReferredOn; }
|
||||
set { CheckChanged(data.ReferredOn, value); data.ReferredOn = value; }
|
||||
}
|
||||
public DateTime DecisionToAdmitOn
|
||||
{
|
||||
get { return data.DecisionToAdmitOn; }
|
||||
set { CheckChanged(data.DecisionToAdmitOn, value); data.DecisionToAdmitOn = value; }
|
||||
}
|
||||
public DateTime BreechOn
|
||||
{
|
||||
get { return data.BreechOn; }
|
||||
set { CheckChanged(data.BreechOn, value); data.BreechOn = value; }
|
||||
}
|
||||
public SysId PatientId
|
||||
{
|
||||
get { return data.PatientId; }
|
||||
set { CheckChanged(data.PatientId, value); data.PatientId = value; }
|
||||
}
|
||||
public String PatientNo
|
||||
{
|
||||
get { return data.PatientNo; }
|
||||
set { CheckChanged(data.PatientNo, value); data.PatientNo = value; }
|
||||
}
|
||||
public String NhsNumber
|
||||
{
|
||||
get { return data.NhsNumber; }
|
||||
set { CheckChanged(data.NhsNumber, value); data.NhsNumber = value; }
|
||||
}
|
||||
public String Title
|
||||
{
|
||||
get { return data.Title; }
|
||||
set { CheckChanged(data.Title, value); data.Title = value; }
|
||||
}
|
||||
public String Forename
|
||||
{
|
||||
get { return data.Forename; }
|
||||
set { CheckChanged(data.Forename, value); data.Forename = value; }
|
||||
}
|
||||
public String Surname
|
||||
{
|
||||
get { return data.Surname; }
|
||||
set { CheckChanged(data.Surname, value); data.Surname = value; }
|
||||
}
|
||||
public static String GetDisplayName (String surname, String forename, bool upperSurname = true)
|
||||
{
|
||||
String name = surname;
|
||||
if (upperSurname)
|
||||
name.ToUpper();
|
||||
if (!StringUtil.IsEmpty(surname) && !StringUtil.IsEmpty(forename))
|
||||
name += ", ";
|
||||
name += forename;
|
||||
return name;
|
||||
}
|
||||
public String GetDisplayName (bool upperSurname = true)
|
||||
{
|
||||
return GetDisplayName(Surname, Forename, upperSurname);
|
||||
}
|
||||
public Spm.Gender Gender
|
||||
{
|
||||
get { return data.Gender; }
|
||||
set { CheckChanged((int)data.Gender, (int)value); data.Gender = value; }
|
||||
}
|
||||
public DateTime BirthOn
|
||||
{
|
||||
get { return data.BirthOn; }
|
||||
set { CheckChanged(data.BirthOn, value); data.BirthOn = value; }
|
||||
}
|
||||
public String Age
|
||||
{
|
||||
get { return data.Age; }
|
||||
set { CheckChanged(data.Age, value); data.Age = value; }
|
||||
}
|
||||
public DateTime AgeOn
|
||||
{
|
||||
get { return data.AgeOn; }
|
||||
set { CheckChanged(data.AgeOn, value); data.AgeOn = value; }
|
||||
}
|
||||
public String GetPatientAge (DateTime dob, DateTime ageOn)
|
||||
{
|
||||
String patientAge = "";
|
||||
if (DateUtil.IsValid(dob) && DateUtil.IsValid(ageOn) && dob < ageOn)
|
||||
{
|
||||
/*ushort age = Date::CalculateAge(dob, ageOn);
|
||||
ushort ageMonths = Date::CalculateAgeMonths(dob, ageOn);
|
||||
if (age >= 2) patientAge = age.ToString();
|
||||
else if (ageMonths > 0) patientAge = ageMonths.ToString() + "M";*/
|
||||
}
|
||||
return patientAge;
|
||||
}
|
||||
public SysId FacilityIdWard
|
||||
{
|
||||
get { return data.FacilityIdWard; }
|
||||
set { CheckChanged(data.FacilityIdWard, value); data.FacilityIdWard = value; }
|
||||
}
|
||||
public String Ward
|
||||
{
|
||||
get { return data.Ward; }
|
||||
set { CheckChanged(data.Ward, value); data.Ward = value; }
|
||||
}
|
||||
public SysId ProcedureId
|
||||
{
|
||||
get { return data.ProcedureId; }
|
||||
set { CheckChanged(data.ProcedureId, value); data.ProcedureId = value; }
|
||||
}
|
||||
public String SpecialityCode
|
||||
{
|
||||
get { return data.SpecialityCode; }
|
||||
set { CheckChanged(data.SpecialityCode, value); data.SpecialityCode = value; }
|
||||
}
|
||||
public String ProcedureDesc
|
||||
{
|
||||
get { return data.ProcedureDesc; }
|
||||
set { CheckChanged(data.ProcedureDesc, value); data.ProcedureDesc = value; }
|
||||
}
|
||||
public String ComplexityCode
|
||||
{
|
||||
get { return data.ComplexityCode; }
|
||||
set { CheckChanged(data.ComplexityCode, value); data.ComplexityCode = value; }
|
||||
}
|
||||
public String ProcedureIndication
|
||||
{
|
||||
get { return data.ProcedureIndication; }
|
||||
set { CheckChanged(data.ProcedureIndication, value); data.ProcedureIndication = value; }
|
||||
}
|
||||
public String PatientHistory
|
||||
{
|
||||
get { return data.PatientHistory; }
|
||||
set { CheckChanged(data.PatientHistory, value); data.PatientHistory = value; }
|
||||
}
|
||||
public String GestationPeriod
|
||||
{
|
||||
get { return data.GestationPeriod; }
|
||||
set { CheckChanged(data.GestationPeriod, value); data.GestationPeriod = value; }
|
||||
}
|
||||
public String SystemRef
|
||||
{
|
||||
get { return data.SystemRef; }
|
||||
set { CheckChanged(data.SystemRef, value); data.SystemRef = value; }
|
||||
}
|
||||
public ushort DurationExp
|
||||
{
|
||||
get { return data.DurationExp; }
|
||||
set { CheckChanged(data.DurationExp, value); data.DurationExp = value; }
|
||||
}
|
||||
public ushort DurationAct
|
||||
{
|
||||
get { return data.DurationAct; }
|
||||
set { CheckChanged(data.DurationAct, value); data.DurationAct = value; }
|
||||
}
|
||||
public decimal UnitsExp
|
||||
{
|
||||
get { return data.UnitsExp; }
|
||||
set { CheckChanged(data.UnitsExp, value); data.UnitsExp = value; }
|
||||
}
|
||||
public decimal UnitsAct
|
||||
{
|
||||
get { return data.UnitsAct; }
|
||||
set { CheckChanged(data.UnitsAct, value); data.UnitsAct = value; }
|
||||
}
|
||||
public String Anaesthetic
|
||||
{
|
||||
get { return data.Anaesthetic; }
|
||||
set { CheckChanged(data.Anaesthetic, value); data.Anaesthetic = value; }
|
||||
}
|
||||
public String Position
|
||||
{
|
||||
get { return data.Position; }
|
||||
set { CheckChanged(data.Position, value); data.Position = value; }
|
||||
}
|
||||
public String SpecialEquipment
|
||||
{
|
||||
get { return data.SpecialEquipment; }
|
||||
set { CheckChanged(data.SpecialEquipment, value); data.SpecialEquipment = value; }
|
||||
}
|
||||
public Spm.AttendanceType AttendanceType
|
||||
{
|
||||
get { return data.AttendanceType; }
|
||||
set { CheckChanged((int)data.AttendanceType, (int)value); data.AttendanceType = value; }
|
||||
}
|
||||
public String AttendanceStatus
|
||||
{
|
||||
get { return data.AttendanceStatus; }
|
||||
set { CheckChanged(data.AttendanceStatus, value); data.AttendanceStatus = value; }
|
||||
}
|
||||
public String ComfortScore
|
||||
{
|
||||
get { return data.ComfortScore; }
|
||||
set { CheckChanged(data.ComfortScore, value); data.ComfortScore = value; }
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Admission time.
|
||||
public DateTime TimeCalled
|
||||
{
|
||||
get { return data.TimeCalled; }
|
||||
set { CheckChanged(data.TimeCalled, value); data.TimeCalled = value; }
|
||||
}
|
||||
public DateTime TimeArrived
|
||||
{
|
||||
get { return data.TimeArrived; }
|
||||
set { CheckChanged(data.TimeArrived, value); data.TimeArrived = value; }
|
||||
}
|
||||
public DateTime TimeAnaesStart
|
||||
{
|
||||
get { return data.TimeAnaesStart; }
|
||||
set { CheckChanged(data.TimeAnaesStart, value); data.TimeAnaesStart = value; }
|
||||
}
|
||||
public DateTime TimeProcStart
|
||||
{
|
||||
get { return data.TimeProcStart; }
|
||||
set { CheckChanged(data.TimeProcStart, value); data.TimeProcStart = value; }
|
||||
}
|
||||
public DateTime TimeProcEnd
|
||||
{
|
||||
get { return data.TimeProcEnd; }
|
||||
set { CheckChanged(data.TimeProcEnd, value); data.TimeProcEnd = value; }
|
||||
}
|
||||
public DateTime TimeInRecovery
|
||||
{
|
||||
get { return data.TimeInRecovery; }
|
||||
set { CheckChanged(data.TimeInRecovery, value); data.TimeInRecovery = value; }
|
||||
}
|
||||
public DateTime TimeInformDest
|
||||
{
|
||||
get { return data.TimeInformDest; }
|
||||
set { CheckChanged(data.TimeInformDest, value); data.TimeInformDest = value; }
|
||||
}
|
||||
public DateTime TimeLeave
|
||||
{
|
||||
get { return data.TimeLeave; }
|
||||
set { CheckChanged(data.TimeLeave, value); data.TimeLeave = value; }
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Cancellation.
|
||||
public static bool IsCancelled(Spm.AdmissionCancelType cancel) { return (cancel != Spm.AdmissionCancelType.None); }
|
||||
public bool IsCancelled() { return IsCancelled(/*CancelType*/); }
|
||||
public Spm.AdmissionCancelType CancelType { get; set; }
|
||||
public DateTime CancelDate { get; set; }
|
||||
public ushort CancelCount { get; set; }
|
||||
public String CancelCode { get; set; }
|
||||
public String CancelReason { get; set; }
|
||||
public Spm.AdmissionCancelType CancelType
|
||||
{
|
||||
get { return data.CancelType; }
|
||||
set { CheckChanged((int)data.CancelType, (int)value); data.CancelType = value; }
|
||||
}
|
||||
public DateTime CancelDate
|
||||
{
|
||||
get { return data.CancelDate; }
|
||||
set { CheckChanged(data.CancelDate, value); data.CancelDate = value; }
|
||||
}
|
||||
public ushort CancelCount
|
||||
{
|
||||
get { return data.CancelCount; }
|
||||
set { CheckChanged(data.CancelCount, value); data.CancelCount = value; }
|
||||
}
|
||||
public String CancelCode
|
||||
{
|
||||
get { return data.CancelCode; }
|
||||
set { CheckChanged(data.CancelCode, value); data.CancelCode = value; }
|
||||
}
|
||||
public String CancelReason
|
||||
{
|
||||
get { return data.CancelReason; }
|
||||
set { CheckChanged(data.CancelReason, value); data.CancelReason = value; }
|
||||
}
|
||||
|
||||
// Flags.
|
||||
|
||||
@@ -399,27 +756,27 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId FacilityId
|
||||
{
|
||||
get { return data.FacilityId; }
|
||||
set { CheckChanged(data.FacilityId, value); data.FacilityId = value; }
|
||||
set { data.FacilityId = value; }
|
||||
}
|
||||
public SysId FacilityTemplateId
|
||||
{
|
||||
get { return data.FacilityTemplateId; }
|
||||
set { CheckChanged(data.FacilityTemplateId, value); data.FacilityTemplateId = value; }
|
||||
set { data.FacilityTemplateId = value; }
|
||||
}
|
||||
public DateTime AdmissionFrom
|
||||
{
|
||||
get { return data.AdmissionFrom; }
|
||||
set { CheckChanged(data.AdmissionFrom, value); data.AdmissionFrom = value; }
|
||||
set { data.AdmissionFrom = value; }
|
||||
}
|
||||
public DateTime AdmissionTo
|
||||
{
|
||||
get { return data.AdmissionTo; }
|
||||
set { CheckChanged(data.AdmissionTo, value); data.AdmissionTo = value; }
|
||||
set { data.AdmissionTo = value; }
|
||||
}
|
||||
public DateTime ToComeIn
|
||||
{
|
||||
get { return data.ToComeIn; }
|
||||
set { CheckChanged(data.ToComeIn, value); data.ToComeIn = value; }
|
||||
set { data.ToComeIn = value; }
|
||||
}
|
||||
public static bool RequiresSeq(Spm.AdmissionType admissionType)
|
||||
{
|
||||
@@ -436,17 +793,17 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public ushort Seq
|
||||
{
|
||||
get { return data.Seq; }
|
||||
set { CheckChanged(data.Seq, value); data.Seq = value; }
|
||||
set { data.Seq = value; }
|
||||
}
|
||||
public Spm.AdmissionType AdmissionType
|
||||
{
|
||||
get { return data.AdmissionType; }
|
||||
set { CheckChanged((int)data.AdmissionType, (int)value); data.AdmissionType = value; }
|
||||
set {data.AdmissionType = value; }
|
||||
}
|
||||
public Spm.AdmissionOccupancy Occupancy
|
||||
{
|
||||
get { return data.Occupancy; }
|
||||
set { CheckChanged((int)data.Occupancy, (int)value); data.Occupancy = value; }
|
||||
set { data.Occupancy = value; }
|
||||
}
|
||||
|
||||
public bool IsTheatreAdmission()
|
||||
@@ -482,52 +839,52 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public DateTime DecisionToReferOn
|
||||
{
|
||||
get { return data.DecisionToReferOn; }
|
||||
set { CheckChanged(data.DecisionToReferOn, value); data.DecisionToReferOn = value; }
|
||||
set { data.DecisionToReferOn = value; }
|
||||
}
|
||||
public DateTime ReferredOn
|
||||
{
|
||||
get { return data.ReferredOn; }
|
||||
set { CheckChanged(data.ReferredOn, value); data.ReferredOn = value; }
|
||||
set { data.ReferredOn = value; }
|
||||
}
|
||||
public DateTime DecisionToAdmitOn
|
||||
{
|
||||
get { return data.DecisionToAdmitOn; }
|
||||
set { CheckChanged(data.DecisionToAdmitOn, value); data.DecisionToAdmitOn = value; }
|
||||
set { data.DecisionToAdmitOn = value; }
|
||||
}
|
||||
public DateTime BreechOn
|
||||
{
|
||||
get { return data.BreechOn; }
|
||||
set { CheckChanged(data.BreechOn, value); data.BreechOn = value; }
|
||||
set { data.BreechOn = value; }
|
||||
}
|
||||
public SysId PatientId
|
||||
{
|
||||
get { return data.PatientId; }
|
||||
set { CheckChanged(data.PatientId, value); data.PatientId = value; }
|
||||
set { data.PatientId = value; }
|
||||
}
|
||||
public String PatientNo
|
||||
{
|
||||
get { return data.PatientNo; }
|
||||
set { CheckChanged(data.PatientNo, value); data.PatientNo = value; }
|
||||
set { data.PatientNo = value; }
|
||||
}
|
||||
public String NhsNumber
|
||||
{
|
||||
get { return data.NhsNumber; }
|
||||
set { CheckChanged(data.NhsNumber, value); data.NhsNumber = value; }
|
||||
set { data.NhsNumber = value; }
|
||||
}
|
||||
public String Title
|
||||
{
|
||||
get { return data.Title; }
|
||||
set { CheckChanged(data.Title, value); data.Title = value; }
|
||||
set { data.Title = value; }
|
||||
}
|
||||
public String Forename
|
||||
{
|
||||
get { return data.Forename; }
|
||||
set { CheckChanged(data.Forename, value); data.Forename = value; }
|
||||
set { data.Forename = value; }
|
||||
}
|
||||
public String Surname
|
||||
{
|
||||
get { return data.Surname; }
|
||||
set { CheckChanged(data.Surname, value); data.Surname = value; }
|
||||
set { data.Surname = value; }
|
||||
}
|
||||
public static String GetDisplayName(String surname, String forename, bool upperSurname = true)
|
||||
{
|
||||
@@ -546,22 +903,22 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public Spm.Gender Gender
|
||||
{
|
||||
get { return data.Gender; }
|
||||
set { CheckChanged((int)data.Gender, (int)value); data.Gender = value; }
|
||||
set { data.Gender = value; }
|
||||
}
|
||||
public DateTime BirthOn
|
||||
{
|
||||
get { return data.BirthOn; }
|
||||
set { CheckChanged(data.BirthOn, value); data.BirthOn = value; }
|
||||
set { data.BirthOn = value; }
|
||||
}
|
||||
public String Age
|
||||
{
|
||||
get { return data.Age; }
|
||||
set { CheckChanged(data.Age, value); data.Age = value; }
|
||||
set { data.Age = value; }
|
||||
}
|
||||
public DateTime AgeOn
|
||||
{
|
||||
get { return data.AgeOn; }
|
||||
set { CheckChanged(data.AgeOn, value); data.AgeOn = value; }
|
||||
set { data.AgeOn = value; }
|
||||
}
|
||||
public String GetPatientAge(DateTime dob, DateTime ageOn)
|
||||
{
|
||||
@@ -578,87 +935,87 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId FacilityIdWard
|
||||
{
|
||||
get { return data.FacilityIdWard; }
|
||||
set { CheckChanged(data.FacilityIdWard, value); data.FacilityIdWard = value; }
|
||||
set { data.FacilityIdWard = value; }
|
||||
}
|
||||
public String Ward
|
||||
{
|
||||
get { return data.Ward; }
|
||||
set { CheckChanged(data.Ward, value); data.Ward = value; }
|
||||
set { data.Ward = value; }
|
||||
}
|
||||
public SysId ProcedureId
|
||||
{
|
||||
get { return data.ProcedureId; }
|
||||
set { CheckChanged(data.ProcedureId, value); data.ProcedureId = value; }
|
||||
set { data.ProcedureId = value; }
|
||||
}
|
||||
public String SpecialityCode
|
||||
{
|
||||
get { return data.SpecialityCode; }
|
||||
set { CheckChanged(data.SpecialityCode, value); data.SpecialityCode = value; }
|
||||
set { data.SpecialityCode = value; }
|
||||
}
|
||||
public String ProcedureDesc
|
||||
{
|
||||
get { return data.ProcedureDesc; }
|
||||
set { CheckChanged(data.ProcedureDesc, value); data.ProcedureDesc = value; }
|
||||
set { data.ProcedureDesc = value; }
|
||||
}
|
||||
public String ComplexityCode
|
||||
{
|
||||
get { return data.ComplexityCode; }
|
||||
set { CheckChanged(data.ComplexityCode, value); data.ComplexityCode = value; }
|
||||
set { data.ComplexityCode = value; }
|
||||
}
|
||||
public String ProcedureIndication
|
||||
{
|
||||
get { return data.ProcedureIndication; }
|
||||
set { CheckChanged(data.ProcedureIndication, value); data.ProcedureIndication = value; }
|
||||
set { data.ProcedureIndication = value; }
|
||||
}
|
||||
public String PatientHistory
|
||||
{
|
||||
get { return data.PatientHistory; }
|
||||
set { CheckChanged(data.PatientHistory, value); data.PatientHistory = value; }
|
||||
set { data.PatientHistory = value; }
|
||||
}
|
||||
public String GestationPeriod
|
||||
{
|
||||
get { return data.GestationPeriod; }
|
||||
set { CheckChanged(data.GestationPeriod, value); data.GestationPeriod = value; }
|
||||
set { data.GestationPeriod = value; }
|
||||
}
|
||||
public String SystemRef
|
||||
{
|
||||
get { return data.SystemRef; }
|
||||
set { CheckChanged(data.SystemRef, value); data.SystemRef = value; }
|
||||
set { data.SystemRef = value; }
|
||||
}
|
||||
public ushort DurationExp
|
||||
{
|
||||
get { return data.DurationExp; }
|
||||
set { CheckChanged(data.DurationExp, value); data.DurationExp = value; }
|
||||
set { data.DurationExp = value; }
|
||||
}
|
||||
public ushort DurationAct
|
||||
{
|
||||
get { return data.DurationAct; }
|
||||
set { CheckChanged(data.DurationAct, value); data.DurationAct = value; }
|
||||
set { data.DurationAct = value; }
|
||||
}
|
||||
public decimal UnitsExp
|
||||
{
|
||||
get { return data.UnitsExp; }
|
||||
set { CheckChanged(data.UnitsExp, value); data.UnitsExp = value; }
|
||||
set { data.UnitsExp = value; }
|
||||
}
|
||||
public decimal UnitsAct
|
||||
{
|
||||
get { return data.UnitsAct; }
|
||||
set { CheckChanged(data.UnitsAct, value); data.UnitsAct = value; }
|
||||
set { data.UnitsAct = value; }
|
||||
}
|
||||
public String Anaesthetic
|
||||
{
|
||||
get { return data.Anaesthetic; }
|
||||
set { CheckChanged(data.Anaesthetic, value); data.Anaesthetic = value; }
|
||||
set { data.Anaesthetic = value; }
|
||||
}
|
||||
public String Position
|
||||
{
|
||||
get { return data.Position; }
|
||||
set { CheckChanged(data.Position, value); data.Position = value; }
|
||||
set { data.Position = value; }
|
||||
}
|
||||
public String SpecialEquipment
|
||||
{
|
||||
get { return data.SpecialEquipment; }
|
||||
set { CheckChanged(data.SpecialEquipment, value); data.SpecialEquipment = value; }
|
||||
set { data.SpecialEquipment = value; }
|
||||
}
|
||||
public Spm.AttendanceType AttendanceType
|
||||
{
|
||||
@@ -668,12 +1025,12 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public String AttendanceStatus
|
||||
{
|
||||
get { return data.AttendanceStatus; }
|
||||
set { CheckChanged(data.AttendanceStatus, value); data.AttendanceStatus = value; }
|
||||
set { data.AttendanceStatus = value; }
|
||||
}
|
||||
public String ComfortScore
|
||||
{
|
||||
get { return data.ComfortScore; }
|
||||
set { CheckChanged(data.ComfortScore, value); data.ComfortScore = value; }
|
||||
set { data.ComfortScore = value; }
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
// Admission time.
|
||||
|
||||
@@ -64,20 +64,64 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId AdmissionId { get; set; } = new SysId();
|
||||
public Spm.AdmissionActionType AdmissionActionType { get; set; } = Spm.AdmissionActionType.Unknown;
|
||||
public DateTime Raised { get; set; } = DateTime.MinValue;
|
||||
public SysId EmployeeIdRaised { get; set; } = new SysId();
|
||||
public DateTime Completed { get; set; } = DateTime.MinValue;
|
||||
public SysId EmployeeIdCompleted { get; set; } = new SysId();
|
||||
public String ActionData { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
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; }
|
||||
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; }
|
||||
}
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
AdmissionId = data.AdmissionId;
|
||||
@@ -187,37 +231,37 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId AdmissionId
|
||||
{
|
||||
get { return data.AdmissionId; }
|
||||
set { CheckChanged(data.AdmissionId, value); data.AdmissionId = value; }
|
||||
set { data.AdmissionId = value; }
|
||||
}
|
||||
public Spm.AdmissionActionType AdmissionActionType
|
||||
{
|
||||
get { return data.AdmissionActionType; }
|
||||
set { CheckChanged((int)data.AdmissionActionType, (int)value); data.AdmissionActionType = value; }
|
||||
set { data.AdmissionActionType = value; }
|
||||
}
|
||||
public DateTime Raised
|
||||
{
|
||||
get { return data.Raised; }
|
||||
set { CheckChanged(data.Raised, value); data.Raised = value; }
|
||||
set { data.Raised = value; }
|
||||
}
|
||||
public SysId EmployeeIdRaised
|
||||
{
|
||||
get { return data.EmployeeIdRaised; }
|
||||
set { CheckChanged(data.EmployeeIdRaised, value); data.EmployeeIdRaised = value; }
|
||||
set { data.EmployeeIdRaised = value; }
|
||||
}
|
||||
public DateTime Completed
|
||||
{
|
||||
get { return data.Completed; }
|
||||
set { CheckChanged(data.Completed, value); data.Completed = value; }
|
||||
set { data.Completed = value; }
|
||||
}
|
||||
public SysId EmployeeIdCompleted
|
||||
{
|
||||
get { return data.EmployeeIdCompleted; }
|
||||
set { CheckChanged(data.EmployeeIdCompleted, value); data.EmployeeIdCompleted = value; }
|
||||
set { data.EmployeeIdCompleted = value; }
|
||||
}
|
||||
public String ActionData
|
||||
{
|
||||
get { return data.ActionData; }
|
||||
set { CheckChanged(data.ActionData, value); data.ActionData = value; }
|
||||
set { data.ActionData = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -33,16 +33,40 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId AdmissionId { get; set; } = new SysId();
|
||||
public Spm.AdmissionDataType AdmissionDataType { get; set; } = Spm.AdmissionDataType.Unknown;
|
||||
public String AdmissionData { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = AdmissionDataStatus;
|
||||
}
|
||||
public SysId AdmissionId { get; set; }
|
||||
public Spm.AdmissionDataType AdmissionDataType { get; set; }
|
||||
public String AdmissionData { get; set; }
|
||||
public SysId AdmissionId
|
||||
{
|
||||
get { return data.AdmissionId; }
|
||||
set { CheckChanged(data.AdmissionId, value); data.AdmissionId = value; }
|
||||
}
|
||||
public Spm.AdmissionDataType AdmissionDataType
|
||||
{
|
||||
get { return data.AdmissionDataType; }
|
||||
set { CheckChanged((int)data.AdmissionDataType, (int)value); data.AdmissionDataType = value; }
|
||||
}
|
||||
public String AdmissionData
|
||||
{
|
||||
get { return data.AdmissionData; }
|
||||
set { CheckChanged(data.AdmissionData, value); data.AdmissionData = value; }
|
||||
}
|
||||
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
@@ -121,17 +145,17 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId AdmissionId
|
||||
{
|
||||
get { return data.AdmissionId; }
|
||||
set { CheckChanged(data.AdmissionId, value); data.AdmissionId = value; }
|
||||
set { data.AdmissionId = value; }
|
||||
}
|
||||
public Spm.AdmissionDataType AdmissionDataType
|
||||
{
|
||||
get { return data.AdmissionDataType; }
|
||||
set { CheckChanged((int)data.AdmissionDataType, (int)value); data.AdmissionDataType = value; }
|
||||
set { data.AdmissionDataType = value; }
|
||||
}
|
||||
public String AdmissionData
|
||||
{
|
||||
get { return data.AdmissionData; }
|
||||
set { CheckChanged(data.AdmissionData, value); data.AdmissionData = value; }
|
||||
set { data.AdmissionData = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -35,19 +35,58 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId AdmissionId { get; set; } = new SysId();
|
||||
public Spm.EmployeeRole EmployeeRole { get; set; } = Spm.EmployeeRole.Unknown;
|
||||
public Spm.EmployeeRoleCategory EmployeeRoleCategory { get; set; } = Spm.EmployeeRoleCategory.Unknown;
|
||||
public ushort Seq { get; set; } = 0;
|
||||
public SysId EmployeeRoleId { get; set; } = new SysId();
|
||||
public String EmployeeCode { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = AdmissionRoleStatus;
|
||||
}
|
||||
public SysId AdmissionId { get; set; }
|
||||
public Spm.EmployeeRole EmployeeRole { get; set; }
|
||||
public Spm.EmployeeRoleCategory EmployeeRoleCategory { get; set; }
|
||||
public ushort Seq { get; set; }
|
||||
public SysId EmployeeRoleId { get; set; }
|
||||
public String EmployeeCode { get; set; }
|
||||
public SysId AdmissionId
|
||||
{
|
||||
get { return data.AdmissionId; }
|
||||
set { CheckChanged(data.AdmissionId, value); data.AdmissionId = value; }
|
||||
}
|
||||
public Spm.EmployeeRole EmployeeRole
|
||||
{
|
||||
get { return data.EmployeeRole; }
|
||||
set { CheckChanged((int)data.EmployeeRole, (int)value); data.EmployeeRole = value; }
|
||||
}
|
||||
public Spm.EmployeeRoleCategory EmployeeRoleCategory
|
||||
{
|
||||
get { return data.EmployeeRoleCategory; }
|
||||
set { CheckChanged((int)data.EmployeeRoleCategory, (int)value); data.EmployeeRoleCategory = value; }
|
||||
}
|
||||
public ushort Seq
|
||||
{
|
||||
get { return data.Seq; }
|
||||
set { CheckChanged(data.Seq, value); data.Seq = value; }
|
||||
}
|
||||
public SysId EmployeeRoleId
|
||||
{
|
||||
get { return data.EmployeeRoleId; }
|
||||
set { CheckChanged(data.EmployeeRoleId, value); data.EmployeeRoleId = value; }
|
||||
}
|
||||
public String EmployeeCode
|
||||
{
|
||||
get { return data.EmployeeCode; }
|
||||
set { CheckChanged(data.EmployeeCode, value); data.EmployeeCode = value; }
|
||||
}
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
AdmissionId = data.AdmissionId;
|
||||
@@ -132,32 +171,32 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId AdmissionId
|
||||
{
|
||||
get { return data.AdmissionId; }
|
||||
set { CheckChanged(data.AdmissionId, value); data.AdmissionId = value; }
|
||||
set { data.AdmissionId = value; }
|
||||
}
|
||||
public Spm.EmployeeRole EmployeeRole
|
||||
{
|
||||
get { return data.EmployeeRole; }
|
||||
set { CheckChanged((int)data.EmployeeRole, (int)value); data.EmployeeRole = value; }
|
||||
set { data.EmployeeRole = value; }
|
||||
}
|
||||
public Spm.EmployeeRoleCategory EmployeeRoleCategory
|
||||
{
|
||||
get { return data.EmployeeRoleCategory; }
|
||||
set { CheckChanged((int)data.EmployeeRoleCategory, (int)value); data.EmployeeRoleCategory = value; }
|
||||
set { data.EmployeeRoleCategory = value; }
|
||||
}
|
||||
public ushort Seq
|
||||
{
|
||||
get { return data.Seq; }
|
||||
set { CheckChanged(data.Seq, value); data.Seq = value; }
|
||||
set { data.Seq = value; }
|
||||
}
|
||||
public SysId EmployeeRoleId
|
||||
{
|
||||
get { return data.EmployeeRoleId; }
|
||||
set { CheckChanged(data.EmployeeRoleId, value); data.EmployeeRoleId = value; }
|
||||
set { data.EmployeeRoleId = value; }
|
||||
}
|
||||
public String EmployeeCode
|
||||
{
|
||||
get { return data.EmployeeCode; }
|
||||
set { CheckChanged(data.EmployeeCode, value); data.EmployeeCode = value; }
|
||||
set { data.EmployeeCode = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -33,13 +33,9 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public Data ()
|
||||
{
|
||||
Status = SpmDepartment.DefaultStatus;
|
||||
}
|
||||
public SysId InstitutionId { get; set; }
|
||||
public String Name { get; set; }
|
||||
public uint FacilityTypes { get; set; } = 0;
|
||||
@@ -58,6 +54,84 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
}
|
||||
public DateTime ApplicableFrom { get; set; }
|
||||
public DateTime ApplicableTo { get; set; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
Status = SpmDepartment.DefaultStatus;
|
||||
}
|
||||
public SysId InstitutionId
|
||||
{
|
||||
get { return data.InstitutionId; }
|
||||
set { CheckChanged(data.InstitutionId, value); data.InstitutionId = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
}
|
||||
// Facility types.
|
||||
public uint FacilityTypes { get { return data.FacilityTypes; } set { data.FacilityTypes = value; } }
|
||||
public static int GetFacilityTypeBit (Spm.FacilityType facilityType)
|
||||
{
|
||||
// Map facility types to their position in the bit mapped value:
|
||||
if (facilityType == Spm.FacilityType.Theatre) return 0;
|
||||
if (facilityType == Spm.FacilityType.Clinic) return 1;
|
||||
if (facilityType == Spm.FacilityType.Ward) return 2;
|
||||
if (facilityType == Spm.FacilityType.Apparatus) return 3;
|
||||
return -1;
|
||||
}
|
||||
public static bool HasFacilityType (uint facilityTypes, Spm.FacilityType facilityType)
|
||||
{
|
||||
int facilityTypeBit = GetFacilityTypeBit(facilityType);
|
||||
if (facilityTypeBit >= 0 && facilityTypeBit < 32)
|
||||
return (facilityTypes & (((uint)1) << facilityTypeBit)) > 0;
|
||||
return false;
|
||||
}
|
||||
public bool HasFacilityType (Spm.FacilityType facilityType)
|
||||
{
|
||||
return HasFacilityType(data.FacilityTypes, facilityType);
|
||||
}
|
||||
// Allow any facility.
|
||||
public uint AllowAnyFacilities { get { return data.AllowAnyFacilities; } set { data.AllowAnyFacilities = value; } }
|
||||
public static bool AllowAnyFacility (uint allowAnyFacilities, Spm.FacilityType facilityType)
|
||||
{
|
||||
int facilityTypeBit = GetFacilityTypeBit(facilityType);
|
||||
if (facilityTypeBit >= 0 && facilityTypeBit < 32)
|
||||
return (allowAnyFacilities & (((uint)1) << facilityTypeBit)) > 0;
|
||||
return false;
|
||||
}
|
||||
public bool AllowAnyFacility (Spm.FacilityType facilityType)
|
||||
{
|
||||
return AllowAnyFacility(data.AllowAnyFacilities, facilityType);
|
||||
}
|
||||
// Cancel re-book limit.
|
||||
public static ushort GetCancelReBookLimit (String cancelReBookLimit, Spm.FacilityType facilityType)
|
||||
{
|
||||
if (facilityType == Spm.FacilityType.Theatre) return 28;
|
||||
return 0;
|
||||
}
|
||||
public ushort GetCancelReBookLimit (Spm.FacilityType facilityType)
|
||||
{
|
||||
return GetCancelReBookLimit("", facilityType);
|
||||
}
|
||||
public DateTime ApplicableFrom
|
||||
{
|
||||
get { return data.ApplicableFrom; }
|
||||
set { CheckChanged(data.ApplicableFrom, value); data.ApplicableFrom = value; }
|
||||
}
|
||||
public DateTime ApplicableTo
|
||||
{
|
||||
get { return data.ApplicableTo; }
|
||||
set { CheckChanged(data.ApplicableTo, value); data.ApplicableTo = value; }
|
||||
}
|
||||
internal void PopulateFrom (Data data)
|
||||
{
|
||||
InstitutionId = data.InstitutionId;
|
||||
@@ -137,12 +211,12 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId InstitutionId
|
||||
{
|
||||
get { return data.InstitutionId; }
|
||||
protected set { CheckChanged(data.InstitutionId, value); data.InstitutionId = value; }
|
||||
protected set { data.InstitutionId = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
set { data.Name = value; }
|
||||
}
|
||||
// Facility types.
|
||||
public uint FacilityTypes { get { return data.FacilityTypes; } set { data.FacilityTypes = value; } }
|
||||
@@ -192,12 +266,12 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public DateTime ApplicableFrom
|
||||
{
|
||||
get { return data.ApplicableFrom; }
|
||||
set { CheckChanged(data.ApplicableFrom, value); data.ApplicableFrom = value; }
|
||||
set { data.ApplicableFrom = value; }
|
||||
}
|
||||
public DateTime ApplicableTo
|
||||
{
|
||||
get { return data.ApplicableTo; }
|
||||
set { CheckChanged(data.ApplicableTo, value); data.ApplicableTo = value; }
|
||||
set { data.ApplicableTo = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -35,20 +35,78 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId InstitutionId { get; set; } = new SysId();
|
||||
public String EmployeeNo { get; set; } = "";
|
||||
public String Code { get; set; } = "";
|
||||
public String Initials { get; set; } = "";
|
||||
public String Title { get; set; } = "";
|
||||
public String Forename { get; set; } = "";
|
||||
public String Surname { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data()
|
||||
{
|
||||
//Status = EmployeeStatus;
|
||||
}
|
||||
public SysId InstitutionId { get; set; }
|
||||
public String EmployeeNo { get; set; }
|
||||
public String Code { get; set; }
|
||||
public String Initials { get; set; }
|
||||
public String Title { get; set; }
|
||||
public String Forename { get; set; }
|
||||
public String Surname { get; set; }
|
||||
public SysId InstitutionId
|
||||
{
|
||||
get { return data.InstitutionId; }
|
||||
set { CheckChanged(data.InstitutionId, value); data.InstitutionId = value; }
|
||||
}
|
||||
public String EmployeeNo
|
||||
{
|
||||
get { return data.EmployeeNo; }
|
||||
set { CheckChanged(data.EmployeeNo, value); data.EmployeeNo = value; }
|
||||
}
|
||||
public String Code
|
||||
{
|
||||
get { return data.Code; }
|
||||
set { CheckChanged(data.Code, value); data.Code = value; }
|
||||
}
|
||||
public String Initials
|
||||
{
|
||||
get { return data.Initials; }
|
||||
set { CheckChanged(data.Initials, value); data.Initials = value; }
|
||||
}
|
||||
public String Title
|
||||
{
|
||||
get { return data.Title; }
|
||||
set { CheckChanged(data.Title, value); data.Title = value; }
|
||||
}
|
||||
public String Forename
|
||||
{
|
||||
get { return data.Forename; }
|
||||
set { CheckChanged(data.Forename, value); data.Forename = value; }
|
||||
}
|
||||
public String Surname
|
||||
{
|
||||
get { return data.Surname; }
|
||||
set { CheckChanged(data.Surname, value); data.Surname = value; }
|
||||
}
|
||||
public static String GetDisplayName (String surname, String forename, bool upperSurname = true)
|
||||
{
|
||||
String name = surname;
|
||||
if (upperSurname)
|
||||
name.ToUpper();
|
||||
if (!StringUtil.IsEmpty(surname) && !StringUtil.IsEmpty(forename))
|
||||
name += ", ";
|
||||
name += forename;
|
||||
return name;
|
||||
}
|
||||
public String GetDisplayName (bool upperSurname = true)
|
||||
{
|
||||
return GetDisplayName(Surname, Forename, upperSurname);
|
||||
}
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
InstitutionId = data.InstitutionId;
|
||||
@@ -133,37 +191,37 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId InstitutionId
|
||||
{
|
||||
get { return data.InstitutionId; }
|
||||
set { CheckChanged(data.InstitutionId, value); data.InstitutionId = value; }
|
||||
set { data.InstitutionId = value; }
|
||||
}
|
||||
public String EmployeeNo
|
||||
{
|
||||
get { return data.EmployeeNo; }
|
||||
set { CheckChanged(data.EmployeeNo, value); data.EmployeeNo = value; }
|
||||
set { data.EmployeeNo = value; }
|
||||
}
|
||||
public String Code
|
||||
{
|
||||
get { return data.Code; }
|
||||
set { CheckChanged(data.Code, value); data.Code = value; }
|
||||
set { data.Code = value; }
|
||||
}
|
||||
public String Initials
|
||||
{
|
||||
get { return data.Initials; }
|
||||
set { CheckChanged(data.Initials, value); data.Initials = value; }
|
||||
set { data.Initials = value; }
|
||||
}
|
||||
public String Title
|
||||
{
|
||||
get { return data.Title; }
|
||||
set { CheckChanged(data.Title, value); data.Title = value; }
|
||||
set { data.Title = value; }
|
||||
}
|
||||
public String Forename
|
||||
{
|
||||
get { return data.Forename; }
|
||||
set { CheckChanged(data.Forename, value); data.Forename = value; }
|
||||
set { data.Forename = value; }
|
||||
}
|
||||
public String Surname
|
||||
{
|
||||
get { return data.Surname; }
|
||||
set { CheckChanged(data.Surname, value); data.Surname = value; }
|
||||
set { data.Surname = value; }
|
||||
}
|
||||
public static String GetDisplayName(String surname, String forename, bool upperSurname = true)
|
||||
{
|
||||
|
||||
@@ -34,18 +34,52 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId DepartmentId { get; set; } = new SysId();
|
||||
public SysId EmployeeId { get; set; } = new SysId();
|
||||
public Spm.EmployeeRole EmployeeRole { get; set; } = Spm.EmployeeRole.Unknown;
|
||||
public DateTime ApplicationFrom { get; set; } = DateTime.MinValue;
|
||||
public DateTime ApplicationTo { get; set; } = DateTime.MinValue;
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = EmployeeRoleStatus;
|
||||
}
|
||||
public SysId DepartmentId { get; set; }
|
||||
public SysId EmployeeId { get; set; }
|
||||
public Spm.EmployeeRole EmployeeRole { get; set; }
|
||||
public DateTime ApplicationFrom { get; set; }
|
||||
public DateTime ApplicationTo { get; set; }
|
||||
public SysId DepartmentId
|
||||
{
|
||||
get { return data.DepartmentId; }
|
||||
set { CheckChanged(data.DepartmentId, value); data.DepartmentId = value; }
|
||||
}
|
||||
public SysId EmployeeId
|
||||
{
|
||||
get { return data.EmployeeId; }
|
||||
set { CheckChanged(data.EmployeeId, value); data.EmployeeId = value; }
|
||||
}
|
||||
public Spm.EmployeeRole EmployeeRole
|
||||
{
|
||||
get { return data.EmployeeRole; }
|
||||
set { CheckChanged((int)data.EmployeeRole, (int)value); data.EmployeeRole = value; }
|
||||
}
|
||||
public DateTime ApplicationFrom
|
||||
{
|
||||
get { return data.ApplicationFrom; }
|
||||
set { CheckChanged(data.ApplicationFrom, value); data.ApplicationFrom = value; }
|
||||
}
|
||||
public DateTime ApplicationTo
|
||||
{
|
||||
get { return data.ApplicationTo; }
|
||||
set { CheckChanged(data.ApplicationTo, value); data.ApplicationTo = value; }
|
||||
}
|
||||
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
@@ -129,27 +163,27 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId DepartmentId
|
||||
{
|
||||
get { return data.DepartmentId; }
|
||||
set { CheckChanged(data.DepartmentId, value); data.DepartmentId = value; }
|
||||
set { data.DepartmentId = value; }
|
||||
}
|
||||
public SysId EmployeeId
|
||||
{
|
||||
get { return data.EmployeeId; }
|
||||
set { CheckChanged(data.EmployeeId, value); data.EmployeeId = value; }
|
||||
set { data.EmployeeId = value; }
|
||||
}
|
||||
public Spm.EmployeeRole EmployeeRole
|
||||
{
|
||||
get { return data.EmployeeRole; }
|
||||
set { CheckChanged((int)data.EmployeeRole, (int)value); data.EmployeeRole = value; }
|
||||
set { data.EmployeeRole = value; }
|
||||
}
|
||||
public DateTime ApplicationFrom
|
||||
{
|
||||
get { return data.ApplicationFrom; }
|
||||
set { CheckChanged(data.ApplicationFrom, value); data.ApplicationFrom = value; }
|
||||
set { data.ApplicationFrom = value; }
|
||||
}
|
||||
public DateTime ApplicationTo
|
||||
{
|
||||
get { return data.ApplicationTo; }
|
||||
set { CheckChanged(data.ApplicationTo, value); data.ApplicationTo = value; }
|
||||
set { data.ApplicationTo = value; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -41,24 +41,88 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId DepartmentId { get; set; } = new SysId();
|
||||
public Spm.FacilityType FacilityType { get; set; } = Spm.FacilityType.Unknown;
|
||||
public String Name { get; set; } = "";
|
||||
public String SortCode { get; set; } = "";
|
||||
public String Desc { get; set; } = "";
|
||||
public Spm.FacilityTemplateMapType TemplateMapType { get; set; } = Spm.FacilityTemplateMapType.Unknown;
|
||||
public Spm.ScheduleFreezeType ScheduleFreezeType { get; set; } = Spm.ScheduleFreezeType.Unknown;
|
||||
public DateTime ScheduleFreezeAtTime { get; set; } = DateTime.MinValue;
|
||||
public String ScheduleFreezeData { get; set; } = "";
|
||||
public DateTime ApplicationFrom { get; set; } = DateTime.MinValue;
|
||||
public DateTime ApplicationTo { get; set; } = DateTime.MinValue;
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = FacilityStatus;
|
||||
}
|
||||
public SysId DepartmentId { get; set; }
|
||||
public Spm.FacilityType FacilityType { get; set; }
|
||||
public String Name { get; set; }
|
||||
public String SortCode { get; set; }
|
||||
public String Desc { get; set; }
|
||||
public Spm.FacilityTemplateMapType TemplateMapType { get; set; }
|
||||
public Spm.ScheduleFreezeType ScheduleFreezeType { get; set; }
|
||||
public DateTime ScheduleFreezeAtTime { get; set; }
|
||||
public String ScheduleFreezeData { get; set; }
|
||||
public DateTime ApplicationFrom { get; set; }
|
||||
public DateTime ApplicationTo { get; set; }
|
||||
public SysId DepartmentId
|
||||
{
|
||||
get { return data.DepartmentId; }
|
||||
set { CheckChanged(data.DepartmentId, value); data.DepartmentId = value; }
|
||||
}
|
||||
public Spm.FacilityType FacilityType
|
||||
{
|
||||
get { return data.FacilityType; }
|
||||
set { CheckChanged((int)data.FacilityType, (int)value); data.FacilityType = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
}
|
||||
public String SortCode
|
||||
{
|
||||
get { return data.SortCode; }
|
||||
set { CheckChanged(data.SortCode, value); data.SortCode = value; }
|
||||
}
|
||||
public String Desc
|
||||
{
|
||||
get { return data.Desc; }
|
||||
set { CheckChanged(data.Desc, value); data.Desc = value; }
|
||||
}
|
||||
public Spm.FacilityTemplateMapType TemplateMapType
|
||||
{
|
||||
get { return data.TemplateMapType; }
|
||||
set { CheckChanged((int)data.TemplateMapType, (int)value); data.TemplateMapType = value; }
|
||||
}
|
||||
public Spm.ScheduleFreezeType ScheduleFreezeType
|
||||
{
|
||||
get { return data.ScheduleFreezeType; }
|
||||
set { CheckChanged((int)data.ScheduleFreezeType, (int)value); data.ScheduleFreezeType = value; }
|
||||
}
|
||||
public DateTime ScheduleFreezeAtTime
|
||||
{
|
||||
get { return data.ScheduleFreezeAtTime; }
|
||||
set { CheckChanged(data.ScheduleFreezeAtTime, value); data.ScheduleFreezeAtTime = value; }
|
||||
}
|
||||
public String ScheduleFreezeData
|
||||
{
|
||||
get { return data.ScheduleFreezeData; }
|
||||
set { CheckChanged(data.ScheduleFreezeData, value); data.ScheduleFreezeData = value; }
|
||||
}
|
||||
public DateTime ApplicationFrom
|
||||
{
|
||||
get { return data.ApplicationFrom; }
|
||||
set { CheckChanged(data.ApplicationFrom, value); data.ApplicationFrom = value; }
|
||||
}
|
||||
public DateTime ApplicationTo
|
||||
{
|
||||
get { return data.ApplicationTo; }
|
||||
set { CheckChanged(data.ApplicationTo, value); data.ApplicationTo = value; }
|
||||
}
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
DepartmentId = data.DepartmentId;
|
||||
@@ -136,23 +200,23 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
public Spm.WardAdmissionMode GetBookingMode()
|
||||
{
|
||||
// Based on 'Booking to Facility' flag etc.
|
||||
if (FacilityType == Spm.FacilityType.Ward && IsBookingToFacility)
|
||||
return Spm.WardAdmissionMode.ByWard;
|
||||
return Spm.WardAdmissionMode.ByResource;
|
||||
}
|
||||
{
|
||||
// Based on 'Booking to Facility' flag etc.
|
||||
if (FacilityType == Spm.FacilityType.Ward && IsBookingToFacility)
|
||||
return Spm.WardAdmissionMode.ByWard;
|
||||
return Spm.WardAdmissionMode.ByResource;
|
||||
}
|
||||
|
||||
public bool IsTemplateRequiredForBooking()
|
||||
{
|
||||
if (GetBookingMode() == Spm.WardAdmissionMode.ByWard)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
public bool IsTemplateRequiredForBooking()
|
||||
{
|
||||
if (GetBookingMode() == Spm.WardAdmissionMode.ByWard)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public Data GetData() { return data.Clone(); }
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public Data GetData() { return data.Clone(); }
|
||||
public void SetData(Data data)
|
||||
{
|
||||
String fn = GetType().Name + ".SetData";
|
||||
@@ -167,57 +231,57 @@ public Data GetData() { return data.Clone(); }
|
||||
public SysId DepartmentId
|
||||
{
|
||||
get { return data.DepartmentId; }
|
||||
set { CheckChanged(data.DepartmentId, value); data.DepartmentId = value; }
|
||||
set { data.DepartmentId = value; }
|
||||
}
|
||||
public Spm.FacilityType FacilityType
|
||||
{
|
||||
get { return data.FacilityType; }
|
||||
set { CheckChanged((int)data.FacilityType, (int)value); data.FacilityType = value; }
|
||||
set { data.FacilityType = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
set { data.Name = value; }
|
||||
}
|
||||
public String SortCode
|
||||
{
|
||||
get { return data.SortCode; }
|
||||
set { CheckChanged(data.SortCode, value); data.SortCode = value; }
|
||||
set { data.SortCode = value; }
|
||||
}
|
||||
public String Desc
|
||||
{
|
||||
get { return data.Desc; }
|
||||
set { CheckChanged(data.Desc, value); data.Desc = value; }
|
||||
set { data.Desc = value; }
|
||||
}
|
||||
public Spm.FacilityTemplateMapType TemplateMapType
|
||||
{
|
||||
get { return data.TemplateMapType; }
|
||||
set { CheckChanged((int)data.TemplateMapType, (int)value); data.TemplateMapType = value; }
|
||||
set { data.TemplateMapType = value; }
|
||||
}
|
||||
public Spm.ScheduleFreezeType ScheduleFreezeType
|
||||
{
|
||||
get { return data.ScheduleFreezeType; }
|
||||
set { CheckChanged((int)data.ScheduleFreezeType, (int)value); data.ScheduleFreezeType = value; }
|
||||
set { data.ScheduleFreezeType = value; }
|
||||
}
|
||||
public DateTime ScheduleFreezeAtTime
|
||||
{
|
||||
get { return data.ScheduleFreezeAtTime; }
|
||||
set { CheckChanged(data.ScheduleFreezeAtTime, value); data.ScheduleFreezeAtTime = value; }
|
||||
set { data.ScheduleFreezeAtTime = value; }
|
||||
}
|
||||
public String ScheduleFreezeData
|
||||
{
|
||||
get { return data.ScheduleFreezeData; }
|
||||
set { CheckChanged(data.ScheduleFreezeData, value); data.ScheduleFreezeData = value; }
|
||||
set { data.ScheduleFreezeData = value; }
|
||||
}
|
||||
public DateTime ApplicationFrom
|
||||
{
|
||||
get { return data.ApplicationFrom; }
|
||||
set { CheckChanged(data.ApplicationFrom, value); data.ApplicationFrom = value; }
|
||||
set { data.ApplicationFrom = value; }
|
||||
}
|
||||
public DateTime ApplicationTo
|
||||
{
|
||||
get { return data.ApplicationTo; }
|
||||
set { CheckChanged(data.ApplicationTo, value); data.ApplicationTo = value; }
|
||||
set { data.ApplicationTo = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -106,35 +106,148 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId FacilityId { get; set; } = new SysId();
|
||||
public SysId FacilityTemplateId { get; set; } = new SysId();
|
||||
public DateTime SessionDate { get; set; } = DateTime.MinValue;
|
||||
public Spm.TemplateType TemplateType { get; set; } = Spm.TemplateType.Unknown;
|
||||
public String Name { get; set; } = "";
|
||||
public String Desc { get; set; } = "";
|
||||
public String SessionCode { get; set; } = "";
|
||||
public DateTime StartTime { get; set; } = DateTime.MinValue;
|
||||
public DateTime FinishTime { get; set; } = DateTime.MinValue;
|
||||
// Ward resources & Clinic sessions.
|
||||
public Spm.ResourceCapacityType ResourceCapacityType { get; set; } = Spm.ResourceCapacityType.Unknown;
|
||||
public short CapacityMin { get; set; } = 0;
|
||||
public short CapacityMax { get; set; } = 0;
|
||||
public decimal UnitsExp { get; set; } = 0.0m;
|
||||
public short DurationInterval { get; set; } = 0;
|
||||
public short DurationMin { get; set; } = 0;
|
||||
public short DurationMax { get; set; } = 0;
|
||||
public short DurationBreaks { get; set; } = 0;
|
||||
// Theatre & Clinic sessions.
|
||||
public SysId ConsultantId { get; set; } = new SysId();
|
||||
public String ConsultantCode { get; set; } = "";
|
||||
public String SpecialityCode { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = FacilitySessionStatus;
|
||||
}
|
||||
public SysId FacilityId{ get; set; }
|
||||
public SysId FacilityTemplateId{ get; set; }
|
||||
public DateTime SessionDate{ get; set; }
|
||||
public Spm.TemplateType TemplateType { get; set; }
|
||||
public String Name { get; set; }
|
||||
public String Desc { get; set; }
|
||||
public String SessionCode{ get; set; }
|
||||
public DateTime StartTime { get; set; }
|
||||
public DateTime FinishTime { get; set; }
|
||||
// Ward resources & Clinic sessions.
|
||||
public Spm.ResourceCapacityType ResourceCapacityType { get; set; }
|
||||
public short CapacityMin { get; set; }
|
||||
public short CapacityMax { get; set; }
|
||||
public decimal UnitsExp { get; set; }
|
||||
public short DurationInterval { get; set; }
|
||||
public short DurationMin { get; set; }
|
||||
public short DurationMax { get; set; }
|
||||
public short DurationBreaks { get; set; }
|
||||
// Theatre & Clinic sessions.
|
||||
public SysId ConsultantId{ get; set; }
|
||||
public String ConsultantCode{ get; set; }
|
||||
public String SpecialityCode{ get; set; }
|
||||
public SysId FacilityId
|
||||
{
|
||||
get { return data.FacilityId; }
|
||||
set { CheckChanged(data.FacilityId, value); data.FacilityId = value; }
|
||||
}
|
||||
public SysId FacilityTemplateId
|
||||
{
|
||||
get { return data.FacilityTemplateId; }
|
||||
set { CheckChanged(data.FacilityTemplateId, value); data.FacilityTemplateId = value; }
|
||||
}
|
||||
public DateTime SessionDate
|
||||
{
|
||||
get { return data.SessionDate; }
|
||||
set { CheckChanged(data.SessionDate, value); data.SessionDate = value; }
|
||||
}
|
||||
public Spm.TemplateType TemplateType
|
||||
{
|
||||
get { return data.TemplateType; }
|
||||
set { CheckChanged((int)data.TemplateType, (int)value); data.TemplateType = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
}
|
||||
public String Description
|
||||
{
|
||||
get { return data.Desc; }
|
||||
set { CheckChanged(data.Desc, value); data.Desc = value; }
|
||||
}
|
||||
public String SessionCode
|
||||
{
|
||||
get { return data.SessionCode; }
|
||||
set { CheckChanged(data.SessionCode, value); data.SessionCode = value; }
|
||||
}
|
||||
public DateTime StartTime
|
||||
{
|
||||
get { return data.StartTime; }
|
||||
set { CheckChanged(data.StartTime, value); data.StartTime = value; }
|
||||
}
|
||||
public DateTime FinishTime
|
||||
{
|
||||
get { return data.FinishTime; }
|
||||
set { CheckChanged(data.FinishTime, value); data.FinishTime = value; }
|
||||
}
|
||||
public Spm.ResourceCapacityType ResourceCapacityType
|
||||
{
|
||||
get { return data.ResourceCapacityType; }
|
||||
set { CheckChanged((int)data.ResourceCapacityType, (int)value); data.ResourceCapacityType = value; }
|
||||
}
|
||||
public short CapacityMin
|
||||
{
|
||||
get { return data.CapacityMin; }
|
||||
set { CheckChanged(data.CapacityMin, value); data.CapacityMin = value; }
|
||||
}
|
||||
public short CapacityMax
|
||||
{
|
||||
get { return data.CapacityMax; }
|
||||
set { CheckChanged(data.CapacityMax, value); data.CapacityMax = value; }
|
||||
}
|
||||
public decimal UnitsExp
|
||||
{
|
||||
get { return data.UnitsExp; }
|
||||
set { CheckChanged(data.UnitsExp, value); data.UnitsExp = value; }
|
||||
}
|
||||
public static ushort GetDurationIntervalDefault ()
|
||||
{
|
||||
return 15;
|
||||
}
|
||||
public short DurationInterval
|
||||
{
|
||||
get { return data.DurationInterval; }
|
||||
set { CheckChanged(data.DurationInterval, value); data.DurationInterval = value; }
|
||||
}
|
||||
public short DurationMin
|
||||
{
|
||||
get { return data.DurationMin; }
|
||||
set { CheckChanged(data.DurationMin, value); data.DurationMin = value; }
|
||||
}
|
||||
public short DurationMax
|
||||
{
|
||||
get { return data.DurationMax; }
|
||||
set { CheckChanged(data.DurationMax, value); data.DurationMax = value; }
|
||||
}
|
||||
public short DurationBreaks
|
||||
{
|
||||
get { return data.DurationBreaks; }
|
||||
set { CheckChanged(data.DurationBreaks, value); data.DurationBreaks = value; }
|
||||
}
|
||||
public SysId ConsultantId
|
||||
{
|
||||
get { return data.ConsultantId; }
|
||||
set { CheckChanged(data.ConsultantId, value); data.ConsultantId = value; }
|
||||
}
|
||||
public String ConsultantCode
|
||||
{
|
||||
get { return data.ConsultantCode; }
|
||||
set { CheckChanged(data.ConsultantCode, value); data.ConsultantCode = value; }
|
||||
}
|
||||
public String SpecialityCode
|
||||
{
|
||||
get { return data.SpecialityCode; }
|
||||
set { CheckChanged(data.SpecialityCode, value); data.SpecialityCode = value; }
|
||||
}
|
||||
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
@@ -143,7 +256,7 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
SessionDate = data.SessionDate;
|
||||
TemplateType = data.TemplateType;
|
||||
Name = data.Name;
|
||||
Desc = data.Desc;
|
||||
Description = data.Description;
|
||||
SessionCode = data.SessionCode;
|
||||
StartTime = data.StartTime;
|
||||
FinishTime = data.FinishTime;
|
||||
@@ -252,67 +365,67 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId FacilityId
|
||||
{
|
||||
get { return data.FacilityId; }
|
||||
set { CheckChanged(data.FacilityId, value); data.FacilityId = value; }
|
||||
set { data.FacilityId = value; }
|
||||
}
|
||||
public SysId FacilityTemplateId
|
||||
{
|
||||
get { return data.FacilityTemplateId; }
|
||||
set { CheckChanged(data.FacilityTemplateId, value); data.FacilityTemplateId = value; }
|
||||
set { data.FacilityTemplateId = value; }
|
||||
}
|
||||
public DateTime SessionDate
|
||||
{
|
||||
get { return data.SessionDate; }
|
||||
set { CheckChanged(data.SessionDate, value); data.SessionDate = value; }
|
||||
set { data.SessionDate = value; }
|
||||
}
|
||||
public Spm.TemplateType TemplateType
|
||||
{
|
||||
get { return data.TemplateType; }
|
||||
set { CheckChanged((int)data.TemplateType, (int)value); data.TemplateType = value; }
|
||||
set { data.TemplateType = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
set { data.Name = value; }
|
||||
}
|
||||
public String Description
|
||||
{
|
||||
get { return data.Desc; }
|
||||
set { CheckChanged(data.Desc, value); data.Desc = value; }
|
||||
get { return data.Description; }
|
||||
set { data.Description = value; }
|
||||
}
|
||||
public String SessionCode
|
||||
{
|
||||
get { return data.SessionCode; }
|
||||
set { CheckChanged(data.SessionCode, value); data.SessionCode = value; }
|
||||
set { data.SessionCode = value; }
|
||||
}
|
||||
public DateTime StartTime
|
||||
{
|
||||
get { return data.StartTime; }
|
||||
set { CheckChanged(data.StartTime, value); data.StartTime = value; }
|
||||
set { data.StartTime = value; }
|
||||
}
|
||||
public DateTime FinishTime
|
||||
{
|
||||
get { return data.FinishTime; }
|
||||
set { CheckChanged(data.FinishTime, value); data.FinishTime = value; }
|
||||
set { data.FinishTime = value; }
|
||||
}
|
||||
public Spm.ResourceCapacityType ResourceCapacityType
|
||||
{
|
||||
get { return data.ResourceCapacityType; }
|
||||
set { CheckChanged((int)data.ResourceCapacityType, (int)value); data.ResourceCapacityType = value; }
|
||||
set { data.ResourceCapacityType = value; }
|
||||
}
|
||||
public short CapacityMin
|
||||
{
|
||||
get { return data.CapacityMin; }
|
||||
set { CheckChanged(data.CapacityMin, value); data.CapacityMin = value; }
|
||||
set { data.CapacityMin = value; }
|
||||
}
|
||||
public short CapacityMax
|
||||
{
|
||||
get { return data.CapacityMax; }
|
||||
set { CheckChanged(data.CapacityMax, value); data.CapacityMax = value; }
|
||||
set { data.CapacityMax = value; }
|
||||
}
|
||||
public decimal UnitsExp
|
||||
{
|
||||
get { return data.UnitsExp; }
|
||||
set { CheckChanged(data.UnitsExp, value); data.UnitsExp = value; }
|
||||
set { data.UnitsExp = value; }
|
||||
}
|
||||
public static ushort GetDurationIntervalDefault()
|
||||
{
|
||||
@@ -321,37 +434,37 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public short DurationInterval
|
||||
{
|
||||
get { return data.DurationInterval; }
|
||||
set { CheckChanged(data.DurationInterval, value); data.DurationInterval = value; }
|
||||
set { data.DurationInterval = value; }
|
||||
}
|
||||
public short DurationMin
|
||||
{
|
||||
get { return data.DurationMin; }
|
||||
set { CheckChanged(data.DurationMin, value); data.DurationMin = value; }
|
||||
set { data.DurationMin = value; }
|
||||
}
|
||||
public short DurationMax
|
||||
{
|
||||
get { return data.DurationMax; }
|
||||
set { CheckChanged(data.DurationMax, value); data.DurationMax = value; }
|
||||
set { data.DurationMax = value; }
|
||||
}
|
||||
public short DurationBreaks
|
||||
{
|
||||
get { return data.DurationBreaks; }
|
||||
set { CheckChanged(data.DurationBreaks, value); data.DurationBreaks = value; }
|
||||
set { data.DurationBreaks = value; }
|
||||
}
|
||||
public SysId ConsultantId
|
||||
{
|
||||
get { return data.ConsultantId; }
|
||||
set { CheckChanged(data.ConsultantId, value); data.ConsultantId = value; }
|
||||
set { data.ConsultantId = value; }
|
||||
}
|
||||
public String ConsultantCode
|
||||
{
|
||||
get { return data.ConsultantCode; }
|
||||
set { CheckChanged(data.ConsultantCode, value); data.ConsultantCode = value; }
|
||||
set { data.ConsultantCode = value; }
|
||||
}
|
||||
public String SpecialityCode
|
||||
{
|
||||
get { return data.SpecialityCode; }
|
||||
set { CheckChanged(data.SpecialityCode, value); data.SpecialityCode = value; }
|
||||
set { data.SpecialityCode = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -55,40 +55,180 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId FacilityId { get; set; } = new SysId();
|
||||
public Spm.ResourceCategory ResourceCategory { get; set; } = Spm.ResourceCategory.Unknown;
|
||||
public Spm.TemplateType TemplateType { get; set; } = Spm.TemplateType.Unknown;
|
||||
public String Name { get; set; } = "";
|
||||
public String SortCode { get; set; } = "";
|
||||
public String Desc { get; set; } = "";
|
||||
public String SessionCode { get; set; } = "";
|
||||
public String Group { get; set; } = "";
|
||||
// Ward resources & Clinic sessions.
|
||||
public Spm.ResourceCapacityType ResourceCapacityType { get; set; } = Spm.ResourceCapacityType.Unknown;
|
||||
public ushort CapacityMin { get; set; } = 0;
|
||||
public ushort CapacityMax { get; set; } = 0;
|
||||
public decimal UnitsExp { get; set; } = 0.0m;
|
||||
public ushort DurationInterval { get; set; } = 0;
|
||||
public ushort DurationMin { get; set; } = 0;
|
||||
public ushort DurationMax { get; set; } = 0;
|
||||
public ushort DurationBreaks { get; set; } = 0;
|
||||
// Theatre & Clinic sessions.
|
||||
public ushort WeekOfMonth { get; set; } = 0;
|
||||
public ushort DayOfWeek { get; set; } = 0;
|
||||
public SysId ConsultantId { get; set; } = new SysId(); // Employee role.
|
||||
public String ConsultantCode { get; set; } = "";
|
||||
public String SpecialityCode { get; set; } = "";
|
||||
public DateTime StartTime { get; set; } = DateTime.MinValue;
|
||||
public DateTime FinishTime { get; set; } = DateTime.MinValue;
|
||||
public DateTime ApplicationFrom { get; set; } = DateTime.MinValue;
|
||||
public DateTime ApplicationTo { get; set; } = DateTime.MinValue;
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = FacilityTemplateStatus;
|
||||
}
|
||||
public SysId FacilityId { get; set; }
|
||||
public Spm.ResourceCategory ResourceCategory { get; set; }
|
||||
public Spm.TemplateType TemplateType { get; set; }
|
||||
public String Name { get; set; }
|
||||
public String SortCode { get; set; }
|
||||
public String Desc { get; set; }
|
||||
public String SessionCode { get; set; }
|
||||
public String Group { get; set; }
|
||||
public SysId FacilityId
|
||||
{
|
||||
get { return data.FacilityId; }
|
||||
set { CheckChanged(data.FacilityId, value); data.FacilityId = value; }
|
||||
}
|
||||
public Spm.ResourceCategory ResourceCategory
|
||||
{
|
||||
get { return data.ResourceCategory; }
|
||||
set { CheckChanged((int)data.ResourceCategory, (int)value); data.ResourceCategory = value; }
|
||||
}
|
||||
public Spm.TemplateType TemplateType
|
||||
{
|
||||
get { return data.TemplateType; }
|
||||
set { CheckChanged((int)data.TemplateType, (int)value); data.TemplateType = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
}
|
||||
public String SortCode
|
||||
{
|
||||
get { return data.SortCode; }
|
||||
set { CheckChanged(data.SortCode, value); data.SortCode = value; }
|
||||
}
|
||||
public String Desc
|
||||
{
|
||||
get { return data.Desc; }
|
||||
set { CheckChanged(data.Desc, value); data.Desc = value; }
|
||||
}
|
||||
public String SessionCode
|
||||
{
|
||||
get { return data.SessionCode; }
|
||||
set { CheckChanged(data.SessionCode, value); data.SessionCode = value; }
|
||||
}
|
||||
public String Group
|
||||
{
|
||||
get { return data.Group; }
|
||||
set { CheckChanged(data.Group, value); data.Group = value; }
|
||||
}
|
||||
// Ward resources & Clinic sessions.
|
||||
public Spm.ResourceCapacityType ResourceCapacityType { get; set; }
|
||||
public ushort CapacityMin { get; set; }
|
||||
public ushort CapacityMax { get; set; }
|
||||
public decimal UnitsExp { get; set; }
|
||||
public ushort DurationInterval { get; set; }
|
||||
public ushort DurationMin { get; set; }
|
||||
public ushort DurationMax { get; set; }
|
||||
public ushort DurationBreaks { get; set; }
|
||||
public Spm.ResourceCapacityType ResourceCapacityType
|
||||
{
|
||||
get { return data.ResourceCapacityType; }
|
||||
set { CheckChanged((int)data.ResourceCapacityType, (int)value); data.ResourceCapacityType = value; }
|
||||
}
|
||||
public ushort CapacityMin
|
||||
{
|
||||
get { return data.CapacityMin; }
|
||||
set { CheckChanged(data.CapacityMin, value); data.CapacityMin = value; }
|
||||
}
|
||||
public ushort CapacityMax
|
||||
{
|
||||
get { return data.CapacityMax; }
|
||||
set { CheckChanged(data.CapacityMax, value); data.CapacityMax = value; }
|
||||
}
|
||||
public decimal UnitsExp
|
||||
{
|
||||
get { return data.UnitsExp; }
|
||||
set { CheckChanged(data.UnitsExp, value); data.UnitsExp = value; }
|
||||
}
|
||||
public static ushort GetDurationIntervalDefault ()
|
||||
{
|
||||
return 15;
|
||||
}
|
||||
public ushort DurationInterval
|
||||
{
|
||||
get { return data.DurationInterval; }
|
||||
set { CheckChanged(data.DurationInterval, value); data.DurationInterval = value; }
|
||||
}
|
||||
public ushort DurationMin
|
||||
{
|
||||
get { return data.DurationMin; }
|
||||
set { CheckChanged(data.DurationMin, value); data.DurationMin = value; }
|
||||
}
|
||||
public ushort DurationMax
|
||||
{
|
||||
get { return data.DurationMax; }
|
||||
set { CheckChanged(data.DurationMax, value); data.DurationMax = value; }
|
||||
}
|
||||
public ushort DurationBreaks
|
||||
{
|
||||
get { return data.DurationBreaks; }
|
||||
set { CheckChanged(data.DurationBreaks, value); data.DurationBreaks = value; }
|
||||
}
|
||||
// Theatre & Clinic sessions.
|
||||
public ushort WeekOfMonth { get; set; }
|
||||
public ushort DayOfWeek { get; set; }
|
||||
public SysId ConsultantId { get; set; } // Employee role.
|
||||
public String ConsultantCode { get; set; }
|
||||
public String SpecialityCode { get; set; }
|
||||
public DateTime StartTime { get; set; }
|
||||
public DateTime FinishTime { get; set; }
|
||||
public DateTime ApplicationFrom { get; set; }
|
||||
public DateTime ApplicationTo { get; set; }
|
||||
public ushort WeekOfMonth
|
||||
{
|
||||
get { return data.WeekOfMonth; }
|
||||
set { CheckChanged(data.WeekOfMonth, value); data.WeekOfMonth = value; }
|
||||
}
|
||||
public ushort DayOfWeek
|
||||
{
|
||||
get { return data.DayOfWeek; }
|
||||
set { CheckChanged(data.DayOfWeek, value); data.DayOfWeek = value; }
|
||||
}
|
||||
public SysId ConsultantId
|
||||
{
|
||||
get { return data.ConsultantId; }
|
||||
set { CheckChanged(data.ConsultantId, value); data.ConsultantId = value; }
|
||||
}
|
||||
public String ConsultantCode
|
||||
{
|
||||
get { return data.ConsultantCode; }
|
||||
set { CheckChanged(data.ConsultantCode, value); data.ConsultantCode = value; }
|
||||
}
|
||||
public String SpecialityCode
|
||||
{
|
||||
get { return data.SpecialityCode; }
|
||||
set { CheckChanged(data.SpecialityCode, value); data.SpecialityCode = value; }
|
||||
}
|
||||
public DateTime StartTime
|
||||
{
|
||||
get { return data.StartTime; }
|
||||
set { CheckChanged(data.StartTime, value); data.StartTime = value; }
|
||||
}
|
||||
public DateTime FinishTime
|
||||
{
|
||||
get { return data.FinishTime; }
|
||||
set { CheckChanged(data.FinishTime, value); data.FinishTime = value; }
|
||||
}
|
||||
public DateTime ApplicationFrom
|
||||
{
|
||||
get { return data.ApplicationFrom; }
|
||||
set { CheckChanged(data.ApplicationFrom, value); data.ApplicationFrom = value; }
|
||||
}
|
||||
public DateTime ApplicationTo
|
||||
{
|
||||
get { return data.ApplicationTo; }
|
||||
set { CheckChanged(data.ApplicationTo, value); data.ApplicationTo = value; }
|
||||
}
|
||||
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
@@ -214,63 +354,63 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId FacilityId
|
||||
{
|
||||
get { return data.FacilityId; }
|
||||
set { CheckChanged(data.FacilityId, value); data.FacilityId = value; }
|
||||
set { data.FacilityId = value; }
|
||||
}
|
||||
public Spm.ResourceCategory ResourceCategory
|
||||
{
|
||||
get { return data.ResourceCategory; }
|
||||
set { CheckChanged((int)data.ResourceCategory, (int)value); data.ResourceCategory = value; }
|
||||
set { data.ResourceCategory = value; }
|
||||
}
|
||||
public Spm.TemplateType TemplateType
|
||||
{
|
||||
get { return data.TemplateType; }
|
||||
set { CheckChanged((int)data.TemplateType, (int)value); data.TemplateType = value; }
|
||||
set { data.TemplateType = value; }
|
||||
}
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
set { data.Name = value; }
|
||||
}
|
||||
public String SortCode
|
||||
{
|
||||
get { return data.SortCode; }
|
||||
set { CheckChanged(data.SortCode, value); data.SortCode = value; }
|
||||
set { data.SortCode = value; }
|
||||
}
|
||||
public String Desc
|
||||
{
|
||||
get { return data.Desc; }
|
||||
set { CheckChanged(data.Desc, value); data.Desc = value; }
|
||||
set { data.Desc = value; }
|
||||
}
|
||||
public String SessionCode
|
||||
{
|
||||
get { return data.SessionCode; }
|
||||
set { CheckChanged(data.SessionCode, value); data.SessionCode = value; }
|
||||
set { data.SessionCode = value; }
|
||||
}
|
||||
public String Group
|
||||
{
|
||||
get { return data.Group; }
|
||||
set { CheckChanged(data.Group, value); data.Group = value; }
|
||||
set { data.Group = value; }
|
||||
}
|
||||
// Ward resources & Clinic sessions.
|
||||
public Spm.ResourceCapacityType ResourceCapacityType
|
||||
{
|
||||
get { return data.ResourceCapacityType; }
|
||||
set { CheckChanged((int)data.ResourceCapacityType, (int)value); data.ResourceCapacityType = value; }
|
||||
set { data.ResourceCapacityType = value; }
|
||||
}
|
||||
public ushort CapacityMin
|
||||
{
|
||||
get { return data.CapacityMin; }
|
||||
set { CheckChanged(data.CapacityMin, value); data.CapacityMin = value; }
|
||||
set { data.CapacityMin = value; }
|
||||
}
|
||||
public ushort CapacityMax
|
||||
{
|
||||
get { return data.CapacityMax; }
|
||||
set { CheckChanged(data.CapacityMax, value); data.CapacityMax = value; }
|
||||
set { data.CapacityMax = value; }
|
||||
}
|
||||
public decimal UnitsExp
|
||||
{
|
||||
get { return data.UnitsExp; }
|
||||
set { CheckChanged(data.UnitsExp, value); data.UnitsExp = value; }
|
||||
set { data.UnitsExp = value; }
|
||||
}
|
||||
public static ushort GetDurationIntervalDefault()
|
||||
{
|
||||
@@ -279,68 +419,68 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public ushort DurationInterval
|
||||
{
|
||||
get { return data.DurationInterval; }
|
||||
set { CheckChanged(data.DurationInterval, value); data.DurationInterval = value; }
|
||||
set { data.DurationInterval = value; }
|
||||
}
|
||||
public ushort DurationMin
|
||||
{
|
||||
get { return data.DurationMin; }
|
||||
set { CheckChanged(data.DurationMin, value); data.DurationMin = value; }
|
||||
set { data.DurationMin = value; }
|
||||
}
|
||||
public ushort DurationMax
|
||||
{
|
||||
get { return data.DurationMax; }
|
||||
set { CheckChanged(data.DurationMax, value); data.DurationMax = value; }
|
||||
set { data.DurationMax = value; }
|
||||
}
|
||||
public ushort DurationBreaks
|
||||
{
|
||||
get { return data.DurationBreaks; }
|
||||
set { CheckChanged(data.DurationBreaks, value); data.DurationBreaks = value; }
|
||||
set { data.DurationBreaks = value; }
|
||||
}
|
||||
// Theatre & Clinic sessions.
|
||||
public ushort WeekOfMonth
|
||||
{
|
||||
get { return data.WeekOfMonth; }
|
||||
set { CheckChanged(data.WeekOfMonth, value); data.WeekOfMonth = value; }
|
||||
set { data.WeekOfMonth = value; }
|
||||
}
|
||||
public ushort DayOfWeek
|
||||
{
|
||||
get { return data.DayOfWeek; }
|
||||
set { CheckChanged(data.DayOfWeek, value); data.DayOfWeek = value; }
|
||||
set { data.DayOfWeek = value; }
|
||||
}
|
||||
public SysId ConsultantId
|
||||
{
|
||||
get { return data.ConsultantId; }
|
||||
set { CheckChanged(data.ConsultantId, value); data.ConsultantId = value; }
|
||||
set { data.ConsultantId = value; }
|
||||
}
|
||||
public String ConsultantCode
|
||||
{
|
||||
get { return data.ConsultantCode; }
|
||||
set { CheckChanged(data.ConsultantCode, value); data.ConsultantCode = value; }
|
||||
set { data.ConsultantCode = value; }
|
||||
}
|
||||
public String SpecialityCode
|
||||
{
|
||||
get { return data.SpecialityCode; }
|
||||
set { CheckChanged(data.SpecialityCode, value); data.SpecialityCode = value; }
|
||||
set { data.SpecialityCode = value; }
|
||||
}
|
||||
public DateTime StartTime
|
||||
{
|
||||
get { return data.StartTime; }
|
||||
set { CheckChanged(data.StartTime, value); data.StartTime = value; }
|
||||
set { data.StartTime = value; }
|
||||
}
|
||||
public DateTime FinishTime
|
||||
{
|
||||
get { return data.FinishTime; }
|
||||
set { CheckChanged(data.FinishTime, value); data.FinishTime = value; }
|
||||
set { data.FinishTime = value; }
|
||||
}
|
||||
public DateTime ApplicationFrom
|
||||
{
|
||||
get { return data.ApplicationFrom; }
|
||||
set { CheckChanged(data.ApplicationFrom, value); data.ApplicationFrom = value; }
|
||||
set { data.ApplicationFrom = value; }
|
||||
}
|
||||
public DateTime ApplicationTo
|
||||
{
|
||||
get { return data.ApplicationTo; }
|
||||
set { CheckChanged(data.ApplicationTo, value); data.ApplicationTo = value; }
|
||||
set { data.ApplicationTo = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -29,14 +29,28 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public String Name { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = InstitutionStatus;
|
||||
}
|
||||
public String Name { get; set; }
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
}
|
||||
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
@@ -109,7 +123,7 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public String Name
|
||||
{
|
||||
get { return data.Name; }
|
||||
set { CheckChanged(data.Name, value); data.Name = value; }
|
||||
set { data.Name = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -31,16 +31,40 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId InstitutionId { get; set; } = new SysId();
|
||||
public String Code { get; set; } = "";
|
||||
public String Description { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = OperationStatus;
|
||||
}
|
||||
public SysId InstitutionId { get; set; }
|
||||
public String Code { get; set; }
|
||||
public String Description { get; set; }
|
||||
public SysId InstitutionId
|
||||
{
|
||||
get { return data.InstitutionId; }
|
||||
set { CheckChanged(data.InstitutionId, value); data.InstitutionId = value; }
|
||||
}
|
||||
public String Code
|
||||
{
|
||||
get { return data.Code; }
|
||||
set { CheckChanged(data.Code, value); data.Code = value; }
|
||||
}
|
||||
public String Description
|
||||
{
|
||||
get { return data.Description; }
|
||||
set { CheckChanged(data.Description, value); data.Description = value; }
|
||||
}
|
||||
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
@@ -118,17 +142,17 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId InstitutionId
|
||||
{
|
||||
get { return data.InstitutionId; }
|
||||
set { CheckChanged(data.InstitutionId, value); data.InstitutionId = value; }
|
||||
set { data.InstitutionId = value; }
|
||||
}
|
||||
public String Code
|
||||
{
|
||||
get { return data.Code; }
|
||||
set { CheckChanged(data.Code, value); data.Code = value; }
|
||||
set { data.Code = value; }
|
||||
}
|
||||
public String Description
|
||||
{
|
||||
get { return data.Description; }
|
||||
set { CheckChanged(data.Description, value); data.Description = value; }
|
||||
set { data.Description = value; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -38,23 +38,96 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId InstitutionId { get; set; } = new SysId();
|
||||
public String PatientNo { get; set; } = "";
|
||||
public String NhsNumber { get; set; } = "";
|
||||
public String Title { get; set; } = "";
|
||||
public String Forename { get; set; } = "";
|
||||
public String Surname { get; set; } = "";
|
||||
public Spm.Gender Gender { get; set; } = Spm.Gender.Unknown;
|
||||
public DateTime BirthOn { get; set; } = DateTime.MinValue;
|
||||
public String Age { get; set; } = "";
|
||||
public DateTime AgeOn { get; set; } = DateTime.MinValue;
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = PatientStatus;
|
||||
}
|
||||
public SysId InstitutionId { get; set; }
|
||||
public String PatientNo { get; set; }
|
||||
public String NhsNumber { get; set; }
|
||||
public String Title { get; set; }
|
||||
public String Forename { get; set; }
|
||||
public String Surname { get; set; }
|
||||
public Spm.Gender Gender { get; set; }
|
||||
public DateTime BirthOn { get; set; }
|
||||
public String Age { get; set; }
|
||||
public DateTime AgeOn { get; set; }
|
||||
public SysId InstitutionId
|
||||
{
|
||||
get { return data.InstitutionId; }
|
||||
set { CheckChanged(data.InstitutionId, value); data.InstitutionId = value; }
|
||||
}
|
||||
public String PatientNo
|
||||
{
|
||||
get { return data.PatientNo; }
|
||||
set { CheckChanged(data.PatientNo, value); data.PatientNo = value; }
|
||||
}
|
||||
public String NhsNumber
|
||||
{
|
||||
get { return data.NhsNumber; }
|
||||
set { CheckChanged(data.NhsNumber, value); data.NhsNumber = value; }
|
||||
}
|
||||
public String Title
|
||||
{
|
||||
get { return data.Title; }
|
||||
set { CheckChanged(data.Title, value); data.Title = value; }
|
||||
}
|
||||
public String Forename
|
||||
{
|
||||
get { return data.Forename; }
|
||||
set { CheckChanged(data.Forename, value); data.Forename = value; }
|
||||
}
|
||||
public String Surname
|
||||
{
|
||||
get { return data.Surname; }
|
||||
set { CheckChanged(data.Surname, value); data.Surname = value; }
|
||||
}
|
||||
public static String GetDisplayName (String surname, String forename, bool upperSurname = true)
|
||||
{
|
||||
String name = surname;
|
||||
if (upperSurname)
|
||||
name.ToUpper();
|
||||
if (!StringUtil.IsEmpty(surname) && !StringUtil.IsEmpty(forename))
|
||||
name += ", ";
|
||||
name += forename;
|
||||
return name;
|
||||
}
|
||||
public String GetDisplayName (bool upperSurname = true)
|
||||
{
|
||||
return GetDisplayName(Surname, Forename, upperSurname);
|
||||
}
|
||||
public Spm.Gender Gender
|
||||
{
|
||||
get { return data.Gender; }
|
||||
set { CheckChanged((int)data.Gender, (int)value); data.Gender = value; }
|
||||
}
|
||||
public DateTime BirthOn
|
||||
{
|
||||
get { return data.BirthOn; }
|
||||
set { CheckChanged(data.BirthOn, value); data.BirthOn = value; }
|
||||
}
|
||||
public String Age
|
||||
{
|
||||
get { return data.Age; }
|
||||
set { CheckChanged(data.Age, value); data.Age = value; }
|
||||
}
|
||||
public DateTime AgeOn
|
||||
{
|
||||
get { return data.AgeOn; }
|
||||
set { CheckChanged(data.AgeOn, value); data.AgeOn = value; }
|
||||
}
|
||||
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
@@ -146,32 +219,32 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId InstitutionId
|
||||
{
|
||||
get { return data.InstitutionId; }
|
||||
set { CheckChanged(data.InstitutionId, value); data.InstitutionId = value; }
|
||||
set { data.InstitutionId = value; }
|
||||
}
|
||||
public String PatientNo
|
||||
{
|
||||
get { return data.PatientNo; }
|
||||
set { CheckChanged(data.PatientNo, value); data.PatientNo = value; }
|
||||
set { data.PatientNo = value; }
|
||||
}
|
||||
public String NhsNumber
|
||||
{
|
||||
get { return data.NhsNumber; }
|
||||
set { CheckChanged(data.NhsNumber, value); data.NhsNumber = value; }
|
||||
set { data.NhsNumber = value; }
|
||||
}
|
||||
public String Title
|
||||
{
|
||||
get { return data.Title; }
|
||||
set { CheckChanged(data.Title, value); data.Title = value; }
|
||||
set { data.Title = value; }
|
||||
}
|
||||
public String Forename
|
||||
{
|
||||
get { return data.Forename; }
|
||||
set { CheckChanged(data.Forename, value); data.Forename = value; }
|
||||
set { data.Forename = value; }
|
||||
}
|
||||
public String Surname
|
||||
{
|
||||
get { return data.Surname; }
|
||||
set { CheckChanged(data.Surname, value); data.Surname = value; }
|
||||
set { data.Surname = value; }
|
||||
}
|
||||
public static String GetDisplayName(String surname, String forename, bool upperSurname = true)
|
||||
{
|
||||
@@ -190,25 +263,24 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public Spm.Gender Gender
|
||||
{
|
||||
get { return data.Gender; }
|
||||
set { CheckChanged((int)data.Gender, (int)value); data.Gender = value; }
|
||||
set { data.Gender = value; }
|
||||
}
|
||||
public DateTime BirthOn
|
||||
{
|
||||
get { return data.BirthOn; }
|
||||
set { CheckChanged(data.BirthOn, value); data.BirthOn = value; }
|
||||
set { data.BirthOn = value; }
|
||||
}
|
||||
public String Age
|
||||
{
|
||||
get { return data.Age; }
|
||||
set { CheckChanged(data.Age, value); data.Age = value; }
|
||||
set { data.Age = value; }
|
||||
}
|
||||
public DateTime AgeOn
|
||||
{
|
||||
get { return data.AgeOn; }
|
||||
set { CheckChanged(data.AgeOn, value); data.AgeOn = value; }
|
||||
set { data.AgeOn = value; }
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Flags.
|
||||
|
||||
|
||||
@@ -36,23 +36,82 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId DepartmentId { get; set; } = new SysId(); // Department.
|
||||
public SysId OperationId { get; set; } = new SysId(); // Operation Id.
|
||||
public String OperationCode { get; set; } = ""; // Operation code.
|
||||
public String Description { get; set; } = "";
|
||||
public String SpecialityCode { get; set; } = "";
|
||||
public String ComplexityCode { get; set; } = "";
|
||||
public short Duration { get; set; } = 0; // Minutes.
|
||||
public short DurationTraining { get; set; } = 0; // Minutes.
|
||||
public decimal Units { get; set; } = 0.0m;
|
||||
public decimal UnitsTraining { get; set; } = 0.0m;
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = ProcedureStatus;
|
||||
}
|
||||
public SysId DepartmentId { get; set; } // Department.
|
||||
public SysId OperationId { get; set; } // Operation Id.
|
||||
public String OperationCode { get; set; } // Operation code.
|
||||
public String Description { get; set; }
|
||||
public String SpecialityCode { get; set; }
|
||||
public String ComplexityCode { get; set; }
|
||||
public short Duration { get; set; } // Minutes.
|
||||
public short DurationTraining { get; set; } // Minutes.
|
||||
public decimal Units { get; set; }
|
||||
public decimal UnitsTraining { get; set; }
|
||||
public SysId DepartmentId
|
||||
{
|
||||
get { return data.DepartmentId; }
|
||||
set { CheckChanged(data.DepartmentId, value); data.DepartmentId = value; }
|
||||
}
|
||||
public SysId OperationId
|
||||
{
|
||||
get { return data.OperationId; }
|
||||
set { CheckChanged(data.OperationId, value); data.OperationId = value; }
|
||||
}
|
||||
public String OperationCode
|
||||
{
|
||||
get { return data.OperationCode; }
|
||||
set { CheckChanged(data.OperationCode, value); data.OperationCode = value; }
|
||||
}
|
||||
public String Description
|
||||
{
|
||||
get { return data.Description; }
|
||||
set { CheckChanged(data.Description, value); data.Description = value; }
|
||||
}
|
||||
public String SpecialityCode
|
||||
{
|
||||
get { return data.SpecialityCode; }
|
||||
set { CheckChanged(data.SpecialityCode, value); data.SpecialityCode = value; }
|
||||
}
|
||||
public String ComplexityCode
|
||||
{
|
||||
get { return data.ComplexityCode; }
|
||||
set { CheckChanged(data.ComplexityCode, value); data.ComplexityCode = value; }
|
||||
}
|
||||
public short Duration
|
||||
{
|
||||
get { return data.Duration; }
|
||||
set { CheckChanged(data.Duration, value); data.Duration = value; }
|
||||
}
|
||||
public short DurationTraining
|
||||
{
|
||||
get { return data.DurationTraining; }
|
||||
set { CheckChanged(data.DurationTraining, value); data.DurationTraining = value; }
|
||||
}
|
||||
public decimal Units
|
||||
{
|
||||
get { return data.Units; }
|
||||
set { CheckChanged(data.Units, value); data.Units = value; }
|
||||
}
|
||||
public decimal UnitsTraining
|
||||
{
|
||||
get { return data.UnitsTraining; }
|
||||
set { CheckChanged(data.UnitsTraining, value); data.UnitsTraining = value; }
|
||||
}
|
||||
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
@@ -144,52 +203,52 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId DepartmentId
|
||||
{
|
||||
get { return data.DepartmentId; }
|
||||
set { CheckChanged(data.DepartmentId, value); data.DepartmentId = value; }
|
||||
set { data.DepartmentId = value; }
|
||||
}
|
||||
public SysId OperationId
|
||||
{
|
||||
get { return data.OperationId; }
|
||||
set { CheckChanged(data.OperationId, value); data.OperationId = value; }
|
||||
set { data.OperationId = value; }
|
||||
}
|
||||
public String OperationCode
|
||||
{
|
||||
get { return data.OperationCode; }
|
||||
set { CheckChanged(data.OperationCode, value); data.OperationCode = value; }
|
||||
set { data.OperationCode = value; }
|
||||
}
|
||||
public String Description
|
||||
{
|
||||
get { return data.Description; }
|
||||
set { CheckChanged(data.Description, value); data.Description = value; }
|
||||
set { data.Description = value; }
|
||||
}
|
||||
public String SpecialityCode
|
||||
{
|
||||
get { return data.SpecialityCode; }
|
||||
set { CheckChanged(data.SpecialityCode, value); data.SpecialityCode = value; }
|
||||
set { data.SpecialityCode = value; }
|
||||
}
|
||||
public String ComplexityCode
|
||||
{
|
||||
get { return data.ComplexityCode; }
|
||||
set { CheckChanged(data.ComplexityCode, value); data.ComplexityCode = value; }
|
||||
set { data.ComplexityCode = value; }
|
||||
}
|
||||
public short Duration
|
||||
{
|
||||
get { return data.Duration; }
|
||||
set { CheckChanged(data.Duration, value); data.Duration = value; }
|
||||
set { data.Duration = value; }
|
||||
}
|
||||
public short DurationTraining
|
||||
{
|
||||
get { return data.DurationTraining; }
|
||||
set { CheckChanged(data.DurationTraining, value); data.DurationTraining = value; }
|
||||
set { data.DurationTraining = value; }
|
||||
}
|
||||
public decimal Units
|
||||
{
|
||||
get { return data.Units; }
|
||||
set { CheckChanged(data.Units, value); data.Units = value; }
|
||||
set { data.Units = value; }
|
||||
}
|
||||
public decimal UnitsTraining
|
||||
{
|
||||
get { return data.UnitsTraining; }
|
||||
set { CheckChanged(data.UnitsTraining, value); data.UnitsTraining = value; }
|
||||
set { data.UnitsTraining = value; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
@@ -32,18 +32,52 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
UpdateOn_Date,
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Properties other than common.</summary>
|
||||
public class DataProperties
|
||||
{
|
||||
public SysId FacilityTemplateId { get; set; } = new SysId();
|
||||
public Spm.TemplateDataType TemplateDataType { get; set; } = Spm.TemplateDataType.Unknown;
|
||||
public short Seq { get; set; } = 0;
|
||||
public String Identifier { get; set; } = "";
|
||||
public String Value { get; set; } = "";
|
||||
}
|
||||
|
||||
// Data.
|
||||
public new class Data : SacsHierarchyItem.Data
|
||||
{
|
||||
public Data()
|
||||
// Data members.
|
||||
private readonly DataProperties data = new DataProperties();
|
||||
// Construction.
|
||||
public Data ()
|
||||
{
|
||||
//Status = TemplateDataStatus;
|
||||
}
|
||||
public SysId FacilityTemplateId { get; set; }
|
||||
public Spm.TemplateDataType TemplateDataType { get; set; }
|
||||
public short Seq { get; set; }
|
||||
public String Identifier { get; set; }
|
||||
public String Value { get; set; }
|
||||
public SysId FacilityTemplateId
|
||||
{
|
||||
get { return data.FacilityTemplateId; }
|
||||
set { CheckChanged(data.FacilityTemplateId, value); data.FacilityTemplateId = value; }
|
||||
}
|
||||
public Spm.TemplateDataType TemplateDataType
|
||||
{
|
||||
get { return data.TemplateDataType; }
|
||||
set { CheckChanged((int)data.TemplateDataType, (int)value); data.TemplateDataType = value; }
|
||||
}
|
||||
public short Seq
|
||||
{
|
||||
get { return data.Seq; }
|
||||
set { CheckChanged(data.Seq, value); data.Seq = value; }
|
||||
}
|
||||
public String Identifier
|
||||
{
|
||||
get { return data.Identifier; }
|
||||
set { CheckChanged(data.Identifier, value); data.Identifier = value; }
|
||||
}
|
||||
public String Value
|
||||
{
|
||||
get { return data.Value; }
|
||||
set { CheckChanged(data.Value, value); data.Value = value; }
|
||||
}
|
||||
internal void PopulateFrom(Data data)
|
||||
{
|
||||
FacilityTemplateId = FacilityTemplateId;
|
||||
@@ -123,27 +157,27 @@ namespace Sarand.PatientMgr.Core.Bus
|
||||
public SysId FacilityTemplateId
|
||||
{
|
||||
get { return data.FacilityTemplateId; }
|
||||
set { CheckChanged(data.FacilityTemplateId, value); data.FacilityTemplateId = value; }
|
||||
set { data.FacilityTemplateId = value; }
|
||||
}
|
||||
public Spm.TemplateDataType TemplateDataType
|
||||
{
|
||||
get { return data.TemplateDataType; }
|
||||
set { CheckChanged((int)data.TemplateDataType, (int)value); data.TemplateDataType = value; }
|
||||
set { data.TemplateDataType = value; }
|
||||
}
|
||||
public short Seq
|
||||
{
|
||||
get { return data.Seq; }
|
||||
set { CheckChanged(data.Seq, value); data.Seq = value; }
|
||||
set { data.Seq = value; }
|
||||
}
|
||||
public String Identifier
|
||||
{
|
||||
get { return data.Identifier; }
|
||||
set { CheckChanged(data.Identifier, value); data.Identifier = value; }
|
||||
set { data.Identifier = value; }
|
||||
}
|
||||
public String Value
|
||||
{
|
||||
get { return data.Value; }
|
||||
set { CheckChanged(data.Value, value); data.Value = value; }
|
||||
set { data.Value = value; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.Data
|
||||
{
|
||||
//=======================================================================
|
||||
public static class SpmWindowsServiceCrypter
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
/// <summary>
|
||||
/// Encryption is shared between Windows Service app and mobile
|
||||
/// </summary>
|
||||
private static readonly String requestDataKey = "<Sarand>~{PatientMgr}#[WindowsService]&/DataCryption/*|RequestData|";
|
||||
private static readonly String responseDataKey = "{Sarand}+(PatientMgr)%\\WindowsService/=<DataCryption>@:Response:";
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// R e q u e s t D a t a
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Encrypt request data</summary>
|
||||
public static String EncryptRequestData (String value)
|
||||
{
|
||||
try
|
||||
{
|
||||
return SacsAesIvCrypter.Encrypt(value, requestDataKey);
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("EncryptRequestData " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return value;
|
||||
}
|
||||
/// <summary>Decrypt request data</summary>
|
||||
public static String DecryptRequestData (String value)
|
||||
{
|
||||
try
|
||||
{
|
||||
return SacsAesIvCrypter.Decrypt(value, requestDataKey);
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("DecryptRequestData " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return value;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// R e s p o n s e D a t a
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>Encrypt response data</summary>
|
||||
public static String EncryptResponseData (String value)
|
||||
{
|
||||
try
|
||||
{
|
||||
return SacsAesIvCrypter.Encrypt(value, responseDataKey);
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("EncryptResponseData " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return value;
|
||||
}
|
||||
/// <summary>Decrypt response data</summary>
|
||||
public static String DecryptResponseData (String value)
|
||||
{
|
||||
try
|
||||
{
|
||||
return SacsAesIvCrypter.Decrypt(value, responseDataKey);
|
||||
}
|
||||
catch (Exception exc) { Logger.Debug("DecryptResponseData " + exc.GetType().Name + ": " + exc.Message); }
|
||||
return value;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -65,7 +65,7 @@ namespace Sarand.PatientMgr.Core.Mgr
|
||||
errField.Name = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.Desc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Desc, "Description", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_Description), true))
|
||||
if (errField.Desc != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Description, "Description", (long)SpmDbDfn.GetColTextLen(SpmDbDfn.ColumnIdx.SwmFacilitySession_Description), true))
|
||||
{
|
||||
errField.Desc = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
|
||||
@@ -0,0 +1,432 @@
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Data;
|
||||
using Sarand.Core.Net;
|
||||
using Sarand.Core.Tasks;
|
||||
using Sarand.Core.Xml;
|
||||
using Sarand.PatientMgr.Core.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.WebService
|
||||
{
|
||||
//=======================================================================
|
||||
// Patient Web Service Client
|
||||
// Make requests to PatientMgr Web Service hosted by Windows Service application.
|
||||
//-----------------------------------------------------------------------
|
||||
// Threading:
|
||||
// Ref. https://blog.xamarin.com/getting-started-with-async-await/
|
||||
//=======================================================================
|
||||
public class SpmWebServiceClient
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Definitions.
|
||||
public class RequestData : SacsTaskData
|
||||
{
|
||||
/// <summary>
|
||||
/// Web Service Request data.
|
||||
/// <para>Cancellation token can optionally be supplied if available higher up the chain.</para>
|
||||
/// </summary>
|
||||
public RequestData (SpmWebServiceInstanceDefinition instanceDefinition, CancellationToken? cancellationToken = null) :
|
||||
base(cancellationToken)
|
||||
{
|
||||
InstanceDefinition = instanceDefinition;
|
||||
}
|
||||
public SpmWebServiceInstanceDefinition InstanceDefinition { get; }
|
||||
public String Data { get; set; } = "";
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmWebServiceClient ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I s A l i v e
|
||||
//-------------------------------------------------------------------
|
||||
public async Task<bool> RequestIsAlive (SpmWebServiceInstanceDefinition instanceDefinition)
|
||||
{
|
||||
String fn = GetType().Name + ".IsAlive";
|
||||
try
|
||||
{
|
||||
RequestData requestData = new RequestData(instanceDefinition);
|
||||
SpmWebServiceResponse serviceResponse = await DoWebServiceRequest(requestData);
|
||||
if (serviceResponse.ResponseData.EqualsCI(SpmWebServiceDfn.IsAliveResponse))
|
||||
return true;
|
||||
}
|
||||
catch (Exception exc) { Logger.Warn(fn + " " + exc.GetLogMessage()); }
|
||||
return false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I t e m C o u n t R e q u e s t
|
||||
//-------------------------------------------------------------------
|
||||
public class ItemCountResponseData : SpmWebServiceResponse
|
||||
{
|
||||
public ItemCountResponseData (SpmWebServiceResponse serviceResponse) : base(serviceResponse) { }
|
||||
public long ItemCount { get; set; }
|
||||
}
|
||||
public async Task<ItemCountResponseData> RequestItemCount (SpmWebServiceRequest.Config configRequest, Dictionary<String, String> filters, SacsTaskData taskData)
|
||||
{
|
||||
String fn = GetType().Name + ".GetItemCount";
|
||||
if (SacsSystem.DebugMode && configRequest.RequestType != SpmWebServiceRequest.RequestType.Count) Debugger.Break();
|
||||
|
||||
// Service Request.
|
||||
SpmWebServiceRequest serviceRequestData = new SpmWebServiceRequest(configRequest);
|
||||
serviceRequestData.Filters.AddRange(filters);
|
||||
|
||||
// Configure Web Service and make Request.
|
||||
RequestData requestData = new RequestData(configRequest.Context.InstanceDefinition, taskData.CancellationToken) { Debug = taskData.Debug };
|
||||
requestData.Data = serviceRequestData.GenerateRequestData();
|
||||
SpmWebServiceResponse serviceResponse = await DoWebServiceRequest(requestData);
|
||||
ItemCountResponseData responseData = new ItemCountResponseData(serviceResponse);
|
||||
bool itemCountFound = false;
|
||||
|
||||
// Interpret response.
|
||||
if (serviceResponse.ResponseElement != null && !taskData.IsCancellationRequested)
|
||||
{
|
||||
foreach (XElement responseChildElement in serviceResponse.ResponseElement.Elements())
|
||||
{
|
||||
if (responseChildElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.Data))
|
||||
{
|
||||
foreach (XElement dataElement in responseChildElement.Elements())
|
||||
{
|
||||
if (dataElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.Count))
|
||||
{
|
||||
itemCountFound = true;
|
||||
responseData.ItemCount = StringUtil.ToLong(dataElement.Value);
|
||||
break;
|
||||
}
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (itemCountFound || taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (!itemCountFound) responseData.ErrorStateMessage = "Incomplete item count";
|
||||
if (taskData.IsCancellationRequested) responseData.TaskCancelled = true;
|
||||
return responseData;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Q u e r y L i s t R e q u e s t
|
||||
//-------------------------------------------------------------------
|
||||
public class QueryListResponseData : SpmWebServiceResponse
|
||||
{
|
||||
public QueryListResponseData (SpmWebServiceResponse serviceResponse) : base(serviceResponse) { }
|
||||
public List<SpmWebServiceItemData> Items { get; } = new List<SpmWebServiceItemData>();
|
||||
public int Count { get; set; }
|
||||
public int Total { get; set; }
|
||||
public uint PageNo { get; set; }
|
||||
public ushort PageLength { get; set; }
|
||||
}
|
||||
public async Task<QueryListResponseData> RequestQueryList (SpmWebServiceRequest.Config configRequest, Dictionary<String, String> filters, List<string> columns, List<String> sortColumns, SacsTaskData taskData)
|
||||
{
|
||||
String fn = GetType().Name + ".GetItemList";
|
||||
if (SacsSystem.DebugMode && configRequest.RequestType != SpmWebServiceRequest.RequestType.QueryList) Debugger.Break();
|
||||
|
||||
// Service Request.
|
||||
SpmWebServiceRequest serviceRequestData = new SpmWebServiceRequest(configRequest);
|
||||
serviceRequestData.Filters.AddRange(filters);
|
||||
serviceRequestData.Columns.AddRange(columns);
|
||||
if (sortColumns != null) serviceRequestData.SortColumns.AddRange(sortColumns);
|
||||
|
||||
// Configure Web Service and make Request.
|
||||
RequestData requestData = new RequestData(configRequest.Context.InstanceDefinition, taskData.CancellationToken) { Debug = taskData.Debug };
|
||||
requestData.Data = serviceRequestData.GenerateRequestData();
|
||||
SpmWebServiceResponse serviceResponse = await DoWebServiceRequest(requestData);
|
||||
QueryListResponseData responseData = new QueryListResponseData(serviceResponse);
|
||||
//if (SacsSystem.DebugMode && responseData.ResponseElement != null) Logger.Debug(fn + " Response:\n\n" + responseData.ResponseElement.FormatXml() + "\n");
|
||||
|
||||
// Interpret response.
|
||||
if (serviceResponse.ResponseElement != null && !taskData.IsCancellationRequested)
|
||||
{
|
||||
foreach (XElement responseChildElement in serviceResponse.ResponseElement.Elements())
|
||||
{
|
||||
if (responseChildElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.Data))
|
||||
{
|
||||
foreach (XElement dataElement in responseChildElement.Elements())
|
||||
{
|
||||
if (dataElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.List))
|
||||
{
|
||||
// Paging info.
|
||||
// <List Count="8" Total="196527" PageNo="1" PageLength="8">
|
||||
responseData.Count = StringUtil.ToInt(dataElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Count));
|
||||
responseData.Total = StringUtil.ToInt(dataElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Total));
|
||||
responseData.PageNo = (uint)StringUtil.ToInt(dataElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.PageNo));
|
||||
responseData.PageLength = (ushort)StringUtil.ToInt(dataElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.PageLength));
|
||||
// Extract items.
|
||||
foreach (XElement listElement in dataElement.Elements())
|
||||
{
|
||||
taskData.ThrowIfCancellationRequested();
|
||||
if (listElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.Item))
|
||||
{
|
||||
SpmWebServiceItemData itemData = new SpmWebServiceItemData("");
|
||||
List<String> fields = SacsCsvHandler.ParseCsvRecord(listElement.Value);
|
||||
for (int fieldIdx = 0; fieldIdx < fields.Count && fieldIdx < columns.Count; fieldIdx++)
|
||||
{
|
||||
String column = columns[fieldIdx];
|
||||
String field = fields[fieldIdx];
|
||||
itemData.AddValue(column, field);
|
||||
}
|
||||
responseData.Items.Add(itemData);
|
||||
}
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) responseData.TaskCancelled = true;
|
||||
return responseData;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I t e m L i s t R e q u e s t
|
||||
//-------------------------------------------------------------------
|
||||
public class ItemListResponseData : SpmWebServiceResponse
|
||||
{
|
||||
public ItemListResponseData (SpmWebServiceResponse serviceResponse) : base(serviceResponse) { }
|
||||
public List<SpmWebServiceItemData> Items { get; } = new List<SpmWebServiceItemData>();
|
||||
public int Count { get; set; }
|
||||
public int Total { get; set; }
|
||||
public uint PageNo { get; set; }
|
||||
public ushort PageLength { get; set; }
|
||||
}
|
||||
public async Task<ItemListResponseData> RequestItemList (SpmWebServiceRequest.Config configRequest, Dictionary<String, String> filters, List<String> sortColumns, SacsTaskData taskData)
|
||||
{
|
||||
String fn = GetType().Name + ".GetItemList";
|
||||
if (SacsSystem.DebugMode && configRequest.RequestType != SpmWebServiceRequest.RequestType.ItemList) Debugger.Break();
|
||||
|
||||
// Service Request.
|
||||
SpmWebServiceRequest serviceRequestData = new SpmWebServiceRequest(configRequest);
|
||||
serviceRequestData.Filters.AddRange(filters);
|
||||
if (sortColumns != null) serviceRequestData.SortColumns.AddRange(sortColumns);
|
||||
|
||||
// Configure Web Service and make Request.
|
||||
RequestData requestData = new RequestData(configRequest.Context.InstanceDefinition, taskData.CancellationToken) { Debug = taskData.Debug };
|
||||
requestData.Data = serviceRequestData.GenerateRequestData();
|
||||
SpmWebServiceResponse serviceResponse = await DoWebServiceRequest(requestData);
|
||||
ItemListResponseData responseData = new ItemListResponseData(serviceResponse);
|
||||
//if (SacsSystem.DebugMode && responseData.ResponseElement != null) Logger.Debug(fn + " Response:\n\n" + responseData.ResponseElement.FormatXml() + "\n");
|
||||
|
||||
// Interpret response.
|
||||
if (serviceResponse.ResponseElement != null && !taskData.IsCancellationRequested)
|
||||
{
|
||||
foreach (XElement responseChildElement in serviceResponse.ResponseElement.Elements())
|
||||
{
|
||||
if (responseChildElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.Data))
|
||||
{
|
||||
foreach (XElement dataElement in responseChildElement.Elements())
|
||||
{
|
||||
if (dataElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.List))
|
||||
{
|
||||
// Paging info.
|
||||
// <List Count="8" Total="196527" PageNo="1" PageLength="8">
|
||||
responseData.Count = StringUtil.ToInt(dataElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Count));
|
||||
responseData.Total = StringUtil.ToInt(dataElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Total));
|
||||
responseData.PageNo = (uint)StringUtil.ToInt(dataElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.PageNo));
|
||||
responseData.PageLength = (ushort)StringUtil.ToInt(dataElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.PageLength));
|
||||
// Extract items.
|
||||
foreach (XElement listElement in dataElement.Elements())
|
||||
{
|
||||
taskData.ThrowIfCancellationRequested();
|
||||
if (listElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.Item))
|
||||
responseData.Items.Add(ExtractItemData(listElement, taskData));
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) responseData.TaskCancelled = true;
|
||||
return responseData;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I t e m D a t a R e q u e s t
|
||||
//-------------------------------------------------------------------
|
||||
public class ItemDataResponseData : SpmWebServiceResponse
|
||||
{
|
||||
public ItemDataResponseData (SpmWebServiceResponse serviceResponse) : base(serviceResponse) { }
|
||||
public XElement DataElement => (ResponseElement?.GetFirstChildElement(SpmWebServiceDfn.ElementName.Data) ?? null);
|
||||
public XElement ItemElement => (DataElement?.GetFirstChildElement(SpmWebServiceDfn.ElementName.Item) ?? null);
|
||||
public SpmWebServiceItemData Item { get; set; }
|
||||
}
|
||||
public async Task<ItemDataResponseData> RequestItemData (SpmWebServiceRequest.Config configRequest, Dictionary<String, String> filters, SacsTaskData taskData)
|
||||
{
|
||||
String fn = GetType().Name + ".GetItemData";
|
||||
if (SacsSystem.DebugMode && configRequest.RequestType != SpmWebServiceRequest.RequestType.Item) Debugger.Break();
|
||||
|
||||
// Service Request.
|
||||
SpmWebServiceRequest serviceRequestData = new SpmWebServiceRequest(configRequest);
|
||||
serviceRequestData.Filters.AddRange(filters);
|
||||
|
||||
// Configure Web Service and make Request.
|
||||
RequestData requestData = new RequestData(configRequest.Context.InstanceDefinition, taskData.CancellationToken) { Debug = taskData.Debug };
|
||||
requestData.Data = serviceRequestData.GenerateRequestData();
|
||||
SpmWebServiceResponse serviceResponse = await DoWebServiceRequest(requestData);
|
||||
ItemDataResponseData responseData = new ItemDataResponseData(serviceResponse);
|
||||
//if (SacsSystem.DebugMode && responseData.ResponseElement != null) Logger.Debug("Response:\n\n" + responseData.ResponseElement.FormatXml()+"\n");
|
||||
|
||||
// Extract item properties.
|
||||
if (serviceResponse.ResponseElement != null && !taskData.IsCancellationRequested)
|
||||
{
|
||||
foreach (XElement responseChildElement in serviceResponse.ResponseElement.Elements())
|
||||
{
|
||||
requestData.ThrowIfCancellationRequested();
|
||||
if (responseChildElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.Data))
|
||||
{
|
||||
foreach (XElement dataElement in responseChildElement.Elements())
|
||||
{
|
||||
requestData.ThrowIfCancellationRequested();
|
||||
if (dataElement.Name.LocalName.EqualsCI(SpmWebServiceDfn.ElementName.Item))
|
||||
responseData.Item = ExtractItemData(dataElement, taskData);
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) responseData.TaskCancelled = true;
|
||||
return responseData;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// E x t r a c t I t e m
|
||||
//-------------------------------------------------------------------
|
||||
private SpmWebServiceItemData ExtractItemData (XElement itemElement, SacsTaskData taskData)
|
||||
{
|
||||
SpmWebServiceItemData itemData = new SpmWebServiceItemData(itemElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.ItemType));
|
||||
foreach (XElement itemDataElement in itemElement.Elements())
|
||||
{
|
||||
if (!itemDataElement.HasElements)
|
||||
{
|
||||
// No child elements - treat as item property.
|
||||
itemData.AddValue(itemDataElement.Name.LocalName, itemDataElement.Value);
|
||||
}
|
||||
else if (itemDataElement.Name.LocalName.Length > 4 && itemDataElement.Name.LocalName.EndsWithCI("List"))
|
||||
{
|
||||
// Data elements has children and is a list of child items.
|
||||
String childItemType = itemDataElement.Name.LocalName;
|
||||
if (!itemData.ChildItems.ContainsKey(childItemType))
|
||||
itemData.ChildItems[childItemType] = new List<SpmWebServiceItemData>();
|
||||
foreach (XElement childItemElement in itemDataElement.Elements())
|
||||
{
|
||||
itemData.ChildItems[childItemType].Add(ExtractItemData(childItemElement, taskData));
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
}
|
||||
if (taskData.IsCancellationRequested) break;
|
||||
}
|
||||
return itemData;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// S t o r e I t e m R e q u e s t
|
||||
//-------------------------------------------------------------------
|
||||
public class StoreItemResponseData : SpmWebServiceResponse
|
||||
{
|
||||
public StoreItemResponseData (SpmWebServiceResponse serviceResponse) : base(serviceResponse) { }
|
||||
public XElement DataElement => (ResponseElement?.GetFirstChildElement("Item") ?? null);
|
||||
}
|
||||
public async Task<StoreItemResponseData> StoreItem (SpmWebServiceRequest.Config configRequest, XElement itemElement, SacsTaskData taskData)
|
||||
{
|
||||
String fn = GetType().Name + ".StoreItem";
|
||||
if (SacsSystem.DebugMode && configRequest.RequestType != SpmWebServiceRequest.RequestType.Store) Debugger.Break();
|
||||
|
||||
// Service Request.
|
||||
SpmWebServiceRequest serviceRequestData = new SpmWebServiceRequest(configRequest);
|
||||
serviceRequestData.ItemElement = itemElement;
|
||||
|
||||
// Configure Web Service and make Request.
|
||||
RequestData requestData = new RequestData(configRequest.Context.InstanceDefinition, taskData.CancellationToken) { Debug = taskData.Debug };
|
||||
requestData.Data = serviceRequestData.GenerateRequestData();
|
||||
SpmWebServiceResponse serviceResponse = await DoWebServiceRequest(requestData);
|
||||
|
||||
// Return result.
|
||||
return new StoreItemResponseData(serviceResponse);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// W e b S e r v i c e R e q u e s t
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Execute the web service request.
|
||||
/// <para>Request data is encrypted and response data is decrypted automatically.</para>
|
||||
/// </summary>
|
||||
public async Task<SpmWebServiceResponse> DoWebServiceRequest (RequestData requestData)
|
||||
{
|
||||
String fn = GetType().Name + ".DoWebServiceRequest";
|
||||
SpmWebServiceResponse serviceResponse = null;
|
||||
// Throw canceled exception if task has been cancelled - invoke at regular intervals.
|
||||
requestData.ThrowIfCancellationRequested();
|
||||
|
||||
// Log request.
|
||||
if (SacsSystem.DebugMode) Logger.Debug(fn + " Request URL:" + requestData.InstanceDefinition.URL);
|
||||
if (requestData.Debug)
|
||||
{
|
||||
if (requestData.Data.Length < 512)
|
||||
Logger.Debug(fn + " Request:\n\t" + requestData.Data);
|
||||
else Logger.Debug(fn + " Request length:" + requestData.Data.Length);
|
||||
}
|
||||
|
||||
// Configure the request.
|
||||
SacsHttpRequestData httpRequestData = new SacsHttpRequestData(requestData.CancellationToken)
|
||||
{
|
||||
Url = requestData.InstanceDefinition.URL,
|
||||
TimeoutSecs = 1,
|
||||
PostData = SpmWindowsServiceCrypter.EncryptRequestData(requestData.Data)
|
||||
};
|
||||
|
||||
// Make the request.
|
||||
DateTime started = DateTime.Now;
|
||||
requestData.InstanceDefinition.LastRequestAt = started;
|
||||
SacsHttpResponseData httpResponseData = await SacsHttpClient.DoRequest(httpRequestData);
|
||||
|
||||
// Construct the response.
|
||||
SpmWebServiceResponse.Config serviceResponseConfig = new SpmWebServiceResponse.Config()
|
||||
{
|
||||
RequestStarted = started,
|
||||
RequestCompleted = DateTime.Now,
|
||||
HttpResponseData = httpResponseData
|
||||
};
|
||||
serviceResponse = new SpmWebServiceResponse(serviceResponseConfig);
|
||||
|
||||
// Note if request was successful.
|
||||
if (httpResponseData.Success)
|
||||
requestData.InstanceDefinition.LastSuccessfulRequestAt = serviceResponseConfig.RequestCompleted;
|
||||
|
||||
// Log response.
|
||||
if (requestData.Debug)
|
||||
{
|
||||
if (serviceResponse.ResponseData.Length < 1024)
|
||||
Logger.Debug(fn + " Response: " + serviceResponse.ResponseData);
|
||||
else Logger.Debug(fn + " Response size: " + serviceResponse.ResponseData.Length);
|
||||
}
|
||||
return serviceResponse;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.WebService
|
||||
{
|
||||
//=======================================================================
|
||||
public static class SpmWebServiceDfn
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Web Service XML element names.
|
||||
public class ElementNameData
|
||||
{
|
||||
// Common.
|
||||
public String Data { get; } = "Data";
|
||||
public String List { get; } = "List";
|
||||
public String Item { get; } = "Item";
|
||||
public String Filter { get; } = "Filter";
|
||||
public String Property { get; } = "Property";
|
||||
public String Columns { get; } = "Columns";
|
||||
public String SortColumns { get; } = "SortColumns";
|
||||
public String SortColumn { get; } = "SortColumn";
|
||||
// Request.
|
||||
public String Config { get; } = "Config";
|
||||
public String Context { get; } = "Context";
|
||||
public String Site { get; } = "Site";
|
||||
public String Host { get; } = "Host";
|
||||
public String User { get; } = "User";
|
||||
public String Email { get; } = "Email";
|
||||
public String AffiliateIdOrganisation { get; } = "AffiliateIdOrganisation";
|
||||
public String Debug { get; } = "Debug";
|
||||
// Response.
|
||||
public String SpmResponse { get; } = "SpmResponse";
|
||||
public String Status { get; } = "Status";
|
||||
public String Messages { get; } = "Messages";
|
||||
public String Message { get; } = "Message";
|
||||
public String Count { get; } = "Count";
|
||||
// Item.
|
||||
public String Id { get; } = "Id";
|
||||
public String Code { get; } = "Code";
|
||||
public String Notes { get; } = "Notes";
|
||||
public String Flags { get; } = "Flags";
|
||||
public String CreatedOn { get; } = "CreatedOn";
|
||||
public String UpdatedOn { get; } = "UpdatedOn";
|
||||
}
|
||||
public static ElementNameData ElementName { get; } = new ElementNameData();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Web Service XML attribute names.
|
||||
public class AttributeNameData
|
||||
{
|
||||
// Common.
|
||||
public String ItemType { get; } = "ItemType";
|
||||
public String Name { get; } = "Name";
|
||||
public String Value { get; } = "Value";
|
||||
public String Code { get; } = "Code";
|
||||
public String Debug { get; } = "Debug";
|
||||
// Messages.
|
||||
public String Context { get; } = "Context";
|
||||
public String Level { get; } = "Level";
|
||||
// Item list.
|
||||
public String Total { get; } = "Total";
|
||||
public String Count { get; } = "Count";
|
||||
public String PageNo { get; } = "PageNo";
|
||||
public String PageLength { get; } = "PageLength";
|
||||
}
|
||||
public static AttributeNameData AttributeName { get; } = new AttributeNameData();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public static String IsAliveResponse { get; } = "Hello";
|
||||
public static String StatusSuccess { get; } = "OK";
|
||||
public static String StatusFatal { get; } = "Fatal";
|
||||
public static String StatusError { get; } = "Error";
|
||||
public static String StatusWarning { get; } = "Warning";
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.WebService
|
||||
{
|
||||
//=======================================================================
|
||||
public class SpmWebServiceInstanceDefinition
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Definitions.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmWebServiceInstanceDefinition (String caption, String url)
|
||||
{
|
||||
Caption = caption;
|
||||
URL = url;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public String Caption { get; }
|
||||
public String URL { get; }
|
||||
public DateTime LastRequestAt { get; set; }
|
||||
public DateTime LastSuccessfulRequestAt { get; set; }
|
||||
public bool Valid { get { return (!StringUtil.IsEmpty(URL)); } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Bus;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.WebService
|
||||
{
|
||||
//=======================================================================
|
||||
public class SpmWebServiceItemData
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly Dictionary<String, String> values = new Dictionary<String, String>();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmWebServiceItemData (String itemType)
|
||||
{
|
||||
ItemType = itemType;
|
||||
}
|
||||
// Copy construction.
|
||||
public SpmWebServiceItemData (SpmWebServiceItemData itemData)
|
||||
{
|
||||
values.AddRange(itemData.values);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public String ItemType { get; }
|
||||
/// <summary>
|
||||
/// Child items.
|
||||
/// <para>Dictionary key identifies type of item.</para>
|
||||
/// </summary>
|
||||
public Dictionary<String, List<SpmWebServiceItemData>> ChildItems { get; } = new Dictionary<string, List<SpmWebServiceItemData>>();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Population.
|
||||
public void AddValue (String name, String value)
|
||||
{
|
||||
values[name] = value;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Value exists.
|
||||
public bool HasValue<T> (T name)
|
||||
{
|
||||
return HasValue(name.ToString());
|
||||
}
|
||||
public bool HasValue (string name)
|
||||
{
|
||||
return values.ContainsKey(name);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// String value.
|
||||
public String GetValue<T> (T name)
|
||||
{
|
||||
return GetValue(name.ToString());
|
||||
}
|
||||
public String GetValue (string name)
|
||||
{
|
||||
return values.GetValue(name, "");
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// SysId value.
|
||||
public SysId GetIdValue<T> (T name)
|
||||
{
|
||||
return GetIdValue(name.ToString());
|
||||
}
|
||||
public SysId GetIdValue (string name)
|
||||
{
|
||||
return new SysId(StringUtil.ToInt(GetValue(name)));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Bool value.
|
||||
public bool GetBoolValue<T> (T name)
|
||||
{
|
||||
return GetBoolValue(name.ToString());
|
||||
}
|
||||
public bool GetBoolValue (string name)
|
||||
{
|
||||
return StringUtil.ToBool(GetValue(name));
|
||||
}
|
||||
// Int value.
|
||||
public int GetIntValue<T> (T name)
|
||||
{
|
||||
return GetIntValue(name.ToString());
|
||||
}
|
||||
public int GetIntValue (string name)
|
||||
{
|
||||
return StringUtil.ToInt(GetValue(name));
|
||||
}
|
||||
// Decimal value.
|
||||
public decimal GetDecimalValue<T> (T name)
|
||||
{
|
||||
return GetDecimalValue(name.ToString());
|
||||
}
|
||||
public decimal GetDecimalValue (string name)
|
||||
{
|
||||
return StringUtil.ToDecimal(GetValue(name));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Date value.
|
||||
public DateTime GetDateValue<T> (T name)
|
||||
{
|
||||
return GetDateValue(name.ToString());
|
||||
}
|
||||
public DateTime GetDateValue (string name)
|
||||
{
|
||||
return DateUtil.ParseXmlDate(GetValue(name));
|
||||
}
|
||||
// DateTime value.
|
||||
public DateTime GetDateTimeValue<T> (T name)
|
||||
{
|
||||
return GetDateTimeValue(name.ToString());
|
||||
}
|
||||
public DateTime GetDateTimeValue (string name)
|
||||
{
|
||||
return DateUtil.ParseXmlDateTime(GetValue(name));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
using Sarand.Core.Base;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.WebService
|
||||
{
|
||||
//=======================================================================
|
||||
public class SpmWebServiceMessage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmWebServiceMessage (String context, String code, String message, SaMessageLevel level = SaMessageLevel.Info)
|
||||
{
|
||||
Level = level;
|
||||
Context = context;
|
||||
Code = code;
|
||||
Message = message;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public SaMessageLevel Level { get; }
|
||||
public string Context { get; }
|
||||
public string Code { get; }
|
||||
public string Message { get; }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
public static class SpmWebServiceMessageList
|
||||
{
|
||||
public static bool HasMessagesOfLevel (this IEnumerable<SpmWebServiceMessage> messages, SaMessageLevel level)
|
||||
{
|
||||
return messages.Any(msg => msg.Level == level);
|
||||
}
|
||||
public static List<SpmWebServiceMessage> GetMessagesOfLevel (this IEnumerable<SpmWebServiceMessage> messages, SaMessageLevel level)
|
||||
{
|
||||
return messages.Where(msg => msg.Level == level).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,219 @@
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Xml;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
using Sarand.Core.Bus;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.WebService
|
||||
{
|
||||
//=======================================================================
|
||||
public class SpmWebServiceRequest
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Definitions.
|
||||
public enum RequestType
|
||||
{
|
||||
Unknown,
|
||||
IsAlive,
|
||||
/// <summary>Item count</summary>
|
||||
Count,
|
||||
/// <summary>Query list - specific columns, compressed (csv etc) response data</summary>
|
||||
QueryList,
|
||||
/// <summary>Item list - full xml for each item with optional associated items.</summary>
|
||||
ItemList,
|
||||
/// <summary>Single Item with optional associated items.</summary>
|
||||
Item,
|
||||
/// <summary>Validate item properties without update.</summary>
|
||||
Validate,
|
||||
/// <summary>Validate properties and store (insert/update) item.</summary>
|
||||
Store,
|
||||
/// <summary>Delete item.</summary>
|
||||
Delete,
|
||||
/// <summary>List - as per Query List</summary>
|
||||
[Obsolete("Deprecated. Use QueryList instead.", true)]
|
||||
List,
|
||||
/// <summary>Single Item with optional associated items.</summary>
|
||||
[Obsolete("Deprecated. Use Item instead.", true)]
|
||||
Data,
|
||||
}
|
||||
public enum DataType
|
||||
{
|
||||
Unknown,
|
||||
// Security.
|
||||
UserProfile,
|
||||
// Reference data.
|
||||
CodeType,
|
||||
Code,
|
||||
// Admission.
|
||||
Admission,
|
||||
AdmissionAction,
|
||||
AdmissionData,
|
||||
AdmissionRole,
|
||||
// Department.
|
||||
Department,
|
||||
EmployeeRole,
|
||||
Facility,
|
||||
FacilitySession,
|
||||
FacilityTemplate,
|
||||
Procedure,
|
||||
TemplateData,
|
||||
// Institution.
|
||||
Employee,
|
||||
Institution,
|
||||
Operation,
|
||||
Patient
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Sort column identified by column name with ascending flag.
|
||||
/// </summary>
|
||||
public class SortColumnData
|
||||
{
|
||||
public SortColumnData (String columnName, bool ascending)
|
||||
{
|
||||
ColumnName = columnName;
|
||||
Ascending = ascending;
|
||||
}
|
||||
public String ColumnName { get; }
|
||||
public bool Ascending { get; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public class Config
|
||||
{
|
||||
public bool SoapEnvelope { get; set; }
|
||||
public String SoapPrefix { get; set; }
|
||||
public DataType DataType { get; set; }
|
||||
public RequestType RequestType { get; set; }
|
||||
public class ContextProperties
|
||||
{
|
||||
public SpmWebServiceInstanceDefinition InstanceDefinition { get; set; }
|
||||
public String Url { get; set; }
|
||||
public String User { get; set; }
|
||||
public String Email { get; set; }
|
||||
public SysId AffiliateIdOrganisation { get; set; }
|
||||
public bool Commit { get; set; }
|
||||
public bool Debug { get; set; }
|
||||
}
|
||||
public ContextProperties Context { get; } = new ContextProperties();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private readonly Config config;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmWebServiceRequest (Config config)
|
||||
{
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public Dictionary<String, String> Filters { get; } = new Dictionary<String, String>();
|
||||
public List<String> Columns { get; } = new List<String>();
|
||||
public List<String> SortColumns { get; } = new List<String>();
|
||||
public XElement ItemElement { get; set; }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// D a t a G e n e r a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
public String GetRequestName ()
|
||||
{
|
||||
if (config.RequestType == RequestType.IsAlive) return "";
|
||||
String requestName = "";
|
||||
if (config.DataType > 0)
|
||||
requestName += config.DataType.ToString();
|
||||
if (config.RequestType > 0)
|
||||
requestName += config.RequestType.ToString();
|
||||
return requestName + "Request";
|
||||
}
|
||||
public String GenerateRequestData (bool formatted = false)
|
||||
{
|
||||
if (config.RequestType == RequestType.IsAlive) return "";
|
||||
|
||||
// Request document.
|
||||
XDocument requestDoc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
|
||||
// Request root.
|
||||
XElement requestElement = null;
|
||||
if (config.SoapEnvelope)
|
||||
{
|
||||
XElement envelopeElement = null;
|
||||
XElement headerElement = null;
|
||||
XElement bodyElement = null;
|
||||
if (!StringUtil.IsEmpty(config.SoapPrefix))
|
||||
{
|
||||
XNamespace soapNamespace = SacsSoapUtils.GetSoapNamespace(SoapNamespaceType.Soap_1_1);
|
||||
envelopeElement = requestDoc.AppendElement(soapNamespace, SacsSoapUtils.GetElementName(SoapElementType.Envelope));
|
||||
envelopeElement.SetAttributeValue(XNamespace.Xmlns + config.SoapPrefix, soapNamespace);
|
||||
headerElement = envelopeElement.AppendElement(soapNamespace, SacsSoapUtils.GetElementName(SoapElementType.Header));
|
||||
bodyElement = envelopeElement.AppendElement(soapNamespace, SacsSoapUtils.GetElementName(SoapElementType.Body));
|
||||
}
|
||||
else
|
||||
{
|
||||
// No namespace.
|
||||
envelopeElement = requestDoc.AppendElement(SacsSoapUtils.GetElementName(SoapElementType.Envelope));
|
||||
headerElement = envelopeElement.AppendElement(SacsSoapUtils.GetElementName(SoapElementType.Header));
|
||||
bodyElement = envelopeElement.AppendElement(SacsSoapUtils.GetElementName(SoapElementType.Body));
|
||||
}
|
||||
requestElement = bodyElement.AppendElement(GetRequestName());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise add the request directly to the document.
|
||||
requestElement = requestDoc.AppendElement(GetRequestName());
|
||||
}
|
||||
|
||||
// Config.
|
||||
XElement configElement = requestElement.AppendElement("Config");
|
||||
|
||||
// Context.
|
||||
XElement contextElement = configElement.AppendElement("Context");
|
||||
if (!StringUtil.IsEmpty(config.Context.User)) contextElement.AppendElement("User", config.Context.User);
|
||||
if (!StringUtil.IsEmpty(config.Context.Email)) contextElement.AppendElement("Email", config.Context.Email);
|
||||
if (SysId.IsValid(config.Context.AffiliateIdOrganisation)) contextElement.AppendElement("AffiliateIdOrganisation", SysId.ToString(config.Context.AffiliateIdOrganisation));
|
||||
if (config.Context.Commit) contextElement.AppendElement("Commit", "1");
|
||||
if (config.Context.Debug) contextElement.AppendElement("Debug", "1");
|
||||
|
||||
// Filter.
|
||||
if (Filters.Count > 0)
|
||||
{
|
||||
XElement filterElement = configElement.AppendElement("Filter");
|
||||
foreach (String name in Filters.Keys)
|
||||
filterElement.AppendElement(name, Filters[name]);
|
||||
}
|
||||
|
||||
// Columns.
|
||||
if (Columns.Count > 0)
|
||||
{
|
||||
XElement columnsElement = configElement.AppendElement("Columns", Columns.Concat(",", "", ""));
|
||||
}
|
||||
|
||||
// Sort columns.
|
||||
if (SortColumns.Count > 0)
|
||||
{
|
||||
XElement sortColumnsElement = configElement.AppendElement("SortColumns", SortColumns.Concat(",", "", ""));
|
||||
}
|
||||
|
||||
// Item.
|
||||
if (ItemElement != null)
|
||||
{
|
||||
XElement dataElement = requestElement.AppendElement("Data");
|
||||
dataElement.AppendElement(ItemElement);
|
||||
}
|
||||
|
||||
if (formatted)
|
||||
return requestDoc.FormatXml();
|
||||
return requestDoc.GetXml();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
using Sarand.Core.App;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.Core.Net;
|
||||
using Sarand.Core.Xml;
|
||||
using Sarand.PatientMgr.Core.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace Sarand.PatientMgr.Core.WebService
|
||||
{
|
||||
//=======================================================================
|
||||
public class SpmWebServiceResponse
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Definitions.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public class Config
|
||||
{
|
||||
public DateTime RequestStarted { get; set; } = DateTime.Now;
|
||||
public DateTime RequestCompleted { get; set; }
|
||||
public SacsHttpResponseData HttpResponseData { get; set; }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
protected readonly Config config;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmWebServiceResponse (Config config)
|
||||
{
|
||||
this.config = config;
|
||||
ResponseData = SpmWindowsServiceCrypter.DecryptResponseData(config.HttpResponseData.Data);
|
||||
|
||||
try
|
||||
{
|
||||
// Identify the response element in the xml data.
|
||||
ResponseDoc = XDocument.Parse(ResponseData, LoadOptions.None);
|
||||
XElement rootElement = ResponseDoc.Root;
|
||||
if (rootElement.Name.LocalName.EndsWithCI("Response"))
|
||||
ResponseElement = rootElement;
|
||||
else if (rootElement.Name.LocalName.EqualsCI(SacsSoapUtils.GetElementName(SoapElementType.Envelope)))
|
||||
{
|
||||
SoapEnvelope = true;
|
||||
SoapPrefix = rootElement.GetNamespacePrefix();
|
||||
foreach (XElement soapElement in rootElement.Elements())
|
||||
{
|
||||
if (soapElement.Name.LocalName.EqualsCI(SacsSoapUtils.GetElementName(SoapElementType.Body)))
|
||||
{
|
||||
foreach (XElement bodyElement in soapElement.Elements())
|
||||
{
|
||||
if (bodyElement.Name.LocalName.EndsWithCI("Response"))
|
||||
{
|
||||
ResponseElement = bodyElement;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ResponseElement != null)
|
||||
{
|
||||
// Extract status code.
|
||||
XElement statusElement = ResponseElement.GetFirstChildElement(SpmWebServiceDfn.ElementName.Status);
|
||||
if (statusElement != null)
|
||||
{
|
||||
StatusCode = statusElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Code);
|
||||
// Extract messages.
|
||||
XElement messagesElement = statusElement.GetFirstChildElement(SpmWebServiceDfn.ElementName.Messages);
|
||||
if (messagesElement != null)
|
||||
{
|
||||
foreach (XElement messageElement in messagesElement.GetChildElements(SpmWebServiceDfn.ElementName.Message))
|
||||
{
|
||||
String context = messageElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Context);
|
||||
String code = messageElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Code);
|
||||
SaMessageLevel level = SacsSystem.GetMessageLevelFromCode(messageElement.GetAttributeValue(SpmWebServiceDfn.AttributeName.Level));
|
||||
SpmWebServiceMessage message = new SpmWebServiceMessage(context, code, messageElement.Value, level);
|
||||
Messages.Add(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
}
|
||||
public SpmWebServiceResponse (SpmWebServiceResponse serviceResponse)
|
||||
{
|
||||
// Copied from another service reponse - don't re-intrepert properties.
|
||||
this.config = serviceResponse.config;
|
||||
// Structure.
|
||||
SoapEnvelope = serviceResponse.SoapEnvelope;
|
||||
SoapPrefix = serviceResponse.SoapPrefix;
|
||||
// Response.
|
||||
ResponseData = serviceResponse.ResponseData;
|
||||
ResponseDoc = serviceResponse.ResponseDoc;
|
||||
ResponseElement = serviceResponse.ResponseElement;
|
||||
// Status.
|
||||
StatusCode = serviceResponse.StatusCode;
|
||||
Messages = serviceResponse.Messages;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public DateTime RequestStarted { get { return config.RequestStarted; } }
|
||||
public DateTime RequestCompleted { get { return config.RequestCompleted; } }
|
||||
public SacsHttpResponseData HttpResponseData { get { return config.HttpResponseData; } }
|
||||
// Structure.
|
||||
public bool SoapEnvelope { get; }
|
||||
public String SoapPrefix { get; } = "";
|
||||
// Response.
|
||||
public String ResponseData { get; }
|
||||
public XDocument ResponseDoc { get; }
|
||||
public XElement ResponseElement { get; }
|
||||
// Status.
|
||||
public bool TaskCancelled { get; set; }
|
||||
public String StatusCode { get; } = "";
|
||||
public List<SpmWebServiceMessage> Messages { get; } = new List<SpmWebServiceMessage>();
|
||||
public String ErrorStateMessage { get; set; }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -23,9 +23,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Core\Consoles\" />
|
||||
<Folder Include="Core\Data\" />
|
||||
<Folder Include="Core\UpdateLog\" />
|
||||
<Folder Include="Core\WebService\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -285,6 +285,12 @@
|
||||
<Compile Include="Win\Forms\Base\SpmPanel.Designer.cs">
|
||||
<DependentUpon>SpmPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Maint\SpmForm_Institution.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Maint\SpmForm_Institution.Designer.cs">
|
||||
<DependentUpon>SpmForm_Institution.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Maint\SpmForm_Admission.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -387,6 +393,30 @@
|
||||
<Compile Include="Win\Forms\Maint\SpmForm_Department.Designer.cs">
|
||||
<DependentUpon>SpmForm_Department.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Patients.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Patients.Designer.cs">
|
||||
<DependentUpon>SpmPanel_Patients.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Operations.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Operations.Designer.cs">
|
||||
<DependentUpon>SpmPanel_Operations.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Institutions.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Institutions.Designer.cs">
|
||||
<DependentUpon>SpmPanel_Institutions.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Employees.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Employees.Designer.cs">
|
||||
<DependentUpon>SpmPanel_Employees.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_Departments.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
@@ -435,6 +465,48 @@
|
||||
<Compile Include="Win\Forms\Panels\SpmPanel_UpdateStamp.Designer.cs">
|
||||
<DependentUpon>SpmPanel_UpdateStamp.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_EmployeeRole.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_EmployeeRole.Designer.cs">
|
||||
<DependentUpon>SpmTabPage_EmployeeRole.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_TemplateData.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_TemplateData.Designer.cs">
|
||||
<DependentUpon>SpmTabPage_TemplateData.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Operation.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Operation.Designer.cs">
|
||||
<DependentUpon>SpmTabPage_Operation.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Patient.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Patient.Designer.cs">
|
||||
<DependentUpon>SpmTabPage_Patient.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Procedure.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Procedure.Designer.cs">
|
||||
<DependentUpon>SpmTabPage_Procedure.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Institution.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Institution.Designer.cs">
|
||||
<DependentUpon>SpmTabPage_Institution.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Employee.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Employee.Designer.cs">
|
||||
<DependentUpon>SpmTabPage_Employee.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Win\Forms\TabPages\SpmTabPage_Admission.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
@@ -551,6 +623,9 @@
|
||||
<EmbeddedResource Include="Win\Forms\Filters\SpmItemListFilter_Admission.resx">
|
||||
<DependentUpon>SpmItemListFilter_Admission.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Win\Forms\Maint\SpmForm_Institution.resx">
|
||||
<DependentUpon>SpmForm_Institution.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Win\Forms\Maint\SpmForm_Admission.resx">
|
||||
<DependentUpon>SpmForm_Admission.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@@ -596,6 +671,18 @@
|
||||
<EmbeddedResource Include="Win\Forms\Maint\SpmForm_Department.resx">
|
||||
<DependentUpon>SpmForm_Department.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Win\Forms\Panels\SpmPanel_Patients.resx">
|
||||
<DependentUpon>SpmPanel_Patients.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Win\Forms\Panels\SpmPanel_Operations.resx">
|
||||
<DependentUpon>SpmPanel_Operations.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Win\Forms\Panels\SpmPanel_Institutions.resx">
|
||||
<DependentUpon>SpmPanel_Institutions.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Win\Forms\Panels\SpmPanel_Employees.resx">
|
||||
<DependentUpon>SpmPanel_Employees.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Win\Forms\Panels\SpmPanel_Departments.resx">
|
||||
<DependentUpon>SpmPanel_Departments.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.Maint
|
||||
{
|
||||
partial class SpmForm_Institution
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.buttonOk = new Sarand.Win.Forms.Controls.SacsButton();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.tabControl = new System.Windows.Forms.TabControl();
|
||||
this.buttonCancel = new Sarand.Win.Forms.Controls.SacsButton();
|
||||
this.groupBoxProperties = new Sarand.Win.Forms.Controls.SacsGroupBox();
|
||||
this.tabControl.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// buttonOk
|
||||
//
|
||||
this.buttonOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOk.Location = new System.Drawing.Point(411, 441);
|
||||
this.buttonOk.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.buttonOk.Name = "buttonOk";
|
||||
this.buttonOk.Size = new System.Drawing.Size(100, 28);
|
||||
this.buttonOk.TabIndex = 6;
|
||||
this.buttonOk.Text = "OK";
|
||||
this.buttonOk.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(600, 197);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(600, 68);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabControl
|
||||
//
|
||||
this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControl.Controls.Add(this.tabPage1);
|
||||
this.tabControl.Controls.Add(this.tabPage2);
|
||||
this.tabControl.Location = new System.Drawing.Point(12, 208);
|
||||
this.tabControl.Name = "tabControl";
|
||||
this.tabControl.SelectedIndex = 0;
|
||||
this.tabControl.Size = new System.Drawing.Size(608, 226);
|
||||
this.tabControl.TabIndex = 5;
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.Location = new System.Drawing.Point(519, 441);
|
||||
this.buttonCancel.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(100, 28);
|
||||
this.buttonCancel.TabIndex = 7;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// groupBoxProperties
|
||||
//
|
||||
this.groupBoxProperties.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBoxProperties.BorderColour = System.Drawing.Color.Gray;
|
||||
this.groupBoxProperties.Location = new System.Drawing.Point(12, 12);
|
||||
this.groupBoxProperties.Name = "groupBoxProperties";
|
||||
this.groupBoxProperties.Size = new System.Drawing.Size(608, 190);
|
||||
this.groupBoxProperties.TabIndex = 4;
|
||||
this.groupBoxProperties.TabStop = false;
|
||||
this.groupBoxProperties.Text = "Properties";
|
||||
//
|
||||
// SpmForm_Institution
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(632, 482);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.buttonOk);
|
||||
this.Controls.Add(this.tabControl);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.groupBoxProperties);
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.MinimumSize = new System.Drawing.Size(650, 500);
|
||||
this.Name = "SpmForm_Institution";
|
||||
this.ShowIcon = false;
|
||||
this.Text = "Update Institution";
|
||||
this.tabControl.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Sarand.Win.Forms.Controls.SacsButton buttonOk;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.TabControl tabControl;
|
||||
private Sarand.Win.Forms.Controls.SacsButton buttonCancel;
|
||||
private Sarand.Win.Forms.Controls.SacsGroupBox groupBoxProperties;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.Maint
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmForm_Institution : SpmForm_Item
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public new class Config : SpmForm_Item.Config
|
||||
{
|
||||
public SpmInstitution InstitutionToUpdate { internal get; set; } = null;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmForm_Institution() : this(new Config()) { }
|
||||
public SpmForm_Institution(Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
if (SpmGlobals.System != null)
|
||||
{
|
||||
}
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
[Browsable(false)]
|
||||
protected override String DefaultMessageTitle { get { return "Institution"; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// S h o w D i a l o g
|
||||
//-------------------------------------------------------------------
|
||||
public new DialogResult ShowDialog()
|
||||
{
|
||||
return base.ShowDialog();
|
||||
}
|
||||
// Validate configuration to ensure that form can be opened correctly.
|
||||
private bool ValidateConfiguration()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I n i t i a l i s a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
// Complete dialog initialisation.
|
||||
PositionControls();
|
||||
AcceptChanges();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
protected override void OnShown(EventArgs e)
|
||||
{
|
||||
base.OnShown(e);
|
||||
// Initial focus.
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o p u l a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
// PopulateToControls.
|
||||
private void PopulateToControls(SpmInstitution.Data data)
|
||||
{
|
||||
// Populate item properties to controls.
|
||||
|
||||
AcceptChanges();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Validate properties.
|
||||
public bool IsDataValid(SpmInstitution.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// PopulateFromControls.
|
||||
private void PopulateFromControls(SpmInstitution.Data data)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// UpdatedAssociated Data.
|
||||
public bool UpdateAssociatedData()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C l o s e F o r m
|
||||
//-------------------------------------------------------------------
|
||||
private void buttonOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
private void buttonCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected override void SetControlActivity()
|
||||
{
|
||||
SetControlsReadOnly();
|
||||
}
|
||||
public bool IsFieldReadOnly(SpmDbDfn.ColumnIdx col)
|
||||
{
|
||||
if (ReadOnly) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
protected override void SetControlsReadOnly()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o s i t i o n C o n t r o l s
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// F o r m E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,186 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.Panels
|
||||
{
|
||||
partial class SpmPanel_Employees
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.listFilterEmployee = new Sarand.PatientMgr.Win.Forms.Filters.SpmItemListFilter_Employee();
|
||||
this.listViewEmployee = new Sarand.PatientMgr.Win.Forms.Controls.SpmItemListView_Employee();
|
||||
this.tabControl = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.buttonRemove = new System.Windows.Forms.Button();
|
||||
this.buttonUpdate = new System.Windows.Forms.Button();
|
||||
this.buttonCreate = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.buttonOk = new System.Windows.Forms.Button();
|
||||
this.tabControl.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// listFilterEmployee
|
||||
//
|
||||
this.listFilterEmployee.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listFilterEmployee.Location = new System.Drawing.Point(0, 2);
|
||||
this.listFilterEmployee.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.listFilterEmployee.Name = "listFilterEmployee";
|
||||
this.listFilterEmployee.Size = new System.Drawing.Size(400, 30);
|
||||
this.listFilterEmployee.TabIndex = 0;
|
||||
this.listFilterEmployee.FilterChanged += new System.EventHandler(this.listFilterEmployee_FilterChanged);
|
||||
//
|
||||
// listViewEmployee
|
||||
//
|
||||
this.listViewEmployee.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listViewEmployee.FullRowSelect = true;
|
||||
this.listViewEmployee.HideSelection = false;
|
||||
this.listViewEmployee.Location = new System.Drawing.Point(0, 37);
|
||||
this.listViewEmployee.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.listViewEmployee.Name = "listViewEmployee";
|
||||
this.listViewEmployee.OwnerDraw = true;
|
||||
this.listViewEmployee.Size = new System.Drawing.Size(317, 155);
|
||||
this.listViewEmployee.TabIndex = 1;
|
||||
this.listViewEmployee.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewEmployee.ItemCountChanged += new System.EventHandler<Sarand.Win.Forms.Controls.SacsListView.ItemCountChangedEventArgs>(this.listViewEmployee_ItemCountChanged);
|
||||
this.listViewEmployee.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewEmployee_ColumnClick);
|
||||
this.listViewEmployee.SelectedIndexChanged += new System.EventHandler(this.listViewEmployee_SelectedIndexChanged);
|
||||
this.listViewEmployee.DoubleClick += new System.EventHandler(this.listViewEmployee_DoubleClick);
|
||||
this.listViewEmployee.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listViewEmployee_MouseUp);
|
||||
//
|
||||
// tabControl
|
||||
//
|
||||
this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControl.Controls.Add(this.tabPage1);
|
||||
this.tabControl.Controls.Add(this.tabPage2);
|
||||
this.tabControl.Location = new System.Drawing.Point(2, 196);
|
||||
this.tabControl.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabControl.Name = "tabControl";
|
||||
this.tabControl.SelectedIndex = 0;
|
||||
this.tabControl.Size = new System.Drawing.Size(398, 154);
|
||||
this.tabControl.TabIndex = 6;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage1.Size = new System.Drawing.Size(390, 128);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage2.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage2.Size = new System.Drawing.Size(390, 128);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonRemove
|
||||
//
|
||||
this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonRemove.Location = new System.Drawing.Point(322, 95);
|
||||
this.buttonRemove.Name = "buttonRemove";
|
||||
this.buttonRemove.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonRemove.TabIndex = 15;
|
||||
this.buttonRemove.Text = "Remove";
|
||||
this.buttonRemove.UseVisualStyleBackColor = true;
|
||||
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
|
||||
//
|
||||
// buttonUpdate
|
||||
//
|
||||
this.buttonUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonUpdate.Location = new System.Drawing.Point(322, 66);
|
||||
this.buttonUpdate.Name = "buttonUpdate";
|
||||
this.buttonUpdate.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonUpdate.TabIndex = 14;
|
||||
this.buttonUpdate.Text = "Update";
|
||||
this.buttonUpdate.UseVisualStyleBackColor = true;
|
||||
this.buttonUpdate.Click += new System.EventHandler(this.buttonUpdate_Click);
|
||||
//
|
||||
// buttonCreate
|
||||
//
|
||||
this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCreate.Location = new System.Drawing.Point(322, 37);
|
||||
this.buttonCreate.Name = "buttonCreate";
|
||||
this.buttonCreate.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCreate.TabIndex = 13;
|
||||
this.buttonCreate.Text = "Create";
|
||||
this.buttonCreate.UseVisualStyleBackColor = true;
|
||||
this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.Location = new System.Drawing.Point(322, 168);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 15;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// buttonOk
|
||||
//
|
||||
this.buttonOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOk.Location = new System.Drawing.Point(322, 139);
|
||||
this.buttonOk.Name = "buttonOk";
|
||||
this.buttonOk.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOk.TabIndex = 15;
|
||||
this.buttonOk.Text = "OK";
|
||||
this.buttonOk.UseVisualStyleBackColor = true;
|
||||
this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
|
||||
//
|
||||
// SpmPanel_Employees
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.buttonOk);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonRemove);
|
||||
this.Controls.Add(this.buttonUpdate);
|
||||
this.Controls.Add(this.buttonCreate);
|
||||
this.Controls.Add(this.tabControl);
|
||||
this.Controls.Add(this.listViewEmployee);
|
||||
this.Controls.Add(this.listFilterEmployee);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.MinimumSize = new System.Drawing.Size(400, 350);
|
||||
this.Name = "SpmPanel_Employees";
|
||||
this.Size = new System.Drawing.Size(400, 350);
|
||||
this.tabControl.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Filters.SpmItemListFilter_Employee listFilterEmployee;
|
||||
private Controls.SpmItemListView_Employee listViewEmployee;
|
||||
private System.Windows.Forms.TabControl tabControl;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.Button buttonRemove;
|
||||
private System.Windows.Forms.Button buttonUpdate;
|
||||
private System.Windows.Forms.Button buttonCreate;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.Button buttonOk;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,604 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.TabPages;
|
||||
using Sarand.PatientMgr.Win.Forms.Filters;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.Panels
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmPanel_Employees : SpmPanel_Items
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelMode
|
||||
{
|
||||
Search,
|
||||
Maintain,
|
||||
}
|
||||
public new class Config : SpmPanel_Items.Config
|
||||
{
|
||||
public Config (PanelMode mode)
|
||||
{
|
||||
Mode = mode;
|
||||
// Defaults based on mode.
|
||||
DisplayFilter = false; // Mode == PanelMode.Maintain || Mode == PanelMode.Search;
|
||||
DisplayTabs = Mode == PanelMode.Maintain;
|
||||
DisplayActionButtons = Mode == PanelMode.Maintain;
|
||||
DisplayNavigationButtons = Mode == PanelMode.Search;
|
||||
}
|
||||
public PanelMode Mode { get; } = PanelMode.Maintain;
|
||||
public SpmForm SearchForm { get; set; }
|
||||
// Display options.
|
||||
public bool DisplayFilter { get; set; } = false;
|
||||
public bool DisplayContextMenu { get; set; } = true;
|
||||
public bool DisplayActionButtons { get; set; } = false;
|
||||
public bool DisplayNavigationButtons { get; set; } = false;
|
||||
public bool DisplayTabs { get; set; } = false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config(PanelMode.Search);
|
||||
private readonly List<SpmTabPage_Employee> tabPages = new List<SpmTabPage_Employee>();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
private SpmPanel_Employees () : this(new Config(PanelMode.Search)) { }
|
||||
public SpmPanel_Employees (Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose (bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
protected override String DefaultMessageTitle { get { return "Employee"; } }
|
||||
public override int ItemTotal { get { return listViewEmployee.ItemTotal; } }
|
||||
public override int ItemCount { get { return listViewEmployee.ItemCount; } }
|
||||
public override int SelectedItemCount { get { return listViewEmployee.SelectedItemCount; } }
|
||||
public SysId SelectedItemId { get { return listViewEmployee.SelectedItemId; } }
|
||||
public List<SysId> SelectedItemIds { get { return listViewEmployee.SelectedItemIds; } }
|
||||
public SpmEmployee SelectedEmployee { get { return listViewEmployee.SelectedEmployee; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Configure.
|
||||
public void SetConfig (Config config)
|
||||
{
|
||||
base.SetConfig(config);
|
||||
this.config = config;
|
||||
ConfigurePanel();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I n i t i a l i s a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void OnCreateControl ()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
ConfigurePanel();
|
||||
}
|
||||
|
||||
private void ConfigurePanel ()
|
||||
{
|
||||
if (!Created || this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure filter.
|
||||
if (config.DisplayFilter)
|
||||
{
|
||||
SpmItemListFilter_Employee.Config configFilter = new SpmItemListFilter_Employee.Config();
|
||||
configFilter.Internals = Internals;
|
||||
listFilterEmployee.SetConfig(configFilter);
|
||||
}
|
||||
listFilterEmployee.Visible = config.DisplayFilter;
|
||||
|
||||
// Configure list.
|
||||
SpmItemListView_Employee.Config configList = new SpmItemListView_Employee.Config();
|
||||
configList.Internals = Internals;
|
||||
configList.Mode = SpmItemListView_Employee.ListMode.General;
|
||||
listViewEmployee.SetConfig(configList);
|
||||
|
||||
// Tabs.
|
||||
tabControl.TabPages.Clear();
|
||||
tabControl.Visible = config.DisplayTabs;
|
||||
RefreshTabs();
|
||||
|
||||
// Configure buttons.
|
||||
buttonCreate.Visible = config.DisplayActionButtons && SecurityProfile.Admin.CanManageConfig();
|
||||
buttonUpdate.Visible = config.DisplayActionButtons;
|
||||
buttonRemove.Visible = config.DisplayActionButtons && buttonCreate.Visible;
|
||||
buttonOk.Visible = config.DisplayNavigationButtons && config.Mode == PanelMode.Search;
|
||||
buttonCancel.Visible = config.DisplayNavigationButtons;
|
||||
|
||||
// Complete form initialisation.
|
||||
RefreshDataItems();
|
||||
SetControlActivity();
|
||||
PositionControls();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialise tabs.
|
||||
private void InitTabs ()
|
||||
{
|
||||
String fn = GetType().Name + ".InitTabs";
|
||||
tabControl.TabPages.Clear();
|
||||
tabPages.Clear();
|
||||
if (!config.DisplayTabs)
|
||||
{
|
||||
tabPages.Clear();
|
||||
tabControl.TabPages.Clear();
|
||||
tabControl.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Selected Employee.
|
||||
SpmEmployee employee = SelectedEmployee;
|
||||
|
||||
// Updates.
|
||||
List<SpmTabPage_Employee.PanelType> panelTypes_Updates = new List<SpmTabPage_Employee.PanelType>();
|
||||
panelTypes_Updates.Add(SpmTabPage_Employee.PanelType.Updates);
|
||||
if (panelTypes_Updates.Count > 0)
|
||||
{
|
||||
SpmTabPage_Employee.Config configTabPage = new SpmTabPage_Employee.Config();
|
||||
configTabPage.Internals = Internals;
|
||||
configTabPage.ReadOnly = ReadOnly;
|
||||
configTabPage.PanelTypes.AddRange(panelTypes_Updates);
|
||||
SpmTabPage_Employee tabPage = new SpmTabPage_Employee(configTabPage) { Text = "Updates" };
|
||||
tabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
// Populate tab pages.
|
||||
tabControl.Visible = tabPages.Count > 0;
|
||||
foreach (var tabPage in tabPages)
|
||||
tabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
private String previouslySelectedTabPageText = "";
|
||||
private void RefreshTabs ()
|
||||
{
|
||||
if (tabControl.SelectedTab != null)
|
||||
previouslySelectedTabPageText = tabControl.SelectedTab.Text;
|
||||
|
||||
// Reinitialise tabs whenever the selection changes in case the set of tab pages displayed needs to be changed.
|
||||
InitTabs();
|
||||
|
||||
// Select previous tab page if still present.
|
||||
if (!StringUtil.IsEmpty(previouslySelectedTabPageText))
|
||||
{
|
||||
foreach (TabPage tabPage in tabControl.TabPages)
|
||||
{
|
||||
if (tabPage.Text.Equals(previouslySelectedTabPageText))
|
||||
{
|
||||
tabControl.SelectTab(tabPage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
RefreshTabPages();
|
||||
|
||||
SetControlActivity();
|
||||
PositionControls();
|
||||
}
|
||||
private void RefreshTabPages ()
|
||||
{
|
||||
// Selected Employee - populated when needed.
|
||||
SpmEmployee employee = null;
|
||||
|
||||
// Refresh tabs.
|
||||
if (tabControl.Visible)
|
||||
{
|
||||
if (employee == null) employee = SelectedEmployee;
|
||||
SpmEmployee.Data employeeData = employee != null ? employee.GetData() : new SpmEmployee.Data();
|
||||
tabPages.PopulateToControls(employeeData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// F i l t e r
|
||||
//-------------------------------------------------------------------
|
||||
public bool ParamsAreValid (SpmEmployee.Params prmEmployee)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public SpmEmployee.Params GetParams ()
|
||||
{
|
||||
SpmEmployee.Params prmEmployee = new SpmEmployee.Params();
|
||||
|
||||
// Sort columns.
|
||||
prmEmployee.SortColumns.AddRange(listViewEmployee.GetSortColumns());
|
||||
return prmEmployee;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// A c t i o n s
|
||||
//-------------------------------------------------------------------
|
||||
// Refresh.
|
||||
public override void RefreshDataItems ()
|
||||
{
|
||||
SpmEmployee.Params prmEmployee = GetParams();
|
||||
if (!ParamsAreValid(prmEmployee)) prmEmployee = null;
|
||||
listViewEmployee.RefreshEmployees(prmEmployee);
|
||||
}
|
||||
public override void RefreshDataItem (SysId id)
|
||||
{
|
||||
listViewEmployee.RefreshEmployee(id);
|
||||
}
|
||||
public override void RemoveDataItem (SysId id)
|
||||
{
|
||||
listViewEmployee.RemoveItemById(id);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override bool CanCreateItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void CreateItem ()
|
||||
{
|
||||
if (!CanCreateItem()) return;
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
// Create new Employee.
|
||||
SpmForm_Employee.Config configEmployee = new SpmForm_Employee.Config();
|
||||
using (var form = new SpmForm_Employee(configEmployee))
|
||||
{
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
RefreshDataItem(form.NewItemId);
|
||||
InvokeItemCreatedEvent(Spm.DataItemType.Employee, form.NewItemId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// View/Update item.
|
||||
public override bool CanViewItem ()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override bool CanUpdateItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void UpdateItem (bool updateItem = true)
|
||||
{
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
SpmEmployee employee = SelectedEmployee;
|
||||
if (SelectedItemCount != 1) return;
|
||||
if (!CanUpdateItem() && !CanViewItem()) return;
|
||||
if (!CanUpdateItem()) updateItem = false;
|
||||
if (employee == null)
|
||||
{
|
||||
MessageConsole.ShowMessageWarning("Failed to retrieve selected item");
|
||||
return;
|
||||
}
|
||||
SpmForm_Employee.Config configEmployee = new SpmForm_Employee.Config();
|
||||
configEmployee.EmployeeToUpdate = employee;
|
||||
configEmployee.ReadOnly = (config.ReadOnly || !updateItem);
|
||||
using (SpmForm_Employee formEmployee = new SpmForm_Employee(configEmployee))
|
||||
{
|
||||
// Perform the update.
|
||||
if (formEmployee.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
// Employee has been updated.
|
||||
RefreshDataItem(employee.Id);
|
||||
listViewEmployee.RefreshEmployee(employee.Id);
|
||||
InvokeItemUpdatedEvent(Spm.DataItemType.Employee, employee.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool CanDeleteItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void DeleteItem ()
|
||||
{
|
||||
if (!CanDeleteItem()) return;
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
if (SelectedItemCount != 1) return;
|
||||
SpmEmployee employee = SelectedEmployee;
|
||||
if (employee == null)
|
||||
{
|
||||
MessageConsole.ShowMessageWarning("Failed to retrieve item for deletion.");
|
||||
return;
|
||||
}
|
||||
if (!InstitutionMgr.EmployeeCanBeDeleted(employee))
|
||||
{
|
||||
MessageConsole.ShowMessageError("Unable to remove employee - " + InstitutionMgr.ErrorStateMessage + ".");
|
||||
return;
|
||||
}
|
||||
if (MessageConsole.ShowMessageConfirm("Are you sure that this employee should be removed from the system?"))
|
||||
{
|
||||
if (InstitutionMgr.DeleteEmployee(employee, DbUpdateInfo))
|
||||
{
|
||||
int selectIdx = listViewEmployee.SelectedIndex;
|
||||
listViewEmployee.RemoveItemById(employee.Id.ToString());
|
||||
if (selectIdx >= listViewEmployee.ItemCount - 1) selectIdx--;
|
||||
listViewEmployee.SelectedIndices.Clear();
|
||||
listViewEmployee.SelectedIndices.Add(selectIdx);
|
||||
}
|
||||
else MessageConsole.ShowMessageError("Failed to remove employee - " + InstitutionMgr.ErrorStateMessage + ".");
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Import data.
|
||||
public override bool CanImportData ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override void ImportData ()
|
||||
{
|
||||
if (!CanImportData()) return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Export data.
|
||||
public override bool CanExportData ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override void ExportData ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t e x t M e n u
|
||||
//-------------------------------------------------------------------
|
||||
private SpmContextMenuStrip contextMenuStrip = new SpmContextMenuStrip();
|
||||
private void RefreshContextMenu ()
|
||||
{
|
||||
contextMenuStrip.Name = "Employee";
|
||||
contextMenuStrip.Items.Clear();
|
||||
if (CanCreateItem())
|
||||
contextMenuStrip.Items.Add("Create", null, CreateItem);
|
||||
if (SysId.IsValid(listViewEmployee.SelectedItemId))
|
||||
{
|
||||
SpmEmployee employee = SelectedEmployee;
|
||||
if (employee != null)
|
||||
{
|
||||
if (CanUpdateItem() || CanDeleteItem())
|
||||
{
|
||||
if (contextMenuStrip.Items.Count > 0)
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
contextMenuStrip.Items.Add(CanUpdateItem() ? "Update" : "View", null, UpdateItem);
|
||||
if (CanDeleteItem())
|
||||
contextMenuStrip.Items.Add("Remove", null, DeleteItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CanExportData() || CanImportData())
|
||||
{
|
||||
if (contextMenuStrip.Items.Count > 0)
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
if (CanImportData())
|
||||
contextMenuStrip.Items.Add("Import", null, ImportData);
|
||||
if (CanExportData())
|
||||
contextMenuStrip.Items.Add("Export", null, ExportData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected override void SetControlActivity ()
|
||||
{
|
||||
SetControlsReadOnly();
|
||||
bool itemSelected = SysId.IsValid(SelectedItemId);
|
||||
|
||||
listViewEmployee.Enabled = Enabled;
|
||||
buttonCreate.Enabled = Enabled;
|
||||
buttonUpdate.Enabled = Enabled && itemSelected;
|
||||
buttonRemove.Enabled = Enabled && itemSelected;
|
||||
buttonOk.Enabled = Enabled;
|
||||
buttonCancel.Enabled = Enabled;
|
||||
}
|
||||
protected override void SetControlsReadOnly ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o s i t i o n C o n t r o l s
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls ()
|
||||
{
|
||||
if (this.IsDesignerHosted() || !Created) return;
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Filter panel.
|
||||
if (listFilterEmployee.Visible)
|
||||
{
|
||||
listFilterEmployee.PositionAtTopLeftOf(this);
|
||||
listFilterEmployee.SetFullWidthOf(this);
|
||||
listFilterEmployee.ResizeToBottomControl();
|
||||
listViewEmployee.PositionBelow(listFilterEmployee);
|
||||
}
|
||||
else
|
||||
{
|
||||
listViewEmployee.PositionAtTopLeftOf(this);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// List view.
|
||||
int buttonLeft = clientRect.Width - buttonCreate.Width - buttonCreate.Margin.Right - Padding.Right;
|
||||
listViewEmployee.Left = listViewEmployee.Margin.Left;
|
||||
listViewEmployee.Width = buttonLeft - buttonCreate.Margin.Left - listViewEmployee.Left - listViewEmployee.Margin.Right;
|
||||
if (!(buttonCreate.Visible || buttonUpdate.Visible || buttonRemove.Visible || buttonOk.Visible || buttonCancel.Visible))
|
||||
listViewEmployee.Width = clientRect.Width - Padding.Right - listViewEmployee.Left - listViewEmployee.Margin.Right;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Tab control.
|
||||
if (tabControl.Visible)
|
||||
{
|
||||
tabControl.Left = listViewEmployee.Left;
|
||||
tabControl.Width = clientRect.Width - (tabControl.Left * 2);
|
||||
listViewEmployee.Height = (int)((clientRect.Height - listViewEmployee.Top) * 0.40);
|
||||
tabControl.Top = listViewEmployee.Bottom + listViewEmployee.Margin.Bottom + tabControl.Margin.Top;
|
||||
tabControl.Height = clientRect.Height - tabControl.Top - tabControl.Margin.Bottom - Padding.Bottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
listViewEmployee.Height = clientRect.Height - listViewEmployee.Top - listViewEmployee.Margin.Bottom - Padding.Bottom;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Create button.
|
||||
int buttonTop = listViewEmployee.Top + listViewEmployee.HeaderHeight;
|
||||
buttonCreate.Top = buttonTop;
|
||||
buttonCreate.Left = buttonLeft;
|
||||
if (buttonCreate.Visible)
|
||||
buttonTop += buttonCreate.Height + buttonCreate.Margin.Bottom;
|
||||
|
||||
// Update button.
|
||||
buttonUpdate.Top = buttonTop;
|
||||
buttonUpdate.Left = buttonLeft;
|
||||
if (buttonUpdate.Visible)
|
||||
buttonTop += buttonUpdate.Height + buttonUpdate.Margin.Bottom;
|
||||
|
||||
// Remove button.
|
||||
buttonRemove.Top = buttonTop;
|
||||
buttonRemove.Left = buttonLeft;
|
||||
if (buttonRemove.Visible)
|
||||
buttonTop += buttonRemove.Height + buttonRemove.Margin.Bottom;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Navigation buttons.
|
||||
// Cancel button.
|
||||
buttonCancel.Top = clientRect.Bottom - Padding.Bottom - buttonCancel.Margin.Bottom - buttonCancel.Height;
|
||||
buttonCancel.Left = buttonLeft;
|
||||
|
||||
// OK button.
|
||||
buttonOk.Top = buttonCancel.Top - buttonOk.Height - buttonCancel.Padding.Top - buttonCancel.Margin.Bottom;
|
||||
buttonOk.Left = buttonLeft;
|
||||
if (buttonOk.Visible)
|
||||
buttonTop += buttonOk.Height + buttonOk.Margin.Bottom;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
// Filter.
|
||||
private void listFilterEmployee_FilterChanged (object sender, EventArgs e)
|
||||
{
|
||||
RefreshDataItems();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
private void listViewEmployee_ColumnClick (object sender, ColumnClickEventArgs e)
|
||||
{
|
||||
RefreshDataItems();
|
||||
}
|
||||
private void listViewEmployee_ItemCountChanged (object sender, Sarand.Win.Forms.Controls.SacsListView.ItemCountChangedEventArgs e)
|
||||
{
|
||||
InvokeItemCountChangedEvent(e);
|
||||
}
|
||||
private void listViewEmployee_SelectedIndexChanged (object sender, EventArgs e)
|
||||
{
|
||||
RefreshTabs();
|
||||
InvokeItemSelectionChangedEvent(e);
|
||||
SetControlActivity();
|
||||
}
|
||||
private void listViewEmployee_DoubleClick (object sender, EventArgs e)
|
||||
{
|
||||
if (config.Mode == PanelMode.Search)
|
||||
{
|
||||
//if (config.SearchForm != null) config.SearchForm.OnOK();
|
||||
}
|
||||
else
|
||||
UpdateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void listViewEmployee_MouseUp (object sender, MouseEventArgs e)
|
||||
{
|
||||
switch (e.Button)
|
||||
{
|
||||
case MouseButtons.Right:
|
||||
// Refresh the context menu and display at pointer position.
|
||||
RefreshContextMenu();
|
||||
contextMenuStrip.Show(listViewEmployee, new Point(e.X, e.Y), ToolStripDropDownDirection.Default);
|
||||
break;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Actions.
|
||||
private void buttonCreate_Click (object sender, EventArgs e)
|
||||
{
|
||||
CreateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonUpdate_Click (object sender, EventArgs e)
|
||||
{
|
||||
UpdateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonRemove_Click (object sender, EventArgs e)
|
||||
{
|
||||
DeleteItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonOk_Click (object sender, EventArgs e)
|
||||
{
|
||||
if (config.SearchForm != null)
|
||||
{
|
||||
//config.SearchForm.OnOK();
|
||||
return;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonCancel_Click (object sender, EventArgs e)
|
||||
{
|
||||
if (config.SearchForm != null)
|
||||
{
|
||||
//config.SearchForm.OnCancel();
|
||||
return;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,186 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.Panels
|
||||
{
|
||||
partial class SpmPanel_Institutions
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent ()
|
||||
{
|
||||
this.listFilterInstitution = new Sarand.PatientMgr.Win.Forms.Filters.SpmItemListFilter_Institution();
|
||||
this.listViewInstitution = new Sarand.PatientMgr.Win.Forms.Controls.SpmItemListView_Institution();
|
||||
this.tabControl = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.buttonRemove = new System.Windows.Forms.Button();
|
||||
this.buttonUpdate = new System.Windows.Forms.Button();
|
||||
this.buttonCreate = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.buttonOk = new System.Windows.Forms.Button();
|
||||
this.tabControl.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// listFilterInstitution
|
||||
//
|
||||
this.listFilterInstitution.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listFilterInstitution.Location = new System.Drawing.Point(0, 2);
|
||||
this.listFilterInstitution.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.listFilterInstitution.Name = "listFilterInstitution";
|
||||
this.listFilterInstitution.Size = new System.Drawing.Size(400, 30);
|
||||
this.listFilterInstitution.TabIndex = 0;
|
||||
this.listFilterInstitution.FilterChanged += new System.EventHandler(this.listFilterInstitution_FilterChanged);
|
||||
//
|
||||
// listViewInstitution
|
||||
//
|
||||
this.listViewInstitution.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listViewInstitution.FullRowSelect = true;
|
||||
this.listViewInstitution.HideSelection = false;
|
||||
this.listViewInstitution.Location = new System.Drawing.Point(0, 37);
|
||||
this.listViewInstitution.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.listViewInstitution.Name = "listViewInstitution";
|
||||
this.listViewInstitution.OwnerDraw = true;
|
||||
this.listViewInstitution.Size = new System.Drawing.Size(317, 155);
|
||||
this.listViewInstitution.TabIndex = 1;
|
||||
this.listViewInstitution.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewInstitution.ItemCountChanged += new System.EventHandler<Sarand.Win.Forms.Controls.SacsListView.ItemCountChangedEventArgs>(this.listViewInstitution_ItemCountChanged);
|
||||
this.listViewInstitution.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewInstitution_ColumnClick);
|
||||
this.listViewInstitution.SelectedIndexChanged += new System.EventHandler(this.listViewInstitution_SelectedIndexChanged);
|
||||
this.listViewInstitution.DoubleClick += new System.EventHandler(this.listViewInstitution_DoubleClick);
|
||||
this.listViewInstitution.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listViewInstitution_MouseUp);
|
||||
//
|
||||
// tabControl
|
||||
//
|
||||
this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControl.Controls.Add(this.tabPage1);
|
||||
this.tabControl.Controls.Add(this.tabPage2);
|
||||
this.tabControl.Location = new System.Drawing.Point(2, 196);
|
||||
this.tabControl.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabControl.Name = "tabControl";
|
||||
this.tabControl.SelectedIndex = 0;
|
||||
this.tabControl.Size = new System.Drawing.Size(398, 154);
|
||||
this.tabControl.TabIndex = 6;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage1.Size = new System.Drawing.Size(390, 128);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage2.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage2.Size = new System.Drawing.Size(390, 128);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonRemove
|
||||
//
|
||||
this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonRemove.Location = new System.Drawing.Point(322, 95);
|
||||
this.buttonRemove.Name = "buttonRemove";
|
||||
this.buttonRemove.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonRemove.TabIndex = 15;
|
||||
this.buttonRemove.Text = "Remove";
|
||||
this.buttonRemove.UseVisualStyleBackColor = true;
|
||||
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
|
||||
//
|
||||
// buttonUpdate
|
||||
//
|
||||
this.buttonUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonUpdate.Location = new System.Drawing.Point(322, 66);
|
||||
this.buttonUpdate.Name = "buttonUpdate";
|
||||
this.buttonUpdate.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonUpdate.TabIndex = 14;
|
||||
this.buttonUpdate.Text = "Update";
|
||||
this.buttonUpdate.UseVisualStyleBackColor = true;
|
||||
this.buttonUpdate.Click += new System.EventHandler(this.buttonUpdate_Click);
|
||||
//
|
||||
// buttonCreate
|
||||
//
|
||||
this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCreate.Location = new System.Drawing.Point(322, 37);
|
||||
this.buttonCreate.Name = "buttonCreate";
|
||||
this.buttonCreate.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCreate.TabIndex = 13;
|
||||
this.buttonCreate.Text = "Create";
|
||||
this.buttonCreate.UseVisualStyleBackColor = true;
|
||||
this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.Location = new System.Drawing.Point(322, 168);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 15;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// buttonOk
|
||||
//
|
||||
this.buttonOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOk.Location = new System.Drawing.Point(322, 139);
|
||||
this.buttonOk.Name = "buttonOk";
|
||||
this.buttonOk.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOk.TabIndex = 15;
|
||||
this.buttonOk.Text = "OK";
|
||||
this.buttonOk.UseVisualStyleBackColor = true;
|
||||
this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
|
||||
//
|
||||
// SpmPanel_Institutions
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.buttonOk);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonRemove);
|
||||
this.Controls.Add(this.buttonUpdate);
|
||||
this.Controls.Add(this.buttonCreate);
|
||||
this.Controls.Add(this.tabControl);
|
||||
this.Controls.Add(this.listViewInstitution);
|
||||
this.Controls.Add(this.listFilterInstitution);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.MinimumSize = new System.Drawing.Size(400, 350);
|
||||
this.Name = "SpmPanel_Institutions";
|
||||
this.Size = new System.Drawing.Size(400, 350);
|
||||
this.tabControl.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Filters.SpmItemListFilter_Institution listFilterInstitution;
|
||||
private Controls.SpmItemListView_Institution listViewInstitution;
|
||||
private System.Windows.Forms.TabControl tabControl;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.Button buttonRemove;
|
||||
private System.Windows.Forms.Button buttonUpdate;
|
||||
private System.Windows.Forms.Button buttonCreate;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.Button buttonOk;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,604 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.TabPages;
|
||||
using Sarand.PatientMgr.Win.Forms.Filters;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.Panels
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmPanel_Institutions : SpmPanel_Items
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelMode
|
||||
{
|
||||
Search,
|
||||
Maintain,
|
||||
}
|
||||
public new class Config : SpmPanel_Items.Config
|
||||
{
|
||||
public Config (PanelMode mode)
|
||||
{
|
||||
Mode = mode;
|
||||
// Defaults based on mode.
|
||||
DisplayFilter = false; // Mode == PanelMode.Maintain || Mode == PanelMode.Search;
|
||||
DisplayTabs = Mode == PanelMode.Maintain;
|
||||
DisplayActionButtons = Mode == PanelMode.Maintain;
|
||||
DisplayNavigationButtons = Mode == PanelMode.Search;
|
||||
}
|
||||
public PanelMode Mode { get; } = PanelMode.Maintain;
|
||||
public SpmForm SearchForm { get; set; }
|
||||
// Display options.
|
||||
public bool DisplayFilter { get; set; } = false;
|
||||
public bool DisplayContextMenu { get; set; } = true;
|
||||
public bool DisplayActionButtons { get; set; } = false;
|
||||
public bool DisplayNavigationButtons { get; set; } = false;
|
||||
public bool DisplayTabs { get; set; } = false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config(PanelMode.Search);
|
||||
private readonly List<SpmTabPage_Institution> tabPages = new List<SpmTabPage_Institution>();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
private SpmPanel_Institutions () : this(new Config(PanelMode.Search)) { }
|
||||
public SpmPanel_Institutions (Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose (bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
protected override String DefaultMessageTitle { get { return "Institution"; } }
|
||||
public override int ItemTotal { get { return listViewInstitution.ItemTotal; } }
|
||||
public override int ItemCount { get { return listViewInstitution.ItemCount; } }
|
||||
public override int SelectedItemCount { get { return listViewInstitution.SelectedItemCount; } }
|
||||
public SysId SelectedItemId { get { return listViewInstitution.SelectedItemId; } }
|
||||
public List<SysId> SelectedItemIds { get { return listViewInstitution.SelectedItemIds; } }
|
||||
public SpmInstitution SelectedInstitution { get { return listViewInstitution.SelectedInstitution; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Configure.
|
||||
public void SetConfig (Config config)
|
||||
{
|
||||
base.SetConfig(config);
|
||||
this.config = config;
|
||||
ConfigurePanel();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I n i t i a l i s a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void OnCreateControl ()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
ConfigurePanel();
|
||||
}
|
||||
|
||||
private void ConfigurePanel ()
|
||||
{
|
||||
if (!Created || this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure filter.
|
||||
if (config.DisplayFilter)
|
||||
{
|
||||
SpmItemListFilter_Institution.Config configFilter = new SpmItemListFilter_Institution.Config();
|
||||
configFilter.Internals = Internals;
|
||||
listFilterInstitution.SetConfig(configFilter);
|
||||
}
|
||||
listFilterInstitution.Visible = config.DisplayFilter;
|
||||
|
||||
// Configure list.
|
||||
SpmItemListView_Institution.Config configList = new SpmItemListView_Institution.Config();
|
||||
configList.Internals = Internals;
|
||||
configList.Mode = SpmItemListView_Institution.ListMode.General;
|
||||
listViewInstitution.SetConfig(configList);
|
||||
|
||||
// Tabs.
|
||||
tabControl.TabPages.Clear();
|
||||
tabControl.Visible = config.DisplayTabs;
|
||||
RefreshTabs();
|
||||
|
||||
// Configure buttons.
|
||||
buttonCreate.Visible = config.DisplayActionButtons && SecurityProfile.Admin.CanManageConfig();
|
||||
buttonUpdate.Visible = config.DisplayActionButtons;
|
||||
buttonRemove.Visible = config.DisplayActionButtons && buttonCreate.Visible;
|
||||
buttonOk.Visible = config.DisplayNavigationButtons && config.Mode == PanelMode.Search;
|
||||
buttonCancel.Visible = config.DisplayNavigationButtons;
|
||||
|
||||
// Complete form initialisation.
|
||||
RefreshDataItems();
|
||||
SetControlActivity();
|
||||
PositionControls();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialise tabs.
|
||||
private void InitTabs ()
|
||||
{
|
||||
String fn = GetType().Name + ".InitTabs";
|
||||
tabControl.TabPages.Clear();
|
||||
tabPages.Clear();
|
||||
if (!config.DisplayTabs)
|
||||
{
|
||||
tabPages.Clear();
|
||||
tabControl.TabPages.Clear();
|
||||
tabControl.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Selected Institution.
|
||||
SpmInstitution institution = SelectedInstitution;
|
||||
|
||||
// Updates.
|
||||
List<SpmTabPage_Institution.PanelType> panelTypes_Updates = new List<SpmTabPage_Institution.PanelType>();
|
||||
panelTypes_Updates.Add(SpmTabPage_Institution.PanelType.Updates);
|
||||
if (panelTypes_Updates.Count > 0)
|
||||
{
|
||||
SpmTabPage_Institution.Config configTabPage = new SpmTabPage_Institution.Config();
|
||||
configTabPage.Internals = Internals;
|
||||
configTabPage.ReadOnly = ReadOnly;
|
||||
configTabPage.PanelTypes.AddRange(panelTypes_Updates);
|
||||
SpmTabPage_Institution tabPage = new SpmTabPage_Institution(configTabPage) { Text = "Updates" };
|
||||
tabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
// Populate tab pages.
|
||||
tabControl.Visible = tabPages.Count > 0;
|
||||
foreach (var tabPage in tabPages)
|
||||
tabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
private String previouslySelectedTabPageText = "";
|
||||
private void RefreshTabs ()
|
||||
{
|
||||
if (tabControl.SelectedTab != null)
|
||||
previouslySelectedTabPageText = tabControl.SelectedTab.Text;
|
||||
|
||||
// Reinitialise tabs whenever the selection changes in case the set of tab pages displayed needs to be changed.
|
||||
InitTabs();
|
||||
|
||||
// Select previous tab page if still present.
|
||||
if (!StringUtil.IsEmpty(previouslySelectedTabPageText))
|
||||
{
|
||||
foreach (TabPage tabPage in tabControl.TabPages)
|
||||
{
|
||||
if (tabPage.Text.Equals(previouslySelectedTabPageText))
|
||||
{
|
||||
tabControl.SelectTab(tabPage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
RefreshTabPages();
|
||||
|
||||
SetControlActivity();
|
||||
PositionControls();
|
||||
}
|
||||
private void RefreshTabPages ()
|
||||
{
|
||||
// Selected Institution - populated when needed.
|
||||
SpmInstitution institution = null;
|
||||
|
||||
// Refresh tabs.
|
||||
if (tabControl.Visible)
|
||||
{
|
||||
if (institution == null) institution = SelectedInstitution;
|
||||
SpmInstitution.Data institutionData = institution != null ? institution.GetData() : new SpmInstitution.Data();
|
||||
tabPages.PopulateToControls(institutionData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// F i l t e r
|
||||
//-------------------------------------------------------------------
|
||||
public bool ParamsAreValid (SpmInstitution.Params prmInstitution)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public SpmInstitution.Params GetParams ()
|
||||
{
|
||||
SpmInstitution.Params prmInstitution = new SpmInstitution.Params();
|
||||
|
||||
// Sort columns.
|
||||
prmInstitution.SortColumns.AddRange(listViewInstitution.GetSortColumns());
|
||||
return prmInstitution;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// A c t i o n s
|
||||
//-------------------------------------------------------------------
|
||||
// Refresh.
|
||||
public override void RefreshDataItems ()
|
||||
{
|
||||
SpmInstitution.Params prmInstitution = GetParams();
|
||||
if (!ParamsAreValid(prmInstitution)) prmInstitution = null;
|
||||
listViewInstitution.RefreshInstitutions(prmInstitution);
|
||||
}
|
||||
public override void RefreshDataItem (SysId id)
|
||||
{
|
||||
listViewInstitution.RefreshInstitution(id);
|
||||
}
|
||||
public override void RemoveDataItem (SysId id)
|
||||
{
|
||||
listViewInstitution.RemoveItemById(id);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override bool CanCreateItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void CreateItem ()
|
||||
{
|
||||
if (!CanCreateItem()) return;
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
// Create new Institution.
|
||||
SpmForm_Institution.Config configInstitution = new SpmForm_Institution.Config();
|
||||
using (var form = new SpmForm_Institution(configInstitution))
|
||||
{
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
RefreshDataItem(form.NewItemId);
|
||||
InvokeItemCreatedEvent(Spm.DataItemType.Institution, form.NewItemId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// View/Update item.
|
||||
public override bool CanViewItem ()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override bool CanUpdateItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void UpdateItem (bool updateItem = true)
|
||||
{
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
SpmInstitution institution = SelectedInstitution;
|
||||
if (SelectedItemCount != 1) return;
|
||||
if (!CanUpdateItem() && !CanViewItem()) return;
|
||||
if (!CanUpdateItem()) updateItem = false;
|
||||
if (institution == null)
|
||||
{
|
||||
MessageConsole.ShowMessageWarning("Failed to retrieve selected item");
|
||||
return;
|
||||
}
|
||||
SpmForm_Institution.Config configInstitution = new SpmForm_Institution.Config();
|
||||
configInstitution.InstitutionToUpdate = institution;
|
||||
configInstitution.ReadOnly = (config.ReadOnly || !updateItem);
|
||||
using (SpmForm_Institution formInstitution = new SpmForm_Institution(configInstitution))
|
||||
{
|
||||
// Perform the update.
|
||||
if (formInstitution.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
// Institution has been updated.
|
||||
RefreshDataItem(institution.Id);
|
||||
listViewInstitution.RefreshInstitution(institution.Id);
|
||||
InvokeItemUpdatedEvent(Spm.DataItemType.Institution, institution.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool CanDeleteItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void DeleteItem ()
|
||||
{
|
||||
if (!CanDeleteItem()) return;
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
if (SelectedItemCount != 1) return;
|
||||
SpmInstitution institution = SelectedInstitution;
|
||||
if (institution == null)
|
||||
{
|
||||
MessageConsole.ShowMessageWarning("Failed to retrieve item for deletion.");
|
||||
return;
|
||||
}
|
||||
if (!InstitutionMgr.InstitutionCanBeDeleted(institution))
|
||||
{
|
||||
MessageConsole.ShowMessageError("Unable to remove institution - " + InstitutionMgr.ErrorStateMessage + ".");
|
||||
return;
|
||||
}
|
||||
if (MessageConsole.ShowMessageConfirm("Are you sure that this institution should be removed from the system?"))
|
||||
{
|
||||
if (InstitutionMgr.DeleteInstitution(institution, DbUpdateInfo))
|
||||
{
|
||||
int selectIdx = listViewInstitution.SelectedIndex;
|
||||
listViewInstitution.RemoveItemById(institution.Id.ToString());
|
||||
if (selectIdx >= listViewInstitution.ItemCount - 1) selectIdx--;
|
||||
listViewInstitution.SelectedIndices.Clear();
|
||||
listViewInstitution.SelectedIndices.Add(selectIdx);
|
||||
}
|
||||
else MessageConsole.ShowMessageError("Failed to remove institution - " + InstitutionMgr.ErrorStateMessage + ".");
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Import data.
|
||||
public override bool CanImportData ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override void ImportData ()
|
||||
{
|
||||
if (!CanImportData()) return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Export data.
|
||||
public override bool CanExportData ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override void ExportData ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t e x t M e n u
|
||||
//-------------------------------------------------------------------
|
||||
private SpmContextMenuStrip contextMenuStrip = new SpmContextMenuStrip();
|
||||
private void RefreshContextMenu ()
|
||||
{
|
||||
contextMenuStrip.Name = "Institution";
|
||||
contextMenuStrip.Items.Clear();
|
||||
if (CanCreateItem())
|
||||
contextMenuStrip.Items.Add("Create", null, CreateItem);
|
||||
if (SysId.IsValid(listViewInstitution.SelectedItemId))
|
||||
{
|
||||
SpmInstitution institution = SelectedInstitution;
|
||||
if (institution != null)
|
||||
{
|
||||
if (CanUpdateItem() || CanDeleteItem())
|
||||
{
|
||||
if (contextMenuStrip.Items.Count > 0)
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
contextMenuStrip.Items.Add(CanUpdateItem() ? "Update" : "View", null, UpdateItem);
|
||||
if (CanDeleteItem())
|
||||
contextMenuStrip.Items.Add("Remove", null, DeleteItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CanExportData() || CanImportData())
|
||||
{
|
||||
if (contextMenuStrip.Items.Count > 0)
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
if (CanImportData())
|
||||
contextMenuStrip.Items.Add("Import", null, ImportData);
|
||||
if (CanExportData())
|
||||
contextMenuStrip.Items.Add("Export", null, ExportData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected override void SetControlActivity ()
|
||||
{
|
||||
SetControlsReadOnly();
|
||||
bool itemSelected = SysId.IsValid(SelectedItemId);
|
||||
|
||||
listViewInstitution.Enabled = Enabled;
|
||||
buttonCreate.Enabled = Enabled;
|
||||
buttonUpdate.Enabled = Enabled && itemSelected;
|
||||
buttonRemove.Enabled = Enabled && itemSelected;
|
||||
buttonOk.Enabled = Enabled;
|
||||
buttonCancel.Enabled = Enabled;
|
||||
}
|
||||
protected override void SetControlsReadOnly ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o s i t i o n C o n t r o l s
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls ()
|
||||
{
|
||||
if (this.IsDesignerHosted() || !Created) return;
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Filter panel.
|
||||
if (listFilterInstitution.Visible)
|
||||
{
|
||||
listFilterInstitution.PositionAtTopLeftOf(this);
|
||||
listFilterInstitution.SetFullWidthOf(this);
|
||||
listFilterInstitution.ResizeToBottomControl();
|
||||
listViewInstitution.PositionBelow(listFilterInstitution);
|
||||
}
|
||||
else
|
||||
{
|
||||
listViewInstitution.PositionAtTopLeftOf(this);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// List view.
|
||||
int buttonLeft = clientRect.Width - buttonCreate.Width - buttonCreate.Margin.Right - Padding.Right;
|
||||
listViewInstitution.Left = listViewInstitution.Margin.Left;
|
||||
listViewInstitution.Width = buttonLeft - buttonCreate.Margin.Left - listViewInstitution.Left - listViewInstitution.Margin.Right;
|
||||
if (!(buttonCreate.Visible || buttonUpdate.Visible || buttonRemove.Visible || buttonOk.Visible || buttonCancel.Visible))
|
||||
listViewInstitution.Width = clientRect.Width - Padding.Right - listViewInstitution.Left - listViewInstitution.Margin.Right;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Tab control.
|
||||
if (tabControl.Visible)
|
||||
{
|
||||
tabControl.Left = listViewInstitution.Left;
|
||||
tabControl.Width = clientRect.Width - (tabControl.Left * 2);
|
||||
listViewInstitution.Height = (int)((clientRect.Height - listViewInstitution.Top) * 0.40);
|
||||
tabControl.Top = listViewInstitution.Bottom + listViewInstitution.Margin.Bottom + tabControl.Margin.Top;
|
||||
tabControl.Height = clientRect.Height - tabControl.Top - tabControl.Margin.Bottom - Padding.Bottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
listViewInstitution.Height = clientRect.Height - listViewInstitution.Top - listViewInstitution.Margin.Bottom - Padding.Bottom;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Create button.
|
||||
int buttonTop = listViewInstitution.Top + listViewInstitution.HeaderHeight;
|
||||
buttonCreate.Top = buttonTop;
|
||||
buttonCreate.Left = buttonLeft;
|
||||
if (buttonCreate.Visible)
|
||||
buttonTop += buttonCreate.Height + buttonCreate.Margin.Bottom;
|
||||
|
||||
// Update button.
|
||||
buttonUpdate.Top = buttonTop;
|
||||
buttonUpdate.Left = buttonLeft;
|
||||
if (buttonUpdate.Visible)
|
||||
buttonTop += buttonUpdate.Height + buttonUpdate.Margin.Bottom;
|
||||
|
||||
// Remove button.
|
||||
buttonRemove.Top = buttonTop;
|
||||
buttonRemove.Left = buttonLeft;
|
||||
if (buttonRemove.Visible)
|
||||
buttonTop += buttonRemove.Height + buttonRemove.Margin.Bottom;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Navigation buttons.
|
||||
// Cancel button.
|
||||
buttonCancel.Top = clientRect.Bottom - Padding.Bottom - buttonCancel.Margin.Bottom - buttonCancel.Height;
|
||||
buttonCancel.Left = buttonLeft;
|
||||
|
||||
// OK button.
|
||||
buttonOk.Top = buttonCancel.Top - buttonOk.Height - buttonCancel.Padding.Top - buttonCancel.Margin.Bottom;
|
||||
buttonOk.Left = buttonLeft;
|
||||
if (buttonOk.Visible)
|
||||
buttonTop += buttonOk.Height + buttonOk.Margin.Bottom;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
// Filter.
|
||||
private void listFilterInstitution_FilterChanged (object sender, EventArgs e)
|
||||
{
|
||||
RefreshDataItems();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
private void listViewInstitution_ColumnClick (object sender, ColumnClickEventArgs e)
|
||||
{
|
||||
RefreshDataItems();
|
||||
}
|
||||
private void listViewInstitution_ItemCountChanged (object sender, Sarand.Win.Forms.Controls.SacsListView.ItemCountChangedEventArgs e)
|
||||
{
|
||||
InvokeItemCountChangedEvent(e);
|
||||
}
|
||||
private void listViewInstitution_SelectedIndexChanged (object sender, EventArgs e)
|
||||
{
|
||||
RefreshTabs();
|
||||
InvokeItemSelectionChangedEvent(e);
|
||||
SetControlActivity();
|
||||
}
|
||||
private void listViewInstitution_DoubleClick (object sender, EventArgs e)
|
||||
{
|
||||
if (config.Mode == PanelMode.Search)
|
||||
{
|
||||
//if (config.SearchForm != null) config.SearchForm.OnOK();
|
||||
}
|
||||
else
|
||||
UpdateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void listViewInstitution_MouseUp (object sender, MouseEventArgs e)
|
||||
{
|
||||
switch (e.Button)
|
||||
{
|
||||
case MouseButtons.Right:
|
||||
// Refresh the context menu and display at pointer position.
|
||||
RefreshContextMenu();
|
||||
contextMenuStrip.Show(listViewInstitution, new Point(e.X, e.Y), ToolStripDropDownDirection.Default);
|
||||
break;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Actions.
|
||||
private void buttonCreate_Click (object sender, EventArgs e)
|
||||
{
|
||||
CreateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonUpdate_Click (object sender, EventArgs e)
|
||||
{
|
||||
UpdateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonRemove_Click (object sender, EventArgs e)
|
||||
{
|
||||
DeleteItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonOk_Click (object sender, EventArgs e)
|
||||
{
|
||||
if (config.SearchForm != null)
|
||||
{
|
||||
//config.SearchForm.OnOK();
|
||||
return;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonCancel_Click (object sender, EventArgs e)
|
||||
{
|
||||
if (config.SearchForm != null)
|
||||
{
|
||||
//config.SearchForm.OnCancel();
|
||||
return;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,186 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.Panels
|
||||
{
|
||||
partial class SpmPanel_Operations
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.listFilterOperation = new Sarand.PatientMgr.Win.Forms.Filters.SpmItemListFilter_Operation();
|
||||
this.listViewOperation = new Sarand.PatientMgr.Win.Forms.Controls.SpmItemListView_Operation();
|
||||
this.tabControl = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.buttonRemove = new System.Windows.Forms.Button();
|
||||
this.buttonUpdate = new System.Windows.Forms.Button();
|
||||
this.buttonCreate = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.buttonOk = new System.Windows.Forms.Button();
|
||||
this.tabControl.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// listFilterOperation
|
||||
//
|
||||
this.listFilterOperation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listFilterOperation.Location = new System.Drawing.Point(0, 2);
|
||||
this.listFilterOperation.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.listFilterOperation.Name = "listFilterOperation";
|
||||
this.listFilterOperation.Size = new System.Drawing.Size(400, 30);
|
||||
this.listFilterOperation.TabIndex = 0;
|
||||
this.listFilterOperation.FilterChanged += new System.EventHandler(this.listFilterOperation_FilterChanged);
|
||||
//
|
||||
// listViewOperation
|
||||
//
|
||||
this.listViewOperation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listViewOperation.FullRowSelect = true;
|
||||
this.listViewOperation.HideSelection = false;
|
||||
this.listViewOperation.Location = new System.Drawing.Point(0, 37);
|
||||
this.listViewOperation.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.listViewOperation.Name = "listViewOperation";
|
||||
this.listViewOperation.OwnerDraw = true;
|
||||
this.listViewOperation.Size = new System.Drawing.Size(317, 155);
|
||||
this.listViewOperation.TabIndex = 1;
|
||||
this.listViewOperation.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewOperation.ItemCountChanged += new System.EventHandler<Sarand.Win.Forms.Controls.SacsListView.ItemCountChangedEventArgs>(this.listViewOperation_ItemCountChanged);
|
||||
this.listViewOperation.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewOperation_ColumnClick);
|
||||
this.listViewOperation.SelectedIndexChanged += new System.EventHandler(this.listViewOperation_SelectedIndexChanged);
|
||||
this.listViewOperation.DoubleClick += new System.EventHandler(this.listViewOperation_DoubleClick);
|
||||
this.listViewOperation.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listViewOperation_MouseUp);
|
||||
//
|
||||
// tabControl
|
||||
//
|
||||
this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControl.Controls.Add(this.tabPage1);
|
||||
this.tabControl.Controls.Add(this.tabPage2);
|
||||
this.tabControl.Location = new System.Drawing.Point(2, 196);
|
||||
this.tabControl.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabControl.Name = "tabControl";
|
||||
this.tabControl.SelectedIndex = 0;
|
||||
this.tabControl.Size = new System.Drawing.Size(398, 154);
|
||||
this.tabControl.TabIndex = 6;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage1.Size = new System.Drawing.Size(390, 128);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage2.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage2.Size = new System.Drawing.Size(390, 128);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonRemove
|
||||
//
|
||||
this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonRemove.Location = new System.Drawing.Point(322, 95);
|
||||
this.buttonRemove.Name = "buttonRemove";
|
||||
this.buttonRemove.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonRemove.TabIndex = 15;
|
||||
this.buttonRemove.Text = "Remove";
|
||||
this.buttonRemove.UseVisualStyleBackColor = true;
|
||||
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
|
||||
//
|
||||
// buttonUpdate
|
||||
//
|
||||
this.buttonUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonUpdate.Location = new System.Drawing.Point(322, 66);
|
||||
this.buttonUpdate.Name = "buttonUpdate";
|
||||
this.buttonUpdate.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonUpdate.TabIndex = 14;
|
||||
this.buttonUpdate.Text = "Update";
|
||||
this.buttonUpdate.UseVisualStyleBackColor = true;
|
||||
this.buttonUpdate.Click += new System.EventHandler(this.buttonUpdate_Click);
|
||||
//
|
||||
// buttonCreate
|
||||
//
|
||||
this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCreate.Location = new System.Drawing.Point(322, 37);
|
||||
this.buttonCreate.Name = "buttonCreate";
|
||||
this.buttonCreate.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCreate.TabIndex = 13;
|
||||
this.buttonCreate.Text = "Create";
|
||||
this.buttonCreate.UseVisualStyleBackColor = true;
|
||||
this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.Location = new System.Drawing.Point(322, 168);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 15;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// buttonOk
|
||||
//
|
||||
this.buttonOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOk.Location = new System.Drawing.Point(322, 139);
|
||||
this.buttonOk.Name = "buttonOk";
|
||||
this.buttonOk.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOk.TabIndex = 15;
|
||||
this.buttonOk.Text = "OK";
|
||||
this.buttonOk.UseVisualStyleBackColor = true;
|
||||
this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
|
||||
//
|
||||
// SpmPanel_Operations
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.buttonOk);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonRemove);
|
||||
this.Controls.Add(this.buttonUpdate);
|
||||
this.Controls.Add(this.buttonCreate);
|
||||
this.Controls.Add(this.tabControl);
|
||||
this.Controls.Add(this.listViewOperation);
|
||||
this.Controls.Add(this.listFilterOperation);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.MinimumSize = new System.Drawing.Size(400, 350);
|
||||
this.Name = "SpmPanel_Operations";
|
||||
this.Size = new System.Drawing.Size(400, 350);
|
||||
this.tabControl.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Filters.SpmItemListFilter_Operation listFilterOperation;
|
||||
private Controls.SpmItemListView_Operation listViewOperation;
|
||||
private System.Windows.Forms.TabControl tabControl;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.Button buttonRemove;
|
||||
private System.Windows.Forms.Button buttonUpdate;
|
||||
private System.Windows.Forms.Button buttonCreate;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.Button buttonOk;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,604 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.TabPages;
|
||||
using Sarand.PatientMgr.Win.Forms.Filters;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.Panels
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmPanel_Operations : SpmPanel_Items
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelMode
|
||||
{
|
||||
Search,
|
||||
Maintain,
|
||||
}
|
||||
public new class Config : SpmPanel_Items.Config
|
||||
{
|
||||
public Config (PanelMode mode)
|
||||
{
|
||||
Mode = mode;
|
||||
// Defaults based on mode.
|
||||
DisplayFilter = false; // Mode == PanelMode.Maintain || Mode == PanelMode.Search;
|
||||
DisplayTabs = Mode == PanelMode.Maintain;
|
||||
DisplayActionButtons = Mode == PanelMode.Maintain;
|
||||
DisplayNavigationButtons = Mode == PanelMode.Search;
|
||||
}
|
||||
public PanelMode Mode { get; } = PanelMode.Maintain;
|
||||
public SpmForm SearchForm { get; set; }
|
||||
// Display options.
|
||||
public bool DisplayFilter { get; set; } = false;
|
||||
public bool DisplayContextMenu { get; set; } = true;
|
||||
public bool DisplayActionButtons { get; set; } = false;
|
||||
public bool DisplayNavigationButtons { get; set; } = false;
|
||||
public bool DisplayTabs { get; set; } = false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config(PanelMode.Search);
|
||||
private readonly List<SpmTabPage_Operation> tabPages = new List<SpmTabPage_Operation>();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
private SpmPanel_Operations () : this(new Config(PanelMode.Search)) { }
|
||||
public SpmPanel_Operations (Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose (bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
protected override String DefaultMessageTitle { get { return "Operation"; } }
|
||||
public override int ItemTotal { get { return listViewOperation.ItemTotal; } }
|
||||
public override int ItemCount { get { return listViewOperation.ItemCount; } }
|
||||
public override int SelectedItemCount { get { return listViewOperation.SelectedItemCount; } }
|
||||
public SysId SelectedItemId { get { return listViewOperation.SelectedItemId; } }
|
||||
public List<SysId> SelectedItemIds { get { return listViewOperation.SelectedItemIds; } }
|
||||
public SpmOperation SelectedOperation { get { return listViewOperation.SelectedOperation; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Configure.
|
||||
public void SetConfig (Config config)
|
||||
{
|
||||
base.SetConfig(config);
|
||||
this.config = config;
|
||||
ConfigurePanel();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I n i t i a l i s a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void OnCreateControl ()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
ConfigurePanel();
|
||||
}
|
||||
|
||||
private void ConfigurePanel ()
|
||||
{
|
||||
if (!Created || this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure filter.
|
||||
if (config.DisplayFilter)
|
||||
{
|
||||
SpmItemListFilter_Operation.Config configFilter = new SpmItemListFilter_Operation.Config();
|
||||
configFilter.Internals = Internals;
|
||||
listFilterOperation.SetConfig(configFilter);
|
||||
}
|
||||
listFilterOperation.Visible = config.DisplayFilter;
|
||||
|
||||
// Configure list.
|
||||
SpmItemListView_Operation.Config configList = new SpmItemListView_Operation.Config();
|
||||
configList.Internals = Internals;
|
||||
configList.Mode = SpmItemListView_Operation.ListMode.General;
|
||||
listViewOperation.SetConfig(configList);
|
||||
|
||||
// Tabs.
|
||||
tabControl.TabPages.Clear();
|
||||
tabControl.Visible = config.DisplayTabs;
|
||||
RefreshTabs();
|
||||
|
||||
// Configure buttons.
|
||||
buttonCreate.Visible = config.DisplayActionButtons && SecurityProfile.Admin.CanManageConfig();
|
||||
buttonUpdate.Visible = config.DisplayActionButtons;
|
||||
buttonRemove.Visible = config.DisplayActionButtons && buttonCreate.Visible;
|
||||
buttonOk.Visible = config.DisplayNavigationButtons && config.Mode == PanelMode.Search;
|
||||
buttonCancel.Visible = config.DisplayNavigationButtons;
|
||||
|
||||
// Complete form initialisation.
|
||||
RefreshDataItems();
|
||||
SetControlActivity();
|
||||
PositionControls();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialise tabs.
|
||||
private void InitTabs ()
|
||||
{
|
||||
String fn = GetType().Name + ".InitTabs";
|
||||
tabControl.TabPages.Clear();
|
||||
tabPages.Clear();
|
||||
if (!config.DisplayTabs)
|
||||
{
|
||||
tabPages.Clear();
|
||||
tabControl.TabPages.Clear();
|
||||
tabControl.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Selected Operation.
|
||||
SpmOperation operation = SelectedOperation;
|
||||
|
||||
// Updates.
|
||||
List<SpmTabPage_Operation.PanelType> panelTypes_Updates = new List<SpmTabPage_Operation.PanelType>();
|
||||
panelTypes_Updates.Add(SpmTabPage_Operation.PanelType.Updates);
|
||||
if (panelTypes_Updates.Count > 0)
|
||||
{
|
||||
SpmTabPage_Operation.Config configTabPage = new SpmTabPage_Operation.Config();
|
||||
configTabPage.Internals = Internals;
|
||||
configTabPage.ReadOnly = ReadOnly;
|
||||
configTabPage.PanelTypes.AddRange(panelTypes_Updates);
|
||||
SpmTabPage_Operation tabPage = new SpmTabPage_Operation(configTabPage) { Text = "Updates" };
|
||||
tabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
// Populate tab pages.
|
||||
tabControl.Visible = tabPages.Count > 0;
|
||||
foreach (var tabPage in tabPages)
|
||||
tabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
private String previouslySelectedTabPageText = "";
|
||||
private void RefreshTabs ()
|
||||
{
|
||||
if (tabControl.SelectedTab != null)
|
||||
previouslySelectedTabPageText = tabControl.SelectedTab.Text;
|
||||
|
||||
// Reinitialise tabs whenever the selection changes in case the set of tab pages displayed needs to be changed.
|
||||
InitTabs();
|
||||
|
||||
// Select previous tab page if still present.
|
||||
if (!StringUtil.IsEmpty(previouslySelectedTabPageText))
|
||||
{
|
||||
foreach (TabPage tabPage in tabControl.TabPages)
|
||||
{
|
||||
if (tabPage.Text.Equals(previouslySelectedTabPageText))
|
||||
{
|
||||
tabControl.SelectTab(tabPage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
RefreshTabPages();
|
||||
|
||||
SetControlActivity();
|
||||
PositionControls();
|
||||
}
|
||||
private void RefreshTabPages ()
|
||||
{
|
||||
// Selected Operation - populated when needed.
|
||||
SpmOperation operation = null;
|
||||
|
||||
// Refresh tabs.
|
||||
if (tabControl.Visible)
|
||||
{
|
||||
if (operation == null) operation = SelectedOperation;
|
||||
SpmOperation.Data operationData = operation != null ? operation.GetData() : new SpmOperation.Data();
|
||||
tabPages.PopulateToControls(operationData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// F i l t e r
|
||||
//-------------------------------------------------------------------
|
||||
public bool ParamsAreValid (SpmOperation.Params prmOperation)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public SpmOperation.Params GetParams ()
|
||||
{
|
||||
SpmOperation.Params prmOperation = new SpmOperation.Params();
|
||||
|
||||
// Sort columns.
|
||||
prmOperation.SortColumns.AddRange(listViewOperation.GetSortColumns());
|
||||
return prmOperation;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// A c t i o n s
|
||||
//-------------------------------------------------------------------
|
||||
// Refresh.
|
||||
public override void RefreshDataItems ()
|
||||
{
|
||||
SpmOperation.Params prmOperation = GetParams();
|
||||
if (!ParamsAreValid(prmOperation)) prmOperation = null;
|
||||
listViewOperation.RefreshOperations(prmOperation);
|
||||
}
|
||||
public override void RefreshDataItem (SysId id)
|
||||
{
|
||||
listViewOperation.RefreshOperation(id);
|
||||
}
|
||||
public override void RemoveDataItem (SysId id)
|
||||
{
|
||||
listViewOperation.RemoveItemById(id);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override bool CanCreateItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void CreateItem ()
|
||||
{
|
||||
if (!CanCreateItem()) return;
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
// Create new Operation.
|
||||
SpmForm_Operation.Config configOperation = new SpmForm_Operation.Config();
|
||||
using (var form = new SpmForm_Operation(configOperation))
|
||||
{
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
RefreshDataItem(form.NewItemId);
|
||||
InvokeItemCreatedEvent(Spm.DataItemType.Operation, form.NewItemId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// View/Update item.
|
||||
public override bool CanViewItem ()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override bool CanUpdateItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void UpdateItem (bool updateItem = true)
|
||||
{
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
SpmOperation operation = SelectedOperation;
|
||||
if (SelectedItemCount != 1) return;
|
||||
if (!CanUpdateItem() && !CanViewItem()) return;
|
||||
if (!CanUpdateItem()) updateItem = false;
|
||||
if (operation == null)
|
||||
{
|
||||
MessageConsole.ShowMessageWarning("Failed to retrieve selected item");
|
||||
return;
|
||||
}
|
||||
SpmForm_Operation.Config configOperation = new SpmForm_Operation.Config();
|
||||
configOperation.OperationToUpdate = operation;
|
||||
configOperation.ReadOnly = (config.ReadOnly || !updateItem);
|
||||
using (SpmForm_Operation formOperation = new SpmForm_Operation(configOperation))
|
||||
{
|
||||
// Perform the update.
|
||||
if (formOperation.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
// Operation has been updated.
|
||||
RefreshDataItem(operation.Id);
|
||||
listViewOperation.RefreshOperation(operation.Id);
|
||||
InvokeItemUpdatedEvent(Spm.DataItemType.Operation, operation.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool CanDeleteItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void DeleteItem ()
|
||||
{
|
||||
if (!CanDeleteItem()) return;
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
if (SelectedItemCount != 1) return;
|
||||
SpmOperation operation = SelectedOperation;
|
||||
if (operation == null)
|
||||
{
|
||||
MessageConsole.ShowMessageWarning("Failed to retrieve item for deletion.");
|
||||
return;
|
||||
}
|
||||
if (!InstitutionMgr.OperationCanBeDeleted(operation))
|
||||
{
|
||||
MessageConsole.ShowMessageError("Unable to remove operation - " + InstitutionMgr.ErrorStateMessage + ".");
|
||||
return;
|
||||
}
|
||||
if (MessageConsole.ShowMessageConfirm("Are you sure that this operation should be removed from the system?"))
|
||||
{
|
||||
if (InstitutionMgr.DeleteOperation(operation, DbUpdateInfo))
|
||||
{
|
||||
int selectIdx = listViewOperation.SelectedIndex;
|
||||
listViewOperation.RemoveItemById(operation.Id.ToString());
|
||||
if (selectIdx >= listViewOperation.ItemCount - 1) selectIdx--;
|
||||
listViewOperation.SelectedIndices.Clear();
|
||||
listViewOperation.SelectedIndices.Add(selectIdx);
|
||||
}
|
||||
else MessageConsole.ShowMessageError("Failed to remove operation - " + InstitutionMgr.ErrorStateMessage + ".");
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Import data.
|
||||
public override bool CanImportData ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override void ImportData ()
|
||||
{
|
||||
if (!CanImportData()) return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Export data.
|
||||
public override bool CanExportData ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override void ExportData ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t e x t M e n u
|
||||
//-------------------------------------------------------------------
|
||||
private SpmContextMenuStrip contextMenuStrip = new SpmContextMenuStrip();
|
||||
private void RefreshContextMenu ()
|
||||
{
|
||||
contextMenuStrip.Name = "Operation";
|
||||
contextMenuStrip.Items.Clear();
|
||||
if (CanCreateItem())
|
||||
contextMenuStrip.Items.Add("Create", null, CreateItem);
|
||||
if (SysId.IsValid(listViewOperation.SelectedItemId))
|
||||
{
|
||||
SpmOperation operation = SelectedOperation;
|
||||
if (operation != null)
|
||||
{
|
||||
if (CanUpdateItem() || CanDeleteItem())
|
||||
{
|
||||
if (contextMenuStrip.Items.Count > 0)
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
contextMenuStrip.Items.Add(CanUpdateItem() ? "Update" : "View", null, UpdateItem);
|
||||
if (CanDeleteItem())
|
||||
contextMenuStrip.Items.Add("Remove", null, DeleteItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CanExportData() || CanImportData())
|
||||
{
|
||||
if (contextMenuStrip.Items.Count > 0)
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
if (CanImportData())
|
||||
contextMenuStrip.Items.Add("Import", null, ImportData);
|
||||
if (CanExportData())
|
||||
contextMenuStrip.Items.Add("Export", null, ExportData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected override void SetControlActivity ()
|
||||
{
|
||||
SetControlsReadOnly();
|
||||
bool itemSelected = SysId.IsValid(SelectedItemId);
|
||||
|
||||
listViewOperation.Enabled = Enabled;
|
||||
buttonCreate.Enabled = Enabled;
|
||||
buttonUpdate.Enabled = Enabled && itemSelected;
|
||||
buttonRemove.Enabled = Enabled && itemSelected;
|
||||
buttonOk.Enabled = Enabled;
|
||||
buttonCancel.Enabled = Enabled;
|
||||
}
|
||||
protected override void SetControlsReadOnly ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o s i t i o n C o n t r o l s
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls ()
|
||||
{
|
||||
if (this.IsDesignerHosted() || !Created) return;
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Filter panel.
|
||||
if (listFilterOperation.Visible)
|
||||
{
|
||||
listFilterOperation.PositionAtTopLeftOf(this);
|
||||
listFilterOperation.SetFullWidthOf(this);
|
||||
listFilterOperation.ResizeToBottomControl();
|
||||
listViewOperation.PositionBelow(listFilterOperation);
|
||||
}
|
||||
else
|
||||
{
|
||||
listViewOperation.PositionAtTopLeftOf(this);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// List view.
|
||||
int buttonLeft = clientRect.Width - buttonCreate.Width - buttonCreate.Margin.Right - Padding.Right;
|
||||
listViewOperation.Left = listViewOperation.Margin.Left;
|
||||
listViewOperation.Width = buttonLeft - buttonCreate.Margin.Left - listViewOperation.Left - listViewOperation.Margin.Right;
|
||||
if (!(buttonCreate.Visible || buttonUpdate.Visible || buttonRemove.Visible || buttonOk.Visible || buttonCancel.Visible))
|
||||
listViewOperation.Width = clientRect.Width - Padding.Right - listViewOperation.Left - listViewOperation.Margin.Right;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Tab control.
|
||||
if (tabControl.Visible)
|
||||
{
|
||||
tabControl.Left = listViewOperation.Left;
|
||||
tabControl.Width = clientRect.Width - (tabControl.Left * 2);
|
||||
listViewOperation.Height = (int)((clientRect.Height - listViewOperation.Top) * 0.40);
|
||||
tabControl.Top = listViewOperation.Bottom + listViewOperation.Margin.Bottom + tabControl.Margin.Top;
|
||||
tabControl.Height = clientRect.Height - tabControl.Top - tabControl.Margin.Bottom - Padding.Bottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
listViewOperation.Height = clientRect.Height - listViewOperation.Top - listViewOperation.Margin.Bottom - Padding.Bottom;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Create button.
|
||||
int buttonTop = listViewOperation.Top + listViewOperation.HeaderHeight;
|
||||
buttonCreate.Top = buttonTop;
|
||||
buttonCreate.Left = buttonLeft;
|
||||
if (buttonCreate.Visible)
|
||||
buttonTop += buttonCreate.Height + buttonCreate.Margin.Bottom;
|
||||
|
||||
// Update button.
|
||||
buttonUpdate.Top = buttonTop;
|
||||
buttonUpdate.Left = buttonLeft;
|
||||
if (buttonUpdate.Visible)
|
||||
buttonTop += buttonUpdate.Height + buttonUpdate.Margin.Bottom;
|
||||
|
||||
// Remove button.
|
||||
buttonRemove.Top = buttonTop;
|
||||
buttonRemove.Left = buttonLeft;
|
||||
if (buttonRemove.Visible)
|
||||
buttonTop += buttonRemove.Height + buttonRemove.Margin.Bottom;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Navigation buttons.
|
||||
// Cancel button.
|
||||
buttonCancel.Top = clientRect.Bottom - Padding.Bottom - buttonCancel.Margin.Bottom - buttonCancel.Height;
|
||||
buttonCancel.Left = buttonLeft;
|
||||
|
||||
// OK button.
|
||||
buttonOk.Top = buttonCancel.Top - buttonOk.Height - buttonCancel.Padding.Top - buttonCancel.Margin.Bottom;
|
||||
buttonOk.Left = buttonLeft;
|
||||
if (buttonOk.Visible)
|
||||
buttonTop += buttonOk.Height + buttonOk.Margin.Bottom;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
// Filter.
|
||||
private void listFilterOperation_FilterChanged (object sender, EventArgs e)
|
||||
{
|
||||
RefreshDataItems();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
private void listViewOperation_ColumnClick (object sender, ColumnClickEventArgs e)
|
||||
{
|
||||
RefreshDataItems();
|
||||
}
|
||||
private void listViewOperation_ItemCountChanged (object sender, Sarand.Win.Forms.Controls.SacsListView.ItemCountChangedEventArgs e)
|
||||
{
|
||||
InvokeItemCountChangedEvent(e);
|
||||
}
|
||||
private void listViewOperation_SelectedIndexChanged (object sender, EventArgs e)
|
||||
{
|
||||
RefreshTabs();
|
||||
InvokeItemSelectionChangedEvent(e);
|
||||
SetControlActivity();
|
||||
}
|
||||
private void listViewOperation_DoubleClick (object sender, EventArgs e)
|
||||
{
|
||||
if (config.Mode == PanelMode.Search)
|
||||
{
|
||||
//if (config.SearchForm != null) config.SearchForm.OnOK();
|
||||
}
|
||||
else
|
||||
UpdateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void listViewOperation_MouseUp (object sender, MouseEventArgs e)
|
||||
{
|
||||
switch (e.Button)
|
||||
{
|
||||
case MouseButtons.Right:
|
||||
// Refresh the context menu and display at pointer position.
|
||||
RefreshContextMenu();
|
||||
contextMenuStrip.Show(listViewOperation, new Point(e.X, e.Y), ToolStripDropDownDirection.Default);
|
||||
break;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Actions.
|
||||
private void buttonCreate_Click (object sender, EventArgs e)
|
||||
{
|
||||
CreateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonUpdate_Click (object sender, EventArgs e)
|
||||
{
|
||||
UpdateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonRemove_Click (object sender, EventArgs e)
|
||||
{
|
||||
DeleteItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonOk_Click (object sender, EventArgs e)
|
||||
{
|
||||
if (config.SearchForm != null)
|
||||
{
|
||||
//config.SearchForm.OnOK();
|
||||
return;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonCancel_Click (object sender, EventArgs e)
|
||||
{
|
||||
if (config.SearchForm != null)
|
||||
{
|
||||
//config.SearchForm.OnCancel();
|
||||
return;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,186 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.Panels
|
||||
{
|
||||
partial class SpmPanel_Patients
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.listFilterPatient = new Sarand.PatientMgr.Win.Forms.Filters.SpmItemListFilter_Patient();
|
||||
this.listViewPatient = new Sarand.PatientMgr.Win.Forms.Controls.SpmItemListView_Patient();
|
||||
this.tabControl = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.buttonRemove = new System.Windows.Forms.Button();
|
||||
this.buttonUpdate = new System.Windows.Forms.Button();
|
||||
this.buttonCreate = new System.Windows.Forms.Button();
|
||||
this.buttonCancel = new System.Windows.Forms.Button();
|
||||
this.buttonOk = new System.Windows.Forms.Button();
|
||||
this.tabControl.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// listFilterPatient
|
||||
//
|
||||
this.listFilterPatient.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listFilterPatient.Location = new System.Drawing.Point(0, 2);
|
||||
this.listFilterPatient.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.listFilterPatient.Name = "listFilterPatient";
|
||||
this.listFilterPatient.Size = new System.Drawing.Size(400, 30);
|
||||
this.listFilterPatient.TabIndex = 0;
|
||||
this.listFilterPatient.FilterChanged += new System.EventHandler(this.listFilterPatient_FilterChanged);
|
||||
//
|
||||
// listViewPatient
|
||||
//
|
||||
this.listViewPatient.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.listViewPatient.FullRowSelect = true;
|
||||
this.listViewPatient.HideSelection = false;
|
||||
this.listViewPatient.Location = new System.Drawing.Point(0, 37);
|
||||
this.listViewPatient.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.listViewPatient.Name = "listViewPatient";
|
||||
this.listViewPatient.OwnerDraw = true;
|
||||
this.listViewPatient.Size = new System.Drawing.Size(317, 155);
|
||||
this.listViewPatient.TabIndex = 1;
|
||||
this.listViewPatient.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewPatient.ItemCountChanged += new System.EventHandler<Sarand.Win.Forms.Controls.SacsListView.ItemCountChangedEventArgs>(this.listViewPatient_ItemCountChanged);
|
||||
this.listViewPatient.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewPatient_ColumnClick);
|
||||
this.listViewPatient.SelectedIndexChanged += new System.EventHandler(this.listViewPatient_SelectedIndexChanged);
|
||||
this.listViewPatient.DoubleClick += new System.EventHandler(this.listViewPatient_DoubleClick);
|
||||
this.listViewPatient.MouseUp += new System.Windows.Forms.MouseEventHandler(this.listViewPatient_MouseUp);
|
||||
//
|
||||
// tabControl
|
||||
//
|
||||
this.tabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tabControl.Controls.Add(this.tabPage1);
|
||||
this.tabControl.Controls.Add(this.tabPage2);
|
||||
this.tabControl.Location = new System.Drawing.Point(2, 196);
|
||||
this.tabControl.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabControl.Name = "tabControl";
|
||||
this.tabControl.SelectedIndex = 0;
|
||||
this.tabControl.Size = new System.Drawing.Size(398, 154);
|
||||
this.tabControl.TabIndex = 6;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage1.Size = new System.Drawing.Size(390, 128);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "tabPage1";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage2.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(2);
|
||||
this.tabPage2.Size = new System.Drawing.Size(390, 128);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "tabPage2";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonRemove
|
||||
//
|
||||
this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonRemove.Location = new System.Drawing.Point(322, 95);
|
||||
this.buttonRemove.Name = "buttonRemove";
|
||||
this.buttonRemove.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonRemove.TabIndex = 15;
|
||||
this.buttonRemove.Text = "Remove";
|
||||
this.buttonRemove.UseVisualStyleBackColor = true;
|
||||
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
|
||||
//
|
||||
// buttonUpdate
|
||||
//
|
||||
this.buttonUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonUpdate.Location = new System.Drawing.Point(322, 66);
|
||||
this.buttonUpdate.Name = "buttonUpdate";
|
||||
this.buttonUpdate.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonUpdate.TabIndex = 14;
|
||||
this.buttonUpdate.Text = "Update";
|
||||
this.buttonUpdate.UseVisualStyleBackColor = true;
|
||||
this.buttonUpdate.Click += new System.EventHandler(this.buttonUpdate_Click);
|
||||
//
|
||||
// buttonCreate
|
||||
//
|
||||
this.buttonCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCreate.Location = new System.Drawing.Point(322, 37);
|
||||
this.buttonCreate.Name = "buttonCreate";
|
||||
this.buttonCreate.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCreate.TabIndex = 13;
|
||||
this.buttonCreate.Text = "Create";
|
||||
this.buttonCreate.UseVisualStyleBackColor = true;
|
||||
this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click);
|
||||
//
|
||||
// buttonCancel
|
||||
//
|
||||
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonCancel.Location = new System.Drawing.Point(322, 168);
|
||||
this.buttonCancel.Name = "buttonCancel";
|
||||
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonCancel.TabIndex = 15;
|
||||
this.buttonCancel.Text = "Cancel";
|
||||
this.buttonCancel.UseVisualStyleBackColor = true;
|
||||
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
|
||||
//
|
||||
// buttonOk
|
||||
//
|
||||
this.buttonOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.buttonOk.Location = new System.Drawing.Point(322, 139);
|
||||
this.buttonOk.Name = "buttonOk";
|
||||
this.buttonOk.Size = new System.Drawing.Size(75, 23);
|
||||
this.buttonOk.TabIndex = 15;
|
||||
this.buttonOk.Text = "OK";
|
||||
this.buttonOk.UseVisualStyleBackColor = true;
|
||||
this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
|
||||
//
|
||||
// SpmPanel_Patients
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.buttonOk);
|
||||
this.Controls.Add(this.buttonCancel);
|
||||
this.Controls.Add(this.buttonRemove);
|
||||
this.Controls.Add(this.buttonUpdate);
|
||||
this.Controls.Add(this.buttonCreate);
|
||||
this.Controls.Add(this.tabControl);
|
||||
this.Controls.Add(this.listViewPatient);
|
||||
this.Controls.Add(this.listFilterPatient);
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.MinimumSize = new System.Drawing.Size(400, 350);
|
||||
this.Name = "SpmPanel_Patients";
|
||||
this.Size = new System.Drawing.Size(400, 350);
|
||||
this.tabControl.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Filters.SpmItemListFilter_Patient listFilterPatient;
|
||||
private Controls.SpmItemListView_Patient listViewPatient;
|
||||
private System.Windows.Forms.TabControl tabControl;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.Button buttonRemove;
|
||||
private System.Windows.Forms.Button buttonUpdate;
|
||||
private System.Windows.Forms.Button buttonCreate;
|
||||
private System.Windows.Forms.Button buttonCancel;
|
||||
private System.Windows.Forms.Button buttonOk;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,604 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.TabPages;
|
||||
using Sarand.PatientMgr.Win.Forms.Filters;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.Panels
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmPanel_Patients : SpmPanel_Items
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelMode
|
||||
{
|
||||
Search,
|
||||
Maintain,
|
||||
}
|
||||
public new class Config : SpmPanel_Items.Config
|
||||
{
|
||||
public Config (PanelMode mode)
|
||||
{
|
||||
Mode = mode;
|
||||
// Defaults based on mode.
|
||||
DisplayFilter = false; // Mode == PanelMode.Maintain || Mode == PanelMode.Search;
|
||||
DisplayTabs = Mode == PanelMode.Maintain;
|
||||
DisplayActionButtons = Mode == PanelMode.Maintain;
|
||||
DisplayNavigationButtons = Mode == PanelMode.Search;
|
||||
}
|
||||
public PanelMode Mode { get; } = PanelMode.Maintain;
|
||||
public SpmForm SearchForm { get; set; }
|
||||
// Display options.
|
||||
public bool DisplayFilter { get; set; } = false;
|
||||
public bool DisplayContextMenu { get; set; } = true;
|
||||
public bool DisplayActionButtons { get; set; } = false;
|
||||
public bool DisplayNavigationButtons { get; set; } = false;
|
||||
public bool DisplayTabs { get; set; } = false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config(PanelMode.Search);
|
||||
private readonly List<SpmTabPage_Patient> tabPages = new List<SpmTabPage_Patient>();
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
private SpmPanel_Patients () : this(new Config(PanelMode.Search)) { }
|
||||
public SpmPanel_Patients (Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose (bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
protected override String DefaultMessageTitle { get { return "Patient"; } }
|
||||
public override int ItemTotal { get { return listViewPatient.ItemTotal; } }
|
||||
public override int ItemCount { get { return listViewPatient.ItemCount; } }
|
||||
public override int SelectedItemCount { get { return listViewPatient.SelectedItemCount; } }
|
||||
public SysId SelectedItemId { get { return listViewPatient.SelectedItemId; } }
|
||||
public List<SysId> SelectedItemIds { get { return listViewPatient.SelectedItemIds; } }
|
||||
public SpmPatient SelectedPatient { get { return listViewPatient.SelectedPatient; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Configure.
|
||||
public void SetConfig (Config config)
|
||||
{
|
||||
base.SetConfig(config);
|
||||
this.config = config;
|
||||
ConfigurePanel();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// I n i t i a l i s a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void OnCreateControl ()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
ConfigurePanel();
|
||||
}
|
||||
|
||||
private void ConfigurePanel ()
|
||||
{
|
||||
if (!Created || this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure filter.
|
||||
if (config.DisplayFilter)
|
||||
{
|
||||
SpmItemListFilter_Patient.Config configFilter = new SpmItemListFilter_Patient.Config();
|
||||
configFilter.Internals = Internals;
|
||||
listFilterPatient.SetConfig(configFilter);
|
||||
}
|
||||
listFilterPatient.Visible = config.DisplayFilter;
|
||||
|
||||
// Configure list.
|
||||
SpmItemListView_Patient.Config configList = new SpmItemListView_Patient.Config();
|
||||
configList.Internals = Internals;
|
||||
configList.Mode = SpmItemListView_Patient.ListMode.General;
|
||||
listViewPatient.SetConfig(configList);
|
||||
|
||||
// Tabs.
|
||||
tabControl.TabPages.Clear();
|
||||
tabControl.Visible = config.DisplayTabs;
|
||||
RefreshTabs();
|
||||
|
||||
// Configure buttons.
|
||||
buttonCreate.Visible = config.DisplayActionButtons && SecurityProfile.Admin.CanManageConfig();
|
||||
buttonUpdate.Visible = config.DisplayActionButtons;
|
||||
buttonRemove.Visible = config.DisplayActionButtons && buttonCreate.Visible;
|
||||
buttonOk.Visible = config.DisplayNavigationButtons && config.Mode == PanelMode.Search;
|
||||
buttonCancel.Visible = config.DisplayNavigationButtons;
|
||||
|
||||
// Complete form initialisation.
|
||||
RefreshDataItems();
|
||||
SetControlActivity();
|
||||
PositionControls();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialise tabs.
|
||||
private void InitTabs ()
|
||||
{
|
||||
String fn = GetType().Name + ".InitTabs";
|
||||
tabControl.TabPages.Clear();
|
||||
tabPages.Clear();
|
||||
if (!config.DisplayTabs)
|
||||
{
|
||||
tabPages.Clear();
|
||||
tabControl.TabPages.Clear();
|
||||
tabControl.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Selected Patient.
|
||||
SpmPatient patient = SelectedPatient;
|
||||
|
||||
// Updates.
|
||||
List<SpmTabPage_Patient.PanelType> panelTypes_Updates = new List<SpmTabPage_Patient.PanelType>();
|
||||
panelTypes_Updates.Add(SpmTabPage_Patient.PanelType.Updates);
|
||||
if (panelTypes_Updates.Count > 0)
|
||||
{
|
||||
SpmTabPage_Patient.Config configTabPage = new SpmTabPage_Patient.Config();
|
||||
configTabPage.Internals = Internals;
|
||||
configTabPage.ReadOnly = ReadOnly;
|
||||
configTabPage.PanelTypes.AddRange(panelTypes_Updates);
|
||||
SpmTabPage_Patient tabPage = new SpmTabPage_Patient(configTabPage) { Text = "Updates" };
|
||||
tabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
// Populate tab pages.
|
||||
tabControl.Visible = tabPages.Count > 0;
|
||||
foreach (var tabPage in tabPages)
|
||||
tabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
private String previouslySelectedTabPageText = "";
|
||||
private void RefreshTabs ()
|
||||
{
|
||||
if (tabControl.SelectedTab != null)
|
||||
previouslySelectedTabPageText = tabControl.SelectedTab.Text;
|
||||
|
||||
// Reinitialise tabs whenever the selection changes in case the set of tab pages displayed needs to be changed.
|
||||
InitTabs();
|
||||
|
||||
// Select previous tab page if still present.
|
||||
if (!StringUtil.IsEmpty(previouslySelectedTabPageText))
|
||||
{
|
||||
foreach (TabPage tabPage in tabControl.TabPages)
|
||||
{
|
||||
if (tabPage.Text.Equals(previouslySelectedTabPageText))
|
||||
{
|
||||
tabControl.SelectTab(tabPage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
RefreshTabPages();
|
||||
|
||||
SetControlActivity();
|
||||
PositionControls();
|
||||
}
|
||||
private void RefreshTabPages ()
|
||||
{
|
||||
// Selected Patient - populated when needed.
|
||||
SpmPatient patient = null;
|
||||
|
||||
// Refresh tabs.
|
||||
if (tabControl.Visible)
|
||||
{
|
||||
if (patient == null) patient = SelectedPatient;
|
||||
SpmPatient.Data patientData = patient != null ? patient.GetData() : new SpmPatient.Data();
|
||||
tabPages.PopulateToControls(patientData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// F i l t e r
|
||||
//-------------------------------------------------------------------
|
||||
public bool ParamsAreValid (SpmPatient.Params prmPatient)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public SpmPatient.Params GetParams ()
|
||||
{
|
||||
SpmPatient.Params prmPatient = new SpmPatient.Params();
|
||||
|
||||
// Sort columns.
|
||||
prmPatient.SortColumns.AddRange(listViewPatient.GetSortColumns());
|
||||
return prmPatient;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// A c t i o n s
|
||||
//-------------------------------------------------------------------
|
||||
// Refresh.
|
||||
public override void RefreshDataItems ()
|
||||
{
|
||||
SpmPatient.Params prmPatient = GetParams();
|
||||
if (!ParamsAreValid(prmPatient)) prmPatient = null;
|
||||
listViewPatient.RefreshPatients(prmPatient);
|
||||
}
|
||||
public override void RefreshDataItem (SysId id)
|
||||
{
|
||||
listViewPatient.RefreshPatient(id);
|
||||
}
|
||||
public override void RemoveDataItem (SysId id)
|
||||
{
|
||||
listViewPatient.RemoveItemById(id);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Create item.
|
||||
public override bool CanCreateItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void CreateItem ()
|
||||
{
|
||||
if (!CanCreateItem()) return;
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
// Create new Patient.
|
||||
SpmForm_Patient.Config configPatient = new SpmForm_Patient.Config();
|
||||
using (var form = new SpmForm_Patient(configPatient))
|
||||
{
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
RefreshDataItem(form.NewItemId);
|
||||
InvokeItemCreatedEvent(Spm.DataItemType.Patient, form.NewItemId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// View/Update item.
|
||||
public override bool CanViewItem ()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public override bool CanUpdateItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void UpdateItem (bool updateItem = true)
|
||||
{
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
SpmPatient patient = SelectedPatient;
|
||||
if (SelectedItemCount != 1) return;
|
||||
if (!CanUpdateItem() && !CanViewItem()) return;
|
||||
if (!CanUpdateItem()) updateItem = false;
|
||||
if (patient == null)
|
||||
{
|
||||
MessageConsole.ShowMessageWarning("Failed to retrieve selected item");
|
||||
return;
|
||||
}
|
||||
SpmForm_Patient.Config configPatient = new SpmForm_Patient.Config();
|
||||
configPatient.PatientToUpdate = patient;
|
||||
configPatient.ReadOnly = (config.ReadOnly || !updateItem);
|
||||
using (SpmForm_Patient formPatient = new SpmForm_Patient(configPatient))
|
||||
{
|
||||
// Perform the update.
|
||||
if (formPatient.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
// Patient has been updated.
|
||||
RefreshDataItem(patient.Id);
|
||||
listViewPatient.RefreshPatient(patient.Id);
|
||||
InvokeItemUpdatedEvent(Spm.DataItemType.Patient, patient.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Delete item.
|
||||
public override bool CanDeleteItem ()
|
||||
{
|
||||
if (ReadOnly) return false;
|
||||
if (!SecurityProfile.Admin.CanManageConfig()) return false;
|
||||
return true;
|
||||
}
|
||||
public override void DeleteItem ()
|
||||
{
|
||||
if (!CanDeleteItem()) return;
|
||||
if (config.Mode == PanelMode.Search) return;
|
||||
if (SelectedItemCount != 1) return;
|
||||
SpmPatient patient = SelectedPatient;
|
||||
if (patient == null)
|
||||
{
|
||||
MessageConsole.ShowMessageWarning("Failed to retrieve item for deletion.");
|
||||
return;
|
||||
}
|
||||
if (!InstitutionMgr.PatientCanBeDeleted(patient))
|
||||
{
|
||||
MessageConsole.ShowMessageError("Unable to remove patient - " + InstitutionMgr.ErrorStateMessage + ".");
|
||||
return;
|
||||
}
|
||||
if (MessageConsole.ShowMessageConfirm("Are you sure that this patient should be removed from the system?"))
|
||||
{
|
||||
if (InstitutionMgr.DeletePatient(patient, DbUpdateInfo))
|
||||
{
|
||||
int selectIdx = listViewPatient.SelectedIndex;
|
||||
listViewPatient.RemoveItemById(patient.Id.ToString());
|
||||
if (selectIdx >= listViewPatient.ItemCount - 1) selectIdx--;
|
||||
listViewPatient.SelectedIndices.Clear();
|
||||
listViewPatient.SelectedIndices.Add(selectIdx);
|
||||
}
|
||||
else MessageConsole.ShowMessageError("Failed to remove patient - " + InstitutionMgr.ErrorStateMessage + ".");
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Import data.
|
||||
public override bool CanImportData ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override void ImportData ()
|
||||
{
|
||||
if (!CanImportData()) return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Export data.
|
||||
public override bool CanExportData ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
public override void ExportData ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t e x t M e n u
|
||||
//-------------------------------------------------------------------
|
||||
private SpmContextMenuStrip contextMenuStrip = new SpmContextMenuStrip();
|
||||
private void RefreshContextMenu ()
|
||||
{
|
||||
contextMenuStrip.Name = "Patient";
|
||||
contextMenuStrip.Items.Clear();
|
||||
if (CanCreateItem())
|
||||
contextMenuStrip.Items.Add("Create", null, CreateItem);
|
||||
if (SysId.IsValid(listViewPatient.SelectedItemId))
|
||||
{
|
||||
SpmPatient patient = SelectedPatient;
|
||||
if (patient != null)
|
||||
{
|
||||
if (CanUpdateItem() || CanDeleteItem())
|
||||
{
|
||||
if (contextMenuStrip.Items.Count > 0)
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
contextMenuStrip.Items.Add(CanUpdateItem() ? "Update" : "View", null, UpdateItem);
|
||||
if (CanDeleteItem())
|
||||
contextMenuStrip.Items.Add("Remove", null, DeleteItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CanExportData() || CanImportData())
|
||||
{
|
||||
if (contextMenuStrip.Items.Count > 0)
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
if (CanImportData())
|
||||
contextMenuStrip.Items.Add("Import", null, ImportData);
|
||||
if (CanExportData())
|
||||
contextMenuStrip.Items.Add("Export", null, ExportData);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected override void SetControlActivity ()
|
||||
{
|
||||
SetControlsReadOnly();
|
||||
bool itemSelected = SysId.IsValid(SelectedItemId);
|
||||
|
||||
listViewPatient.Enabled = Enabled;
|
||||
buttonCreate.Enabled = Enabled;
|
||||
buttonUpdate.Enabled = Enabled && itemSelected;
|
||||
buttonRemove.Enabled = Enabled && itemSelected;
|
||||
buttonOk.Enabled = Enabled;
|
||||
buttonCancel.Enabled = Enabled;
|
||||
}
|
||||
protected override void SetControlsReadOnly ()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o s i t i o n C o n t r o l s
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls ()
|
||||
{
|
||||
if (this.IsDesignerHosted() || !Created) return;
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Filter panel.
|
||||
if (listFilterPatient.Visible)
|
||||
{
|
||||
listFilterPatient.PositionAtTopLeftOf(this);
|
||||
listFilterPatient.SetFullWidthOf(this);
|
||||
listFilterPatient.ResizeToBottomControl();
|
||||
listViewPatient.PositionBelow(listFilterPatient);
|
||||
}
|
||||
else
|
||||
{
|
||||
listViewPatient.PositionAtTopLeftOf(this);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// List view.
|
||||
int buttonLeft = clientRect.Width - buttonCreate.Width - buttonCreate.Margin.Right - Padding.Right;
|
||||
listViewPatient.Left = listViewPatient.Margin.Left;
|
||||
listViewPatient.Width = buttonLeft - buttonCreate.Margin.Left - listViewPatient.Left - listViewPatient.Margin.Right;
|
||||
if (!(buttonCreate.Visible || buttonUpdate.Visible || buttonRemove.Visible || buttonOk.Visible || buttonCancel.Visible))
|
||||
listViewPatient.Width = clientRect.Width - Padding.Right - listViewPatient.Left - listViewPatient.Margin.Right;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Tab control.
|
||||
if (tabControl.Visible)
|
||||
{
|
||||
tabControl.Left = listViewPatient.Left;
|
||||
tabControl.Width = clientRect.Width - (tabControl.Left * 2);
|
||||
listViewPatient.Height = (int)((clientRect.Height - listViewPatient.Top) * 0.40);
|
||||
tabControl.Top = listViewPatient.Bottom + listViewPatient.Margin.Bottom + tabControl.Margin.Top;
|
||||
tabControl.Height = clientRect.Height - tabControl.Top - tabControl.Margin.Bottom - Padding.Bottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
listViewPatient.Height = clientRect.Height - listViewPatient.Top - listViewPatient.Margin.Bottom - Padding.Bottom;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Create button.
|
||||
int buttonTop = listViewPatient.Top + listViewPatient.HeaderHeight;
|
||||
buttonCreate.Top = buttonTop;
|
||||
buttonCreate.Left = buttonLeft;
|
||||
if (buttonCreate.Visible)
|
||||
buttonTop += buttonCreate.Height + buttonCreate.Margin.Bottom;
|
||||
|
||||
// Update button.
|
||||
buttonUpdate.Top = buttonTop;
|
||||
buttonUpdate.Left = buttonLeft;
|
||||
if (buttonUpdate.Visible)
|
||||
buttonTop += buttonUpdate.Height + buttonUpdate.Margin.Bottom;
|
||||
|
||||
// Remove button.
|
||||
buttonRemove.Top = buttonTop;
|
||||
buttonRemove.Left = buttonLeft;
|
||||
if (buttonRemove.Visible)
|
||||
buttonTop += buttonRemove.Height + buttonRemove.Margin.Bottom;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
// Navigation buttons.
|
||||
// Cancel button.
|
||||
buttonCancel.Top = clientRect.Bottom - Padding.Bottom - buttonCancel.Margin.Bottom - buttonCancel.Height;
|
||||
buttonCancel.Left = buttonLeft;
|
||||
|
||||
// OK button.
|
||||
buttonOk.Top = buttonCancel.Top - buttonOk.Height - buttonCancel.Padding.Top - buttonCancel.Margin.Bottom;
|
||||
buttonOk.Left = buttonLeft;
|
||||
if (buttonOk.Visible)
|
||||
buttonTop += buttonOk.Height + buttonOk.Margin.Bottom;
|
||||
|
||||
//---------------------------------------------------------------
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
// Filter.
|
||||
private void listFilterPatient_FilterChanged (object sender, EventArgs e)
|
||||
{
|
||||
RefreshDataItems();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Item list.
|
||||
private void listViewPatient_ColumnClick (object sender, ColumnClickEventArgs e)
|
||||
{
|
||||
RefreshDataItems();
|
||||
}
|
||||
private void listViewPatient_ItemCountChanged (object sender, Sarand.Win.Forms.Controls.SacsListView.ItemCountChangedEventArgs e)
|
||||
{
|
||||
InvokeItemCountChangedEvent(e);
|
||||
}
|
||||
private void listViewPatient_SelectedIndexChanged (object sender, EventArgs e)
|
||||
{
|
||||
RefreshTabs();
|
||||
InvokeItemSelectionChangedEvent(e);
|
||||
SetControlActivity();
|
||||
}
|
||||
private void listViewPatient_DoubleClick (object sender, EventArgs e)
|
||||
{
|
||||
if (config.Mode == PanelMode.Search)
|
||||
{
|
||||
//if (config.SearchForm != null) config.SearchForm.OnOK();
|
||||
}
|
||||
else
|
||||
UpdateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void listViewPatient_MouseUp (object sender, MouseEventArgs e)
|
||||
{
|
||||
switch (e.Button)
|
||||
{
|
||||
case MouseButtons.Right:
|
||||
// Refresh the context menu and display at pointer position.
|
||||
RefreshContextMenu();
|
||||
contextMenuStrip.Show(listViewPatient, new Point(e.X, e.Y), ToolStripDropDownDirection.Default);
|
||||
break;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Actions.
|
||||
private void buttonCreate_Click (object sender, EventArgs e)
|
||||
{
|
||||
CreateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonUpdate_Click (object sender, EventArgs e)
|
||||
{
|
||||
UpdateItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonRemove_Click (object sender, EventArgs e)
|
||||
{
|
||||
DeleteItem();
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonOk_Click (object sender, EventArgs e)
|
||||
{
|
||||
if (config.SearchForm != null)
|
||||
{
|
||||
//config.SearchForm.OnOK();
|
||||
return;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
private void buttonCancel_Click (object sender, EventArgs e)
|
||||
{
|
||||
if (config.SearchForm != null)
|
||||
{
|
||||
//config.SearchForm.OnCancel();
|
||||
return;
|
||||
}
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
partial class SpmTabPage_Employee
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Win.Forms.Panels;
|
||||
using Sarand.Win.Forms.UpdateLog;
|
||||
using Sarand.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmTabPage_Employee : SpmTabPage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelType
|
||||
{
|
||||
Unknown = 0,
|
||||
Updates,
|
||||
}
|
||||
public new class Config : SpmTabPage.Config
|
||||
{
|
||||
/// <summary>Employee form hosting the tab control.</summary>
|
||||
public SpmForm_Employee EmployeeForm { get; set; } = null;
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get; } = new List<PanelType>();
|
||||
/// <summary>Number of panels on this tab page.</summary>
|
||||
public override int PanelCount { get { return PanelTypes.Count; } }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config();
|
||||
private SaPanel_UpdateLog panelUpdates = null;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmTabPage_Employee(Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get { return config.PanelTypes; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialisation.
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure page.
|
||||
|
||||
// Initial panels.
|
||||
List<SacsPanel> panels = new List<SacsPanel>();
|
||||
foreach (var panelType in config.PanelTypes)
|
||||
{
|
||||
SacsPanel panel = null;
|
||||
switch (panelType)
|
||||
{
|
||||
case PanelType.Updates:
|
||||
{
|
||||
SaPanel_UpdateLog.Config configUpdateLog = new SaPanel_UpdateLog.Config();
|
||||
configUpdateLog.UpdateLogConsole = UpdateLogConsole;
|
||||
panelUpdates = new SaPanel_UpdateLog();
|
||||
panelUpdates.SetConfig(configUpdateLog);
|
||||
panel = panelUpdates;
|
||||
panel.SizeChanged += Panel_Resize;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (panel != null)
|
||||
panels.Add(panel);
|
||||
else Logger.Warn(GetType().Name + ".OnCreateControl Panel type not supported: " + panelType.ToString());
|
||||
}
|
||||
AddPanelsToPage(panels);
|
||||
|
||||
// Complete panel initialisation.
|
||||
SetControlsReadOnly();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a g e I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o p u l a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
public void PopulateToControls(SpmEmployee.Data data)
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.ItemId = new ItemId((short)Spm.DataItemType.Employee, data.Id);
|
||||
}
|
||||
public bool IsDataValid(SpmEmployee.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public void PopulateFromControls(SpmEmployee.Data data)
|
||||
{
|
||||
}
|
||||
public bool UpdateAssociatedData(SpmEmployee.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected void SetControlActivity()
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.Enabled = Enabled;
|
||||
}
|
||||
public bool IsFieldReadOnly(SpmDbDfn.ColumnIdx col)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
protected void SetControlsReadOnly()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
private void panel_ItemCreated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemCreatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemUpdated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemUpdatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemDeleted(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemDeletedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l S i z e a n d P o s i t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls()
|
||||
{
|
||||
base.PositionControls();
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
public static class SpmTabPage_EmployeeList
|
||||
{
|
||||
public static void PopulateToControls (this List<SpmTabPage_Employee> tabPages, SpmEmployee.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Employee tabPage in tabPages)
|
||||
tabPage.PopulateToControls(data);
|
||||
}
|
||||
public static void PopulateFromControls (this List<SpmTabPage_Employee> tabPages, SpmEmployee.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Employee tabPage in tabPages)
|
||||
tabPage.PopulateFromControls(data);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
partial class SpmTabPage_EmployeeRole
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Win.Forms.Panels;
|
||||
using Sarand.Win.Forms.UpdateLog;
|
||||
using Sarand.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmTabPage_EmployeeRole : SpmTabPage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelType
|
||||
{
|
||||
Unknown = 0,
|
||||
Updates,
|
||||
}
|
||||
public new class Config : SpmTabPage.Config
|
||||
{
|
||||
/// <summary>EmployeeRole form hosting the tab control.</summary>
|
||||
public SpmForm_EmployeeRole EmployeeRoleForm { get; set; } = null;
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get; } = new List<PanelType>();
|
||||
/// <summary>Number of panels on this tab page.</summary>
|
||||
public override int PanelCount { get { return PanelTypes.Count; } }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config();
|
||||
private SaPanel_UpdateLog panelUpdates = null;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmTabPage_EmployeeRole(Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get { return config.PanelTypes; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialisation.
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure page.
|
||||
|
||||
// Initial panels.
|
||||
List<SacsPanel> panels = new List<SacsPanel>();
|
||||
foreach (var panelType in config.PanelTypes)
|
||||
{
|
||||
SacsPanel panel = null;
|
||||
switch (panelType)
|
||||
{
|
||||
case PanelType.Updates:
|
||||
{
|
||||
SaPanel_UpdateLog.Config configUpdateLog = new SaPanel_UpdateLog.Config();
|
||||
configUpdateLog.UpdateLogConsole = UpdateLogConsole;
|
||||
panelUpdates = new SaPanel_UpdateLog();
|
||||
panelUpdates.SetConfig(configUpdateLog);
|
||||
panel = panelUpdates;
|
||||
panel.SizeChanged += Panel_Resize;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (panel != null)
|
||||
panels.Add(panel);
|
||||
else Logger.Warn(GetType().Name + ".OnCreateControl Panel type not supported: " + panelType.ToString());
|
||||
}
|
||||
AddPanelsToPage(panels);
|
||||
|
||||
// Complete panel initialisation.
|
||||
SetControlsReadOnly();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a g e I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o p u l a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
public void PopulateToControls(SpmEmployeeRole.Data data)
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.ItemId = new ItemId((short)Spm.DataItemType.EmployeeRole, data.Id);
|
||||
}
|
||||
public bool IsDataValid(SpmEmployeeRole.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public void PopulateFromControls(SpmEmployeeRole.Data data)
|
||||
{
|
||||
}
|
||||
public bool UpdateAssociatedData(SpmEmployeeRole.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected void SetControlActivity()
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.Enabled = Enabled;
|
||||
}
|
||||
public bool IsFieldReadOnly(SpmDbDfn.ColumnIdx col)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
protected void SetControlsReadOnly()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
private void panel_ItemCreated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemCreatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemUpdated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemUpdatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemDeleted(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemDeletedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l S i z e a n d P o s i t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls()
|
||||
{
|
||||
base.PositionControls();
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
public static class SpmTabPage_EmployeeRoleList
|
||||
{
|
||||
public static void PopulateToControls (this List<SpmTabPage_EmployeeRole> tabPages, SpmEmployeeRole.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_EmployeeRole tabPage in tabPages)
|
||||
tabPage.PopulateToControls(data);
|
||||
}
|
||||
public static void PopulateFromControls (this List<SpmTabPage_EmployeeRole> tabPages, SpmEmployeeRole.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_EmployeeRole tabPage in tabPages)
|
||||
tabPage.PopulateFromControls(data);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
partial class SpmTabPage_Institution
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Win.Forms.Panels;
|
||||
using Sarand.Win.Forms.UpdateLog;
|
||||
using Sarand.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmTabPage_Institution : SpmTabPage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelType
|
||||
{
|
||||
Unknown = 0,
|
||||
Updates,
|
||||
}
|
||||
public new class Config : SpmTabPage.Config
|
||||
{
|
||||
/// <summary>Institution form hosting the tab control.</summary>
|
||||
public SpmForm_Institution InstitutionForm { get; set; } = null;
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get; } = new List<PanelType>();
|
||||
/// <summary>Number of panels on this tab page.</summary>
|
||||
public override int PanelCount { get { return PanelTypes.Count; } }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config();
|
||||
private SaPanel_UpdateLog panelUpdates = null;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmTabPage_Institution(Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get { return config.PanelTypes; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialisation.
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure page.
|
||||
|
||||
// Initial panels.
|
||||
List<SacsPanel> panels = new List<SacsPanel>();
|
||||
foreach (var panelType in config.PanelTypes)
|
||||
{
|
||||
SacsPanel panel = null;
|
||||
switch (panelType)
|
||||
{
|
||||
case PanelType.Updates:
|
||||
{
|
||||
SaPanel_UpdateLog.Config configUpdateLog = new SaPanel_UpdateLog.Config();
|
||||
configUpdateLog.UpdateLogConsole = UpdateLogConsole;
|
||||
panelUpdates = new SaPanel_UpdateLog();
|
||||
panelUpdates.SetConfig(configUpdateLog);
|
||||
panel = panelUpdates;
|
||||
panel.SizeChanged += Panel_Resize;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (panel != null)
|
||||
panels.Add(panel);
|
||||
else Logger.Warn(GetType().Name + ".OnCreateControl Panel type not supported: " + panelType.ToString());
|
||||
}
|
||||
AddPanelsToPage(panels);
|
||||
|
||||
// Complete panel initialisation.
|
||||
SetControlsReadOnly();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a g e I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o p u l a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
public void PopulateToControls(SpmInstitution.Data data)
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.ItemId = new ItemId((short)Spm.DataItemType.Institution, data.Id);
|
||||
}
|
||||
public bool IsDataValid(SpmInstitution.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public void PopulateFromControls(SpmInstitution.Data data)
|
||||
{
|
||||
}
|
||||
public bool UpdateAssociatedData(SpmInstitution.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected void SetControlActivity()
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.Enabled = Enabled;
|
||||
}
|
||||
public bool IsFieldReadOnly(SpmDbDfn.ColumnIdx col)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
protected void SetControlsReadOnly()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
private void panel_ItemCreated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemCreatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemUpdated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemUpdatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemDeleted(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemDeletedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l S i z e a n d P o s i t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls()
|
||||
{
|
||||
base.PositionControls();
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
public static class SpmTabPage_InstitutionList
|
||||
{
|
||||
public static void PopulateToControls (this List<SpmTabPage_Institution> tabPages, SpmInstitution.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Institution tabPage in tabPages)
|
||||
tabPage.PopulateToControls(data);
|
||||
}
|
||||
public static void PopulateFromControls (this List<SpmTabPage_Institution> tabPages, SpmInstitution.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Institution tabPage in tabPages)
|
||||
tabPage.PopulateFromControls(data);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
partial class SpmTabPage_Operation
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Win.Forms.Panels;
|
||||
using Sarand.Win.Forms.UpdateLog;
|
||||
using Sarand.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmTabPage_Operation : SpmTabPage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelType
|
||||
{
|
||||
Unknown = 0,
|
||||
Updates,
|
||||
}
|
||||
public new class Config : SpmTabPage.Config
|
||||
{
|
||||
/// <summary>Operation form hosting the tab control.</summary>
|
||||
public SpmForm_Operation OperationForm { get; set; } = null;
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get; } = new List<PanelType>();
|
||||
/// <summary>Number of panels on this tab page.</summary>
|
||||
public override int PanelCount { get { return PanelTypes.Count; } }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config();
|
||||
private SaPanel_UpdateLog panelUpdates = null;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmTabPage_Operation(Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get { return config.PanelTypes; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialisation.
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure page.
|
||||
|
||||
// Initial panels.
|
||||
List<SacsPanel> panels = new List<SacsPanel>();
|
||||
foreach (var panelType in config.PanelTypes)
|
||||
{
|
||||
SacsPanel panel = null;
|
||||
switch (panelType)
|
||||
{
|
||||
case PanelType.Updates:
|
||||
{
|
||||
SaPanel_UpdateLog.Config configUpdateLog = new SaPanel_UpdateLog.Config();
|
||||
configUpdateLog.UpdateLogConsole = UpdateLogConsole;
|
||||
panelUpdates = new SaPanel_UpdateLog();
|
||||
panelUpdates.SetConfig(configUpdateLog);
|
||||
panel = panelUpdates;
|
||||
panel.SizeChanged += Panel_Resize;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (panel != null)
|
||||
panels.Add(panel);
|
||||
else Logger.Warn(GetType().Name + ".OnCreateControl Panel type not supported: " + panelType.ToString());
|
||||
}
|
||||
AddPanelsToPage(panels);
|
||||
|
||||
// Complete panel initialisation.
|
||||
SetControlsReadOnly();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a g e I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o p u l a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
public void PopulateToControls(SpmOperation.Data data)
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.ItemId = new ItemId((short)Spm.DataItemType.Operation, data.Id);
|
||||
}
|
||||
public bool IsDataValid(SpmOperation.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public void PopulateFromControls(SpmOperation.Data data)
|
||||
{
|
||||
}
|
||||
public bool UpdateAssociatedData(SpmOperation.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected void SetControlActivity()
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.Enabled = Enabled;
|
||||
}
|
||||
public bool IsFieldReadOnly(SpmDbDfn.ColumnIdx col)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
protected void SetControlsReadOnly()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
private void panel_ItemCreated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemCreatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemUpdated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemUpdatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemDeleted(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemDeletedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l S i z e a n d P o s i t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls()
|
||||
{
|
||||
base.PositionControls();
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
public static class SpmTabPage_OperationList
|
||||
{
|
||||
public static void PopulateToControls (this List<SpmTabPage_Operation> tabPages, SpmOperation.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Operation tabPage in tabPages)
|
||||
tabPage.PopulateToControls(data);
|
||||
}
|
||||
public static void PopulateFromControls (this List<SpmTabPage_Operation> tabPages, SpmOperation.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Operation tabPage in tabPages)
|
||||
tabPage.PopulateFromControls(data);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
partial class SpmTabPage_Patient
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Win.Forms.Panels;
|
||||
using Sarand.Win.Forms.UpdateLog;
|
||||
using Sarand.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmTabPage_Patient : SpmTabPage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelType
|
||||
{
|
||||
Unknown = 0,
|
||||
Updates,
|
||||
}
|
||||
public new class Config : SpmTabPage.Config
|
||||
{
|
||||
/// <summary>Patient form hosting the tab control.</summary>
|
||||
public SpmForm_Patient PatientForm { get; set; } = null;
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get; } = new List<PanelType>();
|
||||
/// <summary>Number of panels on this tab page.</summary>
|
||||
public override int PanelCount { get { return PanelTypes.Count; } }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config();
|
||||
private SaPanel_UpdateLog panelUpdates = null;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmTabPage_Patient(Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get { return config.PanelTypes; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialisation.
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure page.
|
||||
|
||||
// Initial panels.
|
||||
List<SacsPanel> panels = new List<SacsPanel>();
|
||||
foreach (var panelType in config.PanelTypes)
|
||||
{
|
||||
SacsPanel panel = null;
|
||||
switch (panelType)
|
||||
{
|
||||
case PanelType.Updates:
|
||||
{
|
||||
SaPanel_UpdateLog.Config configUpdateLog = new SaPanel_UpdateLog.Config();
|
||||
configUpdateLog.UpdateLogConsole = UpdateLogConsole;
|
||||
panelUpdates = new SaPanel_UpdateLog();
|
||||
panelUpdates.SetConfig(configUpdateLog);
|
||||
panel = panelUpdates;
|
||||
panel.SizeChanged += Panel_Resize;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (panel != null)
|
||||
panels.Add(panel);
|
||||
else Logger.Warn(GetType().Name + ".OnCreateControl Panel type not supported: " + panelType.ToString());
|
||||
}
|
||||
AddPanelsToPage(panels);
|
||||
|
||||
// Complete panel initialisation.
|
||||
SetControlsReadOnly();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a g e I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o p u l a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
public void PopulateToControls(SpmPatient.Data data)
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.ItemId = new ItemId((short)Spm.DataItemType.Patient, data.Id);
|
||||
}
|
||||
public bool IsDataValid(SpmPatient.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public void PopulateFromControls(SpmPatient.Data data)
|
||||
{
|
||||
}
|
||||
public bool UpdateAssociatedData(SpmPatient.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected void SetControlActivity()
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.Enabled = Enabled;
|
||||
}
|
||||
public bool IsFieldReadOnly(SpmDbDfn.ColumnIdx col)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
protected void SetControlsReadOnly()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
private void panel_ItemCreated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemCreatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemUpdated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemUpdatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemDeleted(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemDeletedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l S i z e a n d P o s i t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls()
|
||||
{
|
||||
base.PositionControls();
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
public static class SpmTabPage_PatientList
|
||||
{
|
||||
public static void PopulateToControls (this List<SpmTabPage_Patient> tabPages, SpmPatient.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Patient tabPage in tabPages)
|
||||
tabPage.PopulateToControls(data);
|
||||
}
|
||||
public static void PopulateFromControls (this List<SpmTabPage_Patient> tabPages, SpmPatient.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Patient tabPage in tabPages)
|
||||
tabPage.PopulateFromControls(data);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
partial class SpmTabPage_Procedure
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Win.Forms.Panels;
|
||||
using Sarand.Win.Forms.UpdateLog;
|
||||
using Sarand.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmTabPage_Procedure : SpmTabPage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelType
|
||||
{
|
||||
Unknown = 0,
|
||||
Updates,
|
||||
}
|
||||
public new class Config : SpmTabPage.Config
|
||||
{
|
||||
/// <summary>Procedure form hosting the tab control.</summary>
|
||||
public SpmForm_Procedure ProcedureForm { get; set; } = null;
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get; } = new List<PanelType>();
|
||||
/// <summary>Number of panels on this tab page.</summary>
|
||||
public override int PanelCount { get { return PanelTypes.Count; } }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config();
|
||||
private SaPanel_UpdateLog panelUpdates = null;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmTabPage_Procedure(Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get { return config.PanelTypes; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialisation.
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure page.
|
||||
|
||||
// Initial panels.
|
||||
List<SacsPanel> panels = new List<SacsPanel>();
|
||||
foreach (var panelType in config.PanelTypes)
|
||||
{
|
||||
SacsPanel panel = null;
|
||||
switch (panelType)
|
||||
{
|
||||
case PanelType.Updates:
|
||||
{
|
||||
SaPanel_UpdateLog.Config configUpdateLog = new SaPanel_UpdateLog.Config();
|
||||
configUpdateLog.UpdateLogConsole = UpdateLogConsole;
|
||||
panelUpdates = new SaPanel_UpdateLog();
|
||||
panelUpdates.SetConfig(configUpdateLog);
|
||||
panel = panelUpdates;
|
||||
panel.SizeChanged += Panel_Resize;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (panel != null)
|
||||
panels.Add(panel);
|
||||
else Logger.Warn(GetType().Name + ".OnCreateControl Panel type not supported: " + panelType.ToString());
|
||||
}
|
||||
AddPanelsToPage(panels);
|
||||
|
||||
// Complete panel initialisation.
|
||||
SetControlsReadOnly();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a g e I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o p u l a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
public void PopulateToControls(SpmProcedure.Data data)
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.ItemId = new ItemId((short)Spm.DataItemType.Procedure, data.Id);
|
||||
}
|
||||
public bool IsDataValid(SpmProcedure.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public void PopulateFromControls(SpmProcedure.Data data)
|
||||
{
|
||||
}
|
||||
public bool UpdateAssociatedData(SpmProcedure.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected void SetControlActivity()
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.Enabled = Enabled;
|
||||
}
|
||||
public bool IsFieldReadOnly(SpmDbDfn.ColumnIdx col)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
protected void SetControlsReadOnly()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
private void panel_ItemCreated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemCreatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemUpdated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemUpdatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemDeleted(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemDeletedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l S i z e a n d P o s i t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls()
|
||||
{
|
||||
base.PositionControls();
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
public static class SpmTabPage_ProcedureList
|
||||
{
|
||||
public static void PopulateToControls (this List<SpmTabPage_Procedure> tabPages, SpmProcedure.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Procedure tabPage in tabPages)
|
||||
tabPage.PopulateToControls(data);
|
||||
}
|
||||
public static void PopulateFromControls (this List<SpmTabPage_Procedure> tabPages, SpmProcedure.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_Procedure tabPage in tabPages)
|
||||
tabPage.PopulateFromControls(data);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
partial class SpmTabPage_TemplateData
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Sarand.PatientMgr.Win.Forms.Base;
|
||||
using Sarand.PatientMgr.Core.Bus;
|
||||
using Sarand.Core.Base;
|
||||
using Sarand.PatientMgr.Win.Forms.Panels;
|
||||
using Sarand.Win.Forms.UpdateLog;
|
||||
using Sarand.Win.Forms.Controls;
|
||||
using Sarand.PatientMgr.Win.Forms.Maint;
|
||||
using Sarand.PatientMgr.Core.App;
|
||||
using Sarand.Core.Bus;
|
||||
using Sarand.Win.Forms.Utils;
|
||||
|
||||
namespace Sarand.PatientMgr.Win.Forms.TabPages
|
||||
{
|
||||
//=======================================================================
|
||||
public partial class SpmTabPage_TemplateData : SpmTabPage
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Configuration.
|
||||
public enum PanelType
|
||||
{
|
||||
Unknown = 0,
|
||||
Updates,
|
||||
}
|
||||
public new class Config : SpmTabPage.Config
|
||||
{
|
||||
/// <summary>TemplateData form hosting the tab control.</summary>
|
||||
//public SpmForm_TemplateData TemplateDataForm { get; set; } = null;
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get; } = new List<PanelType>();
|
||||
/// <summary>Number of panels on this tab page.</summary>
|
||||
public override int PanelCount { get { return PanelTypes.Count; } }
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private Config config = new Config();
|
||||
private SaPanel_UpdateLog panelUpdates = null;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
public SpmTabPage_TemplateData(Config config) : base(config)
|
||||
{
|
||||
this.config = config;
|
||||
InitializeComponent();
|
||||
}
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null) components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
/// <summary>Panels to display on this tab page.</summary>
|
||||
public List<PanelType> PanelTypes { get { return config.PanelTypes; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Initialisation.
|
||||
protected override void OnCreateControl()
|
||||
{
|
||||
base.OnCreateControl();
|
||||
if (this.IsDesignerHosted()) return;
|
||||
|
||||
// Configure page.
|
||||
|
||||
// Initial panels.
|
||||
List<SacsPanel> panels = new List<SacsPanel>();
|
||||
foreach (var panelType in config.PanelTypes)
|
||||
{
|
||||
SacsPanel panel = null;
|
||||
switch (panelType)
|
||||
{
|
||||
case PanelType.Updates:
|
||||
{
|
||||
SaPanel_UpdateLog.Config configUpdateLog = new SaPanel_UpdateLog.Config();
|
||||
configUpdateLog.UpdateLogConsole = UpdateLogConsole;
|
||||
panelUpdates = new SaPanel_UpdateLog();
|
||||
panelUpdates.SetConfig(configUpdateLog);
|
||||
panel = panelUpdates;
|
||||
panel.SizeChanged += Panel_Resize;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (panel != null)
|
||||
panels.Add(panel);
|
||||
else Logger.Warn(GetType().Name + ".OnCreateControl Panel type not supported: " + panelType.ToString());
|
||||
}
|
||||
AddPanelsToPage(panels);
|
||||
|
||||
// Complete panel initialisation.
|
||||
SetControlsReadOnly();
|
||||
SetControlActivity();
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a g e I n t e r f a c e
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P o p u l a t i o n
|
||||
//-------------------------------------------------------------------
|
||||
public void PopulateToControls(SpmTemplateData.Data data)
|
||||
{
|
||||
//if (panelUpdates != null)
|
||||
//panelUpdates.ItemId = new ItemId((short)Spm.DataItemType.TemplateData, data.Id);
|
||||
}
|
||||
public bool IsDataValid(SpmTemplateData.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public void PopulateFromControls(SpmTemplateData.Data data)
|
||||
{
|
||||
}
|
||||
public bool UpdateAssociatedData(SpmTemplateData.Data data)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// C o n t r o l A c t i v i t y
|
||||
//-------------------------------------------------------------------
|
||||
protected void SetControlActivity()
|
||||
{
|
||||
if (panelUpdates != null)
|
||||
panelUpdates.Enabled = Enabled;
|
||||
}
|
||||
public bool IsFieldReadOnly(SpmDbDfn.ColumnIdx col)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
protected void SetControlsReadOnly()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l E v e n t s
|
||||
//-------------------------------------------------------------------
|
||||
private void panel_ItemCreated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemCreatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemUpdated(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemUpdatedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
private void panel_ItemDeleted(object sender, SpmPanel_Items.ItemModifiedEventArgs e)
|
||||
{
|
||||
InvokeItemDeletedEvent((short)e.ItemType, e.ItemId);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// P a n e l S i z e a n d P o s i t i o n
|
||||
//-------------------------------------------------------------------
|
||||
protected override void PositionControls()
|
||||
{
|
||||
base.PositionControls();
|
||||
Rectangle clientRect = ClientRectangle;
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
public static class SpmTabPage_TemplateDataList
|
||||
{
|
||||
public static void PopulateToControls (this List<SpmTabPage_TemplateData> tabPages, SpmTemplateData.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_TemplateData tabPage in tabPages)
|
||||
tabPage.PopulateToControls(data);
|
||||
}
|
||||
public static void PopulateFromControls (this List<SpmTabPage_TemplateData> tabPages, SpmTemplateData.Data data)
|
||||
{
|
||||
foreach (SpmTabPage_TemplateData tabPage in tabPages)
|
||||
tabPage.PopulateFromControls(data);
|
||||
}
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user