V 1.6 Beta Release

AssemblyInfo.cs: version bumped up to 1.6
CGView: 
1. Changed Popup calendar menu enable/disable code for specific menu items (simplification)
2. Bug fixed in AddAppointmentEnabled(): Checks to see if there are any slots using the new algorithm introduced in v 1.5
3. Resequence order of Saving/Canceling Radiology Package Call with Saving/Cancelling Appointment. Saving Cancelling appointment comes first because it may fail and thus cancel the whole transaction.
4. BMX Events will now be raised after making/cancelling a radiology appointment.
5. Better exception handling for making Radiology Appointments in AppointmentAddNewRadiology().

strings.ar.resx:
Fixed a mispelling.

Printing:
Improved the display of dates for Appointment Slips.
This commit is contained in:
sam 2011-05-11 11:41:51 +00:00
parent d17cc4fc56
commit 931eaf0533
9 changed files with 169 additions and 125 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.1.*")]
[assembly: AssemblyVersion("1.6.0.*")]
//
// 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.1.0")]
[assembly: AssemblyFileVersionAttribute("1.6.0.0")]
[assembly: ComVisibleAttribute(false)]

View File

@ -256,6 +256,7 @@ namespace IndianHealthService.ClinicalScheduling
this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();
this.lblResource = new System.Windows.Forms.Label();
this.panelCenter = new System.Windows.Forms.Panel();
this.calendarGrid1 = new IndianHealthService.ClinicalScheduling.CalendarGrid();
this.ctxCalendarGrid = new System.Windows.Forms.ContextMenu();
this.ctxCalGridAdd = new System.Windows.Forms.MenuItem();
this.ctxCalGridMkRadAppt = new System.Windows.Forms.MenuItem();
@ -275,7 +276,6 @@ namespace IndianHealthService.ClinicalScheduling
this.statusBar1 = new System.Windows.Forms.StatusBar();
this.splitter1 = new System.Windows.Forms.Splitter();
this.splitter2 = new System.Windows.Forms.Splitter();
this.calendarGrid1 = new IndianHealthService.ClinicalScheduling.CalendarGrid();
this.panelRight.SuspendLayout();
this.panelClip.SuspendLayout();
this.panelTop.SuspendLayout();
@ -879,6 +879,35 @@ namespace IndianHealthService.ClinicalScheduling
this.panelCenter.Size = new System.Drawing.Size(857, 344);
this.panelCenter.TabIndex = 7;
//
// calendarGrid1
//
this.calendarGrid1.AllowDrop = true;
this.calendarGrid1.Appointments = null;
this.calendarGrid1.ApptDragSource = null;
this.calendarGrid1.AutoScroll = true;
this.calendarGrid1.AutoScrollMinSize = new System.Drawing.Size(600, 1898);
this.calendarGrid1.AvailabilityArray = null;
this.calendarGrid1.BackColor = System.Drawing.SystemColors.Window;
this.calendarGrid1.Columns = 5;
this.calendarGrid1.ContextMenu = this.ctxCalendarGrid;
this.calendarGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
this.calendarGrid1.DrawWalkIns = true;
this.calendarGrid1.GridBackColor = null;
this.calendarGrid1.GridEnter = false;
this.calendarGrid1.Location = new System.Drawing.Point(0, 0);
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, 344);
this.calendarGrid1.StartDate = new System.DateTime(2003, 1, 27, 0, 0, 0, 0);
this.calendarGrid1.TabIndex = 0;
this.calendarGrid1.TimeScale = 20;
this.calendarGrid1.CGAppointmentChanged += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentChanged);
this.calendarGrid1.CGAppointmentAdded += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentAdded);
this.calendarGrid1.CGSelectionChanged += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGSelectionChangedHandler(this.calendarGrid1_CGSelectionChanged);
this.calendarGrid1.DoubleClick += new System.EventHandler(this.calendarGrid1_DoubleClick);
this.calendarGrid1.MouseEnter += new System.EventHandler(this.calendarGrid1_MouseEnter);
//
// ctxCalendarGrid
//
this.ctxCalendarGrid.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
@ -1014,35 +1043,6 @@ namespace IndianHealthService.ClinicalScheduling
this.splitter2.TabIndex = 10;
this.splitter2.TabStop = false;
//
// calendarGrid1
//
this.calendarGrid1.AllowDrop = true;
this.calendarGrid1.Appointments = null;
this.calendarGrid1.ApptDragSource = null;
this.calendarGrid1.AutoScroll = true;
this.calendarGrid1.AutoScrollMinSize = new System.Drawing.Size(600, 1898);
this.calendarGrid1.AvailabilityArray = null;
this.calendarGrid1.BackColor = System.Drawing.SystemColors.Window;
this.calendarGrid1.Columns = 5;
this.calendarGrid1.ContextMenu = this.ctxCalendarGrid;
this.calendarGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
this.calendarGrid1.DrawWalkIns = true;
this.calendarGrid1.GridBackColor = null;
this.calendarGrid1.GridEnter = false;
this.calendarGrid1.Location = new System.Drawing.Point(0, 0);
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, 344);
this.calendarGrid1.StartDate = new System.DateTime(2003, 1, 27, 0, 0, 0, 0);
this.calendarGrid1.TabIndex = 0;
this.calendarGrid1.TimeScale = 20;
this.calendarGrid1.CGAppointmentChanged += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentChanged);
this.calendarGrid1.CGAppointmentAdded += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGAppointmentChangedHandler(this.calendarGrid1_CGAppointmentAdded);
this.calendarGrid1.CGSelectionChanged += new IndianHealthService.ClinicalScheduling.CalendarGrid.CGSelectionChangedHandler(this.calendarGrid1_CGSelectionChanged);
this.calendarGrid1.DoubleClick += new System.EventHandler(this.calendarGrid1_DoubleClick);
this.calendarGrid1.MouseEnter += new System.EventHandler(this.calendarGrid1_MouseEnter);
//
// CGView
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
@ -1401,9 +1401,16 @@ namespace IndianHealthService.ClinicalScheduling
private void ctxCalendarGrid_Popup(object sender, System.EventArgs e)
{
bool bEditAppointments = (EditAppointmentEnabled() && (calendarGrid1.SelectedAppointment > 0)) ;
// 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
if (IsThisARadiologyResource())//this is a radiology resource
if (_isRadAppt)//this is a radiology resource
{
ctxCalGridAdd.Visible = false;
ctxCalGridDelete.Visible = false;
@ -1438,23 +1445,23 @@ namespace IndianHealthService.ClinicalScheduling
ctxCalGridMkRadAppt.Visible = false;
ctxCalGridCancelRadAppt.Visible = false;
}
//Toggle availability of make, edit, checkin and delete appointments
//Toggle availability of make, edit, checkin and delete appointments etc
//based on whether appropriate element is selected.
ctxCalGridAdd.Enabled = AddAppointmentEnabled();
ctxCalGridDelete.Enabled = bEditAppointments;
ctxCalGridEdit.Enabled = bEditAppointments;
ctxCalGridCheckIn.Enabled = bEditAppointments;
ctxCalGridNoShow.Enabled = NoShowEnabled();
ctxCalGridNoShowUndo.Enabled = !NoShowEnabled() && calendarGrid1.SelectedAppointment > 0;
ctxCalGridWalkin.Enabled = ctxCalGridAdd.Enabled;
ctxCalGridReprintApptSlip.Enabled = bEditAppointments;
ctxCalGridUndoCheckin.Enabled = UndoCheckinEnabled();
ctxCalGridAdd.Enabled = _addApptsEnabled && !_isRadAppt;
ctxCalGridWalkin.Enabled = _addApptsEnabled && !_isRadAppt;
ctxCalGridEdit.Enabled = _editApptsEnabled && !_isRadAppt;;
ctxCalGridDelete.Enabled = _editApptsEnabled && !_isRadAppt;
ctxCalGridCheckIn.Enabled = _editApptsEnabled && !_isRadAppt;
ctxCalGridUndoCheckin.Enabled = _undoCheckinEnabled && !_isRadAppt;
ctxCalGridNoShow.Enabled = _noShowEnabled && _editApptsEnabled;
ctxCalGridNoShowUndo.Enabled = !_noShowEnabled && _editApptsEnabled;
ctxCalGridReprintApptSlip.Enabled = _editApptsEnabled;
//if the rad ones are visible, then these apply
ctxCalGridMkRadAppt.Enabled = !bEditAppointments;
ctxCalGridCancelRadAppt.Enabled = bEditAppointments;
ctxCalGridMkRadAppt.Enabled = _isRadAppt && _addApptsEnabled;
ctxCalGridCancelRadAppt.Enabled = _isRadAppt && _editApptsEnabled;
}
private void ctxCalGridAdd_Click(object sender, System.EventArgs e)
@ -1639,6 +1646,9 @@ namespace IndianHealthService.ClinicalScheduling
if (bModAppts == false)
return false;
CGAvailability resultantAvail;
m_nSlots = m_Document.SlotsAvailable(dStart, dEnd, sResource, this.calendarGrid1.TimeScale, out resultantAvail);
bSlotsAvailable = (this.m_nSlots > 0);
return ((bSlotsAvailable) || (bModSchedule) || (bOverbook));
}
@ -2208,14 +2218,16 @@ namespace IndianHealthService.ClinicalScheduling
//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);
//Cancel Radiology Exam
CGDocumentManager.Current.DAL.CancelRadiologyExam(a.PatientID, a.RadiologyExamIEN.Value);
//redraw the grid to display new set of appointments after this appt was removed.
this.UpdateArrays();
RaiseRPMSEvent("BSDX SCHEDULE", a.Resource);
}
/// <summary>
@ -2629,77 +2641,107 @@ namespace IndianHealthService.ClinicalScheduling
/// </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)
try
{
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);
//Get Slots
CGAvailability resultantAvail;
m_nSlots = m_Document.SlotsAvailable(dStart, dEnd, sResource, this.calendarGrid1.TimeScale, out resultantAvail);
if (m_nSlots < 1)
{
DialogResult dr = MessageBox.Show(this, "There are no slots available at the selected time. Do you want to overbook this appointment?", "Clinical Scheduling", MessageBoxButtons.YesNo);
if (dr != DialogResult.Yes)
{
return;
}
}
//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;
//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);
//Save Radiology Exam Schedule Info to Radiology Package
CGDocumentManager.Current.DAL.ScheduleRadiologyExam(DFN, _examien, dStart);
//Print Appointment Slip if requested
if (_radform.PrintAppointmentSlip) this.PrintAppointmentSlip(appt);
//Now redraw the grid to display the new appointments
this.UpdateArrays();
//Raise event to other clients
RaiseRPMSEvent("BSDX SCHEDULE", appt.Resource);
}
catch (Exception ex)
{
string msg;
if (BMXNetLib.Piece(ex.Message, "~", 1) == "-10") // -10 means that BSDXAPI reported an error.
msg = BMXNetLib.Piece(ex.Message, "~", 4);
else
msg = ex.Message;
MessageBox.Show("VISTA says: \r\n" + msg, "Unable to Make Appointment");
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();
}

View File

@ -36,7 +36,7 @@
<RemoteDebugMachine>
</RemoteDebugMachine>
<StartAction>Project</StartAction>
<StartArguments>/s=172.16.16.108 /p=9250 /a=s.habiel /v=catdog.77</StartArguments>
<StartArguments>/s=172.16.16.108 /p=9250 /a=sal,123 /v=abc.123@</StartArguments>
<StartPage>
</StartPage>
<StartProgram>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\IEExec.exe</StartProgram>

View File

@ -193,7 +193,6 @@ namespace IndianHealthService.ClinicalScheduling
StringFormat sfCenter = new StringFormat();
sfCenter.Alignment = StringAlignment.Center; //for title & header
//string s = "Appointment Reminder Slip";
s = strings.ApptReminderSlip;
g.DrawString(s, fTitle, Brushes.Black, printArea, sfCenter); //title
@ -228,7 +227,8 @@ namespace IndianHealthService.ClinicalScheduling
sb.AppendLine();
sb.AppendLine(strings.ID + ":" + "\t" + appt.Patient.ID);
sb.AppendLine();
sb.AppendLine(strings.DOB + ":" + "\t" + appt.Patient.DOB.ToShortDateString());
s = appt.Patient.DOB.ToString("dd") + " " + appt.Patient.DOB.ToString("MMM") + ", " + appt.Patient.DOB.Year;
sb.AppendLine(strings.DOB + ":" + "\t" + s);
sb.AppendLine();
sb.AppendLine(strings.Age + ":" + "\t" + appt.Patient.UserFriendlyAge);
sb.AppendLine();
@ -256,7 +256,8 @@ namespace IndianHealthService.ClinicalScheduling
sb = new StringBuilder();
sb.AppendLine(strings.Clinic + ":" + "\t" + appt.Resource);
sb.AppendLine();
sb.AppendLine(strings.Date + ":" + "\t" + appt.StartTime.ToShortDateString());
s = appt.StartTime.ToString("dd") + " " + appt.StartTime.ToString("MMM") + ", " + appt.StartTime.Year;
sb.AppendLine(strings.Date + ":" + "\t" + s);
sb.AppendLine();
sb.AppendLine(strings.Day + ":" + "\t" + appt.StartTime.ToString("dddd"));
sb.AppendLine();
@ -640,7 +641,8 @@ namespace IndianHealthService.ClinicalScheduling
sb.AppendLine();
sb.AppendLine(strings.ID + ":" + "\t" + appt.Patient.ID);
sb.AppendLine();
sb.AppendLine(strings.DOB + ":" + "\t" + appt.Patient.DOB.ToShortDateString());
s = appt.Patient.DOB.ToString("dd") + " " + appt.Patient.DOB.ToString("MMM") + ", " + appt.Patient.DOB.Year;
sb.AppendLine(strings.DOB + ":" + "\t" + s);
sb.AppendLine();
sb.AppendLine(strings.Age + ":" + "\t" + appt.Patient.UserFriendlyAge);
//sb.AppendLine();

View File

@ -151,7 +151,7 @@
<value>أشهر</value>
</data>
<data name="Name" xml:space="preserve">
<value>اللأسم</value>
<value>الأسم</value>
</data>
<data name="NoInstructionsProvided" xml:space="preserve">
<value>لا تعليمات مرافقة</value>