Finally, v 1.7 to the main repo. I will delete the branch after this.
This commit merges all the BMX4 changes in the Scheduling GUI back to the main trunk.
This commit is contained in:
parent
e5e3c0a0c3
commit
c2efb1f9d8
|
@ -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.6.1.*")]
|
||||
[assembly: AssemblyVersion("1.7.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.6.1.0")]
|
||||
[assembly: AssemblyFileVersionAttribute("1.7.0.0")]
|
||||
[assembly: ComVisibleAttribute(false)]
|
||||
|
|
|
@ -653,7 +653,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
// string sSql;
|
||||
// sSql = "BSDX RAISE EVENT^" + sEvent + "^" + sParams + "^^";
|
||||
// DataTable dtAppt =m_DocManager.RPMSDataTable(sSql, "RaiseEvent");
|
||||
this.m_DocManager.ConnectInfo.RaiseEvent(sEvent, sParams, true);
|
||||
CGDocumentManager.Current.RemoteSession.EventServices.TriggerEvent(sEvent, sParams, true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -808,7 +808,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
private void AppointmentDelete()
|
||||
{
|
||||
calendarGrid1.CGToolTip.Active = false;
|
||||
string sMsg = " this access block?";
|
||||
string sMsg;
|
||||
if (calendarGrid1.SelectedAppointments.AppointmentTable.Count > 1)
|
||||
sMsg = " these access blocks?";
|
||||
|
||||
|
@ -858,7 +858,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
try
|
||||
{
|
||||
bool bLock = DocManager.ConnectInfo.bmxNetLib.Lock("^BSDXMGR", "+");
|
||||
bool bLock = CGDocumentManager.Current.RemoteSession.Lock("^BSDXMGR", "+");
|
||||
if (bLock == false)
|
||||
{
|
||||
throw new Exception("Another user is currently in Scheduling Management. Try later.");
|
||||
|
@ -871,7 +871,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
return;
|
||||
}
|
||||
bLock = DocManager.ConnectInfo.bmxNetLib.Lock("^BSDXMGR", "-");
|
||||
bLock = CGDocumentManager.Current.RemoteSession.Lock("^BSDXMGR", "-");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -946,7 +946,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
private void CGAVView_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
this.calendarGrid1.CloseGrid();
|
||||
DocManager.ConnectInfo.bmxNetLib.Lock("^BSDXRES(" + Document.ResourceID.ToString() + ")", "-");
|
||||
CGDocumentManager.Current.RemoteSession.Lock("^BSDXRES(" + Document.ResourceID.ToString() + ")", "-");
|
||||
}
|
||||
|
||||
private void calendarGrid1_CGSelectionChanged(object sender, IndianHealthService.ClinicalScheduling.CGSelectionChangedArgs e)
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
/* Main Class...:
|
||||
* Original Author: Horace Whitt
|
||||
* Current Author and Maintainer: Sam Habiel
|
||||
* License: LGPL. http://www.gnu.org/licenses/lgpl-2.1.html
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
using System.Collections;
|
||||
|
@ -5,6 +11,8 @@ using System.Data;
|
|||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using IndianHealthService.BMXNet;
|
||||
using IndianHealthService.BMXNet.WinForm;
|
||||
using IndianHealthService.BMXNet.WinForm.Configuration; //grrrr... too many namespaces here...
|
||||
using Mono.Options;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Globalization;
|
||||
|
@ -41,8 +49,6 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
//M Connection member variables
|
||||
private DataSet m_dsGlobal = null; // Holds all user data
|
||||
private BMXNetConnectInfo m_ConnectInfo = null; // Connection to VISTA object
|
||||
private BMXNetConnectInfo.BMXNetEventDelegate CDocMgrEventDelegate; // Delegate to respond to messages from VISTA. Responds to event: BMXNetConnectInfo.BMXNetEvent
|
||||
|
||||
//Custom Printing
|
||||
private Printing m_PrintingObject = null;
|
||||
|
@ -50,16 +56,9 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
#region Properties
|
||||
|
||||
/// <summary>
|
||||
/// Returns the document manager's BMXNetConnectInfo member
|
||||
/// </summary>
|
||||
public BMXNetConnectInfo ConnectInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_ConnectInfo;
|
||||
}
|
||||
}
|
||||
public WinFramework WinFramework { get; private set; } // Login Manager
|
||||
public RemoteSession RemoteSession { get; private set; } // Data Sesssion against the RPMS/VISTA server
|
||||
public RPCLogger RPCLogger { get; private set; } // Logger for RPCs
|
||||
|
||||
/// <summary>
|
||||
/// True if the current user holds the BSDXZMGR or XUPROGMODE keys in RPMS
|
||||
|
@ -152,9 +151,9 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Constructor. Does absolutely nothing at this point.
|
||||
/// Private constructor for singleton instance.
|
||||
/// </summary>
|
||||
public CGDocumentManager()
|
||||
private CGDocumentManager()
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -217,10 +216,21 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
opset.Parse(args);
|
||||
|
||||
//Init app
|
||||
bool isEverythingOkay = _current.InitializeApp();
|
||||
//Init app. Catch Login Exceptions if they happen.
|
||||
bool isEverythingOkay = false;
|
||||
try
|
||||
{
|
||||
isEverythingOkay = _current.InitializeApp();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
//if an error occurred, break out.
|
||||
MessageBox.Show("Booboo: An Error Happened: " + ex.Message);
|
||||
return; // exit application
|
||||
}
|
||||
|
||||
|
||||
//if something yucky happened, break out.
|
||||
if (!isEverythingOkay) return;
|
||||
|
||||
//Create the first empty document
|
||||
|
@ -234,7 +244,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
CGView view = new CGView();
|
||||
view.InitializeDocView(doc, _current, doc.StartDate, _current.WindowText);
|
||||
|
||||
//Handle BMX Event
|
||||
//Handle Message Queue
|
||||
Application.DoEvents();
|
||||
|
||||
//test
|
||||
|
@ -294,30 +304,28 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
}// here application terminates
|
||||
|
||||
#region BMXNet Event Handler
|
||||
private void CDocMgrEventHandler(Object obj, BMXNet.BMXNetEventArgs e)
|
||||
private void CDocMgrEventHandler(Object obj, RemoteEventArgs e)
|
||||
{
|
||||
if (e.BMXEvent == "BSDX CALL WORKSTATIONS")
|
||||
if (e.EventType == "BSDX CALL WORKSTATIONS")
|
||||
{
|
||||
string sParam = "";
|
||||
string sDelim="~";
|
||||
sParam += this.m_ConnectInfo.UserName + sDelim;
|
||||
sParam += this.RemoteSession.User.Name + sDelim;
|
||||
sParam += this.m_sHandle + sDelim;
|
||||
sParam += Application.ProductVersion + sDelim;
|
||||
sParam += this._views.Count.ToString();
|
||||
_current.m_ConnectInfo.RaiseEvent("BSDX WORKSTATION REPORT", sParam, true);
|
||||
_current.RemoteSession.EventServices.TriggerEvent("BSDX WORKSTATION REPORT", sParam, true);
|
||||
}
|
||||
if (e.BMXEvent == "BSDX ADMIN MESSAGE")
|
||||
if (e.EventType == "BSDX ADMIN MESSAGE")
|
||||
{
|
||||
string sMsg = e.BMXParam;
|
||||
string sMsg = e.EventType;
|
||||
ShowAdminMsgDelegate samd = new ShowAdminMsgDelegate(ShowAdminMsg);
|
||||
//this.Invoke(samd, new object [] {sMsg});
|
||||
samd.Invoke(sMsg);
|
||||
}
|
||||
if (e.BMXEvent == "BSDX ADMIN SHUTDOWN")
|
||||
if (e.EventType == "BSDX ADMIN SHUTDOWN")
|
||||
{
|
||||
string sMsg = e.BMXParam;
|
||||
string sMsg = e.Details;
|
||||
CloseAllDelegate cad = new CloseAllDelegate(CloseAll);
|
||||
//this.Invoke(cad, new object [] {sMsg});
|
||||
cad.Invoke(sMsg);
|
||||
}
|
||||
}
|
||||
|
@ -352,38 +360,132 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
/// If so, display a dialog to collect access and verify codes.</param>
|
||||
private bool InitializeApp(bool bReLogin)
|
||||
{
|
||||
//Set M connection info
|
||||
m_ConnectInfo = new BMXNetConnectInfo(m_Encoding); // Encoding is "" unless passed in command line
|
||||
_dal = new DAL(m_ConnectInfo); // Data access layer
|
||||
//m_ConnectInfo.bmxNetLib.StartLog(); //This line turns on logging of messages
|
||||
//Note: There are 2 splashes -- one for being the parent of the log in forms
|
||||
// the next is invoked async and updated async while the GUI is loading
|
||||
// The reason is b/c an async form cannot be the parent of another that lies on the main thread
|
||||
|
||||
RPCLogger = new RPCLogger();
|
||||
|
||||
DSplash firstSplash = new DSplash();
|
||||
|
||||
firstSplash.Show();
|
||||
|
||||
/* IMPORTANT NOTE
|
||||
* LOGIN CODE IS COPIED ALMOST VERBATIM FROM THE SCHEMABUILDER APPLICAITON;
|
||||
* THE ONLY ONE I CAN FIND WHICH RELIES ON BMX 4 NEW WAYS WHICH I CAN'T FIGURE OUT
|
||||
*/
|
||||
LoginProcess login;
|
||||
this.WinFramework = WinFramework.CreateWithNetworkBroker(true, RPCLogger);
|
||||
|
||||
if (bReLogin) // if logging in again...
|
||||
{
|
||||
this.WinFramework.LoadConnectionSpecs(LocalPersistentStore.CreateDefaultStorage(true), "BSDX");
|
||||
login = this.WinFramework.CreateLoginProcess();
|
||||
login.AttemptUserInputLogin("Clincal Scheduling Log-in", 3, true, firstSplash);
|
||||
goto DoneTrying;
|
||||
}
|
||||
|
||||
// If server,port,ac,vc are supplied on command line, then try to connect...
|
||||
else if (!String.IsNullOrEmpty(m_Server) && m_Port != 0 && !String.IsNullOrEmpty(m_AccessCode) && !String.IsNullOrEmpty(m_VerifyCode))
|
||||
{
|
||||
RpmsConnectionSpec spec = new RpmsConnectionSpec();
|
||||
spec.IsDefault = true;
|
||||
spec.Name = "Command Line Server";
|
||||
spec.Port = m_Port;
|
||||
spec.Server = m_Server;
|
||||
spec.UseWindowsAuthentication = false; //for now
|
||||
spec.UseDefaultNamespace = true; //for now
|
||||
login = this.WinFramework.CreateLoginProcess();
|
||||
login.AutoSetDivisionToLastLookup = false;
|
||||
login.AttemptAccessVerifyLogin(spec, m_AccessCode, m_VerifyCode);
|
||||
goto DoneTrying;
|
||||
}
|
||||
|
||||
// if only server, port is supplied, then use these instead
|
||||
else if (!String.IsNullOrEmpty(m_Server) && m_Port != 0)
|
||||
{
|
||||
RpmsConnectionSpec spec = new RpmsConnectionSpec();
|
||||
spec.IsDefault = true;
|
||||
spec.Name = "Command Line Server";
|
||||
spec.Port = m_Port;
|
||||
spec.Server = m_Server;
|
||||
spec.UseWindowsAuthentication = false; //for now
|
||||
spec.UseDefaultNamespace = true; //for now
|
||||
|
||||
RpmsConnectionSettings cxnSettings = new RpmsConnectionSettings
|
||||
{
|
||||
CommandLineConnectionSpec = spec
|
||||
};
|
||||
|
||||
this.WinFramework.ConnectionSettings = cxnSettings;
|
||||
|
||||
login = this.WinFramework.CreateLoginProcess();
|
||||
login.AutoSetDivisionToLastLookup = false;
|
||||
//test
|
||||
//spec.UseWindowsAuthentication = true;
|
||||
login.AttemptUserInputLogin("Clinical Scheduling Log-in", 3, false, firstSplash);
|
||||
//login.AttemptWindowsAuthLogin();
|
||||
//test
|
||||
goto DoneTrying;
|
||||
}
|
||||
|
||||
// if nothing is supplied, fall back on the original dialog
|
||||
else
|
||||
{
|
||||
this.WinFramework.LoadConnectionSpecs(LocalPersistentStore.CreateDefaultStorage(true), "BSDX");
|
||||
login = this.WinFramework.CreateLoginProcess();
|
||||
login.AutoSetDivisionToLastLookup = false;
|
||||
login.AttemptUserInputLogin("Clincal Scheduling Log-in", 3, true, firstSplash);
|
||||
|
||||
goto DoneTrying;
|
||||
}
|
||||
|
||||
DoneTrying:
|
||||
if (!login.WasSuccessful)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
LocalSession local = this.WinFramework.LocalSession;
|
||||
|
||||
if ((this.WinFramework.Context.User.Division == null) && !this.WinFramework.AttemptUserInputSetDivision("Set Initial Division", firstSplash))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.RemoteSession = this.WinFramework.PrimaryRemoteSession;
|
||||
|
||||
//Create a delegate to process events raised by BMX.
|
||||
CDocMgrEventDelegate = new BMXNetConnectInfo.BMXNetEventDelegate(CDocMgrEventHandler);
|
||||
//Tie delegate to Events generated by BMX.
|
||||
m_ConnectInfo.BMXNetEvent += CDocMgrEventDelegate;
|
||||
//Disable polling (But does this really work???? I don't see how it gets disabled)
|
||||
m_ConnectInfo.EventPollingEnabled = false;
|
||||
this.RemoteSession.EventServices.RpmsEvent += this.CDocMgrEventHandler;
|
||||
//Disable polling
|
||||
this.RemoteSession.EventServices.IsEventPollingEnabled = false;
|
||||
|
||||
//Second splash screens
|
||||
//Show a splash screen while initializing; define delegates to remote thread
|
||||
DSplash m_ds = new DSplash();
|
||||
DSplash.dSetStatus setStatusDelegate = new DSplash.dSetStatus(m_ds.SetStatus);
|
||||
DSplash.dAny closeSplashDelegate = new DSplash.dAny(m_ds.RemoteClose);
|
||||
DSplash.dProgressBarSet setMaxProgressDelegate = new DSplash.dProgressBarSet(m_ds.RemoteProgressBarMaxSet);
|
||||
DSplash.dProgressBarSet setProgressDelegate = new DSplash.dProgressBarSet(m_ds.RemoteProgressBarValueSet);
|
||||
DSplash secondSplash = new DSplash();
|
||||
DSplash.dSetStatus setStatusDelegate = new DSplash.dSetStatus(secondSplash.SetStatus);
|
||||
DSplash.dAny closeSplashDelegate = new DSplash.dAny(secondSplash.RemoteClose);
|
||||
DSplash.dProgressBarSet setMaxProgressDelegate = new DSplash.dProgressBarSet(secondSplash.RemoteProgressBarMaxSet);
|
||||
DSplash.dProgressBarSet setProgressDelegate = new DSplash.dProgressBarSet(secondSplash.RemoteProgressBarValueSet);
|
||||
|
||||
//Start new thread for the Splash screen.
|
||||
Thread threadSplash = new Thread(new ParameterizedThreadStart(frm => ((DSplash)frm).ShowDialog()));
|
||||
threadSplash.IsBackground = true; //expendable thread -- exit even if still running.
|
||||
threadSplash.Name = "Splash Thread";
|
||||
threadSplash.Start(m_ds); // pass form as parameter.
|
||||
threadSplash.Start(secondSplash);
|
||||
|
||||
firstSplash.Close(); // close temporary splash now that the new one is up and running
|
||||
|
||||
//There are 21 steps to load the application. That's max for the progress bar.
|
||||
setMaxProgressDelegate(21);
|
||||
|
||||
// smh--not used: System.Configuration.ConfigurationManager.GetSection("appSettings");
|
||||
|
||||
setStatusDelegate("Connecting to VISTA");
|
||||
|
||||
|
||||
/*
|
||||
//Try to connect using supplied values for Server and Port
|
||||
//Why am I doing this? The library BMX net uses prompts for access and verify code
|
||||
//whether you can connect or not. Not good. So I test first whether
|
||||
|
@ -461,9 +563,10 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
}
|
||||
}
|
||||
}while (bRetry == true);
|
||||
*/
|
||||
|
||||
//Printing
|
||||
|
||||
//Printing Custom DLL. Perfect place for code injection!!!
|
||||
//*************************************************
|
||||
string DllLocation = string.Empty;
|
||||
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Application.StartupPath + @"\Printing\");
|
||||
if (di.Exists)
|
||||
|
@ -494,7 +597,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
}
|
||||
this.m_PrintingObject = Creator.PrintFactory();
|
||||
}
|
||||
|
||||
//************************************************
|
||||
|
||||
//User Interface Culture (m_CultureName is set from the command line flag /culture)
|
||||
//
|
||||
|
@ -511,6 +614,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
|
||||
}
|
||||
|
||||
_dal = new DAL(RemoteSession); // Data access layer
|
||||
|
||||
//Create global dataset
|
||||
_current.m_dsGlobal = new DataSet("GlobalDataSet");
|
||||
|
||||
|
@ -552,25 +657,27 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
// Call #2
|
||||
setProgressDelegate(2);
|
||||
setStatusDelegate("Setting encoding...");
|
||||
|
||||
//PORT TODO: Set encoding
|
||||
if (m_Encoding == String.Empty)
|
||||
{
|
||||
string utf8_server_support = m_ConnectInfo.bmxNetLib.TransmitRPC("BMX UTF-8", "");
|
||||
string utf8_server_support = RemoteSession.TransmitRPC("BMX UTF-8", "");
|
||||
|
||||
if (utf8_server_support == "1")
|
||||
m_ConnectInfo.bmxNetLib.Encoder = System.Text.UTF8Encoding.UTF8;
|
||||
RemoteSession.ConnectionEncoding = System.Text.UTF8Encoding.UTF8;
|
||||
|
||||
}
|
||||
|
||||
//Set application context
|
||||
// Call #3
|
||||
setProgressDelegate(3);
|
||||
setStatusDelegate("Setting Application Context to BSDXRPC...");
|
||||
m_ConnectInfo.AppContext = "BSDXRPC";
|
||||
RemoteSession.AppContext = "BSDXRPC";
|
||||
|
||||
//User Preferences Object
|
||||
setProgressDelegate(4); //next number is 6 b/c two calls
|
||||
setStatusDelegate("Getting User Preferences from the Server...");
|
||||
|
||||
_current.UserPreferences = new UserPreferences(); // Does the calling to do that...
|
||||
_current.UserPreferences = new UserPreferences(); // Constructor Does the calling to do that...
|
||||
|
||||
//Load global recordsets
|
||||
string statusConst = "Loading VistA data tables...";
|
||||
|
@ -582,7 +689,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
// Table #4
|
||||
setProgressDelegate(6);
|
||||
setStatusDelegate(statusConst + " Schedule User");
|
||||
DataTable dtUser = _dal.GetUserInfo(m_ConnectInfo.DUZ);
|
||||
DataTable dtUser = _dal.GetUserInfo(RemoteSession.User.Duz);
|
||||
dtUser.TableName = "SchedulingUser";
|
||||
m_dsGlobal.Tables.Add(dtUser);
|
||||
Debug.Assert(dtUser.Rows.Count == 1);
|
||||
|
@ -597,9 +704,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
// Table #5
|
||||
setProgressDelegate(7);
|
||||
setStatusDelegate(statusConst + " Access Types");
|
||||
DataTable dtAccessTypes = _dal.GetAccessTypes();
|
||||
dtAccessTypes.TableName = "AccessTypes";
|
||||
m_dsGlobal.Tables.Add(dtAccessTypes);
|
||||
DataTable dtAccessTypes = _dal.GetAccessTypes(m_dsGlobal, "AccessTypes");
|
||||
|
||||
//Get Access Groups
|
||||
// Table #6
|
||||
|
@ -679,7 +784,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
setStatusDelegate(statusConst + " Clinics");
|
||||
//cmd.CommandText = "SELECT BMXIEN 'HOSPITAL_LOCATION_ID', NAME 'HOSPITAL_LOCATION', DEFAULT_PROVIDER, STOP_CODE_NUMBER, INACTIVATE_DATE, REACTIVATE_DATE FROM HOSPITAL_LOCATION";
|
||||
sCommandText = "BSDX HOSPITAL LOCATION";
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "HospitalLocation", m_dsGlobal);
|
||||
RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "HospitalLocation");
|
||||
Debug.Write("LoadGlobalRecordsets -- HospitalLocation loaded\n");
|
||||
|
||||
//Build Primary Key for HospitalLocation table
|
||||
|
@ -731,7 +836,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
setProgressDelegate(16);
|
||||
setStatusDelegate(statusConst + " Providers");
|
||||
sCommandText = "SELECT BMXIEN, NAME FROM NEW_PERSON WHERE INACTIVE_DATE = '' AND BMXIEN > 1";
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "Provider", m_dsGlobal);
|
||||
RemoteSession.TableFromSQL(sCommandText, m_dsGlobal, "Provider");
|
||||
Debug.Write("LoadGlobalRecordsets -- Provider loaded\n");
|
||||
|
||||
//Build the HOLIDAY table
|
||||
|
@ -739,7 +844,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
setProgressDelegate(17);
|
||||
setStatusDelegate(statusConst + " Holiday");
|
||||
sCommandText = "SELECT NAME, DATE FROM HOLIDAY WHERE INTERNAL[DATE] > '" + FMDateTime.Create(DateTime.Today).DateOnly.FMDateString + "'";
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "HOLIDAY", m_dsGlobal);
|
||||
RemoteSession.TableFromSQL(sCommandText, m_dsGlobal, "HOLIDAY");
|
||||
Debug.Write("LoadingGlobalRecordsets -- Holidays loaded\n");
|
||||
|
||||
|
||||
|
@ -748,29 +853,31 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//----------------------------------------------
|
||||
|
||||
setStatusDelegate("Setting Receive Timeout");
|
||||
_current.m_ConnectInfo.ReceiveTimeout = 30000; //30-second timeout
|
||||
_current.RemoteSession.ReceiveTimeout = 30000; //30-second timeout
|
||||
|
||||
#if DEBUG
|
||||
_current.m_ConnectInfo.ReceiveTimeout = 600000; //longer timeout for debugging
|
||||
_current.RemoteSession.ReceiveTimeout = 600000; //longer timeout for debugging
|
||||
#endif
|
||||
// Event Subsriptions
|
||||
setStatusDelegate("Subscribing to Server Events");
|
||||
//Table #16
|
||||
setProgressDelegate(18);
|
||||
_current.m_ConnectInfo.SubscribeEvent("BSDX SCHEDULE");
|
||||
_current.RemoteSession.EventServices.Subscribe("BSDX SCHEDULE");
|
||||
//Table #17
|
||||
setProgressDelegate(19);
|
||||
_current.m_ConnectInfo.SubscribeEvent("BSDX CALL WORKSTATIONS");
|
||||
_current.RemoteSession.EventServices.Subscribe("BSDX CALL WORKSTATIONS");
|
||||
//Table #18
|
||||
setProgressDelegate(20);
|
||||
_current.m_ConnectInfo.SubscribeEvent("BSDX ADMIN MESSAGE");
|
||||
_current.RemoteSession.EventServices.Subscribe("BSDX ADMIN MESSAGE");
|
||||
//Table #19
|
||||
setProgressDelegate(21);
|
||||
_current.m_ConnectInfo.SubscribeEvent("BSDX ADMIN SHUTDOWN");
|
||||
_current.RemoteSession.EventServices.Subscribe("BSDX ADMIN SHUTDOWN");
|
||||
|
||||
_current.m_ConnectInfo.EventPollingInterval = 5000; //in milliseconds
|
||||
_current.m_ConnectInfo.EventPollingEnabled = true;
|
||||
_current.m_ConnectInfo.AutoFire = 12; //AutoFire every 12*5 seconds
|
||||
_current.RemoteSession.EventServices.EventPollingInterval = 5000; //in milliseconds
|
||||
_current.RemoteSession.EventServices.IsEventPollingEnabled = true;
|
||||
|
||||
//PORT TODO: No Autofire in BMX 4.0
|
||||
//_current.RemoteSession.EventServices. = 12; //AutoFire every 12*5 seconds
|
||||
|
||||
//Close Splash Screen
|
||||
closeSplashDelegate();
|
||||
|
@ -784,21 +891,21 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
public void LoadAccessGroupsTable()
|
||||
{
|
||||
string sCommandText = "SELECT * FROM BSDX_ACCESS_GROUP";
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "AccessGroup", m_dsGlobal);
|
||||
RemoteSession.TableFromSQL(sCommandText, m_dsGlobal, "AccessGroup");
|
||||
Debug.Write("LoadGlobalRecordsets -- AccessGroups loaded\n");
|
||||
}
|
||||
|
||||
public void LoadAccessGroupTypesTable()
|
||||
{
|
||||
string sCommandText = "BSDX GET ACCESS GROUP TYPES";
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "AccessGroupType", m_dsGlobal);
|
||||
RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "AccessGroupType");
|
||||
Debug.Write("LoadGlobalRecordsets -- AccessGroupTypes loaded\n");
|
||||
}
|
||||
|
||||
public void LoadBSDXResourcesTable()
|
||||
{
|
||||
string sCommandText = "BSDX RESOURCES^" + m_ConnectInfo.DUZ;
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "Resources", m_dsGlobal);
|
||||
string sCommandText = "BSDX RESOURCES^" + RemoteSession.User.Duz;
|
||||
RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "Resources");
|
||||
Debug.Write("LoadGlobalRecordsets -- Resources loaded\n");
|
||||
}
|
||||
|
||||
|
@ -808,8 +915,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//Table "ResourceGroup" contains all resource group names
|
||||
//to which user has access
|
||||
//Fields are: RESOURCE_GROUPID, RESOURCE_GROUP
|
||||
string sCommandText = "BSDX RESOURCE GROUPS BY USER^" + m_ConnectInfo.DUZ;
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "ResourceGroup", m_dsGlobal);
|
||||
string sCommandText = "BSDX RESOURCE GROUPS BY USER^" + RemoteSession.User.Duz;
|
||||
RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "ResourceGroup");
|
||||
Debug.Write("LoadGlobalRecordsets -- ResourceGroup loaded\n");
|
||||
}
|
||||
|
||||
|
@ -820,8 +927,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//If user has BSDXZMGR or XUPROGMODE keys, then ALL Group/Resource combinstions
|
||||
//are returned.
|
||||
//Fields are: RESOURCE_GROUPID, RESOURCE_GROUP, RESOURCE_GROUP_ITEMID, RESOURCE_NAME, RESOURCE_ID
|
||||
string sCommandText = "BSDX GROUP RESOURCE^" + m_ConnectInfo.DUZ;
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "GroupResources", m_dsGlobal);
|
||||
string sCommandText = "BSDX GROUP RESOURCE^" + RemoteSession.User.Duz;
|
||||
RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "GroupResources");
|
||||
Debug.Write("LoadGlobalRecordsets -- GroupResources loaded\n");
|
||||
}
|
||||
|
||||
|
@ -830,7 +937,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//Table "ScheduleUser" contains an entry for each user in File 200 (NEW PERSON)
|
||||
//who possesses the BSDXZMENU security key.
|
||||
string sCommandText = "BSDX SCHEDULE USER";
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "ScheduleUser", m_dsGlobal);
|
||||
RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "ScheduleUser");
|
||||
Debug.Write("LoadGlobalRecordsets -- ScheduleUser loaded\n");
|
||||
}
|
||||
|
||||
|
@ -849,10 +956,10 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
if (!bAllUsers)
|
||||
{
|
||||
sCommandText += String.Format(" WHERE INTERNAL[USERNAME] = {0}", m_ConnectInfo.DUZ);
|
||||
sCommandText += String.Format(" WHERE INTERNAL[USERNAME] = {0}", RemoteSession.User.Duz);
|
||||
}
|
||||
|
||||
ConnectInfo.RPMSDataTable(sCommandText, "ResourceUser", m_dsGlobal);
|
||||
RemoteSession.TableFromSQL(sCommandText, m_dsGlobal, "ResourceUser");
|
||||
Debug.Write("LoadGlobalRecordsets -- ResourceUser loaded\n");
|
||||
}
|
||||
|
||||
|
@ -967,9 +1074,9 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//If no documents left, then close RPMS connection & exit the application
|
||||
if ((Views.Count == 0)&&(this.AvailabilityViews.Count == 0)&&(m_bExitOK == true))
|
||||
{
|
||||
m_ConnectInfo.EventPollingEnabled = false;
|
||||
m_ConnectInfo.UnSubscribeEvent("BSDX SCHEDULE");
|
||||
m_ConnectInfo.CloseConnection();
|
||||
RemoteSession.EventServices.IsEventPollingEnabled = false;
|
||||
RemoteSession.EventServices.Unsubscribe("BSDX SCHEDULE");
|
||||
RemoteSession.Close();
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
|
@ -982,7 +1089,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//If no documents left, then close RPMS connection & exit the application
|
||||
if ((Views.Count == 0)&&(this.AvailabilityViews.Count == 0)&&(m_bExitOK == true))
|
||||
{
|
||||
m_ConnectInfo.bmxNetLib.CloseConnection();
|
||||
RemoteSession.Close();
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
|
@ -1122,9 +1229,9 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
m_bExitOK = true;
|
||||
|
||||
//Used in Do loop
|
||||
bool bRetry = true;
|
||||
//bool bRetry = true;
|
||||
|
||||
// Do Loop to deal with changing the server and the vagaries of user choices.
|
||||
/*// Do Loop to deal with changing the server and the vagaries of user choices.
|
||||
do
|
||||
{
|
||||
try
|
||||
|
@ -1133,7 +1240,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//It only changes the saved server information in the %APPDATA% folder
|
||||
//so it can be re-used when BMX tries to log in again.
|
||||
//Access and Verify code are prompted for in InitializeApp
|
||||
m_ConnectInfo.ChangeServerInfo();
|
||||
LoginProcess login = this.WinFramework.CreateLoginProcess();
|
||||
login.AttemptUserInputLogin("ReLog-in", 3, true, null);
|
||||
bRetry = false;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -1156,6 +1264,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
}
|
||||
}
|
||||
} while (bRetry == true);
|
||||
*/
|
||||
|
||||
//Parameter for initialize app tells it that this is a re-login and forces a new access and verify code.
|
||||
bool isEverythingOkay = this.InitializeApp(true);
|
||||
|
@ -1193,6 +1302,9 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
/// <param name="e">not used</param>
|
||||
private void mnuRPMSLogin_Click(object sender, EventArgs e)
|
||||
{
|
||||
mnuRPMSServer_Click(sender, e);
|
||||
|
||||
/* v 1.7 to support BMX 4 -- commented out -- smh
|
||||
//Warn that changing login will close all schedules
|
||||
if (MessageBox.Show("Are you sure you want to close all schedules and login to VistA?", "Clinical Scheduling", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
|
||||
return;
|
||||
|
@ -1206,6 +1318,24 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
CloseAll();
|
||||
m_bExitOK = true;
|
||||
|
||||
LoginProcess login = this.WinFramework.CreateLoginProcess();
|
||||
login.AttemptUserInputLogin("Clincal Scheduling", 3, true, null);
|
||||
//m_ConnectInfo.bmxNetLib.StartLog(); //This line turns on logging of messages
|
||||
|
||||
if (!login.WasSuccessful)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LocalSession local = this.WinFramework.LocalSession;
|
||||
|
||||
if ((this.WinFramework.Context.User.Division == null) && !this.WinFramework.AttemptUserInputSetDivision("Set Initial Division", null))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.RemoteSession = this.WinFramework.PrimaryRemoteSession;
|
||||
|
||||
//Parameter for initialize app tells it that this is a re-login and forces a new access and verify code.
|
||||
bool isEverythingOkay = this.InitializeApp(true);
|
||||
|
||||
|
@ -1232,7 +1362,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
throw ex;
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
delegate void CloseAllDelegate(string sMsg);
|
||||
|
@ -1289,9 +1419,11 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
try
|
||||
{
|
||||
//System.IntPtr pHandle = this.Handle;
|
||||
RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(ConnectInfo.RPMSDataTable);
|
||||
RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(RemoteSession.TableFromCommand);
|
||||
//dtOut = (DataTable) this.Invoke(rdtd, new object[] {sSQL, sTableName});
|
||||
dtOut = rdtd.Invoke(sSQL, sTableName);
|
||||
dtOut = RemoteSession.TableFromCommand(sSQL);
|
||||
dtOut.TableName = sTableName;
|
||||
|
||||
}
|
||||
|
||||
catch (Exception ex)
|
||||
|
@ -1306,7 +1438,10 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
public void ChangeDivision(System.Windows.Forms.Form frmCaller)
|
||||
{
|
||||
this.ConnectInfo.ChangeDivision(frmCaller);
|
||||
WinFramework.AttemptUserInputSetDivision("Change Division", frmCaller);
|
||||
|
||||
RemoteSession = WinFramework.PrimaryRemoteSession;
|
||||
|
||||
foreach (CGView v in _views.Keys)
|
||||
{
|
||||
v.InitializeDocView(v.Document.DocName);
|
||||
|
|
|
@ -113,6 +113,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
private MenuItem mnuUndoCheckin;
|
||||
private MenuItem sepApptMenu3;
|
||||
private MenuItem mnuReprintApptSlip;
|
||||
private MenuItem mnuViewBrokerLog;
|
||||
private IContainer components;
|
||||
|
||||
#region Initialization
|
||||
|
@ -131,11 +132,11 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
public void InitializeDocView(string sText)
|
||||
{
|
||||
this.Text = this.DocManager.ConnectInfo.UserName;
|
||||
this.Text = CGDocumentManager.Current.RemoteSession.User.Name;
|
||||
if (sText != null)
|
||||
this.Text += " - " + sText;
|
||||
if (DocManager.ConnectInfo.DivisionName != null)
|
||||
this.Text += " - " + DocManager.ConnectInfo.DivisionName;
|
||||
if (CGDocumentManager.Current.RemoteSession.User.Division.Name != null)
|
||||
this.Text += " - " + CGDocumentManager.Current.RemoteSession.User.Division.Name;
|
||||
}
|
||||
|
||||
public void InitializeDocView(CGDocument doc,
|
||||
|
@ -156,19 +157,15 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
|
||||
// Set username and division up top
|
||||
this.Text = this.DocManager.ConnectInfo.UserName;
|
||||
this.Text = CGDocumentManager.Current.RemoteSession.User.Name;
|
||||
if (sText != null)
|
||||
this.Text += " - " + sText;
|
||||
if (DocManager.ConnectInfo.DivisionName != null)
|
||||
this.Text += " - " + DocManager.ConnectInfo.DivisionName;
|
||||
if (CGDocumentManager.Current.RemoteSession.User.Division.Name != null)
|
||||
this.Text += " - " + CGDocumentManager.Current.RemoteSession.User.Division.Name;
|
||||
|
||||
this.m_ConnectInfo = m_DocManager.ConnectInfo;
|
||||
m_bmxDelegate = new BMXNetConnectInfo.BMXNetEventDelegate(BMXNetEventHandler);
|
||||
m_ConnectInfo.BMXNetEvent += m_bmxDelegate;
|
||||
CGDocumentManager.Current.RemoteSession.EventServices.RpmsEvent += BMXNetEventHandler;
|
||||
}
|
||||
|
||||
private BMXNetConnectInfo.BMXNetEventDelegate m_bmxDelegate;
|
||||
|
||||
|
||||
#endregion initialization
|
||||
|
||||
|
@ -234,6 +231,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
this.mnuRefresh = new System.Windows.Forms.MenuItem();
|
||||
this.mnuHelp = new System.Windows.Forms.MenuItem();
|
||||
this.mnuHelpAbout = new System.Windows.Forms.MenuItem();
|
||||
this.mnuViewBrokerLog = new System.Windows.Forms.MenuItem();
|
||||
this.mnuTest = new System.Windows.Forms.MenuItem();
|
||||
this.mnuTest1 = new System.Windows.Forms.MenuItem();
|
||||
this.tvSchedules = new System.Windows.Forms.TreeView();
|
||||
|
@ -679,7 +677,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//
|
||||
this.mnuHelp.Index = 3;
|
||||
this.mnuHelp.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
|
||||
this.mnuHelpAbout});
|
||||
this.mnuHelpAbout,
|
||||
this.mnuViewBrokerLog});
|
||||
this.mnuHelp.Text = "&Help";
|
||||
//
|
||||
// mnuHelpAbout
|
||||
|
@ -688,6 +687,12 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
this.mnuHelpAbout.Text = "&About";
|
||||
this.mnuHelpAbout.Click += new System.EventHandler(this.mnuHelpAbout_Click);
|
||||
//
|
||||
// mnuViewBrokerLog
|
||||
//
|
||||
this.mnuViewBrokerLog.Index = 1;
|
||||
this.mnuViewBrokerLog.Text = "&View Broker Log";
|
||||
this.mnuViewBrokerLog.Click += new System.EventHandler(this.mnuViewBrokerLog_Click);
|
||||
//
|
||||
// mnuTest
|
||||
//
|
||||
this.mnuTest.Enabled = false;
|
||||
|
@ -701,7 +706,6 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
//
|
||||
this.mnuTest1.Index = 0;
|
||||
this.mnuTest1.Text = "Test1";
|
||||
this.mnuTest1.Click += new System.EventHandler(this.mnuTest1_Click);
|
||||
//
|
||||
// tvSchedules
|
||||
//
|
||||
|
@ -711,7 +715,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
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, 392);
|
||||
this.tvSchedules.Size = new System.Drawing.Size(128, 389);
|
||||
this.tvSchedules.Sorted = true;
|
||||
this.tvSchedules.TabIndex = 1;
|
||||
this.tvSchedules.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tvSchedules_AfterSelect);
|
||||
|
@ -780,7 +784,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, 392);
|
||||
this.panelRight.Size = new System.Drawing.Size(128, 389);
|
||||
this.panelRight.TabIndex = 3;
|
||||
this.panelRight.Visible = false;
|
||||
//
|
||||
|
@ -876,38 +880,9 @@ 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, 344);
|
||||
this.panelCenter.Size = new System.Drawing.Size(857, 341);
|
||||
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[] {
|
||||
|
@ -1012,7 +987,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, 368);
|
||||
this.panelBottom.Location = new System.Drawing.Point(136, 365);
|
||||
this.panelBottom.Name = "panelBottom";
|
||||
this.panelBottom.Size = new System.Drawing.Size(857, 24);
|
||||
this.panelBottom.TabIndex = 8;
|
||||
|
@ -1030,7 +1005,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, 368);
|
||||
this.splitter1.Size = new System.Drawing.Size(8, 365);
|
||||
this.splitter1.TabIndex = 9;
|
||||
this.splitter1.TabStop = false;
|
||||
//
|
||||
|
@ -1039,14 +1014,43 @@ 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, 368);
|
||||
this.splitter2.Size = new System.Drawing.Size(3, 365);
|
||||
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, 341);
|
||||
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);
|
||||
this.ClientSize = new System.Drawing.Size(1124, 392);
|
||||
this.ClientSize = new System.Drawing.Size(1124, 389);
|
||||
this.Controls.Add(this.panelCenter);
|
||||
this.Controls.Add(this.panelBottom);
|
||||
this.Controls.Add(this.splitter2);
|
||||
|
@ -1085,8 +1089,6 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
private Hashtable m_htOverbook;
|
||||
private Hashtable m_htModifySchedule;
|
||||
private Hashtable m_htChangeAppts;
|
||||
private BMXNetConnectInfo m_ConnectInfo = null;
|
||||
public BMXNetConnectInfo.BMXNetEventDelegate BMXNetEvent;
|
||||
|
||||
#endregion Fields
|
||||
|
||||
|
@ -1307,7 +1309,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
string sResource = (string) m_alSelectedTreeResourceArray[0];
|
||||
DataTable dt = this.DocManager.GlobalDataSet.Tables["ResourceUser"];
|
||||
DataView dv = new DataView(dt, "", "RESOURCENAME ASC", DataViewRowState.OriginalRows);
|
||||
string sDuz = this.DocManager.ConnectInfo.DUZ;
|
||||
string sDuz = CGDocumentManager.Current.RemoteSession.User.Duz;
|
||||
bool bModSchedule = false;
|
||||
DataRowView[] drvA = dv.FindRows(sResource);
|
||||
if (drvA.Length == 0)
|
||||
|
@ -1568,13 +1570,19 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
private bool IsThisARadiologyResource(string sResource)
|
||||
{
|
||||
//smh - change in v 1.7... if the resource is not linked to a PIMS clinic, this method fails.
|
||||
//This happens if there is just one resource that is not linked, which makes it impossible to
|
||||
//make any appointments, because this method gets called at any time a menu is opened.
|
||||
//So we change res.Field<int> to res.Field<int?>
|
||||
|
||||
// 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")
|
||||
//on hl.Field<int>("HOSPITAL_LOCATION_ID") equals res.Field<int>("HOSPITAL_LOCATION_ID") //change in 1.7
|
||||
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.
|
||||
|
@ -1765,7 +1773,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
doc.ResourceID = Convert.ToInt32(sResourceID);
|
||||
|
||||
bool bLock = DocManager.ConnectInfo.bmxNetLib.Lock("^BSDXRES(" + sResourceID + ")", "+");
|
||||
bool bLock = CGDocumentManager.Current.RemoteSession.Lock("^BSDXRES(" + sResourceID + ")", "+");
|
||||
if (bLock == false)
|
||||
{
|
||||
throw new BMXNetException("Another user is currently editing availability for this resource. Try later.");
|
||||
|
@ -1938,9 +1946,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
v.m_htChangeAppts = new Hashtable(sSelectedTreeResourceArray.Count);
|
||||
dt = this.DocManager.GlobalDataSet.Tables["ResourceUser"];
|
||||
dv = new DataView(dt, "", "RESOURCENAME ASC", DataViewRowState.OriginalRows);
|
||||
|
||||
//dv.RowFilter = "USERNAME = '" + filte_name + "'";
|
||||
dv.RowFilter = String.Format("USERNAME = '{0}'", this.DocManager.ConnectInfo.UserName.Replace("'", "''"));
|
||||
dv.RowFilter = String.Format("USERNAME = '{0}'", CGDocumentManager.Current.RemoteSession.User.Name.Replace("'", "''"));
|
||||
|
||||
for (int j=0; j < dv.Count; j++)
|
||||
{
|
||||
|
@ -2528,8 +2534,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
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);
|
||||
if (M.Piece(ex.Message, "~", 1) == "-10") // -10 means that BSDXAPI reported an error.
|
||||
msg = M.Piece(ex.Message, "~", 4);
|
||||
else
|
||||
msg = ex.Message;
|
||||
|
||||
|
@ -2639,8 +2645,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
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);
|
||||
if (M.Piece(ex.Message, "~", 1) == "-10") // -10 means that BSDXAPI reported an error.
|
||||
msg = M.Piece(ex.Message, "~", 4);
|
||||
else
|
||||
msg = ex.Message;
|
||||
|
||||
|
@ -2747,8 +2753,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
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);
|
||||
if (M.Piece(ex.Message, "~", 1) == "-10") // -10 means that BSDXAPI reported an error.
|
||||
msg = M.Piece(ex.Message, "~", 4);
|
||||
else
|
||||
msg = ex.Message;
|
||||
|
||||
|
@ -2770,7 +2776,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
/// <param name="obj">Not used</param>
|
||||
/// <param name="e">BMXEvent Args:
|
||||
/// e.BMXEvent is free text for Event Type; e.BMXParam is free text for Event Arguments</param>
|
||||
private void BMXNetEventHandler(Object obj, BMXNet.BMXNetEventArgs e)
|
||||
private void BMXNetEventHandler(Object obj, RemoteEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
@ -2778,7 +2784,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
if (this == null) return;
|
||||
|
||||
// if event is Autofire event
|
||||
if (e.BMXEvent == "BMXNet AutoFire")
|
||||
if (e.EventType == "BMXNet AutoFire")
|
||||
{
|
||||
Debug.Write("CGView caught AutoFire event.\n");
|
||||
|
||||
|
@ -2791,7 +2797,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
}
|
||||
|
||||
// if event is BSDX SCHEDULE
|
||||
else if (e.BMXEvent == "BSDX SCHEDULE")
|
||||
else if (e.EventType == "BSDX SCHEDULE")
|
||||
{
|
||||
//See if any of the resources in the event argument matches BSDX Schedule.
|
||||
//If yes, fire off the delegate
|
||||
|
@ -2799,7 +2805,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
for (int j = 0; j < m_Document.m_sResourcesArray.Count; j++)
|
||||
{
|
||||
sResourceName = m_Document.m_sResourcesArray[j].ToString();
|
||||
if (e.BMXParam == sResourceName)
|
||||
if (e.Details == sResourceName)
|
||||
{
|
||||
Debug.Write("CGView caught BSDX SCHEDULE event.\n");
|
||||
|
||||
|
@ -2867,7 +2873,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
try
|
||||
{
|
||||
//Signal RPMS to raise an event
|
||||
m_ConnectInfo.RaiseEvent(sEvent, sParams, false);
|
||||
CGDocumentManager.Current.RemoteSession.EventServices.TriggerEvent(sEvent, sParams, false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -2913,7 +2919,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
try
|
||||
{
|
||||
bool bLock = DocManager.ConnectInfo.Lock("^BSDXMGR", "+", "");
|
||||
bool bLock = CGDocumentManager.Current.RemoteSession.Lock("^BSDXMGR", "+");
|
||||
if (bLock == false)
|
||||
{
|
||||
throw new Exception("Another user is currently in Scheduling Management. Try later.");
|
||||
|
@ -2928,7 +2934,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
m_DocManager.GlobalDataSet.Tables["ResourceUser"].Clear();
|
||||
m_DocManager.LoadResourceUserTable(false);
|
||||
bLock = DocManager.ConnectInfo.bmxNetLib.Lock("^BSDXMGR", "-");
|
||||
bLock = CGDocumentManager.Current.RemoteSession.Lock("^BSDXMGR", "-");
|
||||
}
|
||||
catch (ApplicationException aex)
|
||||
{
|
||||
|
@ -3194,49 +3200,11 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
e.Node.TreeView.SelectedNode = e.Node;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Useless code now... Good place to test something.
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void mnuTest1_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
ReaderWriterLock m_rwl = this.DocManager.ConnectInfo.bmxNetLib.BMXRWL;
|
||||
try
|
||||
{
|
||||
m_rwl.AcquireWriterLock(50);
|
||||
Debug.Write("\nTest Button 1 Acquired first lock\n");
|
||||
m_rwl.AcquireWriterLock(50);
|
||||
Debug.Write("Test Button 1 Acquired second lock\n");
|
||||
this.DocManager.ViewRefresh();
|
||||
Thread.Sleep(5000);
|
||||
try
|
||||
{
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
finally
|
||||
{
|
||||
m_rwl.ReleaseWriterLock();
|
||||
Debug.Write ("Test Button 1 released first lock.\n");
|
||||
m_rwl.ReleaseWriterLock();
|
||||
Debug.Write ("Test Button 1 released second lock.\n");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.Write("Test Button 1 exception: " + ex.Message + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
private void CGView_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_ConnectInfo.BMXNetEvent -= m_bmxDelegate;
|
||||
CGDocumentManager.Current.RemoteSession.EventServices.RpmsEvent -= BMXNetEventHandler;
|
||||
this.calendarGrid1.CloseGrid();
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -3965,6 +3933,12 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
dpl.ShowDialog(this);
|
||||
}
|
||||
|
||||
private void mnuViewBrokerLog_Click(object sender, EventArgs e)
|
||||
{
|
||||
var view = new RPCLoggerView();
|
||||
view.Show();
|
||||
}
|
||||
|
||||
|
||||
}//End class
|
||||
}
|
||||
|
|
|
@ -109,6 +109,18 @@
|
|||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="BMXNET40, Version=4.0.0.1, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Release\BMXNET40.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="BMXWIN40, Version=4.0.0.1, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Release\BMXWIN40.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PrintPreview, Version=1.0.4570.15574, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Release\PrintPreview.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System">
|
||||
<Name>System</Name>
|
||||
</Reference>
|
||||
|
@ -147,6 +159,13 @@
|
|||
</Compile>
|
||||
<Compile Include="Provider.cs" />
|
||||
<Compile Include="RadiologyExam.cs" />
|
||||
<Compile Include="RPCLogger.cs" />
|
||||
<Compile Include="RPCLoggerView.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="RPCLoggerView.Designer.cs">
|
||||
<DependentUpon>RPCLoggerView.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="strings.ar.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
|
@ -431,6 +450,9 @@
|
|||
<EmbeddedResource Include="LoadingSplash.resx">
|
||||
<DependentUpon>LoadingSplash.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="RPCLoggerView.resx">
|
||||
<DependentUpon>RPCLoggerView.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="strings.ar.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>strings.ar.Designer.cs</LastGenOutput>
|
||||
|
@ -477,16 +499,6 @@
|
|||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\BMX2\BMXNet\BMXNet.csproj">
|
||||
<Project>{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}</Project>
|
||||
<Name>BMXNet</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\EnhancedPrintPreview\PrintPreview\PrintPreview.csproj">
|
||||
<Project>{9E8D433B-EFD1-4253-BD2C-C4E0DB0BFD0E}</Project>
|
||||
<Name>PrintPreview</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<RemoteDebugMachine>
|
||||
</RemoteDebugMachine>
|
||||
<StartAction>Project</StartAction>
|
||||
<StartArguments>/s=10.0.1.13 /p=9261 /a=shabiel12 /v=catdog.22</StartArguments>
|
||||
<StartArguments>/s=10.0.1.13 /p=9431 /a=shabiel12 /v=catdog.22</StartArguments>
|
||||
<StartPage>
|
||||
</StartPage>
|
||||
<StartProgram>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\IEExec.exe</StartProgram>
|
||||
|
|
|
@ -6,9 +6,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClinicalScheduling", "Clini
|
|||
{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45} = {DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PrintPreview", "..\EnhancedPrintPreview\PrintPreview\PrintPreview.csproj", "{9E8D433B-EFD1-4253-BD2C-C4E0DB0BFD0E}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IndianHealthService.BMXNet", "..\BMX4\IndianHealthService.BMXNet\IndianHealthService.BMXNet.csproj", "{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BMXNet", "..\..\BMX2\BMXNet\BMXNet.csproj", "{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IndianHealthService.BMXNet.WinForm", "..\BMX4\IndianHealthService.BMXNet.WinForm\IndianHealthService.BMXNet.WinForm.csproj", "{3B9011B5-59F4-4F6B-ADC7-54ADC6948F4D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
@ -28,6 +28,10 @@ Global
|
|||
{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3B9011B5-59F4-4F6B-ADC7-54ADC6948F4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3B9011B5-59F4-4F6B-ADC7-54ADC6948F4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3B9011B5-59F4-4F6B-ADC7-54ADC6948F4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3B9011B5-59F4-4F6B-ADC7-54ADC6948F4D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
Binary file not shown.
|
@ -15,7 +15,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
/// </summary>
|
||||
public class DAL
|
||||
{
|
||||
private BMXNetConnectInfo _thisConnection; // set in constructor
|
||||
private RemoteSession _thisConnection; // set in constructor
|
||||
|
||||
delegate DataTable RPMSDataTableDelegate(string CommandString, string TableName); // for use in calling (Sync and Async)
|
||||
delegate string TransmitRPCAsync(string RPCName, string Params); //same idea
|
||||
|
@ -24,7 +24,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
/// Constructor
|
||||
/// </summary>
|
||||
/// <param name="conn">The current connection to use</param>
|
||||
public DAL(BMXNetConnectInfo conn)
|
||||
public DAL(RemoteSession conn)
|
||||
{
|
||||
this._thisConnection = conn;
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
public DataTable GetVersion(string nmsp)
|
||||
{
|
||||
string cmd = String.Format("BMX VERSION INFO^{0}", nmsp);
|
||||
return RPMSDataTable(cmd, "");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -49,7 +49,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
public DataTable GetUserInfo(string DUZ)
|
||||
{
|
||||
string cmd = String.Format("BSDX SCHEDULING USER INFO^{0}", DUZ);
|
||||
return RPMSDataTable(cmd, "");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -64,10 +64,10 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
/// GREEN (NJ3,0), [0;6]
|
||||
/// BLUE (NJ3,0), [0;7]
|
||||
///</returns>
|
||||
public DataTable GetAccessTypes()
|
||||
public DataTable GetAccessTypes(DataSet dataSetToTakeTable, string tablename)
|
||||
{
|
||||
string sCommandText = "SELECT * FROM BSDX_ACCESS_TYPE";
|
||||
DataTable table = RPMSDataTable(sCommandText, "");
|
||||
DataTable table = _thisConnection.TableFromSQL(sCommandText, dataSetToTakeTable, tablename);
|
||||
DataColumn dcKey = table.Columns["BMXIEN"];
|
||||
DataColumn[] dcKeys = new DataColumn[1];
|
||||
dcKeys[0] = dcKey;
|
||||
|
@ -92,7 +92,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
string sBegin = FMDateTime.Create(BeginDate).DateOnly.FMDateString;
|
||||
string sEnd = FMDateTime.Create(EndDate).DateOnly.FMDateString;
|
||||
string cmd = String.Format("BSDX CLINIC LETTERS^{0}^{1}^{2}", sClinicList, sBegin, sEnd);
|
||||
return RPMSDataTable(cmd, "");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -106,7 +106,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
public DataTable GetResourceLetters(string sClinicList)
|
||||
{
|
||||
string cmd = String.Format("BSDX RESOURCE LETTERS^{0}", sClinicList);
|
||||
return RPMSDataTable(cmd, "");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -125,7 +125,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
string sBegin = FMDateTime.Create(BeginDate).DateOnly.FMDateString;
|
||||
string sEnd = FMDateTime.Create(EndDate).DateOnly.FMDateString;
|
||||
string cmd = String.Format("BSDX REBOOK CLINIC LIST^{0}^{1}^{2}", sClinicList, sBegin, sEnd);
|
||||
return RPMSDataTable(cmd, "");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -138,7 +138,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
public DataTable GetRebookedAppointments(string sApptList)
|
||||
{
|
||||
string cmd = String.Format("BSDX REBOOK LIST^{0}", sApptList);
|
||||
return RPMSDataTable(cmd, "");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -156,7 +156,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
string sBegin = FMDateTime.Create(BeginDate).DateOnly.FMDateString;
|
||||
string sEnd = FMDateTime.Create(EndDate).DateOnly.FMDateString;
|
||||
string cmd = String.Format("BSDX CANCEL CLINIC LIST^{0}^{1}^{2}", sClinicList, sBegin, sEnd);
|
||||
return RPMSDataTable(cmd, "");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -172,7 +172,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
string sBegin = FMDateTime.Create(BeginDate).DateOnly.FMDateString;
|
||||
string sEnd = FMDateTime.Create(EndDate).DateOnly.FMDateString;
|
||||
string cmd = String.Format("BSDX CANCEL AV BY DATE^{0}^{1}^{2}", sResourceID, sBegin, sEnd);
|
||||
return RPMSDataTable(cmd, "Cancelled");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -184,7 +184,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
public DataTable RemoveCheckIn(int ApptID)
|
||||
{
|
||||
string cmd = string.Format("BSDX REMOVE CHECK-IN^{0}", ApptID);
|
||||
return RPMSDataTable(cmd, "");
|
||||
return _thisConnection.TableFromCommand(cmd);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -196,7 +196,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
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, "");
|
||||
DataTable tbl = _thisConnection.TableFromCommand(cmd);
|
||||
return (from row in tbl.AsEnumerable()
|
||||
select new RadiologyExam
|
||||
{
|
||||
|
@ -217,7 +217,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
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));
|
||||
string result = _thisConnection.TransmitRPC("BSDX SCHEDULE RAD EXAM", string.Format("{0}^{1}^{2}", DFN, examIEN, fmStartDate));
|
||||
return result == "1" ? true : false;
|
||||
}
|
||||
|
||||
|
@ -229,7 +229,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
/// <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));
|
||||
string result = _thisConnection.TransmitRPC("BSDX HOLD RAD EXAM", string.Format("{0}^{1}", DFN, examIEN));
|
||||
return result == "1" ? true : false;
|
||||
}
|
||||
|
||||
|
@ -240,7 +240,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
/// <returns>true or false</returns>
|
||||
public bool CanCancelRadExam(int examIEN)
|
||||
{
|
||||
string result = _thisConnection.bmxNetLib.TransmitRPC("BSDX CAN HOLD RAD EXAM", examIEN.ToString());
|
||||
string result = _thisConnection.TransmitRPC("BSDX CAN HOLD RAD EXAM", examIEN.ToString());
|
||||
return result == "1" ? true : false;
|
||||
}
|
||||
|
||||
|
@ -255,12 +255,12 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
get
|
||||
{
|
||||
string val = _thisConnection.bmxNetLib.TransmitRPC("BSDX GET PARAM", "BSDX AUTO PRINT RS"); //1 = true; 0 = false; "" = not set
|
||||
string val = _thisConnection.TransmitRPC("BSDX GET PARAM", "BSDX AUTO PRINT RS"); //1 = true; 0 = false; "" = not set
|
||||
return val == "1" ? true : false;
|
||||
}
|
||||
set
|
||||
{
|
||||
TransmitRPCAsync _asyncTransmitter = new TransmitRPCAsync(_thisConnection.bmxNetLib.TransmitRPC);
|
||||
TransmitRPCAsync _asyncTransmitter = new TransmitRPCAsync(_thisConnection.TransmitRPC);
|
||||
// 0 = success; anything else is wrong. Not being tested here as its success is not critical to application use.
|
||||
_asyncTransmitter.BeginInvoke("BSDX SET PARAM", String.Format("{0}^{1}", "BSDX AUTO PRINT RS", value ? "1" : "0"), null, null);
|
||||
}
|
||||
|
@ -277,12 +277,12 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
get
|
||||
{
|
||||
string val = _thisConnection.bmxNetLib.TransmitRPC("BSDX GET PARAM", "BSDX AUTO PRINT AS"); //1 = true; 0 = false; "" = not set
|
||||
string val = _thisConnection.TransmitRPC("BSDX GET PARAM", "BSDX AUTO PRINT AS"); //1 = true; 0 = false; "" = not set
|
||||
return val == "1" ? true : false;
|
||||
}
|
||||
set
|
||||
{
|
||||
TransmitRPCAsync _asyncTransmitter = new TransmitRPCAsync(_thisConnection.bmxNetLib.TransmitRPC);
|
||||
TransmitRPCAsync _asyncTransmitter = new TransmitRPCAsync(_thisConnection.TransmitRPC);
|
||||
// 0 = success; anything else is wrong. Not being tested here as its success is not critical to application use.
|
||||
_asyncTransmitter.BeginInvoke("BSDX SET PARAM", String.Format("{0}^{1}", "BSDX AUTO PRINT AS", value ? "1" : "0"), null, null);
|
||||
}
|
||||
|
@ -302,12 +302,9 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
string sErrorMessage = "";
|
||||
DataTable dtOut;
|
||||
|
||||
#if TRACE
|
||||
DateTime sendTime = DateTime.Now;
|
||||
#endif
|
||||
try
|
||||
{
|
||||
RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(_thisConnection.RPMSDataTable);
|
||||
RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(_thisConnection.TableFromSQL);
|
||||
dtOut = (DataTable)rdtd.Invoke(sSQL, sTableName);
|
||||
}
|
||||
|
||||
|
@ -317,12 +314,6 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
throw ex;
|
||||
}
|
||||
|
||||
#if TRACE
|
||||
DateTime receiveTime = DateTime.Now;
|
||||
TimeSpan executionTime = receiveTime - sendTime;
|
||||
Debug.Write("RPMSDataTable Execution Time: " + executionTime.Milliseconds + " ms.\n");
|
||||
#endif
|
||||
|
||||
return dtOut;
|
||||
|
||||
}
|
||||
|
|
|
@ -139,9 +139,8 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
this.m_DocManager = docManager;
|
||||
this.m_dsGlobal = m_DocManager.GlobalDataSet;
|
||||
|
||||
MgrEventDelegate = new BMXNetConnectInfo.BMXNetEventDelegate(MgrEventHandler);
|
||||
m_DocManager.ConnectInfo.BMXNetEvent += MgrEventDelegate;
|
||||
m_DocManager.ConnectInfo.SubscribeEvent("BSDX WORKSTATION REPORT");
|
||||
m_DocManager.RemoteSession.EventServices.RpmsEvent += MgrEventHandler;
|
||||
m_DocManager.RemoteSession.EventServices.Subscribe("BSDX WORKSTATION REPORT");
|
||||
m_dtWSGrid = new DataTable("WSGrid");
|
||||
m_dtWSGrid.Columns.Add("UserName", typeof(System.String));
|
||||
m_dtWSGrid.Columns.Add("Handle", typeof(System.String));
|
||||
|
@ -1898,9 +1897,10 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
m_dsGlobal.Tables["AccessTypes"].Clear();
|
||||
m_dsGlobal.Tables["AccessGroupType"].Clear();
|
||||
DataTable dt1 = m_DocManager.DAL.GetAccessTypes();
|
||||
m_dsGlobal.Tables["AccessTypes"].Merge(dt1);
|
||||
m_dsGlobal.Tables.Add(dt1);
|
||||
//PORT TODO: This may fail.
|
||||
DataTable dt1 = m_DocManager.DAL.GetAccessTypes(m_dsGlobal, "AccessTypes");
|
||||
//m_dsGlobal.Tables["AccessTypes"].Merge(dt1); //smh -commented out for BMX4
|
||||
//m_dsGlobal.Tables.Add(dt1); //smh -commented out for BMX4
|
||||
//Fix Groups
|
||||
//m_DocManager.LoadAccessTypesTable();
|
||||
m_DocManager.LoadAccessGroupTypesTable();
|
||||
|
@ -2328,27 +2328,26 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
private void cmdWorkStationsRefresh_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
this.m_dtWSGrid.Clear();
|
||||
this.m_DocManager.ConnectInfo.RaiseEvent("BSDX CALL WORKSTATIONS", "A", true);
|
||||
this.m_DocManager.RemoteSession.EventServices.TriggerEvent("BSDX CALL WORKSTATIONS", "A", true);
|
||||
}
|
||||
|
||||
private BMXNetConnectInfo.BMXNetEventDelegate MgrEventDelegate;
|
||||
delegate void UpdateWorkstationGridDelegate(string sParam);
|
||||
|
||||
private void MgrEventHandler(Object obj, BMXNet.BMXNetEventArgs e)
|
||||
private void MgrEventHandler(Object obj, RemoteEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (e.BMXEvent == "BSDX WORKSTATION REPORT")
|
||||
if (e.EventType == "BSDX WORKSTATION REPORT")
|
||||
{
|
||||
Debug.Write("DManagement Got Workstation Report\n");
|
||||
UpdateWorkstationGridDelegate uWSGd = new UpdateWorkstationGridDelegate(UpdateWorkstationGrid);
|
||||
if (this.InvokeRequired == true) //ensures that handle is created
|
||||
{
|
||||
this.Invoke(uWSGd, new object[] { e.BMXParam });
|
||||
this.Invoke(uWSGd, new object[] { e.Details });
|
||||
}
|
||||
else
|
||||
{
|
||||
UpdateWorkstationGrid(e.BMXParam);
|
||||
UpdateWorkstationGrid(e.Details);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2362,16 +2361,16 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
string sDelim = "~";
|
||||
DataRow dr = this.m_dtWSGrid.NewRow();
|
||||
dr["UserName"] = BMXNetLib.Piece(sParam,sDelim,1);
|
||||
dr["Handle"] = BMXNetLib.Piece(sParam,sDelim,2);
|
||||
dr["Version"] = BMXNetLib.Piece(sParam,sDelim,3);
|
||||
dr["Views"] = BMXNetLib.Piece(sParam,sDelim,4);
|
||||
dr["UserName"] = M.Piece(sParam,sDelim,1);
|
||||
dr["Handle"] = M.Piece(sParam,sDelim,2);
|
||||
dr["Version"] = M.Piece(sParam,sDelim,3);
|
||||
dr["Views"] = M.Piece(sParam,sDelim,4);
|
||||
m_dtWSGrid.Rows.Add(dr);
|
||||
}
|
||||
|
||||
private void DManagement_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
m_DocManager.ConnectInfo.UnSubscribeEvent("BSDX WORKSTATION REPORT");
|
||||
CGDocumentManager.Current.RemoteSession.EventServices.Unsubscribe("BSDX WORKSTATION REPORT");
|
||||
}
|
||||
|
||||
private void cmdWorkStationsMessage_Click(object sender, System.EventArgs e)
|
||||
|
@ -2388,7 +2387,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
if (sMessage == "")
|
||||
return;
|
||||
|
||||
this.m_DocManager.ConnectInfo.RaiseEvent("BSDX ADMIN MESSAGE", sMessage, false);
|
||||
this.m_DocManager.RemoteSession.EventServices.TriggerEvent("BSDX ADMIN MESSAGE", sMessage, false);
|
||||
}
|
||||
|
||||
private void cmdWorkStationsShutdown_Click(object sender, System.EventArgs e)
|
||||
|
@ -2397,7 +2396,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
{
|
||||
return;
|
||||
}
|
||||
this.m_DocManager.ConnectInfo.RaiseEvent("BSDX ADMIN SHUTDOWN", txtSendMessage.Text, false);
|
||||
this.m_DocManager.RemoteSession.EventServices.TriggerEvent("BSDX ADMIN SHUTDOWN", txtSendMessage.Text, false);
|
||||
}
|
||||
#endregion Workstations
|
||||
|
||||
|
|
|
@ -216,7 +216,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
|
||||
// Draw Header
|
||||
|
||||
string division = CGDocumentManager.Current.ConnectInfo.DivisionName;
|
||||
string division = CGDocumentManager.Current.RemoteSession.User.Division.Name;
|
||||
int divisionStringHeight = (int)g.MeasureString(division.ToString(), fontBody, e.PageBounds.Width - (int)(10 * widthRatio) - HardMarginX).Height;
|
||||
|
||||
Rectangle headerArea = new Rectangle()
|
||||
|
@ -690,7 +690,7 @@ namespace IndianHealthService.ClinicalScheduling
|
|||
}
|
||||
|
||||
// Draw Header
|
||||
string division = CGDocumentManager.Current.ConnectInfo.DivisionName;
|
||||
string division = CGDocumentManager.Current.RemoteSession.User.Division.Name;
|
||||
int divisionStringHeight = (int)g.MeasureString(division.ToString(), fontBody, e.MarginBounds.Width).Height;
|
||||
Rectangle headerArea = new Rectangle()
|
||||
{
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
/* Written by Sam Habiel in May 2011
|
||||
* Licensed under LGPL */
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using IndianHealthService.BMXNet;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace IndianHealthService.ClinicalScheduling
|
||||
{
|
||||
/// <summary>
|
||||
/// Class to Log Calls to RPMS/VISTA back and forth. Implements BMXNet.[I]Log interaface.
|
||||
/// Logger is implemented as a Queue Collection of class EventToLog
|
||||
/// </summary>
|
||||
public class RPCLogger: Log
|
||||
{
|
||||
/// <summary>
|
||||
/// Max size of Log
|
||||
/// </summary>
|
||||
const int maxsize = 1000;
|
||||
|
||||
/// <summary>
|
||||
/// Stop Watch to keep track of time between calls.
|
||||
/// </summary>
|
||||
Stopwatch _watch;
|
||||
|
||||
/// <summary>
|
||||
/// ctor
|
||||
/// </summary>
|
||||
public RPCLogger()
|
||||
{
|
||||
_logger = new List<EventToLog>(maxsize);
|
||||
_watch = new Stopwatch();
|
||||
_watch.Start();
|
||||
}
|
||||
|
||||
public bool IsLogging { get; set; }
|
||||
|
||||
//Event to notify interested controls that we have more data
|
||||
public event EventHandler<EventToLog> HaveMoreData;
|
||||
|
||||
private List<EventToLog> _logger;
|
||||
|
||||
public List<EventToLog> Logger
|
||||
{
|
||||
get { return _logger; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Data Structure to Log
|
||||
/// </summary>
|
||||
public class EventToLog: EventArgs
|
||||
{
|
||||
public DateTime EventTime { get; set; }
|
||||
public long ElapasedTime { get; set; }
|
||||
public string Class { get; set; }
|
||||
public string Category { get; set; }
|
||||
public string Lines { get; set; }
|
||||
public Exception Exception { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return EventTime.TimeOfDay + "\t" + Category + "\t" + Class + "\t" + ElapasedTime + " ms";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Chained to Below
|
||||
/// </summary>
|
||||
public void Log(string aClass, string aCategory, params string[] lines)
|
||||
{
|
||||
Log(aClass, aCategory, null, lines);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds Log entry to queue object
|
||||
/// </summary>
|
||||
public void Log(string aClass, string aCategory, Exception anException, params string[] lines)
|
||||
{
|
||||
if (_logger.Count >= maxsize - 1) _logger.RemoveAt(_logger.Count - 1);
|
||||
|
||||
EventToLog _e = new EventToLog
|
||||
{
|
||||
EventTime = DateTime.Now,
|
||||
Class = aClass,
|
||||
Category = aCategory,
|
||||
Lines = String.Join("\r\n", lines),
|
||||
Exception = anException,
|
||||
ElapasedTime = _watch.ElapsedMilliseconds
|
||||
};
|
||||
|
||||
_logger.Add(_e);
|
||||
|
||||
_watch.Reset();
|
||||
_watch.Start();
|
||||
|
||||
//Tell subscribers to this event that we want attention!!!!
|
||||
if (HaveMoreData != null) HaveMoreData(this, _e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,99 @@
|
|||
namespace IndianHealthService.ClinicalScheduling
|
||||
{
|
||||
partial class RPCLoggerView
|
||||
{
|
||||
/// <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.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.lstRPCEvents = new System.Windows.Forms.ListBox();
|
||||
this.txtRPCEvent = new System.Windows.Forms.TextBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.lstRPCEvents);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.txtRPCEvent);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(894, 262);
|
||||
this.splitContainer1.SplitterDistance = 342;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// lstRPCEvents
|
||||
//
|
||||
this.lstRPCEvents.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.lstRPCEvents.FormattingEnabled = true;
|
||||
this.lstRPCEvents.Location = new System.Drawing.Point(0, 0);
|
||||
this.lstRPCEvents.Name = "lstRPCEvents";
|
||||
this.lstRPCEvents.Size = new System.Drawing.Size(342, 262);
|
||||
this.lstRPCEvents.TabIndex = 0;
|
||||
this.lstRPCEvents.SelectedIndexChanged += new System.EventHandler(this.lstRPCEvents_SelectedIndexChanged);
|
||||
//
|
||||
// txtRPCEvent
|
||||
//
|
||||
this.txtRPCEvent.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.txtRPCEvent.Location = new System.Drawing.Point(0, 0);
|
||||
this.txtRPCEvent.Multiline = true;
|
||||
this.txtRPCEvent.Name = "txtRPCEvent";
|
||||
this.txtRPCEvent.Size = new System.Drawing.Size(548, 262);
|
||||
this.txtRPCEvent.TabIndex = 0;
|
||||
//
|
||||
// RPCLoggerView
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(894, 262);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Name = "RPCLoggerView";
|
||||
this.Text = "BMX RPC Log View";
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.TextBox txtRPCEvent;
|
||||
private System.Windows.Forms.ListBox lstRPCEvents;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
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>
|
||||
/// This form displays the RPC Events found in RPCLogger
|
||||
/// </summary>
|
||||
public partial class RPCLoggerView : Form
|
||||
{
|
||||
public RPCLoggerView()
|
||||
{
|
||||
InitializeComponent();
|
||||
lstRPCEvents.BeginUpdate(); // Stop redrawing
|
||||
foreach (var eventItem in CGDocumentManager.Current.RPCLogger.Logger) lstRPCEvents.Items.Add(eventItem); // Add the stuff
|
||||
lstRPCEvents.EndUpdate(); // Draw Again
|
||||
|
||||
//We are interested in event HaveMoreData. Each time it happens, it means we have an extra item we need to add.
|
||||
CGDocumentManager.Current.RPCLogger.HaveMoreData += new EventHandler<RPCLogger.EventToLog>(RPCLogger_HaveMoreData);
|
||||
}
|
||||
|
||||
// Dummmy delegate for the method below to use in this.Invoke
|
||||
delegate void dAny(object s, RPCLogger.EventToLog e);
|
||||
|
||||
/// <summary>
|
||||
/// Adds the new RPC event to Listbox
|
||||
/// </summary>
|
||||
/// <param name="sender">this is the RPCLogger Object. It's not used</param>
|
||||
/// <param name="e">That's the custom logged event.</param>
|
||||
void RPCLogger_HaveMoreData(object sender, RPCLogger.EventToLog e)
|
||||
{
|
||||
if (this.InvokeRequired)
|
||||
{
|
||||
dAny d = new dAny(this.RPCLogger_HaveMoreData);
|
||||
this.Invoke(d, new object[] { sender, e });
|
||||
return;
|
||||
}
|
||||
|
||||
lstRPCEvents.Items.Add(e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Puts the text of the event in the text box
|
||||
/// </summary>
|
||||
/// <param name="sender">useless</param>
|
||||
/// <param name="e">useless</param>
|
||||
private void lstRPCEvents_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
RPCLogger.EventToLog l = lstRPCEvents.SelectedItem as RPCLogger.EventToLog;
|
||||
if (l == null) return;
|
||||
txtRPCEvent.Text = l.Lines + "\r\n" + l.Exception ?? "";
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue