CGView:
1. Drag and Dropped code made to be the same as the rest. Call Document for updating appointments, but not redraw the grid. Drag Drop does not request a refresh directly; but rather, it shoots RPMS events which when they are raised back update the grid.
2. Fixed bug in Drag and Drop where the source appointment resource is changed before passing it to Document.CreateAppointment() which saves it to the database. This causes the appointments maintained by Document to be temporarily corrupted if CreateAppointment fails during drag and drop.
3. View calls refershdocumentasync now after Document.DeleteAppointment call.
Last but not least: new version of ClinicalScheduling.exe and BMXNet23.dll (release).
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.
CGAppointments: now supports cloning.
CGDocument: Added RefreshDocumentAsync, which retrives data from the server w/o asking the grid to refersh.
CGDocumentManager: CGView.InitializeDocView does not take appointments as argument; callers are changed.
CGView: Many Changes:
- Opening a Schedule nows calls up a splash and a wait cursor while loading.
- Events coming from the server are now handled asynchronously (not on UI thread). This results in much better responsiveness.
- Appointments, Availabilities, Resources are all set in the CalendarGrid by UpdateArrays; as a centralized point of drawing the grid.
- A mistaken "feature"--stealing focus from each others windows, was removed--CalendarGrid.Focus event only fired now if the form is the Active Form. This is accomplished using GetActiveWindow() from user32.dll (a Win32 API).
LoadingSplash: Opacity removed; form resized.
- Better constructor to set default values.
- Removed OnNewDocument and used constructor plus extra arguments instead.
- Added IsRefreshNeeded method to see if we need to get data from server.
CGDocumentManager:
- Refactored OnNewDocument out (was going to use Application.Run with the CGView form as argument, that didn't work for re-logging in)
- Refactored all ChangeServer and ChangeLogin handlers b/c they got broken with previous work.
CGView:
- this.Activate now in Load to show the form if you use Application.Run(view)
- Added shortcuts for chaning Server, Login, Division
- Position the Grid when doing OpenSelectedSchedule to start at the right day.
- Used IsRefreshNeeded to selectively load the splash screen and contact the database for refresh then close splash screen in RequestRefreshGrid.
CGView:
- Refactoring for OpenSelectedSchedule. No major changes.
- Splash Screen and Wait Cursor support in RequestRefershGrid
CGDocumentManager:
- Use lambda (hurray!) for ParameterizedThreadStart
CGDocument:
- AddResource no longer updates views (they are empty at the point they added.)
- Removed unused SetDate method.
- Property SelectedDate no longer triggers updates to the database. Now you have to use RefershDocument instead.
- No longer update schedule based on value change, as this is too too too chatty.
- Update schedule based on:
-- Picking a date from the drop down
-- Leaving dateTimePicker1
-- Pressing the enter key
- Changed the parameters required for checkin.
- Removed references to PCC+ and Stop Code processing, as they don't apply in VISTA.
CGDocument:
- Changed RPC call parameters to check in an appointment (BSDX CHECKIN APPOINTMENT).
- Date passed to BSDX Checkin Appointment is now an FM Date.
- Both necessitated server side changes.
DCheckIn:
- Removed processing for PCC+ and Stop Codes.
CGDocumentManager
- Removed Clinic Stop Code table loading.
Version change from 1.1 to 1.2 in preparation for release.
Printing.cs: Addition of PrintRoutingSlip method.
CGView.cs: Handling of printing of routing slip if chosen in DCheckIn.cs
CGView.cs: New context option to re-print routing slip
DCheckIn.cs: toolTip1 to explain that routing slip will print on the default printer.
CGDocumentManager: Mickey mouse connection check to prevent prompting for access and verify if there's no connection to VISTA.
CGDocumentManager: Test SQL statement to retrieve Hospital Locations and default providers associated with them.
Remove garbage file {85FE etc}.rpt
Added the appointment dates to the printed letters.
Made more shortcuts on the main menu.
Changed version to 1.1, to be more congruous with the state of the software.
Partial Rework of Clinic Patient List report
Other reports that used Crystal don't work yet.
Fixes for Strongly typed DataTables (change the RESOURCEID from uint to int) to support table merge from untyped table.
Support for command line arguments: /s= for server /p= for port /a= for access code /v= for verify code
Only the following combinations work: none; /s and /p; /s, /p, /a, /v