Ignore:
Timestamp:
Jan 26, 2011, 6:01:39 AM (13 years ago)
Author:
Sam Habiel
Message:

New exe and dll
calendarGrid: Minor documentation updates.
CGAppointments: Object now supports Deep cloning
CGDocument:

  1. Major changes on how m_pAvArrays is handled. Now it is locked whenever it is updated or queried. Some refactoring to make sure there are no db calls during the locks so that the locks won't be expensive.
  2. Removed ClearResources, an unused method.
  3. Appointment aCopy walkin property is set to true if the appointment is a walkin. This makes sure that the grid draws it correctly between it is added to the appointment array and we fetch new data from the server.
  4. Create appointment is not responsible anymore for requesting updates from the server. All requests to update data must be done through CGView, as it is the only party interested in displaying accurate data on the grid. Just send the create appt event to the server.
  5. CheckInAppointment: Same thing. Now responsible for requesting updates from the server. Just send the checkin event to the server.

CGDocumentManager: Removed tracing. Done in BMX Library only now.
CGView:

  1. CGAppointment fetched from Document, not from the copy maintained by the calendarGrid.
  2. RefreshDocument calls before an appointment is made have been removed (need to find another way to make sure that the appointment has just not been booked). RefreshDocument & UpdateArrays are called async after appointments are made.
  3. Appointment List passed to Calendar grid is now a copy, to prevent issues with concurrent access.
  4. Message if a patient has apppointment at the same time vastly improved.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Scheduling/trunk/cs/bsdx0200GUISourceCode/CGView.cs

    r1075 r1083  
    617617            this.tvSchedules.Location = new System.Drawing.Point(0, 0);
    618618            this.tvSchedules.Name = "tvSchedules";
    619             this.tvSchedules.Size = new System.Drawing.Size(128, 332);
     619            this.tvSchedules.Size = new System.Drawing.Size(128, 290);
    620620            this.tvSchedules.Sorted = true;
    621621            this.tvSchedules.TabIndex = 1;
     
    664664            this.panelRight.Location = new System.Drawing.Point(941, 0);
    665665            this.panelRight.Name = "panelRight";
    666             this.panelRight.Size = new System.Drawing.Size(128, 332);
     666            this.panelRight.Size = new System.Drawing.Size(128, 290);
    667667            this.panelRight.TabIndex = 3;
    668668            this.panelRight.Visible = false;
     
    762762            this.panelCenter.Location = new System.Drawing.Point(136, 24);
    763763            this.panelCenter.Name = "panelCenter";
    764             this.panelCenter.Size = new System.Drawing.Size(802, 284);
     764            this.panelCenter.Size = new System.Drawing.Size(802, 242);
    765765            this.panelCenter.TabIndex = 7;
    766766            //
     
    848848            this.panelBottom.Controls.Add(this.statusBar1);
    849849            this.panelBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
    850             this.panelBottom.Location = new System.Drawing.Point(136, 308);
     850            this.panelBottom.Location = new System.Drawing.Point(136, 266);
    851851            this.panelBottom.Name = "panelBottom";
    852852            this.panelBottom.Size = new System.Drawing.Size(802, 24);
     
    866866            this.splitter1.Location = new System.Drawing.Point(128, 24);
    867867            this.splitter1.Name = "splitter1";
    868             this.splitter1.Size = new System.Drawing.Size(8, 308);
     868            this.splitter1.Size = new System.Drawing.Size(8, 266);
    869869            this.splitter1.TabIndex = 9;
    870870            this.splitter1.TabStop = false;
     
    875875            this.splitter2.Location = new System.Drawing.Point(938, 24);
    876876            this.splitter2.Name = "splitter2";
    877             this.splitter2.Size = new System.Drawing.Size(3, 308);
     877            this.splitter2.Size = new System.Drawing.Size(3, 266);
    878878            this.splitter2.TabIndex = 10;
    879879            this.splitter2.TabStop = false;
     
    903903            this.calendarGrid1.Resources = ((System.Collections.ArrayList)(resources.GetObject("calendarGrid1.Resources")));
    904904            this.calendarGrid1.SelectedAppointment = 0;
    905             this.calendarGrid1.Size = new System.Drawing.Size(802, 284);
     905            this.calendarGrid1.Size = new System.Drawing.Size(802, 242);
    906906            this.calendarGrid1.StartDate = new System.DateTime(2003, 1, 27, 0, 0, 0, 0);
    907907            this.calendarGrid1.TabIndex = 0;
     
    916916            //
    917917            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    918             this.ClientSize = new System.Drawing.Size(1069, 332);
     918            this.ClientSize = new System.Drawing.Size(1069, 290);
    919919            this.Controls.Add(this.panelCenter);
    920920            this.Controls.Add(this.panelBottom);
     
    19231923                        Debug.Assert(nApptID != 0);
    19241924
    1925                         CGAppointment a = (CGAppointment) this.Appointments.AppointmentTable[nApptID];
    1926 
     1925            //smh
     1926                        //CGAppointment a = (CGAppointment) this.Appointments.AppointmentTable[nApptID];
     1927            CGAppointment a = (CGAppointment)this.Document.Appointments.AppointmentTable[nApptID];
    19271928                        try
    19281929                        {
     
    19801981                                DateTime dtCheckIn = dlgCheckin.CheckInTime;
    19811982
    1982                                 this.Document.CheckInAppointment(nApptID, dtCheckIn);
     1983                                //Save to Database
     1984                this.Document.CheckInAppointment(nApptID, dtCheckIn);
     1985
     1986                //Tell appointment that it is checked in--smh cancel that!
     1987                //a.CheckInTime = DateTime.Now;
     1988
    19831989                //smh new code
    19841990                if (dlgCheckin.PrintRouteSlip)
     
    19861992                // end new code
    19871993
     1994                //redraw grid (would this work???)
    19881995                                this.calendarGrid1.Invalidate();
    19891996                        }
     
    20342041                                 * 8-10-05 Added overbook prompt for walkin
    20352042                                */
    2036                                 this.Document.RefreshDocument();
     2043                //SMH: Takes too long to do.
     2044                                //this.Document.RefreshDocument();
    20372045                                string sAccessType = "";
    20382046                                string sAvailabilityMessage = "";
     
    20672075                                appt.HealthRecordNumber = dPat.HealthRecordNumber;
    20682076
    2069                                 this.Document.RefreshDocument();
     2077                //smh: Takes too long
     2078                                //this.Document.RefreshDocument();
    20702079
    20712080                                //Call Document to add a walkin appointment
     
    20742083                                //Now check them in.
    20752084                                calendarGrid1.SelectedAppointment = nApptID;
    2076 
    20772085                                AppointmentCheckIn();
    20782086
    2079                                 try
    2080                                 {
    2081                                         RaiseRPMSEvent("BSDX SCHEDULE" , m_Document.DocName);
    2082                                 }
    2083                                 catch (Exception ex)
    2084                                 {
    2085                                         Debug.Write(ex.Message);
    2086                                 }
     2087                //Show the new set of appointments by calling UpdateArrays. Fetches Document's CGAppointments
     2088                this.UpdateArrays();
     2089
     2090                //Get the appointments and availabilities, async, from Server. Callback updates this thread's controls.
     2091                OnUpdateScheduleDelegate ousd = new OnUpdateScheduleDelegate(OnUpdateSchedule);
     2092                ousd.BeginInvoke(OnUpdateScheduleCallback, null);
     2093
     2094
     2095                        }
     2096                        catch (Exception ex)
     2097                        {
     2098                string msg;
     2099                if (BMXNetLib.Piece(ex.Message, "~", 1) == "-10") // -10 means that BSDXAPI reported an error.
     2100                    msg = BMXNetLib.Piece(ex.Message, "~", 4);
     2101                else
     2102                    msg = ex.Message;
     2103
     2104                MessageBox.Show("VISTA says: \r\n" + msg, "Unable to Make Walk-in Appointment");
     2105                return;
     2106                        }
     2107
     2108            try
     2109            {
     2110                RaiseRPMSEvent("BSDX SCHEDULE", m_Document.DocName);
     2111            }
     2112            catch (Exception ex)
     2113            {
     2114                Debug.Write(ex.Message);
     2115            }
    20872116                       
    2088                         }
    2089                         catch (Exception ex)
    2090                         {
    2091                                 MessageBox.Show("Unable to add walk-in appointment  " +  ex.Message, "Clinical Scheduling");
    2092                                 return;
    2093 
    2094                         }
     2117
    20952118                }
    20962119
     
    21332156                                Debug.Assert(nDuration > 0);
    21342157
    2135                                 this.Document.RefreshDocument();
     2158
     2159                //Sam: takes too long. Remove this call; deal with the issue of concurrent appointments another way.
     2160                //this.Document.RefreshDocument();
    21362161                                string sAccessType = "";
    21372162                                string sAvailabilityMessage = "";
     
    21802205                                appt.AccessTypeID = nAccessTypeID;
    21812206
    2182                                 //Call Document to add a new appointment
     2207                                //Call Document to add a new appointment. Document adds appointment to CGAppointments array.
    21832208                                this.Document.CreateAppointment(appt);
    2184                 this.Document.RefreshDocument();
    2185 
     2209
     2210                //Show the new set of appointments by calling UpdateArrays. Fetches Document's CGAppointments
     2211                this.UpdateArrays();
     2212               
     2213                //Get the appointments and availabilities, async, from Server. Callback updates this thread's controls.
     2214                OnUpdateScheduleDelegate ousd = new OnUpdateScheduleDelegate(OnUpdateSchedule);
     2215                ousd.BeginInvoke(OnUpdateScheduleCallback, null);
    21862216                        }
    21872217                        catch (Exception ex)
    2188                         {
    2189                                 MessageBox.Show("Unable to add new appointment  " +  ex.Message, "Clinical Scheduling");
     2218                        {   
     2219                string msg;
     2220                if (BMXNetLib.Piece(ex.Message, "~", 1) == "-10") // -10 means that BSDXAPI reported an error.
     2221                    msg = BMXNetLib.Piece(ex.Message, "~", 4);
     2222                else
     2223                    msg = ex.Message;
     2224
     2225                                MessageBox.Show("VISTA says: \r\n" + msg, "Unable to Make Appointment");
    21902226                                return;
    2191 
    2192                         }
     2227                        }
     2228
    21932229                        try
    21942230                        {
     
    23202356                        Debug.Assert(this.InvokeRequired == false,"CGView.UpdateArrays InvokeRequired");
    23212357            // This is where you set how the grid will look
     2358
     2359            //Create Deep copy of Availability Array
     2360            ArrayList availArrayCopy = new ArrayList();
     2361            foreach (CGAvailability av in this.m_Document.AvailabilityArray)
     2362                availArrayCopy.Add(av);
     2363
    23222364                        try
    23232365                        {
    23242366                //Tell the grid about Avails, Appts, and Resources.
    2325                 this.calendarGrid1.AvailabilityArray = this.m_Document.AvailabilityArray;
     2367                this.calendarGrid1.AvailabilityArray = availArrayCopy;
    23262368                //Appts are cloned b/c if we tie into  the class directly, we shoot off errors when we manipulate it.
    2327                 this.calendarGrid1.Appointments = (CGAppointments)this.m_Document.Appointments.Clone(); //smh new line again
     2369                this.calendarGrid1.Appointments = (CGAppointments)this.m_Document.Appointments.Clone();
    23282370                                this.calendarGrid1.Resources = this.m_Document.Resources;
    23292371                //Redraw the calendar grid
     
    31353177
    31363178       
    3137 
     3179        /// <summary>
     3180        /// Update Selection of date if user does not pick a date/time
     3181        /// </summary>
     3182        /// <param name="sender"></param>
     3183        /// <param name="e"></param>
    31383184        private void dateTimePicker1_Leave(object sender, EventArgs e)
    31393185        {
     
    31423188        }
    31433189
     3190        /// <summary>
     3191        /// Handle Selection of Date via mouse from datetimepicker dropdown
     3192        /// </summary>
     3193        /// <param name="sender"></param>
     3194        /// <param name="e"></param>
    31443195        private void dateTimePicker1_CloseUp(object sender, EventArgs e)
    31453196        {
     
    31483199        }
    31493200
     3201        /// <summary>
     3202        /// Handle Enter and Escape key on dateTimePicker
     3203        /// </summary>
     3204        /// <param name="sender"></param>
     3205        /// <param name="e"></param>
    31503206        private void dateTimePicker1_KeyPress(object sender, KeyPressEventArgs e)
    31513207        {
Note: See TracChangeset for help on using the changeset viewer.