Absorbed all changed from Radiology Support branch.

Patient and Provider classes now serializable to address new bug: Availablity slots cannot be saved b/c these classes are not serializable.
This commit is contained in:
sam 2011-05-08 09:17:53 +00:00
parent 3a4ce73bf6
commit d17cc4fc56
21 changed files with 1008 additions and 400 deletions

View File

@ -27,7 +27,7 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.5.0.*")]
[assembly: AssemblyVersion("1.5.1.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
@ -57,5 +57,5 @@ using System.Runtime.InteropServices;
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
[assembly: AssemblyFileVersionAttribute("1.5.0.0")]
[assembly: AssemblyFileVersionAttribute("1.5.1.0")]
[assembly: ComVisibleAttribute(false)]

View File

@ -3,48 +3,76 @@
using System;
using System.Drawing;
/// <summary>
/// Data Structuer to Represent an Appointment
///
/// Data Structure to Represent an Appointment
/// </summary>
[Serializable]
public class CGAppointment
{
private bool m_bAccessBlock;
private bool m_bNoShow;
private bool m_bSelected = false;
private bool m_bWalkIn;
public DateTime m_dAuxTime;
public DateTime m_dCheckIn;
private DateTime m_EndTime;
public int m_nAccessTypeID = -1;
private int m_nColumn;
public int m_nKey;
private string m_Note;
public int m_nPatientID;
public int m_nSlots;
private Rectangle m_rectangle;
public string m_sAccessTypeName;
private string m_sHRN = "";
private string m_sPatientName;
public string m_sResource;
private DateTime m_StartTime;
private string m_Text;
public int AccessTypeID { get; set; }
public string AccessTypeName { get; set; }
public int AppointmentKey { get; set; }
public DateTime AuxTime { get; set; }
public DateTime CheckInTime { get; set; }
public DateTime EndTime { get; set; }
public DateTime StartTime { get; set; }
public int GridColumn { get; set; }
public Rectangle GridRectangle { get; set; }
public bool IsAccessBlock { get; set; }
public bool NoShow { get; set; }
public string Note { get; set; }
public int PatientID { get; set; }
public string PatientName { get; set; }
public string Resource { get; set; }
public string HealthRecordNumber { get; set; }
public bool Selected { get; set; }
public int Slots { get; set; }
public bool WalkIn { get; set; }
public Patient Patient { get; set; }
public Provider Provider { get; set; }
public int? RadiologyExamIEN { get; set; }
public CGAppointment()
{
AccessTypeID = -1;
Selected = false;
HealthRecordNumber = "";
}
public void CreateAppointment(DateTime StartTime, DateTime EndTime, string Note, int Key, string sResource)
{
this.m_StartTime = StartTime;
this.m_EndTime = EndTime;
this.m_Note = Note;
this.m_nKey = Key;
this.m_sResource = sResource;
}
this.StartTime = StartTime;
this.EndTime = EndTime;
this.Note = Note;
this.AppointmentKey = Key;
this.Resource = sResource;
}
public int Duration
{
get
{
TimeSpan span = (TimeSpan) (this.EndTime - this.StartTime);
return (int) span.TotalMinutes;
}
}
public override string ToString()
{
//StringFormat sf = new StringFormat();
//sf.SetDigitSubstitution(System.Threading.Thread.CurrentThread.CurrentCulture.LCID, StringDigitSubstitute.National);
string patientName = "";
if (this.m_bAccessBlock)
if (this.IsAccessBlock)
{
string str2 = (this.Slots == 1) ? " Slot, " : " Slots, ";
return ((((this.AccessTypeName + ": ") + this.Slots.ToString() + str2) + this.Duration.ToString() + " Minutes. ") + this.Note);
@ -56,255 +84,6 @@
}
return (patientName + " " + this.Note);
}
public int AccessTypeID
{
get
{
return this.m_nAccessTypeID;
}
set
{
this.m_nAccessTypeID = value;
}
}
public string AccessTypeName
{
get
{
return this.m_sAccessTypeName;
}
set
{
this.m_sAccessTypeName = value;
}
}
public int AppointmentKey
{
get
{
return this.m_nKey;
}
set
{
this.m_nKey = value;
}
}
public DateTime AuxTime
{
get
{
return this.m_dAuxTime;
}
set
{
this.m_dAuxTime = value;
}
}
public DateTime CheckInTime
{
get
{
return this.m_dCheckIn;
}
set
{
this.m_dCheckIn = value;
}
}
public int Duration
{
get
{
TimeSpan span = (TimeSpan) (this.EndTime - this.StartTime);
return (int) span.TotalMinutes;
}
}
public DateTime EndTime
{
get
{
return this.m_EndTime;
}
set
{
this.m_EndTime = value;
}
}
public int GridColumn
{
get
{
return this.m_nColumn;
}
set
{
this.m_nColumn = value;
}
}
public Rectangle GridRectangle
{
get
{
return this.m_rectangle;
}
set
{
this.m_rectangle = value;
}
}
public string HealthRecordNumber
{
get
{
return this.m_sHRN;
}
set
{
this.m_sHRN = value;
}
}
public bool IsAccessBlock
{
get
{
return this.m_bAccessBlock;
}
set
{
this.m_bAccessBlock = value;
}
}
public bool NoShow
{
get
{
return this.m_bNoShow;
}
set
{
this.m_bNoShow = value;
}
}
public string Note
{
get
{
return this.m_Note;
}
set
{
this.m_Note = value;
}
}
public int PatientID
{
get
{
return this.m_nPatientID;
}
set
{
this.m_nPatientID = value;
}
}
public string PatientName
{
get
{
return this.m_sPatientName;
}
set
{
this.m_sPatientName = value;
}
}
public string Resource
{
get
{
return this.m_sResource;
}
set
{
this.m_sResource = value;
}
}
public bool Selected
{
get
{
return this.m_bSelected;
}
set
{
this.m_bSelected = value;
}
}
public int Slots
{
get
{
return this.m_nSlots;
}
set
{
this.m_nSlots = value;
}
}
public DateTime StartTime
{
get
{
return this.m_StartTime;
}
set
{
this.m_StartTime = value;
}
}
public string Text
{
get
{
this.m_Text = this.m_sPatientName;
return this.m_Text;
}
}
public bool WalkIn
{
get
{
return this.m_bWalkIn;
}
set
{
this.m_bWalkIn = value;
}
}
public Patient Patient { get; set; }
public Provider Provider { get; set; }
}
}

View File

@ -237,6 +237,7 @@ namespace IndianHealthService.ClinicalScheduling
nAccessTypeID = (int)r["ACCESSTYPEID"];
sWalkIn = r["WALKIN"].ToString();
bWalkIn = (sWalkIn == "1") ? true : false;
int? RadiologyExamIEN = r["RADIOLOGY_EXAM"] as Int32?; //new in v 1.6 - Get Radiology Exam
Patient pt = new Patient()
{
@ -261,6 +262,7 @@ namespace IndianHealthService.ClinicalScheduling
pAppointment.HealthRecordNumber = sHRN;
pAppointment.AccessTypeID = nAccessTypeID;
pAppointment.WalkIn = bWalkIn;
pAppointment.RadiologyExamIEN = RadiologyExamIEN;
this.m_appointments.AddAppointment(pAppointment);
}
@ -972,7 +974,7 @@ namespace IndianHealthService.ClinicalScheduling
sApptID = rApptInfo.AccessTypeID.ToString();
}
string sSql = "BSDX ADD NEW APPOINTMENT^" + sStart + "^" + sEnd + "^" + sPatID + "^" + sResource + "^" + sLen + "^" + sNote + "^" + sApptID;
string sSql = "BSDX ADD NEW APPOINTMENT^" + sStart + "^" + sEnd + "^" + sPatID + "^" + sResource + "^" + sLen + "^" + sNote + "^" + sApptID + "^" + rApptInfo.RadiologyExamIEN;
System.Data.DataTable dtAppt = m_DocManager.RPMSDataTable(sSql, "NewAppointment");
Debug.Assert(dtAppt.Rows.Count == 1);

View File

@ -1,8 +1,6 @@
using System;
using System.Data;
using System.Collections;
using System.Diagnostics;
using System.Drawing;
namespace IndianHealthService.ClinicalScheduling
{

View File

@ -1,5 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Diagnostics;
@ -47,7 +48,7 @@ namespace IndianHealthService.ClinicalScheduling
private System.Windows.Forms.Panel panelCenter;
private System.Windows.Forms.Panel panelBottom;
private System.Windows.Forms.Label lblResource;
private System.Windows.Forms.ContextMenu contextMenu1;
private System.Windows.Forms.ContextMenu ctxResourceTree;
private System.Windows.Forms.MenuItem ctxOpenSchedule;
private System.Windows.Forms.MenuItem ctxEditAvailability;
private System.Windows.Forms.MenuItem ctxProperties;
@ -89,15 +90,15 @@ namespace IndianHealthService.ClinicalScheduling
private System.Windows.Forms.MenuItem mnuPrintRebookLetters;
private System.Windows.Forms.MenuItem mnuPrintCancellationLetters;
private System.Windows.Forms.MenuItem mnuWalkIn;
private System.Windows.Forms.MenuItem menuItem5;
private System.Windows.Forms.MenuItem menuItem8;
private System.Windows.Forms.MenuItem sepApptMenu1;
private System.Windows.Forms.MenuItem sepApptMenu2;
private System.Windows.Forms.MenuItem ctxCalGridWalkin;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.MenuItem menuItem9;
private System.Windows.Forms.MenuItem ctxCalGridSep1;
private System.Windows.Forms.MenuItem ctxCalGridSep2;
private System.Windows.Forms.MenuItem mnuOpenMultipleSchedules;
private System.Windows.Forms.MenuItem mnuDisplayWalkIns;
private System.Windows.Forms.MenuItem mnuRPMSDivision;
private MenuItem menuItem10;
private MenuItem ctxCalGridSep3;
private MenuItem ctxCalGridReprintApptSlip;
private MenuItem ctxCalGridUndoCheckin;
private MenuItem ctxPrintScheduleT0;
@ -105,6 +106,13 @@ namespace IndianHealthService.ClinicalScheduling
private MenuItem ctxPrintScheduleT3;
private MenuItem menuItem12;
private MenuItem mnuRefresh;
private MenuItem ctxCalGridMkRadAppt;
private MenuItem ctxCalGridCancelRadAppt;
private MenuItem mnuMkRadAppt;
private MenuItem mnuCancelRadAppt;
private MenuItem mnuUndoCheckin;
private MenuItem sepApptMenu3;
private MenuItem mnuReprintApptSlip;
private IContainer components;
#region Initialization
@ -193,17 +201,22 @@ namespace IndianHealthService.ClinicalScheduling
this.mnuClose = new System.Windows.Forms.MenuItem();
this.mnuAppointment = new System.Windows.Forms.MenuItem();
this.mnuNewAppointment = new System.Windows.Forms.MenuItem();
this.mnuWalkIn = new System.Windows.Forms.MenuItem();
this.mnuMkRadAppt = new System.Windows.Forms.MenuItem();
this.mnuEditAppointment = new System.Windows.Forms.MenuItem();
this.mnuDeleteAppointment = new System.Windows.Forms.MenuItem();
this.menuItem5 = new System.Windows.Forms.MenuItem();
this.mnuCancelRadAppt = new System.Windows.Forms.MenuItem();
this.sepApptMenu1 = new System.Windows.Forms.MenuItem();
this.mnuNoShow = new System.Windows.Forms.MenuItem();
this.mnuNoShowUndo = new System.Windows.Forms.MenuItem();
this.menuItem8 = new System.Windows.Forms.MenuItem();
this.mnuCopyAppointment = new System.Windows.Forms.MenuItem();
this.mnuWalkIn = new System.Windows.Forms.MenuItem();
this.mnuFindAppt = new System.Windows.Forms.MenuItem();
this.sepApptMenu2 = new System.Windows.Forms.MenuItem();
this.mnuCheckIn = new System.Windows.Forms.MenuItem();
this.mnuUndoCheckin = new System.Windows.Forms.MenuItem();
this.sepApptMenu3 = new System.Windows.Forms.MenuItem();
this.mnuFindAppt = new System.Windows.Forms.MenuItem();
this.mnuCopyAppointment = new System.Windows.Forms.MenuItem();
this.mnuViewPatientAppts = new System.Windows.Forms.MenuItem();
this.mnuReprintApptSlip = new System.Windows.Forms.MenuItem();
this.mnuCalendar = new System.Windows.Forms.MenuItem();
this.mnuDisplayWalkIns = new System.Windows.Forms.MenuItem();
this.mnu1Day = new System.Windows.Forms.MenuItem();
@ -224,7 +237,7 @@ namespace IndianHealthService.ClinicalScheduling
this.mnuTest = new System.Windows.Forms.MenuItem();
this.mnuTest1 = new System.Windows.Forms.MenuItem();
this.tvSchedules = new System.Windows.Forms.TreeView();
this.contextMenu1 = new System.Windows.Forms.ContextMenu();
this.ctxResourceTree = new System.Windows.Forms.ContextMenu();
this.ctxOpenSchedule = new System.Windows.Forms.MenuItem();
this.ctxEditAvailability = new System.Windows.Forms.MenuItem();
this.ctxProperties = new System.Windows.Forms.MenuItem();
@ -245,16 +258,18 @@ namespace IndianHealthService.ClinicalScheduling
this.panelCenter = new System.Windows.Forms.Panel();
this.ctxCalendarGrid = new System.Windows.Forms.ContextMenu();
this.ctxCalGridAdd = new System.Windows.Forms.MenuItem();
this.ctxCalGridMkRadAppt = new System.Windows.Forms.MenuItem();
this.ctxCalGridEdit = new System.Windows.Forms.MenuItem();
this.ctxCalGridDelete = new System.Windows.Forms.MenuItem();
this.ctxCalGridCancelRadAppt = new System.Windows.Forms.MenuItem();
this.ctxCalGridCheckIn = new System.Windows.Forms.MenuItem();
this.ctxCalGridUndoCheckin = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.ctxCalGridSep1 = new System.Windows.Forms.MenuItem();
this.ctxCalGridNoShow = new System.Windows.Forms.MenuItem();
this.ctxCalGridNoShowUndo = new System.Windows.Forms.MenuItem();
this.menuItem9 = new System.Windows.Forms.MenuItem();
this.ctxCalGridSep2 = new System.Windows.Forms.MenuItem();
this.ctxCalGridWalkin = new System.Windows.Forms.MenuItem();
this.menuItem10 = new System.Windows.Forms.MenuItem();
this.ctxCalGridSep3 = new System.Windows.Forms.MenuItem();
this.ctxCalGridReprintApptSlip = new System.Windows.Forms.MenuItem();
this.panelBottom = new System.Windows.Forms.Panel();
this.statusBar1 = new System.Windows.Forms.StatusBar();
@ -368,7 +383,7 @@ namespace IndianHealthService.ClinicalScheduling
// mnuPrintReminderLetters
//
this.mnuPrintReminderLetters.Index = 10;
this.mnuPrintReminderLetters.Shortcut = System.Windows.Forms.Shortcut.CtrlI;
this.mnuPrintReminderLetters.Shortcut = System.Windows.Forms.Shortcut.CtrlE;
this.mnuPrintReminderLetters.Text = "Print Rem&inder Letters";
this.mnuPrintReminderLetters.Click += new System.EventHandler(this.mnuPrintReminderLetters_Click);
//
@ -410,17 +425,22 @@ namespace IndianHealthService.ClinicalScheduling
this.mnuAppointment.Index = 1;
this.mnuAppointment.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuNewAppointment,
this.mnuWalkIn,
this.mnuMkRadAppt,
this.mnuEditAppointment,
this.mnuDeleteAppointment,
this.menuItem5,
this.mnuCancelRadAppt,
this.sepApptMenu1,
this.mnuNoShow,
this.mnuNoShowUndo,
this.menuItem8,
this.mnuCopyAppointment,
this.mnuWalkIn,
this.mnuFindAppt,
this.sepApptMenu2,
this.mnuCheckIn,
this.mnuViewPatientAppts});
this.mnuUndoCheckin,
this.sepApptMenu3,
this.mnuFindAppt,
this.mnuCopyAppointment,
this.mnuViewPatientAppts,
this.mnuReprintApptSlip});
this.mnuAppointment.Text = "&Appointment";
this.mnuAppointment.Popup += new System.EventHandler(this.mnuAppointment_Popup);
//
@ -431,73 +451,112 @@ namespace IndianHealthService.ClinicalScheduling
this.mnuNewAppointment.Text = "&New Appointment";
this.mnuNewAppointment.Click += new System.EventHandler(this.mnuNewAppointment_Click);
//
// mnuWalkIn
//
this.mnuWalkIn.Index = 1;
this.mnuWalkIn.Shortcut = System.Windows.Forms.Shortcut.ShiftIns;
this.mnuWalkIn.Text = "Create Wal&k-In Appointment";
this.mnuWalkIn.Click += new System.EventHandler(this.mnuWalkIn_Click);
//
// mnuMkRadAppt
//
this.mnuMkRadAppt.Index = 2;
this.mnuMkRadAppt.Shortcut = System.Windows.Forms.Shortcut.CtrlIns;
this.mnuMkRadAppt.Text = "Make Radiology Appointment";
this.mnuMkRadAppt.Click += new System.EventHandler(this.mnuMkRadAppt_Click);
//
// mnuEditAppointment
//
this.mnuEditAppointment.Index = 1;
this.mnuEditAppointment.Index = 3;
this.mnuEditAppointment.Shortcut = System.Windows.Forms.Shortcut.F2;
this.mnuEditAppointment.Text = "&Edit Appointment";
this.mnuEditAppointment.Click += new System.EventHandler(this.mnuEditAppointment_Click);
//
// mnuDeleteAppointment
//
this.mnuDeleteAppointment.Index = 2;
this.mnuDeleteAppointment.Index = 4;
this.mnuDeleteAppointment.Shortcut = System.Windows.Forms.Shortcut.Del;
this.mnuDeleteAppointment.Text = "Cance&l Appointment";
this.mnuDeleteAppointment.Click += new System.EventHandler(this.mnuDeleteAppointment_Click);
//
// menuItem5
// mnuCancelRadAppt
//
this.menuItem5.Index = 3;
this.menuItem5.Text = "-";
this.mnuCancelRadAppt.Index = 5;
this.mnuCancelRadAppt.Shortcut = System.Windows.Forms.Shortcut.CtrlDel;
this.mnuCancelRadAppt.Text = "Cancel Radiology Appointment";
this.mnuCancelRadAppt.Click += new System.EventHandler(this.mnuCancelRadAppt_Click);
//
// sepApptMenu1
//
this.sepApptMenu1.Index = 6;
this.sepApptMenu1.Text = "-";
//
// mnuNoShow
//
this.mnuNoShow.Index = 4;
this.mnuNoShow.Index = 7;
this.mnuNoShow.Shortcut = System.Windows.Forms.Shortcut.CtrlN;
this.mnuNoShow.Text = "Mark as No Sho&w";
this.mnuNoShow.Click += new System.EventHandler(this.mnuNoShow_Click);
//
// mnuNoShowUndo
//
this.mnuNoShowUndo.Index = 5;
this.mnuNoShowUndo.Index = 8;
this.mnuNoShowUndo.Shortcut = System.Windows.Forms.Shortcut.CtrlShiftN;
this.mnuNoShowUndo.Text = "&Undo No Show";
this.mnuNoShowUndo.Click += new System.EventHandler(this.mnuNoShowUndo_Click);
//
// menuItem8
// sepApptMenu2
//
this.menuItem8.Index = 6;
this.menuItem8.Text = "-";
//
// mnuCopyAppointment
//
this.mnuCopyAppointment.Index = 7;
this.mnuCopyAppointment.Text = "&Copy Appointment to Clipboard";
this.mnuCopyAppointment.Click += new System.EventHandler(this.mnuCopyAppointment_Click);
//
// mnuWalkIn
//
this.mnuWalkIn.Index = 8;
this.mnuWalkIn.Text = "Create Wal&k-In Appointment";
this.mnuWalkIn.Click += new System.EventHandler(this.mnuWalkIn_Click);
//
// mnuFindAppt
//
this.mnuFindAppt.Index = 9;
this.mnuFindAppt.Shortcut = System.Windows.Forms.Shortcut.CtrlF;
this.mnuFindAppt.Text = "&Find Empty Slots";
this.mnuFindAppt.Click += new System.EventHandler(this.mnuFindAppt_Click);
this.sepApptMenu2.Index = 9;
this.sepApptMenu2.Text = "-";
//
// mnuCheckIn
//
this.mnuCheckIn.Index = 10;
this.mnuCheckIn.Shortcut = System.Windows.Forms.Shortcut.CtrlI;
this.mnuCheckIn.Text = "Check &In Patient";
this.mnuCheckIn.Click += new System.EventHandler(this.mnuCheckIn_Click);
//
// mnuUndoCheckin
//
this.mnuUndoCheckin.Index = 11;
this.mnuUndoCheckin.Shortcut = System.Windows.Forms.Shortcut.CtrlShiftI;
this.mnuUndoCheckin.Text = "Undo Checkin";
this.mnuUndoCheckin.Click += new System.EventHandler(this.mnuUndoCheckin_Click);
//
// sepApptMenu3
//
this.sepApptMenu3.Index = 12;
this.sepApptMenu3.Text = "-";
//
// mnuFindAppt
//
this.mnuFindAppt.Index = 13;
this.mnuFindAppt.Shortcut = System.Windows.Forms.Shortcut.CtrlF;
this.mnuFindAppt.Text = "&Find Empty Slots";
this.mnuFindAppt.Click += new System.EventHandler(this.mnuFindAppt_Click);
//
// mnuCopyAppointment
//
this.mnuCopyAppointment.Index = 14;
this.mnuCopyAppointment.Shortcut = System.Windows.Forms.Shortcut.CtrlC;
this.mnuCopyAppointment.Text = "&Copy Appointment to Clipboard";
this.mnuCopyAppointment.Click += new System.EventHandler(this.mnuCopyAppointment_Click);
//
// mnuViewPatientAppts
//
this.mnuViewPatientAppts.Index = 11;
this.mnuViewPatientAppts.Index = 15;
this.mnuViewPatientAppts.Shortcut = System.Windows.Forms.Shortcut.CtrlShiftZ;
this.mnuViewPatientAppts.Text = "&View Patient Appointments";
this.mnuViewPatientAppts.Click += new System.EventHandler(this.mnuViewPatientAppts_Click);
//
// mnuReprintApptSlip
//
this.mnuReprintApptSlip.Index = 16;
this.mnuReprintApptSlip.Shortcut = System.Windows.Forms.Shortcut.CtrlShiftP;
this.mnuReprintApptSlip.Text = "Reprint Appointment Slip";
this.mnuReprintApptSlip.Click += new System.EventHandler(this.mnuReprintApptSlip_Click);
//
// mnuCalendar
//
this.mnuCalendar.Index = 2;
@ -518,6 +577,7 @@ namespace IndianHealthService.ClinicalScheduling
//
this.mnuDisplayWalkIns.Checked = true;
this.mnuDisplayWalkIns.Index = 0;
this.mnuDisplayWalkIns.Shortcut = System.Windows.Forms.Shortcut.F12;
this.mnuDisplayWalkIns.Text = "&Display Walk-Ins";
this.mnuDisplayWalkIns.Click += new System.EventHandler(this.mnuDisplayWalkIns_Click);
//
@ -591,7 +651,9 @@ namespace IndianHealthService.ClinicalScheduling
//
// mnuViewScheduleTree
//
this.mnuViewScheduleTree.Checked = true;
this.mnuViewScheduleTree.Index = 6;
this.mnuViewScheduleTree.Shortcut = System.Windows.Forms.Shortcut.F4;
this.mnuViewScheduleTree.Text = "&Schedule Tree";
this.mnuViewScheduleTree.Click += new System.EventHandler(this.mnuViewScheduleTree_Click);
//
@ -644,12 +706,12 @@ namespace IndianHealthService.ClinicalScheduling
// tvSchedules
//
this.tvSchedules.BackColor = System.Drawing.SystemColors.ControlLight;
this.tvSchedules.ContextMenu = this.contextMenu1;
this.tvSchedules.ContextMenu = this.ctxResourceTree;
this.tvSchedules.Dock = System.Windows.Forms.DockStyle.Left;
this.tvSchedules.HotTracking = true;
this.tvSchedules.Location = new System.Drawing.Point(0, 0);
this.tvSchedules.Name = "tvSchedules";
this.tvSchedules.Size = new System.Drawing.Size(128, 317);
this.tvSchedules.Size = new System.Drawing.Size(128, 392);
this.tvSchedules.Sorted = true;
this.tvSchedules.TabIndex = 1;
this.tvSchedules.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvSchedules_AfterSelect);
@ -657,9 +719,9 @@ namespace IndianHealthService.ClinicalScheduling
this.tvSchedules.DoubleClick += new System.EventHandler(this.tvSchedules_DoubleClick);
this.tvSchedules.MouseEnter += new System.EventHandler(this.tvSchedules_MouseEnter);
//
// contextMenu1
// ctxResourceTree
//
this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.ctxResourceTree.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.ctxOpenSchedule,
this.ctxEditAvailability,
this.ctxProperties,
@ -667,7 +729,7 @@ namespace IndianHealthService.ClinicalScheduling
this.ctxPrintScheduleT0,
this.ctxPrintScheduleT1,
this.ctxPrintScheduleT3});
this.contextMenu1.Popup += new System.EventHandler(this.contextMenu1_Popup);
this.ctxResourceTree.Popup += new System.EventHandler(this.contextMenu1_Popup);
//
// ctxOpenSchedule
//
@ -718,7 +780,7 @@ namespace IndianHealthService.ClinicalScheduling
this.panelRight.Dock = System.Windows.Forms.DockStyle.Right;
this.panelRight.Location = new System.Drawing.Point(996, 0);
this.panelRight.Name = "panelRight";
this.panelRight.Size = new System.Drawing.Size(128, 317);
this.panelRight.Size = new System.Drawing.Size(128, 392);
this.panelRight.TabIndex = 3;
this.panelRight.Visible = false;
//
@ -814,23 +876,25 @@ namespace IndianHealthService.ClinicalScheduling
this.panelCenter.Dock = System.Windows.Forms.DockStyle.Fill;
this.panelCenter.Location = new System.Drawing.Point(136, 24);
this.panelCenter.Name = "panelCenter";
this.panelCenter.Size = new System.Drawing.Size(857, 269);
this.panelCenter.Size = new System.Drawing.Size(857, 344);
this.panelCenter.TabIndex = 7;
//
// ctxCalendarGrid
//
this.ctxCalendarGrid.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.ctxCalGridAdd,
this.ctxCalGridMkRadAppt,
this.ctxCalGridEdit,
this.ctxCalGridDelete,
this.ctxCalGridCancelRadAppt,
this.ctxCalGridCheckIn,
this.ctxCalGridUndoCheckin,
this.menuItem2,
this.ctxCalGridSep1,
this.ctxCalGridNoShow,
this.ctxCalGridNoShowUndo,
this.menuItem9,
this.ctxCalGridSep2,
this.ctxCalGridWalkin,
this.menuItem10,
this.ctxCalGridSep3,
this.ctxCalGridReprintApptSlip});
this.ctxCalendarGrid.Popup += new System.EventHandler(this.ctxCalendarGrid_Popup);
//
@ -840,66 +904,78 @@ namespace IndianHealthService.ClinicalScheduling
this.ctxCalGridAdd.Text = "Add Appointment";
this.ctxCalGridAdd.Click += new System.EventHandler(this.ctxCalGridAdd_Click);
//
// ctxCalGridMkRadAppt
//
this.ctxCalGridMkRadAppt.Index = 1;
this.ctxCalGridMkRadAppt.Text = "Make Radiology Appointment";
this.ctxCalGridMkRadAppt.Click += new System.EventHandler(this.ctxCalGridMkRadAppt_Click);
//
// ctxCalGridEdit
//
this.ctxCalGridEdit.Index = 1;
this.ctxCalGridEdit.Index = 2;
this.ctxCalGridEdit.Text = "Edit Appointment";
this.ctxCalGridEdit.Click += new System.EventHandler(this.ctxCalGridEdit_Click);
//
// ctxCalGridDelete
//
this.ctxCalGridDelete.Index = 2;
this.ctxCalGridDelete.Index = 3;
this.ctxCalGridDelete.Text = "Cancel Appointment";
this.ctxCalGridDelete.Click += new System.EventHandler(this.ctxCalGridDelete_Click);
//
// ctxCalGridCancelRadAppt
//
this.ctxCalGridCancelRadAppt.Index = 4;
this.ctxCalGridCancelRadAppt.Text = "Cancel Radiology Appointment";
this.ctxCalGridCancelRadAppt.Click += new System.EventHandler(this.ctxCalGridCancelRadAppt_Click);
//
// ctxCalGridCheckIn
//
this.ctxCalGridCheckIn.Index = 3;
this.ctxCalGridCheckIn.Index = 5;
this.ctxCalGridCheckIn.Text = "Check In Patient";
this.ctxCalGridCheckIn.Click += new System.EventHandler(this.ctxCalGridCheckIn_Click);
//
// ctxCalGridUndoCheckin
//
this.ctxCalGridUndoCheckin.Index = 4;
this.ctxCalGridUndoCheckin.Index = 6;
this.ctxCalGridUndoCheckin.Text = "&Undo Check In";
this.ctxCalGridUndoCheckin.Click += new System.EventHandler(this.ctxCalGridUndoCheckin_Click);
//
// menuItem2
// ctxCalGridSep1
//
this.menuItem2.Index = 5;
this.menuItem2.Text = "-";
this.ctxCalGridSep1.Index = 7;
this.ctxCalGridSep1.Text = "-";
//
// ctxCalGridNoShow
//
this.ctxCalGridNoShow.Index = 6;
this.ctxCalGridNoShow.Index = 8;
this.ctxCalGridNoShow.Text = "Mark as No Show";
this.ctxCalGridNoShow.Click += new System.EventHandler(this.ctxCalGridNoShow_Click);
//
// ctxCalGridNoShowUndo
//
this.ctxCalGridNoShowUndo.Index = 7;
this.ctxCalGridNoShowUndo.Index = 9;
this.ctxCalGridNoShowUndo.Text = "Undo NoShow";
this.ctxCalGridNoShowUndo.Click += new System.EventHandler(this.ctxCalGridNoShowUndo_Click);
//
// menuItem9
// ctxCalGridSep2
//
this.menuItem9.Index = 8;
this.menuItem9.Text = "-";
this.ctxCalGridSep2.Index = 10;
this.ctxCalGridSep2.Text = "-";
//
// ctxCalGridWalkin
//
this.ctxCalGridWalkin.Index = 9;
this.ctxCalGridWalkin.Index = 11;
this.ctxCalGridWalkin.Text = "Create Wal&k-In Appointment";
this.ctxCalGridWalkin.Click += new System.EventHandler(this.ctxCalGridWalkin_Click);
//
// menuItem10
// ctxCalGridSep3
//
this.menuItem10.Index = 10;
this.menuItem10.Text = "-";
this.ctxCalGridSep3.Index = 12;
this.ctxCalGridSep3.Text = "-";
//
// ctxCalGridReprintApptSlip
//
this.ctxCalGridReprintApptSlip.Index = 11;
this.ctxCalGridReprintApptSlip.Index = 13;
this.ctxCalGridReprintApptSlip.Text = "&Reprint Appointment Slip";
this.ctxCalGridReprintApptSlip.Click += new System.EventHandler(this.ctxCalGridReprintApptSlip_Click);
//
@ -907,7 +983,7 @@ namespace IndianHealthService.ClinicalScheduling
//
this.panelBottom.Controls.Add(this.statusBar1);
this.panelBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panelBottom.Location = new System.Drawing.Point(136, 293);
this.panelBottom.Location = new System.Drawing.Point(136, 368);
this.panelBottom.Name = "panelBottom";
this.panelBottom.Size = new System.Drawing.Size(857, 24);
this.panelBottom.TabIndex = 8;
@ -925,7 +1001,7 @@ namespace IndianHealthService.ClinicalScheduling
//
this.splitter1.Location = new System.Drawing.Point(128, 24);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(8, 293);
this.splitter1.Size = new System.Drawing.Size(8, 368);
this.splitter1.TabIndex = 9;
this.splitter1.TabStop = false;
//
@ -934,7 +1010,7 @@ namespace IndianHealthService.ClinicalScheduling
this.splitter2.Dock = System.Windows.Forms.DockStyle.Right;
this.splitter2.Location = new System.Drawing.Point(993, 24);
this.splitter2.Name = "splitter2";
this.splitter2.Size = new System.Drawing.Size(3, 293);
this.splitter2.Size = new System.Drawing.Size(3, 368);
this.splitter2.TabIndex = 10;
this.splitter2.TabStop = false;
//
@ -957,7 +1033,7 @@ namespace IndianHealthService.ClinicalScheduling
this.calendarGrid1.Name = "calendarGrid1";
this.calendarGrid1.Resources = ((System.Collections.ArrayList)(resources.GetObject("calendarGrid1.Resources")));
this.calendarGrid1.SelectedAppointment = 0;
this.calendarGrid1.Size = new System.Drawing.Size(857, 269);
this.calendarGrid1.Size = new System.Drawing.Size(857, 344);
this.calendarGrid1.StartDate = new System.DateTime(2003, 1, 27, 0, 0, 0, 0);
this.calendarGrid1.TabIndex = 0;
this.calendarGrid1.TimeScale = 20;
@ -970,7 +1046,7 @@ namespace IndianHealthService.ClinicalScheduling
// CGView
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(1124, 317);
this.ClientSize = new System.Drawing.Size(1124, 392);
this.Controls.Add(this.panelCenter);
this.Controls.Add(this.panelBottom);
this.Controls.Add(this.splitter2);
@ -1081,26 +1157,35 @@ namespace IndianHealthService.ClinicalScheduling
#endregion
#region AppointmentMenu Handlers
private void mnuAppointment_Popup(object sender, System.EventArgs e)
{
bool bEnabled = (this.Document.Resources.Count > 0)? true : false ;
this.mnuFindAppt.Enabled = bEnabled;
// our flags
bool _findApptsEnabled = (this.Document.Resources.Count > 0)? true : false ;
bool _addApptsEnabled = AddAppointmentEnabled();
bool _editApptsEnabled = EditAppointmentEnabled();
bool _isRadAppt = IsThisARadiologyResource();
bool _noShowEnabled = NoShowEnabled();
bool _undoCheckinEnabled = UndoCheckinEnabled();
//end flags
//Toggle availability of make, edit, checkin and delete appointments
//based on whether a range is selected.
mnuNewAppointment.Enabled = _addApptsEnabled && !_isRadAppt;
mnuWalkIn.Enabled = _addApptsEnabled && !_isRadAppt;
mnuMkRadAppt.Enabled = _isRadAppt && _addApptsEnabled;
mnuNewAppointment.Enabled = AddAppointmentEnabled();
this.mnuWalkIn.Enabled = mnuNewAppointment.Enabled;
bool bEditAppointments = this.EditAppointmentEnabled();
mnuEditAppointment.Enabled = _editApptsEnabled && !_isRadAppt;
mnuDeleteAppointment.Enabled = _editApptsEnabled && !_isRadAppt;
mnuCancelRadAppt.Enabled = _isRadAppt && _editApptsEnabled;
mnuNoShow.Enabled = _noShowEnabled && _editApptsEnabled;
mnuNoShowUndo.Enabled = !_noShowEnabled && _editApptsEnabled;
mnuCheckIn.Enabled = _editApptsEnabled && !_isRadAppt;
mnuUndoCheckin.Enabled = _undoCheckinEnabled && !_isRadAppt;
mnuDeleteAppointment.Enabled = bEditAppointments;
mnuCheckIn.Enabled = bEditAppointments;
mnuEditAppointment.Enabled = bEditAppointments;
mnuNoShow.Enabled = bEditAppointments;
mnuNoShowUndo.Enabled = bEditAppointments;
mnuFindAppt.Enabled = _findApptsEnabled;
mnuCopyAppointment.Enabled = _editApptsEnabled && !_isRadAppt;
mnuViewPatientAppts.Enabled = true;
mnuReprintApptSlip.Enabled = _editApptsEnabled;
}
private void mnuCheckIn_Click(object sender, System.EventArgs e)
@ -1117,12 +1202,12 @@ namespace IndianHealthService.ClinicalScheduling
{
foreach (CGAppointment a in this.calendarGrid1.SelectedAppointments.AppointmentTable.Values)
{
if (m_ClipList.AppointmentTable.Contains((int) a.AppointmentKey))
if (m_ClipList.AppointmentTable.Contains((int)a.AppointmentKey))
{
return;
}
m_ClipList.AddAppointment(a);
lstClip.Items.Add(a.PatientName);
lstClip.Items.Add(a);
}
}
catch (Exception ex)
@ -1163,6 +1248,31 @@ namespace IndianHealthService.ClinicalScheduling
AppointmentUndoCheckin();
}
private void mnuMkRadAppt_Click(object sender, EventArgs e)
{
AppointmentAddNewRadiology();
}
private void mnuCancelRadAppt_Click(object sender, EventArgs e)
{
AppointmentDeleteOneRadiology();
}
private void mnuUndoCheckin_Click(object sender, EventArgs e)
{
AppointmentUndoCheckin();
}
private void mnuReprintApptSlip_Click(object sender, EventArgs e)
{
int apptID = this.CGrid.SelectedAppointment;
if (apptID <= 0) return;
CGAppointment a = (CGAppointment)this.Appointments.AppointmentTable[apptID];
PrintAppointmentSlip(a);
}
#endregion AppointmentMenu Handlers
#region ContextMenu1 Handlers
@ -1291,20 +1401,60 @@ namespace IndianHealthService.ClinicalScheduling
private void ctxCalendarGrid_Popup(object sender, System.EventArgs e)
{
bool bEditAppointments = (EditAppointmentEnabled() && (calendarGrid1.SelectedAppointment > 0)) ;
if (IsThisARadiologyResource())//this is a radiology resource
{
ctxCalGridAdd.Visible = false;
ctxCalGridDelete.Visible = false;
ctxCalGridEdit.Visible = false;
ctxCalGridCheckIn.Visible = false;
ctxCalGridNoShow.Visible = false;
ctxCalGridNoShowUndo.Visible = false;
ctxCalGridWalkin.Visible = false;
ctxCalGridUndoCheckin.Visible = false;
ctxCalGridSep1.Visible = false;
ctxCalGridSep2.Visible = false;
ctxCalGridMkRadAppt.Visible = true;
ctxCalGridCancelRadAppt.Visible = true;
}
else // this is a normal resource
{
ctxCalGridAdd.Visible = true;
ctxCalGridDelete.Visible = true;
ctxCalGridEdit.Visible = true;
ctxCalGridCheckIn.Visible = true;
ctxCalGridNoShow.Visible = true;
ctxCalGridNoShowUndo.Visible = true;
ctxCalGridWalkin.Visible = true;
ctxCalGridUndoCheckin.Visible = true;
ctxCalGridSep1.Visible = true;
ctxCalGridSep2.Visible = true;
ctxCalGridMkRadAppt.Visible = false;
ctxCalGridCancelRadAppt.Visible = false;
}
//Toggle availability of make, edit, checkin and delete appointments
//based on whether appropriate element is selected.
ctxCalGridAdd.Enabled = AddAppointmentEnabled();
bool bEditAppointments = (EditAppointmentEnabled() && (calendarGrid1.SelectedAppointment > 0)) ;
ctxCalGridDelete.Enabled = bEditAppointments;
ctxCalGridEdit.Enabled = bEditAppointments;
ctxCalGridCheckIn.Enabled = bEditAppointments;
ctxCalGridNoShow.Enabled = NoShowEnabled();
ctxCalGridNoShowUndo.Enabled = !NoShowEnabled() && calendarGrid1.SelectedAppointment > 0;
ctxCalGridWalkin.Enabled = ctxCalGridAdd.Enabled;
//smh new code
ctxCalGridReprintApptSlip.Enabled = bEditAppointments;
ctxCalGridUndoCheckin.Enabled = UndoCheckinEnabled();
//end new code
//if the rad ones are visible, then these apply
ctxCalGridMkRadAppt.Enabled = !bEditAppointments;
ctxCalGridCancelRadAppt.Enabled = bEditAppointments;
}
private void ctxCalGridAdd_Click(object sender, System.EventArgs e)
@ -1343,7 +1493,16 @@ namespace IndianHealthService.ClinicalScheduling
AppointmentNoShow(false);
}
//new code smh
private void ctxCalGridMkRadAppt_Click(object sender, EventArgs e)
{
AppointmentAddNewRadiology();
}
private void ctxCalGridCancelRadAppt_Click(object sender, EventArgs e)
{
AppointmentDeleteOneRadiology();
}
private void ctxCalGridReprintApptSlip_Click(object sender, EventArgs e)
{
int apptID = this.CGrid.SelectedAppointment;
@ -1353,12 +1512,68 @@ namespace IndianHealthService.ClinicalScheduling
PrintAppointmentSlip(a);
}
//end new code
#endregion ctxCalGridMenu Handlers
#region Methods
/// <summary>
/// Decides whether this is a Radiology Resource. Local Helper to decide what menu items to enable/display
/// </summary>
/// <returns></returns>
private bool IsThisARadiologyResource()
{
//I don't like this logic!!! but works for now!
//Note: I use banana peeling model below
//If no cell is selected AND no appointment is selected, then it's false
if (this.calendarGrid1.SelectedRange.Cells.CellCount < 1 && this.calendarGrid1.SelectedAppointment < 1)
return false;
//If an appointment is selected then...
if (this.calendarGrid1.SelectedAppointment > 0)
{
CGAppointment appt = this.Appointments.AppointmentTable[this.calendarGrid1.SelectedAppointment] as CGAppointment;
if (appt == null) return false; //appt doesn't exist; old appointment and grid wasn't refreshed yet
if (appt.RadiologyExamIEN.HasValue && appt.RadiologyExamIEN.Value > 0) return true; //this appointment is a radiology appointment since it has that member
else return false;
}
//Otherwise, we are for sure dealing with a cell.
//We need to determine if the cell resource is mapped to a Radiology Hospital Location.
DateTime dStart;
DateTime dEnd;
string sResource;
// Get resource
bool bRet = this.calendarGrid1.GetSelectedTime(out dStart, out dEnd, out sResource);
// If we fail, return false (but this is not supposed to ever happen)
if (bRet == false)
{
return false;
}
// see if resource is mapped to a Radiology Hospital Location.
return IsThisARadiologyResource(sResource);
}
private bool IsThisARadiologyResource(string sResource)
{
// see if resource is mapped to a Radiology Hospital Location.
return ( //select all Hospital Locations which are radiology locations
from hl in CGDocumentManager.Current.GlobalDataSet.Tables["HospitalLocation"].AsEnumerable()
where hl.Field<string>("IS_RADIOLOGY_LOCATION") == "1"
//join this to the resources table using the foreign ID (plain jane relational join)
join res in CGDocumentManager.Current.GlobalDataSet.Tables["Resources"].AsEnumerable()
on hl.Field<int>("HOSPITAL_LOCATION_ID") equals res.Field<int>("HOSPITAL_LOCATION_ID")
//then filter this down to the resource that we have
where res.Field<string>("RESOURCE_NAME") == sResource
//if we have any row left, then it is true.
select hl).Any();
}
private bool EditAppointmentEnabled()
{
try
@ -1979,6 +2194,30 @@ namespace IndianHealthService.ClinicalScheduling
}
}
/// <summary>
/// Delete one Radiology Appointment
/// </summary>
private void AppointmentDeleteOneRadiology()
{
Debug.Assert(this.calendarGrid1.SelectedAppointment > 0);
CGAppointment a = this.Appointments.AppointmentTable[this.calendarGrid1.SelectedAppointment] as CGAppointment;
Debug.Assert(a.RadiologyExamIEN.HasValue);
//Prior to making expensive db calls, tell the grid nothing is selected anymore so nobody would try to pick it up
this.calendarGrid1.SelectedAppointment = 0;
//Cancel Radiology Exam
CGDocumentManager.Current.DAL.CancelRadiologyExam(a.PatientID, a.RadiologyExamIEN.Value);
//Now, Cancel the appointment
this.Document.DeleteAppointment(a.AppointmentKey);
//redraw the grid to display new set of appointments after this appt was removed.
this.UpdateArrays();
}
/// <summary>
/// Delete appointment ApptID
/// </summary>
@ -2015,6 +2254,11 @@ namespace IndianHealthService.ClinicalScheduling
return;
}
//At this point, the appointment will be deleted...
//Remove the Selected Appointment from the grid because we don't anybody to think there's still
//an appointment selected while we are still updating the grid
this.calendarGrid1.SelectedAppointment = 0;
bool bClinic = dCancel.ClinicCancelled;
int nReason = dCancel.CancelReason;
string sRemarks = dCancel.CancelRemarks;
@ -2380,6 +2624,85 @@ namespace IndianHealthService.ClinicalScheduling
}
}
/// <summary>
/// Add a new Radiology Appointment to VISTA (ÒÝÊì as my mom calls it)
/// </summary>
private void AppointmentAddNewRadiology()
{
DateTime dStart, dEnd; //return vales for below
string sResource; //ditto
int nAccessTypeID = 0; //ditto
this.calendarGrid1.GetSelectedTime(out dStart, out dEnd, out sResource);
this.calendarGrid1.GetSelectedType(out nAccessTypeID);
Debug.Assert(sResource != null);
Debug.Assert(dStart > DateTime.MinValue);
//Display a dialog to collect Patient Name
DPatientLookup dPat = new DPatientLookup();
dPat.DocManager = m_DocManager;
if (dPat.ShowDialog(this) == DialogResult.Cancel)
{
return;
}
int DFN = Int32.Parse(dPat.PatientIEN);
// Hospital Location IEN
int hlIEN = (from resource in CGDocumentManager.Current.GlobalDataSet.Tables["Resources"].AsEnumerable()
where resource.Field<string>("RESOURCE_NAME") == sResource
select resource.Field<int>("HOSPITAL_LOCATION_ID")).FirstOrDefault();
//Get Radiology Exams from the DB
List<RadiologyExam> _radExams = CGDocumentManager.Current.DAL.GetRadiologyExamsForPatientinHL(DFN, hlIEN);
//If none found...
if (!_radExams.Any())
{
MessageBox.Show("Patient does not have any radiology exams to register.");
return;
}
//Display a form for the user to select radiology exams.
DRadExamsSelect _radform = new DRadExamsSelect(_radExams);
if (_radform.ShowDialog() == DialogResult.Cancel) return;
//Get some return values
int _examien = _radform.ExamIEN;
string _procedurename = _radform.ProcedureName;
//Save Radiology Exam Schedule Info to Radiology Package
CGDocumentManager.Current.DAL.ScheduleRadiologyExam(DFN, _examien, dStart);
//Now create and save the appointment
CGAppointment appt = new CGAppointment();
string _sNote = "Radiology Exam (" + _examien + "): " + _procedurename;
appt.CreateAppointment(dStart, dEnd, _sNote, 0, sResource);
appt.PatientID = Int32.Parse(dPat.PatientIEN);
appt.PatientName = dPat.PatientName;
appt.AccessTypeID = nAccessTypeID;
appt.RadiologyExamIEN = _examien;
appt.Patient = new Patient
{
DFN = Convert.ToInt32(dPat.PatientIEN),
ID = dPat.PatientPID,
Name = dPat.PatientName,
HRN = dPat.HealthRecordNumber,
DOB = dPat.PatientDOB
};
this.Document.CreateAppointment(appt);
//Print Appointment Slip if requested
if (_radform.PrintAppointmentSlip) this.PrintAppointmentSlip(appt);
//Now redraw the grid to display the new appointments
this.UpdateArrays();
}
#region BMX Event Processing and Callbacks
/// <summary>
/// Loosely typed delegate used several times below.
@ -2891,9 +3214,25 @@ namespace IndianHealthService.ClinicalScheduling
{
try
{
// added April 13 2011
// Can't edit radiology appointments (Why? b/c it's intimately tied to Radiology Entry of the Hosp Loc)
if (e.Appointment.RadiologyExamIEN.HasValue && e.Appointment.RadiologyExamIEN.Value > 0)
{
MessageBox.Show("You cannot move a radiology appointment.", "Clinical Scheduling");
return;
}
// added May 5 2011
// Can't move an appointment to a radiology resource
if (IsThisARadiologyResource(e.Resource))
{
MessageBox.Show("You cannot move an appointment to a radiology location.", "Clinical Scheduling");
return;
}
if (e.Appointment.CheckInTime.Ticks > 0)
{
MessageBox.Show("You cannot change the appointment time because the patient has already checked in.", "Clinical Scheduling", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
MessageBox.Show("You cannot change the appointment time because the patient has already checked in.", "Clinical Scheduling");
return;
}
@ -3565,8 +3904,5 @@ namespace IndianHealthService.ClinicalScheduling
}
}//End class
}

View File

@ -120,7 +120,7 @@
<metadata name="mainMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="contextMenu1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="ctxResourceTree.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>126, 17</value>
</metadata>
<metadata name="ctxApptClipMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -479,7 +479,7 @@
if (bRet && (!appointment.WalkIn || this.m_bDrawWalkIns))
{
rect.Inflate(-10, 0);
num = (int) this.m_ApptOverlapTable[appointment.m_nKey];
num = (int) this.m_ApptOverlapTable[appointment.AppointmentKey];
num2 = rect.Right - rect.Left;
x = num2 / (num + 1);
rect.Width = x;
@ -1266,7 +1266,7 @@
num2 = appointment.EndTime.Minute + (60 * appointment.EndTime.Hour);
x = (this.m_sResourcesArray.Count > 1) ? (((int) this.m_ColumnInfoTable[resource]) + 1) : appointment.StartTime.DayOfYear;
Rectangle rectangle = new Rectangle(x, y, 1, num2 - y);
hashtable.Add(appointment.m_nKey, rectangle);
hashtable.Add(appointment.AppointmentKey, rectangle);
}
}
this.m_ApptOverlapTable.Clear();

View File

@ -139,7 +139,14 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="DRadExamsSelect.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DRadExamsSelect.Designer.cs">
<DependentUpon>DRadExamsSelect.cs</DependentUpon>
</Compile>
<Compile Include="Provider.cs" />
<Compile Include="RadiologyExam.cs" />
<Compile Include="strings.ar.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
@ -151,7 +158,6 @@
<DependentUpon>strings.resx</DependentUpon>
</Compile>
<Compile Include="UserPreferences.cs" />
<None Include="app.config" />
<None Include="dsPatientApptDisplay2.xsc">
<DependentUpon>dsPatientApptDisplay2.xsd</DependentUpon>
</None>
@ -391,6 +397,9 @@
<DependentUpon>DPatientLookup.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="DRadExamsSelect.resx">
<DependentUpon>DRadExamsSelect.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DResource.resx">
<DependentUpon>DResource.cs</DependentUpon>
<SubType>Designer</SubType>

View File

@ -1,4 +1,6 @@
using System;
/* Licensed under LGPL */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
@ -185,6 +187,52 @@ namespace IndianHealthService.ClinicalScheduling
return RPMSDataTable(cmd, "");
}
/// <summary>
/// Gets All radiology exams for a Patient in a specific hospital location
/// </summary>
/// <param name="DFN"></param>
/// <param name="SCIEN">Hospital Location IEN</param>
/// <returns>Generic List of type RadiologyExam</returns>
public List<RadiologyExam> GetRadiologyExamsForPatientinHL(int DFN, int SCIEN)
{
string cmd = string.Format("BSDX GET RAD EXAM FOR PT^{0}^{1}", DFN, SCIEN);
DataTable tbl = RPMSDataTable(cmd, "");
return (from row in tbl.AsEnumerable()
select new RadiologyExam
{
IEN = row.Field<int>("BMXIEN"),
Status = row.Field<string>("STATUS"),
Procedure = row.Field<string>("PROCEDURE"),
RequestDate = row.Field<DateTime>("REQUEST_DATE")
}).ToList();
}
/// <summary>
/// Schedules a Single Radiology Exam for a patient
/// </summary>
/// <param name="DFN"></param>
/// <param name="examIEN">IEN of exam in 75.1 (RAD/NUC MED ORDERS) file</param>
/// <param name="dStart">Start DateTime of appointment</param>
/// <returns>should always return true</returns>
public bool ScheduleRadiologyExam(int DFN, int examIEN, DateTime dStart)
{
string fmStartDate = FMDateTime.Create(dStart).FMDateString;
string result = _thisConnection.bmxNetLib.TransmitRPC("BSDX SCHEDULE RAD EXAM", string.Format("{0}^{1}^{2}", DFN, examIEN, fmStartDate));
return result == "1" ? true : false;
}
/// <summary>
/// Put the radiology exam on Hold because the appointment has been cancelled for it
/// </summary>
/// <param name="DFN"></param>
/// <param name="examIEN">IEN of exam in 75.1 (RAD/NUC MED ORDERS) file</param>
/// <returns>should always return true</returns>
public bool CancelRadiologyExam(int DFN, int examIEN)
{
string result = _thisConnection.bmxNetLib.TransmitRPC("BSDX HOLD RAD EXAM", string.Format("{0}^{1}", DFN, examIEN));
return result == "1" ? true : false;
}
/// <summary>
/// Save User Preference in DB For Printing Routing Slip
/// Uses Parameter BSDX AUTO PRINT RS

View File

@ -0,0 +1,195 @@
namespace IndianHealthService.ClinicalScheduling
{
partial class DRadExamsSelect
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#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.lstExams = new System.Windows.Forms.ListBox();
this.tableOKCancel = new System.Windows.Forms.TableLayoutPanel();
this.btnOK = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.lblInfo = new System.Windows.Forms.Label();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.chkPrint = new System.Windows.Forms.CheckBox();
this.tableOKCancel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.Panel2.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.SuspendLayout();
//
// lstExams
//
this.lstExams.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstExams.FormattingEnabled = true;
this.lstExams.Location = new System.Drawing.Point(0, 0);
this.lstExams.Name = "lstExams";
this.lstExams.Size = new System.Drawing.Size(497, 237);
this.lstExams.TabIndex = 0;
this.lstExams.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lstExams_MouseDoubleClick);
//
// tableOKCancel
//
this.tableOKCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.tableOKCancel.ColumnCount = 2;
this.tableOKCancel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableOKCancel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableOKCancel.Controls.Add(this.btnOK, 0, 0);
this.tableOKCancel.Controls.Add(this.btnCancel, 1, 0);
this.tableOKCancel.Location = new System.Drawing.Point(328, -1);
this.tableOKCancel.Name = "tableOKCancel";
this.tableOKCancel.RowCount = 1;
this.tableOKCancel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableOKCancel.Size = new System.Drawing.Size(166, 29);
this.tableOKCancel.TabIndex = 1;
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(3, 3);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(75, 23);
this.btnOK.TabIndex = 0;
this.btnOK.Text = "OK";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(86, 3);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 23);
this.btnCancel.TabIndex = 1;
this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
//
// lblInfo
//
this.lblInfo.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblInfo.AutoSize = true;
this.lblInfo.Location = new System.Drawing.Point(4, 6);
this.lblInfo.Name = "lblInfo";
this.lblInfo.Size = new System.Drawing.Size(245, 13);
this.lblInfo.TabIndex = 2;
this.lblInfo.Text = "Select an Exam from the exams listed to Schedule";
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.lstExams);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Size = new System.Drawing.Size(497, 302);
this.splitContainer1.SplitterDistance = 237;
this.splitContainer1.TabIndex = 3;
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.lblInfo);
//
// splitContainer2.Panel2
//
this.splitContainer2.Panel2.Controls.Add(this.chkPrint);
this.splitContainer2.Panel2.Controls.Add(this.tableOKCancel);
this.splitContainer2.Size = new System.Drawing.Size(497, 61);
this.splitContainer2.SplitterDistance = 25;
this.splitContainer2.TabIndex = 3;
//
// chkPrint
//
this.chkPrint.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.chkPrint.AutoSize = true;
this.chkPrint.Location = new System.Drawing.Point(3, 11);
this.chkPrint.Name = "chkPrint";
this.chkPrint.Size = new System.Drawing.Size(131, 17);
this.chkPrint.TabIndex = 2;
this.chkPrint.Text = "Print Appointment Slip";
this.chkPrint.UseVisualStyleBackColor = true;
this.chkPrint.CheckedChanged += new System.EventHandler(this.chkPrint_CheckedChanged);
//
// DRadExamsSelect
//
this.AcceptButton = this.btnOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(497, 302);
this.ControlBox = false;
this.Controls.Add(this.splitContainer1);
this.MinimumSize = new System.Drawing.Size(500, 250);
this.Name = "DRadExamsSelect";
this.Text = "Select an Exam";
this.tableOKCancel.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
this.splitContainer2.Panel1.PerformLayout();
this.splitContainer2.Panel2.ResumeLayout(false);
this.splitContainer2.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ListBox lstExams;
private System.Windows.Forms.TableLayoutPanel tableOKCancel;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.Label lblInfo;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.CheckBox chkPrint;
}
}

View File

@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace IndianHealthService.ClinicalScheduling
{
/// <summary>
/// Form which displays exams for User so that the user would pick one of them
/// for which to make an appointment
/// </summary>
public partial class DRadExamsSelect : Form
{
//return values
public int ExamIEN { get; private set; }
public string ProcedureName { get; private set; }
public bool PrintAppointmentSlip { get { return chkPrint.Checked; } }
//end return values
//private fields
public bool _myCodeIsFiringIstheCheckBoxChangedEvent = false;
//private fields
/// <summary>
/// ctor
/// </summary>
/// <param name="_radExams">Strongly Typed Table of Exams</param>
public DRadExamsSelect(List<RadiologyExam> _radExams)
{
InitializeComponent();
this.lstExams.DataSource = _radExams;
this.lstExams.SelectionMode = SelectionMode.One;
//Set Default Checkbox
_myCodeIsFiringIstheCheckBoxChangedEvent = true;
chkPrint.Checked = CGDocumentManager.Current.UserPreferences.PrintAppointmentSlipAutomacially;
_myCodeIsFiringIstheCheckBoxChangedEvent = false;
}
private void btnOK_Click(object sender, EventArgs e)
{
SharedFinishLine();
}
private void lstExams_MouseDoubleClick(object sender, MouseEventArgs e)
{
SharedFinishLine();
}
private void SharedFinishLine()
{
if (lstExams.SelectedIndex < 0)
{
this.DialogResult = DialogResult.None;
return;
}
ExamIEN = (lstExams.Items[lstExams.SelectedIndex] as RadiologyExam).IEN;
ProcedureName = (lstExams.Items[lstExams.SelectedIndex] as RadiologyExam).Procedure;
this.DialogResult = DialogResult.OK;
}
/// <summary>
/// Save preference for Auto Printing Appointment Slip in the DB
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void chkPrint_CheckedChanged(object sender, EventArgs e)
{
if (_myCodeIsFiringIstheCheckBoxChangedEvent) return;
CGDocumentManager.Current.UserPreferences.PrintAppointmentSlipAutomacially = chkPrint.Checked;
}
}
}

View File

@ -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>

View File

@ -16,7 +16,7 @@
*
*
Mods by Sam Habiel to use in Scheduling GUI.
Modified by Sam Habiel to use in Scheduling GUI. Modified class licensed under LGPL.
*/
@ -249,6 +249,12 @@ namespace IndianHealthService.ClinicalScheduling
return Create (d, FMDateTimePrecision.DateAndTime);
}
/*public static string FMDate (this DateTime d)
{
return Create(d, FMDateTimePrecision.DateAndTime).FMDateString;
}*/
public static FMDateTime Parse (string str)
{
return Parse (str, FMDateTime.ValidationMethod);

View File

@ -17,6 +17,7 @@ namespace IndianHealthService.ClinicalScheduling
/// <summary>
/// Puppet standing for a Real Patient
/// </summary>
[Serializable]
public class Patient
{
public int DFN { get; set; }

View File

@ -8,6 +8,7 @@ namespace IndianHealthService.ClinicalScheduling
/// <summary>
/// Provider puppet
/// </summary>
[Serializable]
public class Provider
{
public int IEN { get; set; }

View File

@ -0,0 +1,29 @@
/* Licensed under LGPL */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace IndianHealthService.ClinicalScheduling
{
/// <summary>
/// Class to stand for a Radiology Exam Order from file 75.1 (RAD/NUC MED ORDERS)
/// IEN: IEN in file 75.1
/// Status: Text: Pending or Hold
/// Procedure: Text
/// RequestDate: Time procedure was requested by physician
/// </summary>
public class RadiologyExam
{
public int IEN { get; set; }
public string Status { get; set; }
public string Procedure { get; set; }
public DateTime RequestDate { get; set; }
public override string ToString()
{
return Procedure + "\t" + "Requested: " + RequestDate.ToString();
}
}
}

View File

@ -1,4 +1,6 @@
using System;
/*Licensed under LGPL*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;