Bumped version number to 1.5
DSplash: Changes intended to support Asynchronous invokation of Splash Screen. CGDocumentManager: Extensive changes to increase speed and invoke Splash screen async.
This commit is contained in:
parent
034801884f
commit
eaad41e08e
|
@ -27,7 +27,7 @@ using System.Runtime.InteropServices;
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
|
|
||||||
[assembly: AssemblyVersion("1.4.2.*")]
|
[assembly: AssemblyVersion("1.5.0.*")]
|
||||||
|
|
||||||
//
|
//
|
||||||
// In order to sign your assembly you must specify a key to use. Refer to the
|
// 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: AssemblyDelaySign(false)]
|
||||||
[assembly: AssemblyKeyFile("")]
|
[assembly: AssemblyKeyFile("")]
|
||||||
[assembly: AssemblyKeyName("")]
|
[assembly: AssemblyKeyName("")]
|
||||||
[assembly: AssemblyFileVersionAttribute("1.4.2.0")]
|
[assembly: AssemblyFileVersionAttribute("1.5.0.0")]
|
||||||
[assembly: ComVisibleAttribute(false)]
|
[assembly: ComVisibleAttribute(false)]
|
||||||
|
|
|
@ -429,7 +429,6 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
{
|
{
|
||||||
m_DocManager.ConnectInfo.LoadConnectInfo();
|
m_DocManager.ConnectInfo.LoadConnectInfo();
|
||||||
}
|
}
|
||||||
System.IntPtr pHandle = m_DocManager.Handle;
|
|
||||||
|
|
||||||
m_pAvArray.Clear();
|
m_pAvArray.Clear();
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ using System.Windows.Forms;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Threading;
|
||||||
using IndianHealthService.BMXNet;
|
using IndianHealthService.BMXNet;
|
||||||
using Mono.Options;
|
using Mono.Options;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
@ -10,85 +11,37 @@ using System.Runtime.InteropServices;
|
||||||
namespace IndianHealthService.ClinicalScheduling
|
namespace IndianHealthService.ClinicalScheduling
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Summary description for DocumentManager.
|
/// Main Worker. Handles sub-forms.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class CGDocumentManager : System.Windows.Forms.Form
|
public class CGDocumentManager //: System.Windows.Forms.Form
|
||||||
{
|
{
|
||||||
#region Member Variables
|
#region Member Variables
|
||||||
|
|
||||||
private static CGDocumentManager _current;
|
private static CGDocumentManager _current;
|
||||||
private Hashtable _views = new Hashtable();
|
private Hashtable _views = new Hashtable(); //Returns the list of currently opened documents
|
||||||
private Hashtable m_AVViews = new Hashtable();
|
private Hashtable m_AVViews = new Hashtable(); // List of currently opened CGAVViews
|
||||||
private string m_sWindowText = "Clinical Scheduling"; //Default Window Text
|
private string m_sWindowText = "Clinical Scheduling"; //Default Window Text
|
||||||
private bool m_bSchedManager;
|
private bool m_bSchedManager = false; // Do you have the XUPROGMODE or BSDXZMGR?
|
||||||
private bool m_bExitOK = true;
|
private bool m_bExitOK = true; // Okay to exit program? Used to control Re-logins. Default true.
|
||||||
public string m_sHandle = "0";
|
public string m_sHandle = "0"; // Not Used
|
||||||
|
|
||||||
//Connection variables
|
//Connection variables (tied to command line parameters /a /v /s /p /e)
|
||||||
private string m_AccessCode="";
|
private string m_AccessCode="";
|
||||||
private string m_VerifyCode="";
|
private string m_VerifyCode="";
|
||||||
private string m_Server="";
|
private string m_Server="";
|
||||||
private int m_Port=0;
|
private int m_Port=0;
|
||||||
|
private string m_Encoding=""; //Encoding is "" by default;
|
||||||
//Encoding string (empty by default)
|
|
||||||
private string m_Encoding="";
|
|
||||||
|
|
||||||
//Data Access Layer
|
//Data Access Layer
|
||||||
private DAL _dal = null;
|
private DAL _dal = null;
|
||||||
|
|
||||||
//M Connection member variables
|
//M Connection member variables
|
||||||
private DataSet m_dsGlobal = null;
|
private DataSet m_dsGlobal = null; // Holds all user data
|
||||||
private System.ComponentModel.IContainer components = null;
|
private BMXNetConnectInfo m_ConnectInfo = null; // Connection to VISTA object
|
||||||
private BMXNetConnectInfo m_ConnectInfo = null;
|
private BMXNetConnectInfo.BMXNetEventDelegate CDocMgrEventDelegate; // Delegate to respond to messages from VISTA. Responds to event: BMXNetConnectInfo.BMXNetEvent
|
||||||
private BMXNetConnectInfo.BMXNetEventDelegate CDocMgrEventDelegate;
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Constructor. Sets up connector, and ties BMXNet Events to function here.
|
|
||||||
/// </summary>
|
|
||||||
public CGDocumentManager()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
m_bSchedManager = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region BMXNet Event Handler
|
|
||||||
private void CDocMgrEventHandler(Object obj, BMXNet.BMXNetEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.BMXEvent == "BSDX CALL WORKSTATIONS")
|
|
||||||
{
|
|
||||||
string sParam = "";
|
|
||||||
string sDelim="~";
|
|
||||||
sParam += this.m_ConnectInfo.UserName + sDelim;
|
|
||||||
sParam += this.m_sHandle + sDelim;
|
|
||||||
sParam += Application.ProductVersion + sDelim;
|
|
||||||
sParam += this._views.Count.ToString();
|
|
||||||
_current.m_ConnectInfo.RaiseEvent("BSDX WORKSTATION REPORT", sParam, true);
|
|
||||||
}
|
|
||||||
if (e.BMXEvent == "BSDX ADMIN MESSAGE")
|
|
||||||
{
|
|
||||||
string sMsg = e.BMXParam;
|
|
||||||
ShowAdminMsgDelegate samd = new ShowAdminMsgDelegate(ShowAdminMsg);
|
|
||||||
this.Invoke(samd, new object [] {sMsg});
|
|
||||||
}
|
|
||||||
if (e.BMXEvent == "BSDX ADMIN SHUTDOWN")
|
|
||||||
{
|
|
||||||
string sMsg = e.BMXParam;
|
|
||||||
CloseAllDelegate cad = new CloseAllDelegate(CloseAll);
|
|
||||||
this.Invoke(cad, new object [] {sMsg});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delegate void ShowAdminMsgDelegate(string sMsg);
|
|
||||||
|
|
||||||
private void ShowAdminMsg(string sMsg)
|
|
||||||
{
|
|
||||||
MessageBox.Show(sMsg, "Message from Scheduling Administrator", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion BMXNet Event Handler
|
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -138,13 +91,6 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
m_dsGlobal = value;
|
m_dsGlobal = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//public BMXNetConnection ADOConnection
|
|
||||||
//{
|
|
||||||
// get
|
|
||||||
// {
|
|
||||||
// return m_ADOConnection;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the single CGDocumentManager object
|
/// Returns the single CGDocumentManager object
|
||||||
|
@ -157,6 +103,7 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the list of currently opened documents
|
/// Returns the list of currently opened documents
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -187,68 +134,166 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Methods & Events
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Clean up any resources being used.
|
/// Constructor. Does absolutely nothing at this point.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected override void Dispose( bool disposing )
|
public CGDocumentManager()
|
||||||
{
|
|
||||||
if( disposing )
|
|
||||||
{
|
|
||||||
if (m_ConnectInfo != null)
|
|
||||||
{
|
|
||||||
m_ConnectInfo.EventPollingEnabled = false;
|
|
||||||
m_ConnectInfo.UnSubscribeEvent("BSDX SCHEDULE");
|
|
||||||
m_ConnectInfo.UnSubscribeEvent("BSDX CALL WORKSTATIONS");
|
|
||||||
m_ConnectInfo.CloseConnection();
|
|
||||||
}
|
|
||||||
if (components != null)
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
base.Dispose( disposing );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private DSplash m_ds;
|
#if DEBUG
|
||||||
public void StartSplash()
|
//To write to the console
|
||||||
|
[DllImport("kernel32.dll")]
|
||||||
|
static extern bool AttachConsole(int dwProcessId);
|
||||||
|
private const int ATTACH_PARENT_PROCESS = -1;
|
||||||
|
#endif
|
||||||
|
/// <summary>
|
||||||
|
/// Main Entry Point
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="args">We accept the following Arguments:
|
||||||
|
/// /s or -s = Server ip address or name
|
||||||
|
/// /p or -p = port number (must be numeric)
|
||||||
|
/// /a or -a = Access Code
|
||||||
|
/// /v or -v = Verify Code
|
||||||
|
/// /e or -e = Encoding (name of encoding as known to windows, such as windows-1256)
|
||||||
|
/// </param>
|
||||||
|
/// <remarks>
|
||||||
|
/// Encoding decision is complex. This is the order of priority:
|
||||||
|
/// - If the M DB runs in UTF-8, that's what we are going to use.
|
||||||
|
/// - If that's not so, /e sets the default encoding. If /e is a non-existent encoding, move forward.
|
||||||
|
/// - If /e is not supplied or is not recognized, the default encoding is the Windows default Encoding for the user.
|
||||||
|
/// </remarks>
|
||||||
|
[STAThread()]
|
||||||
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
m_ds = new DSplash();
|
#if DEBUG
|
||||||
m_ds.ShowDialog();
|
// Print console messages to console if launched from console
|
||||||
|
// Note: Imported From kernel32.dll
|
||||||
|
AttachConsole(ATTACH_PARENT_PROCESS);
|
||||||
|
#endif
|
||||||
|
//Store a class instance of manager. Actual constructor does nothing.
|
||||||
|
_current = new CGDocumentManager();
|
||||||
|
|
||||||
|
//Get command line options; store in private variables
|
||||||
|
var opset = new OptionSet() {
|
||||||
|
{ "s=", s => _current.m_Server = s },
|
||||||
|
{ "p=", p => _current.m_Port = int.Parse(p) },
|
||||||
|
{ "a=", a => _current.m_AccessCode = a },
|
||||||
|
{ "v=", v => _current.m_VerifyCode = v },
|
||||||
|
{ "e=", e => _current.m_Encoding = e}
|
||||||
|
};
|
||||||
|
|
||||||
|
opset.Parse(args);
|
||||||
|
|
||||||
|
|
||||||
|
_current.InitializeApp();
|
||||||
|
|
||||||
|
//Create the first empty document
|
||||||
|
CGDocument doc = new CGDocument();
|
||||||
|
doc.DocManager = _current;
|
||||||
|
doc.OnNewDocument();
|
||||||
|
Application.DoEvents();
|
||||||
|
|
||||||
|
//Run the application
|
||||||
|
Application.Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region BMXNet Event Handler
|
||||||
|
private void CDocMgrEventHandler(Object obj, BMXNet.BMXNetEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.BMXEvent == "BSDX CALL WORKSTATIONS")
|
||||||
|
{
|
||||||
|
string sParam = "";
|
||||||
|
string sDelim="~";
|
||||||
|
sParam += this.m_ConnectInfo.UserName + sDelim;
|
||||||
|
sParam += this.m_sHandle + sDelim;
|
||||||
|
sParam += Application.ProductVersion + sDelim;
|
||||||
|
sParam += this._views.Count.ToString();
|
||||||
|
_current.m_ConnectInfo.RaiseEvent("BSDX WORKSTATION REPORT", sParam, true);
|
||||||
|
}
|
||||||
|
if (e.BMXEvent == "BSDX ADMIN MESSAGE")
|
||||||
|
{
|
||||||
|
string sMsg = e.BMXParam;
|
||||||
|
ShowAdminMsgDelegate samd = new ShowAdminMsgDelegate(ShowAdminMsg);
|
||||||
|
//this.Invoke(samd, new object [] {sMsg});
|
||||||
|
samd.Invoke(sMsg);
|
||||||
|
}
|
||||||
|
if (e.BMXEvent == "BSDX ADMIN SHUTDOWN")
|
||||||
|
{
|
||||||
|
string sMsg = e.BMXParam;
|
||||||
|
CloseAllDelegate cad = new CloseAllDelegate(CloseAll);
|
||||||
|
//this.Invoke(cad, new object [] {sMsg});
|
||||||
|
cad.Invoke(sMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate void ShowAdminMsgDelegate(string sMsg);
|
||||||
|
|
||||||
|
private void ShowAdminMsg(string sMsg)
|
||||||
|
{
|
||||||
|
MessageBox.Show(sMsg, "Message from Scheduling Administrator", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion BMXNet Event Handler
|
||||||
|
|
||||||
|
|
||||||
|
#region Methods & Events
|
||||||
|
|
||||||
|
|
||||||
|
private void StartSplash(object form)
|
||||||
|
{
|
||||||
|
((DSplash)form).ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// See InitializeApp(bool) below
|
||||||
|
/// </summary>
|
||||||
private void InitializeApp()
|
private void InitializeApp()
|
||||||
{
|
{
|
||||||
InitializeApp(false);
|
InitializeApp(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Does a million things:
|
||||||
|
/// 1. Starts Connection and displays log-in dialogs
|
||||||
|
/// 2. Starts Splash screen
|
||||||
|
/// 3. Loads data tables
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bReLogin">Is the User logging in again from a currently running instance?
|
||||||
|
/// If so, display a dialog to collect access and verify codes.</param>
|
||||||
private void InitializeApp(bool bReLogin)
|
private void InitializeApp(bool bReLogin)
|
||||||
{
|
{
|
||||||
|
//Set M connection info
|
||||||
m_ConnectInfo = new BMXNetConnectInfo(m_Encoding); // Encoding is "" unless passed in command line
|
m_ConnectInfo = new BMXNetConnectInfo(m_Encoding); // Encoding is "" unless passed in command line
|
||||||
_dal = new DAL(m_ConnectInfo); // Data access layer
|
_dal = new DAL(m_ConnectInfo); // Data access layer
|
||||||
//m_ConnectInfo.bmxNetLib.StartLog(); //This line turns on logging of messages
|
//m_ConnectInfo.bmxNetLib.StartLog(); //This line turns on logging of messages
|
||||||
|
|
||||||
|
//Create a delegate to process events raised by BMX.
|
||||||
CDocMgrEventDelegate = new BMXNetConnectInfo.BMXNetEventDelegate(CDocMgrEventHandler);
|
CDocMgrEventDelegate = new BMXNetConnectInfo.BMXNetEventDelegate(CDocMgrEventHandler);
|
||||||
|
//Tie delegate to Events generated by BMX.
|
||||||
m_ConnectInfo.BMXNetEvent += CDocMgrEventDelegate;
|
m_ConnectInfo.BMXNetEvent += CDocMgrEventDelegate;
|
||||||
|
//Disable polling (But does this really work???? I don't see how it gets disabled)
|
||||||
m_ConnectInfo.EventPollingEnabled = false;
|
m_ConnectInfo.EventPollingEnabled = false;
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//Set M connection info
|
|
||||||
//Show a splash screen while initializing
|
//Show a splash screen while initializing
|
||||||
m_ds = new DSplash();
|
DSplash m_ds = new DSplash();
|
||||||
m_ds.Show(this);
|
DSplash.dSetStatus setStatusDelegate = new DSplash.dSetStatus(m_ds.SetStatus);
|
||||||
m_ds.SetStatus("Loading Configuration Settings...");
|
DSplash.dAny closeSplashDelegate = new DSplash.dAny(m_ds.RemoteClose);
|
||||||
m_ds.Refresh();
|
DSplash.dAny hideSplashDelegate = new DSplash.dAny(m_ds.RemoteHide);
|
||||||
this.Activate();
|
|
||||||
|
Thread threadSplash = new Thread(new ParameterizedThreadStart(StartSplash));
|
||||||
|
threadSplash.IsBackground = true; //expendable -- exit even if still running.
|
||||||
|
threadSplash.Start(m_ds);
|
||||||
|
|
||||||
|
|
||||||
|
//m_ds.SetStatus("Loading Configuration Settings...");
|
||||||
|
//m_ds.Refresh();
|
||||||
|
//this.Activate();
|
||||||
// smh--not used System.Configuration.ConfigurationManager.GetSection("appSettings");
|
// smh--not used System.Configuration.ConfigurationManager.GetSection("appSettings");
|
||||||
m_ds.SetStatus("Connecting to VistA Server...");
|
setStatusDelegate("Connecting to VISTA");
|
||||||
m_ds.Refresh();
|
//m_ds.Refresh();
|
||||||
bool bRetry = true;
|
bool bRetry = true;
|
||||||
|
|
||||||
//Try to connect using supplied values for Server and Port
|
//Try to connect using supplied values for Server and Port
|
||||||
|
@ -257,6 +302,8 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
//we can connect at all by doing a simple connection and disconnect.
|
//we can connect at all by doing a simple connection and disconnect.
|
||||||
//TODO: Make this more robust by sending a TCPConnect message and seeing if you get a response.
|
//TODO: Make this more robust by sending a TCPConnect message and seeing if you get a response.
|
||||||
|
|
||||||
|
//m_ds.Refresh();
|
||||||
|
|
||||||
if (m_Server != "" && m_Port != 0)
|
if (m_Server != "" && m_Port != 0)
|
||||||
{
|
{
|
||||||
System.Net.Sockets.TcpClient tcpClient = new System.Net.Sockets.TcpClient();
|
System.Net.Sockets.TcpClient tcpClient = new System.Net.Sockets.TcpClient();
|
||||||
|
@ -270,6 +317,7 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
// login crap
|
// login crap
|
||||||
|
@ -302,7 +350,7 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
m_ds.Close();
|
//m_ds.Close();
|
||||||
if (MessageBox.Show("Unable to connect to VistA. " + ex.Message, "Clinical Scheduling", MessageBoxButtons.RetryCancel) == DialogResult.Retry)
|
if (MessageBox.Show("Unable to connect to VistA. " + ex.Message, "Clinical Scheduling", MessageBoxButtons.RetryCancel) == DialogResult.Retry)
|
||||||
{
|
{
|
||||||
bRetry = true;
|
bRetry = true;
|
||||||
|
@ -310,6 +358,7 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
closeSplashDelegate();
|
||||||
bRetry = false;
|
bRetry = false;
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
@ -320,8 +369,8 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
_current.m_dsGlobal = new DataSet("GlobalDataSet");
|
_current.m_dsGlobal = new DataSet("GlobalDataSet");
|
||||||
|
|
||||||
//Version info
|
//Version info
|
||||||
m_ds.SetStatus("Getting Version Info...");
|
//m_ds.Activate();
|
||||||
m_ds.Refresh();
|
setStatusDelegate("Getting Version Info from Server...");
|
||||||
|
|
||||||
DataTable ver = _dal.GetVersion("BSDX");
|
DataTable ver = _dal.GetVersion("BSDX");
|
||||||
ver.TableName = "VersionInfo";
|
ver.TableName = "VersionInfo";
|
||||||
|
@ -356,6 +405,8 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
|
|
||||||
|
|
||||||
//Change encoding
|
//Change encoding
|
||||||
|
setStatusDelegate("Setting encoding...");
|
||||||
|
|
||||||
if (m_Encoding == String.Empty)
|
if (m_Encoding == String.Empty)
|
||||||
{
|
{
|
||||||
string utf8_server_support = m_ConnectInfo.bmxNetLib.TransmitRPC("BMX UTF-8", "");
|
string utf8_server_support = m_ConnectInfo.bmxNetLib.TransmitRPC("BMX UTF-8", "");
|
||||||
|
@ -363,24 +414,160 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
m_ConnectInfo.bmxNetLib.Encoder = System.Text.UTF8Encoding.UTF8;
|
m_ConnectInfo.bmxNetLib.Encoder = System.Text.UTF8Encoding.UTF8;
|
||||||
}
|
}
|
||||||
//Set application context
|
//Set application context
|
||||||
m_ds.SetStatus("Setting Application Context to BSDXRPC...");
|
setStatusDelegate("Setting Application Context to BSDXRPC...");
|
||||||
m_ds.Refresh();
|
|
||||||
m_ConnectInfo.AppContext = "BSDXRPC";
|
m_ConnectInfo.AppContext = "BSDXRPC";
|
||||||
|
|
||||||
//Load global recordsets
|
//Load global recordsets
|
||||||
m_ds.SetStatus("Loading VistA data tables...");
|
string statusConst = "Loading VistA data tables...";
|
||||||
m_ds.Refresh();
|
setStatusDelegate(statusConst);
|
||||||
if (_current.LoadGlobalRecordsets() == false)
|
|
||||||
{
|
string sCommandText;
|
||||||
MessageBox.Show("Unable to create VistA recordsets"); //TODO Improve this message
|
|
||||||
m_ds.Close();
|
setStatusDelegate(statusConst + " Schedule User");
|
||||||
return;
|
//Schedule User Info
|
||||||
}
|
DataTable dtUser = _dal.GetUserInfo(m_ConnectInfo.DUZ);
|
||||||
|
dtUser.TableName = "SchedulingUser";
|
||||||
|
m_dsGlobal.Tables.Add(dtUser);
|
||||||
|
Debug.Assert(dtUser.Rows.Count == 1);
|
||||||
|
|
||||||
|
// Only one row and one column named "MANAGER". Set local var m_bSchedManager to true if Manager.
|
||||||
|
DataRow rUser = dtUser.Rows[0];
|
||||||
|
Object oUser = rUser["MANAGER"];
|
||||||
|
string sUser = oUser.ToString();
|
||||||
|
m_bSchedManager = (sUser == "YES") ? true : false;
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Access Types");
|
||||||
|
//Get Access Types
|
||||||
|
DataTable dtAccessTypes = _dal.GetAccessTypes();
|
||||||
|
dtAccessTypes.TableName = "AccessTypes";
|
||||||
|
m_dsGlobal.Tables.Add(dtAccessTypes);
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Access Groups");
|
||||||
|
//AccessGroups
|
||||||
|
LoadAccessGroupsTable();
|
||||||
|
|
||||||
|
//Build Primary Key for AccessGroup table
|
||||||
|
DataTable dtGroups = m_dsGlobal.Tables["AccessGroup"];
|
||||||
|
DataColumn dcKey = dtGroups.Columns["ACCESS_GROUP"];
|
||||||
|
DataColumn[] dcKeys = new DataColumn[1];
|
||||||
|
dcKeys[0] = dcKey;
|
||||||
|
dtGroups.PrimaryKey = dcKeys;
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Access Group Types");
|
||||||
|
//AccessGroupType
|
||||||
|
LoadAccessGroupTypesTable();
|
||||||
|
|
||||||
|
//Build Primary Key for AccessGroupType table
|
||||||
|
DataTable dtAGTypes = m_dsGlobal.Tables["AccessGroupType"];
|
||||||
|
DataColumn dcGTKey = dtAGTypes.Columns["ACCESS_GROUP_TYPEID"];
|
||||||
|
DataColumn[] dcGTKeys = new DataColumn[1];
|
||||||
|
dcGTKeys[0] = dcGTKey;
|
||||||
|
dtAGTypes.PrimaryKey = dcGTKeys;
|
||||||
|
|
||||||
|
//Build Data Relationship between AccessGroupType and AccessTypes tables
|
||||||
|
DataRelation dr = new DataRelation("AccessGroupType", //Relation Name
|
||||||
|
m_dsGlobal.Tables["AccessGroup"].Columns["BMXIEN"], //Parent
|
||||||
|
m_dsGlobal.Tables["AccessGroupType"].Columns["ACCESS_GROUP_ID"]); //Child
|
||||||
|
m_dsGlobal.Relations.Add(dr);
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Resource Groups By User");
|
||||||
|
//ResourceGroup Table (Resource Groups by User)
|
||||||
|
LoadResourceGroupTable();
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Resources By User");
|
||||||
|
//Resources by user
|
||||||
|
LoadBSDXResourcesTable();
|
||||||
|
|
||||||
|
//Build Primary Key for Resources table
|
||||||
|
DataColumn[] dc = new DataColumn[1];
|
||||||
|
dc[0] = m_dsGlobal.Tables["Resources"].Columns["RESOURCEID"];
|
||||||
|
m_dsGlobal.Tables["Resources"].PrimaryKey = dc;
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Group Resources");
|
||||||
|
//GroupResources table
|
||||||
|
LoadGroupResourcesTable();
|
||||||
|
|
||||||
|
//Build Primary Key for ResourceGroup table
|
||||||
|
dc = new DataColumn[1];
|
||||||
|
dc[0] = m_dsGlobal.Tables["ResourceGroup"].Columns["RESOURCE_GROUP"];
|
||||||
|
m_dsGlobal.Tables["ResourceGroup"].PrimaryKey = dc;
|
||||||
|
|
||||||
|
//Build Data Relationships between ResourceGroup and GroupResources tables
|
||||||
|
dr = new DataRelation("GroupResource", //Relation Name
|
||||||
|
m_dsGlobal.Tables["ResourceGroup"].Columns["RESOURCE_GROUP"], //Parent
|
||||||
|
m_dsGlobal.Tables["GroupResources"].Columns["RESOURCE_GROUP"]); //Child
|
||||||
|
CGSchedLib.OutputArray(m_dsGlobal.Tables["GroupResources"], "GroupResources");
|
||||||
|
m_dsGlobal.Relations.Add(dr);
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Clinics");
|
||||||
|
//HospitalLocation table
|
||||||
|
//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);
|
||||||
|
Debug.Write("LoadGlobalRecordsets -- HospitalLocation loaded\n");
|
||||||
|
|
||||||
|
//Build Primary Key for HospitalLocation table
|
||||||
|
dc = new DataColumn[1];
|
||||||
|
DataTable dtTemp = m_dsGlobal.Tables["HospitalLocation"];
|
||||||
|
dc[0] = dtTemp.Columns["HOSPITAL_LOCATION_ID"];
|
||||||
|
m_dsGlobal.Tables["HospitalLocation"].PrimaryKey = dc;
|
||||||
|
|
||||||
|
//Build Data Relationships between Resources and HospitalLocation tables
|
||||||
|
dr = new DataRelation("HospitalLocationResource", //Relation Name
|
||||||
|
m_dsGlobal.Tables["HospitalLocation"].Columns["HOSPITAL_LOCATION_ID"], //Parent
|
||||||
|
m_dsGlobal.Tables["Resources"].Columns["HOSPITAL_LOCATION_ID"], false); //Child
|
||||||
|
m_dsGlobal.Relations.Add(dr);
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Schedule User");
|
||||||
|
//Build ScheduleUser table
|
||||||
|
this.LoadScheduleUserTable();
|
||||||
|
|
||||||
|
//Build Primary Key for ScheduleUser table
|
||||||
|
dc = new DataColumn[1];
|
||||||
|
dtTemp = m_dsGlobal.Tables["ScheduleUser"];
|
||||||
|
dc[0] = dtTemp.Columns["USERID"];
|
||||||
|
m_dsGlobal.Tables["ScheduleUser"].PrimaryKey = dc;
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Resource User");
|
||||||
|
//Build ResourceUser table
|
||||||
|
this.LoadResourceUserTable();
|
||||||
|
|
||||||
|
//Build Primary Key for ResourceUser table
|
||||||
|
dc = new DataColumn[1];
|
||||||
|
dtTemp = m_dsGlobal.Tables["ResourceUser"];
|
||||||
|
dc[0] = dtTemp.Columns["RESOURCEUSER_ID"];
|
||||||
|
m_dsGlobal.Tables["ResourceUser"].PrimaryKey = dc;
|
||||||
|
|
||||||
|
//Create relation between BSDX Resource and BSDX Resource User tables
|
||||||
|
dr = new DataRelation("ResourceUser", //Relation Name
|
||||||
|
m_dsGlobal.Tables["Resources"].Columns["RESOURCEID"], //Parent
|
||||||
|
m_dsGlobal.Tables["ResourceUser"].Columns["RESOURCEID"]); //Child
|
||||||
|
m_dsGlobal.Relations.Add(dr);
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Providers");
|
||||||
|
//Build active provider table
|
||||||
|
sCommandText = "SELECT BMXIEN, NAME FROM NEW_PERSON WHERE INACTIVE_DATE = '' AND BMXIEN > 1";
|
||||||
|
ConnectInfo.RPMSDataTable(sCommandText, "Provider", m_dsGlobal);
|
||||||
|
Debug.Write("LoadGlobalRecordsets -- Provider loaded\n");
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Clinic Stops");
|
||||||
|
//Build the CLINIC_STOP table
|
||||||
|
// sCommandText = "SELECT BMXIEN, CODE, NAME FROM CLINIC_STOP"; //SMH
|
||||||
|
sCommandText = "SELECT BMXIEN, AMIS_REPORTING_STOP_CODE, NAME FROM CLINIC_STOP";
|
||||||
|
ConnectInfo.RPMSDataTable(sCommandText, "ClinicStop", m_dsGlobal);
|
||||||
|
Debug.Write("LoadGlobalRecordsets -- ClinicStop loaded\n");
|
||||||
|
|
||||||
|
setStatusDelegate(statusConst + " Holiday");
|
||||||
|
//Build the HOLIDAY table
|
||||||
|
sCommandText = "SELECT NAME, DATE FROM HOLIDAY WHERE DATE > '" + DateTime.Today.ToShortDateString() + "'";
|
||||||
|
ConnectInfo.RPMSDataTable(sCommandText, "HOLIDAY", m_dsGlobal);
|
||||||
|
Debug.Write("LoadingGlobalRecordsets -- Holidays loaded\n");
|
||||||
|
|
||||||
|
|
||||||
|
//Save the xml schema
|
||||||
|
//m_dsGlobal.WriteXmlSchema(@"..\..\csSchema20060526.xsd");
|
||||||
|
//----------------------------------------------
|
||||||
|
|
||||||
//smh -- why get handles?
|
|
||||||
System.IntPtr pHandle = this.Handle;
|
|
||||||
System.IntPtr pConnHandle = this.ConnectInfo.Handle;
|
|
||||||
this.m_sHandle = pHandle.ToString();
|
|
||||||
|
|
||||||
_current.m_ConnectInfo.ReceiveTimeout = 30000; //30-second timeout
|
_current.m_ConnectInfo.ReceiveTimeout = 30000; //30-second timeout
|
||||||
|
|
||||||
|
@ -396,72 +583,11 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
_current.m_ConnectInfo.EventPollingEnabled = true;
|
_current.m_ConnectInfo.EventPollingEnabled = true;
|
||||||
_current.m_ConnectInfo.AutoFire = 12; //AutoFire every 12*5 seconds
|
_current.m_ConnectInfo.AutoFire = 12; //AutoFire every 12*5 seconds
|
||||||
|
|
||||||
m_ds.Close();
|
//Close Splash Screen
|
||||||
}
|
closeSplashDelegate();
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
m_ds.Close();
|
|
||||||
Debug.Write(ex.Message);
|
|
||||||
MessageBox.Show(ex.Message + ex.StackTrace, "Clinical Scheduling Error -- Closing Application");
|
|
||||||
throw ex;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//To write to the console
|
|
||||||
[DllImport("kernel32.dll")]
|
|
||||||
static extern bool AttachConsole(int dwProcessId);
|
|
||||||
private const int ATTACH_PARENT_PROCESS = -1;
|
|
||||||
|
|
||||||
[STAThread()]
|
|
||||||
static void Main(string[] args)
|
|
||||||
{
|
|
||||||
#if DEBUG
|
|
||||||
// Print console messages to console if launched from console
|
|
||||||
// Note: Imported From kernel32.dll
|
|
||||||
AttachConsole(ATTACH_PARENT_PROCESS);
|
|
||||||
#endif
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//Store the current manager
|
|
||||||
_current = new CGDocumentManager();
|
|
||||||
|
|
||||||
//Get command line options; store in private variables
|
|
||||||
var opset = new OptionSet () {
|
|
||||||
{ "s=", s => _current.m_Server = s },
|
|
||||||
{ "p=", p => _current.m_Port = int.Parse(p) },
|
|
||||||
{ "a=", a => _current.m_AccessCode = a },
|
|
||||||
{ "v=", v => _current.m_VerifyCode = v },
|
|
||||||
{ "e=", e => _current.m_Encoding = e}
|
|
||||||
};
|
|
||||||
|
|
||||||
opset.Parse(args);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_current.InitializeApp();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Debug.Write(ex.Message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Create the first empty document
|
|
||||||
CGDocument doc = new CGDocument();
|
|
||||||
doc.DocManager = _current;
|
|
||||||
doc.OnNewDocument();
|
|
||||||
Application.DoEvents();
|
|
||||||
|
|
||||||
//Run the application
|
|
||||||
Application.Run();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Debug.Write(ex.Message);
|
|
||||||
MessageBox.Show(ex.Message + ex.StackTrace, "CGDocumentManager.Main(): Clinical Scheduling Error -- Closing Application");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void LoadAccessGroupsTable()
|
public void LoadAccessGroupsTable()
|
||||||
|
@ -528,171 +654,17 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
|
|
||||||
public void LoadResourceUserTable(bool bAllUsers)
|
public void LoadResourceUserTable(bool bAllUsers)
|
||||||
{
|
{
|
||||||
string sCommandText = "SELECT BMXIEN RESOURCEUSER_ID, RESOURCENAME, INTERNAL[RESOURCENAME] RESOURCEID, OVERBOOK, MODIFY_SCHEDULE, MODIFY_APPOINTMENTS, USERNAME, INTERNAL[USERNAME] USERID FROM BSDX_RESOURCE_USER"; // WHERE INTERNAL[INSTITUTION]=" + m_ConnectInfo.DUZ2;
|
string sCommandText = @"SELECT BMXIEN RESOURCEUSER_ID, RESOURCENAME, INTERNAL[RESOURCENAME] RESOURCEID, OVERBOOK, MODIFY_SCHEDULE, MODIFY_APPOINTMENTS, USERNAME, INTERNAL[USERNAME] USERID FROM BSDX_RESOURCE_USER"; // WHERE INTERNAL[INSTITUTION]=" + m_ConnectInfo.DUZ2;
|
||||||
|
|
||||||
|
if (!bAllUsers)
|
||||||
|
{
|
||||||
|
sCommandText += String.Format(" WHERE INTERNAL[USERNAME] = {0}", m_ConnectInfo.DUZ);
|
||||||
|
}
|
||||||
|
|
||||||
ConnectInfo.RPMSDataTable(sCommandText, "ResourceUser", m_dsGlobal);
|
ConnectInfo.RPMSDataTable(sCommandText, "ResourceUser", m_dsGlobal);
|
||||||
Debug.Write("LoadGlobalRecordsets -- ResourceUser loaded\n");
|
Debug.Write("LoadGlobalRecordsets -- ResourceUser loaded\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool LoadGlobalRecordsets()
|
|
||||||
{
|
|
||||||
|
|
||||||
string sCommandText;
|
|
||||||
|
|
||||||
//Schedule User Info
|
|
||||||
DataTable dtUser = _dal.GetUserInfo(m_ConnectInfo.DUZ);
|
|
||||||
dtUser.TableName = "SchedulingUser";
|
|
||||||
m_dsGlobal.Tables.Add(dtUser);
|
|
||||||
Debug.Assert(dtUser.Rows.Count == 1);
|
|
||||||
|
|
||||||
// Only one row and one column named "MANAGER". Set local var m_bSchedManager to true if Manager.
|
|
||||||
DataRow rUser = dtUser.Rows[0];
|
|
||||||
Object oUser = rUser["MANAGER"];
|
|
||||||
string sUser = oUser.ToString();
|
|
||||||
m_bSchedManager = (sUser == "YES")?true:false;
|
|
||||||
|
|
||||||
//Get Access Types
|
|
||||||
DataTable dtAccessTypes = _dal.GetAccessTypes();
|
|
||||||
dtAccessTypes.TableName = "AccessTypes";
|
|
||||||
m_dsGlobal.Tables.Add(dtAccessTypes);
|
|
||||||
|
|
||||||
//AccessGroups
|
|
||||||
LoadAccessGroupsTable();
|
|
||||||
|
|
||||||
//Build Primary Key for AccessGroup table
|
|
||||||
DataTable dtGroups = m_dsGlobal.Tables["AccessGroup"];
|
|
||||||
DataColumn dcKey = dtGroups.Columns["ACCESS_GROUP"];
|
|
||||||
DataColumn[] dcKeys = new DataColumn[1];
|
|
||||||
dcKeys[0] = dcKey;
|
|
||||||
dtGroups.PrimaryKey = dcKeys;
|
|
||||||
|
|
||||||
//AccessGroupType
|
|
||||||
LoadAccessGroupTypesTable();
|
|
||||||
|
|
||||||
//Build Primary Key for AccessGroupType table
|
|
||||||
DataTable dtAGTypes = m_dsGlobal.Tables["AccessGroupType"];
|
|
||||||
DataColumn dcGTKey = dtAGTypes.Columns["ACCESS_GROUP_TYPEID"];
|
|
||||||
DataColumn[] dcGTKeys = new DataColumn[1];
|
|
||||||
dcGTKeys[0] = dcGTKey;
|
|
||||||
dtAGTypes.PrimaryKey = dcGTKeys;
|
|
||||||
|
|
||||||
//Build Data Relationship between AccessGroupType and AccessTypes tables
|
|
||||||
DataRelation dr = new DataRelation("AccessGroupType", //Relation Name
|
|
||||||
m_dsGlobal.Tables["AccessGroup"].Columns["BMXIEN"], //Parent
|
|
||||||
m_dsGlobal.Tables["AccessGroupType"].Columns["ACCESS_GROUP_ID"]); //Child
|
|
||||||
m_dsGlobal.Relations.Add(dr);
|
|
||||||
|
|
||||||
//ResourceGroup Table (Resource Groups by User)
|
|
||||||
LoadResourceGroupTable();
|
|
||||||
|
|
||||||
//Resources by user
|
|
||||||
LoadBSDXResourcesTable();
|
|
||||||
|
|
||||||
//Build Primary Key for Resources table
|
|
||||||
DataColumn[] dc = new DataColumn[1];
|
|
||||||
dc[0] = m_dsGlobal.Tables["Resources"].Columns["RESOURCEID"];
|
|
||||||
m_dsGlobal.Tables["Resources"].PrimaryKey = dc;
|
|
||||||
|
|
||||||
//GroupResources table
|
|
||||||
LoadGroupResourcesTable();
|
|
||||||
|
|
||||||
//Build Primary Key for ResourceGroup table
|
|
||||||
dc = new DataColumn[1];
|
|
||||||
dc[0] = m_dsGlobal.Tables["ResourceGroup"].Columns["RESOURCE_GROUP"];
|
|
||||||
m_dsGlobal.Tables["ResourceGroup"].PrimaryKey = dc;
|
|
||||||
|
|
||||||
//Build Data Relationships between ResourceGroup and GroupResources tables
|
|
||||||
dr = new DataRelation("GroupResource", //Relation Name
|
|
||||||
m_dsGlobal.Tables["ResourceGroup"].Columns["RESOURCE_GROUP"], //Parent
|
|
||||||
m_dsGlobal.Tables["GroupResources"].Columns["RESOURCE_GROUP"]); //Child
|
|
||||||
CGSchedLib.OutputArray(m_dsGlobal.Tables["GroupResources"], "GroupResources");
|
|
||||||
m_dsGlobal.Relations.Add(dr);
|
|
||||||
|
|
||||||
//HospitalLocation table
|
|
||||||
//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);
|
|
||||||
Debug.Write("LoadGlobalRecordsets -- HospitalLocation loaded\n");
|
|
||||||
|
|
||||||
//Build Primary Key for HospitalLocation table
|
|
||||||
dc = new DataColumn[1];
|
|
||||||
DataTable dtTemp = m_dsGlobal.Tables["HospitalLocation"];
|
|
||||||
dc[0] = dtTemp.Columns["HOSPITAL_LOCATION_ID"];
|
|
||||||
m_dsGlobal.Tables["HospitalLocation"].PrimaryKey = dc;
|
|
||||||
|
|
||||||
//smh
|
|
||||||
//LoadClinicSetupTable();
|
|
||||||
|
|
||||||
//smh
|
|
||||||
//Build Primary Key for ClinicSetupParameters table
|
|
||||||
/*dc = new DataColumn[1];
|
|
||||||
dtTemp = m_dsGlobal.Tables["ClinicSetupParameters"];
|
|
||||||
dc[0] = dtTemp.Columns["HOSPITAL_LOCATION_ID"];
|
|
||||||
m_dsGlobal.Tables["ClinicSetupParameters"].PrimaryKey = dc;
|
|
||||||
|
|
||||||
//Build Data Relationships between ClinicSetupParameters and HospitalLocation tables
|
|
||||||
dr = new DataRelation("HospitalLocationClinic", //Relation Name
|
|
||||||
m_dsGlobal.Tables["HospitalLocation"].Columns["HOSPITAL_LOCATION_ID"], //Parent
|
|
||||||
m_dsGlobal.Tables["ClinicSetupParameters"].Columns["HOSPITAL_LOCATION_ID"], false); //Child
|
|
||||||
m_dsGlobal.Relations.Add(dr);*/
|
|
||||||
/*SMH
|
|
||||||
dtTemp.Columns.Add("PROVIDER", System.Type.GetType("System.String"), "Parent.DEFAULT_PROVIDER");
|
|
||||||
dtTemp.Columns.Add("CLINIC_STOP", System.Type.GetType("System.String"), "Parent.STOP_CODE_NUMBER");
|
|
||||||
dtTemp.Columns.Add("INACTIVATE_DATE", System.Type.GetType("System.String"), "Parent.INACTIVATE_DATE");
|
|
||||||
dtTemp.Columns.Add("REACTIVATE_DATE", System.Type.GetType("System.String"), "Parent.REACTIVATE_DATE");
|
|
||||||
*/
|
|
||||||
|
|
||||||
//Build Data Relationships between Resources and HospitalLocation tables
|
|
||||||
dr = new DataRelation("HospitalLocationResource", //Relation Name
|
|
||||||
m_dsGlobal.Tables["HospitalLocation"].Columns["HOSPITAL_LOCATION_ID"], //Parent
|
|
||||||
m_dsGlobal.Tables["Resources"].Columns["HOSPITAL_LOCATION_ID"], false); //Child
|
|
||||||
m_dsGlobal.Relations.Add(dr);
|
|
||||||
|
|
||||||
//Build ScheduleUser table
|
|
||||||
this.LoadScheduleUserTable();
|
|
||||||
|
|
||||||
//Build Primary Key for ScheduleUser table
|
|
||||||
dc = new DataColumn[1];
|
|
||||||
dtTemp = m_dsGlobal.Tables["ScheduleUser"];
|
|
||||||
dc[0] = dtTemp.Columns["USERID"];
|
|
||||||
m_dsGlobal.Tables["ScheduleUser"].PrimaryKey = dc;
|
|
||||||
|
|
||||||
//Build ResourceUser table
|
|
||||||
this.LoadResourceUserTable();
|
|
||||||
|
|
||||||
//Build Primary Key for ResourceUser table
|
|
||||||
dc = new DataColumn[1];
|
|
||||||
dtTemp = m_dsGlobal.Tables["ResourceUser"];
|
|
||||||
dc[0] = dtTemp.Columns["RESOURCEUSER_ID"];
|
|
||||||
m_dsGlobal.Tables["ResourceUser"].PrimaryKey = dc;
|
|
||||||
|
|
||||||
//Create relation between BSDX Resource and BSDX Resource User tables
|
|
||||||
dr = new DataRelation("ResourceUser", //Relation Name
|
|
||||||
m_dsGlobal.Tables["Resources"].Columns["RESOURCEID"], //Parent
|
|
||||||
m_dsGlobal.Tables["ResourceUser"].Columns["RESOURCEID"]); //Child
|
|
||||||
m_dsGlobal.Relations.Add(dr);
|
|
||||||
|
|
||||||
//Build active provider table
|
|
||||||
sCommandText = "SELECT BMXIEN, NAME FROM NEW_PERSON WHERE INACTIVE_DATE = '' AND BMXIEN > 1";
|
|
||||||
ConnectInfo.RPMSDataTable(sCommandText, "Provider", m_dsGlobal);
|
|
||||||
Debug.Write("LoadGlobalRecordsets -- Provider loaded\n");
|
|
||||||
|
|
||||||
//Build the CLINIC_STOP table
|
|
||||||
// sCommandText = "SELECT BMXIEN, CODE, NAME FROM CLINIC_STOP"; //SMH
|
|
||||||
sCommandText = "SELECT BMXIEN, AMIS_REPORTING_STOP_CODE, NAME FROM CLINIC_STOP";
|
|
||||||
ConnectInfo.RPMSDataTable(sCommandText, "ClinicStop", m_dsGlobal);
|
|
||||||
Debug.Write("LoadGlobalRecordsets -- ClinicStop loaded\n");
|
|
||||||
|
|
||||||
//Build the HOLIDAY table
|
|
||||||
sCommandText = "SELECT NAME, DATE FROM HOLIDAY WHERE DATE > '" + DateTime.Today.ToShortDateString() + "'";
|
|
||||||
ConnectInfo.RPMSDataTable(sCommandText, "HOLIDAY", m_dsGlobal);
|
|
||||||
Debug.Write("LoadingGlobalRecordsets -- Holidays loaded\n");
|
|
||||||
|
|
||||||
|
|
||||||
//Save the xml schema
|
|
||||||
//m_dsGlobal.WriteXmlSchema(@"..\..\csSchema20060526.xsd");
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RegisterDocumentView(CGDocument doc, CGView view)
|
public void RegisterDocumentView(CGDocument doc, CGView view)
|
||||||
{
|
{
|
||||||
|
@ -791,6 +763,11 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes view and Handles Disconnection from Database if no views are left.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
private void ViewClosed(object sender, EventArgs e)
|
private void ViewClosed(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//Remove the sender from our document list
|
//Remove the sender from our document list
|
||||||
|
@ -995,7 +972,7 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
m_bExitOK = false;
|
m_bExitOK = false;
|
||||||
CloseAll();
|
CloseAll();
|
||||||
m_bExitOK = true;
|
m_bExitOK = true;
|
||||||
_current.m_ConnectInfo = new BMXNet.BMXNetConnectInfo();
|
//_current.m_ConnectInfo = new BMXNet.BMXNetConnectInfo();//smh redundant
|
||||||
this.InitializeApp(true);
|
this.InitializeApp(true);
|
||||||
//Create a new document
|
//Create a new document
|
||||||
CGDocument doc = new CGDocument();
|
CGDocument doc = new CGDocument();
|
||||||
|
@ -1067,7 +1044,8 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
{
|
{
|
||||||
//System.IntPtr pHandle = this.Handle;
|
//System.IntPtr pHandle = this.Handle;
|
||||||
RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(ConnectInfo.RPMSDataTable);
|
RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(ConnectInfo.RPMSDataTable);
|
||||||
dtOut = (DataTable) this.Invoke(rdtd, new object[] {sSQL, sTableName});
|
//dtOut = (DataTable) this.Invoke(rdtd, new object[] {sSQL, sTableName});
|
||||||
|
dtOut = rdtd.Invoke(sSQL, sTableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -191,9 +191,7 @@
|
||||||
<Compile Include="CGDocument.cs">
|
<Compile Include="CGDocument.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="CGDocumentManager.cs">
|
<Compile Include="CGDocumentManager.cs" />
|
||||||
<SubType>Form</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="CGRange.cs" />
|
<Compile Include="CGRange.cs" />
|
||||||
<Compile Include="CGResource.cs" />
|
<Compile Include="CGResource.cs" />
|
||||||
<Compile Include="CGSchedLib.cs">
|
<Compile Include="CGSchedLib.cs">
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
<RemoteDebugMachine>
|
<RemoteDebugMachine>
|
||||||
</RemoteDebugMachine>
|
</RemoteDebugMachine>
|
||||||
<StartAction>Project</StartAction>
|
<StartAction>Project</StartAction>
|
||||||
<StartArguments>/s=172.16.16.51 /p=9250 /a=s.habiel /v=catdog.55</StartArguments>
|
<StartArguments>/s=10.161.20.25 /p=9280 /a=s.habiel /v=catdog.55</StartArguments>
|
||||||
<StartPage>
|
<StartPage>
|
||||||
</StartPage>
|
</StartPage>
|
||||||
<StartProgram>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\IEExec.exe</StartProgram>
|
<StartProgram>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\IEExec.exe</StartProgram>
|
||||||
|
|
Binary file not shown.
|
@ -12,9 +12,10 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
public class DSplash : System.Windows.Forms.Form
|
public class DSplash : System.Windows.Forms.Form
|
||||||
{
|
{
|
||||||
private System.Windows.Forms.Label label1;
|
private System.Windows.Forms.Label label1;
|
||||||
//private System.Windows.Forms.Label lblVersion;
|
|
||||||
private System.Windows.Forms.LinkLabel lnkMail;
|
private System.Windows.Forms.LinkLabel lnkMail;
|
||||||
private System.Windows.Forms.Label lblStatus;
|
private System.Windows.Forms.Label lblStatus;
|
||||||
|
private Label lblVersion;
|
||||||
|
private Label label2;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Required designer variable.
|
/// Required designer variable.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -54,19 +55,22 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DSplash));
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
this.lnkMail = new System.Windows.Forms.LinkLabel();
|
this.lnkMail = new System.Windows.Forms.LinkLabel();
|
||||||
this.lblStatus = new System.Windows.Forms.Label();
|
this.lblStatus = new System.Windows.Forms.Label();
|
||||||
|
this.lblVersion = new System.Windows.Forms.Label();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.label1.Location = new System.Drawing.Point(24, 32);
|
this.label1.Location = new System.Drawing.Point(12, 67);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(448, 40);
|
this.label1.Size = new System.Drawing.Size(464, 40);
|
||||||
this.label1.TabIndex = 0;
|
this.label1.TabIndex = 0;
|
||||||
this.label1.Text = "VistA Clinical Scheduling";
|
this.label1.Text = "Clinical Scheduling";
|
||||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
//
|
//
|
||||||
// lnkMail
|
// lnkMail
|
||||||
|
@ -79,55 +83,90 @@ namespace IndianHealthService.ClinicalScheduling
|
||||||
// lblStatus
|
// lblStatus
|
||||||
//
|
//
|
||||||
this.lblStatus.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
this.lblStatus.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||||
this.lblStatus.Location = new System.Drawing.Point(88, 160);
|
this.lblStatus.Location = new System.Drawing.Point(80, 159);
|
||||||
this.lblStatus.Name = "lblStatus";
|
this.lblStatus.Name = "lblStatus";
|
||||||
this.lblStatus.Size = new System.Drawing.Size(328, 16);
|
this.lblStatus.Size = new System.Drawing.Size(328, 16);
|
||||||
this.lblStatus.TabIndex = 3;
|
this.lblStatus.TabIndex = 3;
|
||||||
this.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
this.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
//
|
//
|
||||||
|
// lblVersion
|
||||||
|
//
|
||||||
|
this.lblVersion.AutoSize = true;
|
||||||
|
this.lblVersion.Location = new System.Drawing.Point(210, 117);
|
||||||
|
this.lblVersion.Name = "lblVersion";
|
||||||
|
this.lblVersion.Size = new System.Drawing.Size(52, 13);
|
||||||
|
this.lblVersion.TabIndex = 5;
|
||||||
|
this.lblVersion.Text = "lblVersion";
|
||||||
|
this.lblVersion.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Font = new System.Drawing.Font("Book Antiqua", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label2.Location = new System.Drawing.Point(180, 21);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(130, 46);
|
||||||
|
this.label2.TabIndex = 6;
|
||||||
|
this.label2.Text = "VISTA";
|
||||||
|
//
|
||||||
// DSplash
|
// DSplash
|
||||||
//
|
//
|
||||||
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
|
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
|
||||||
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
|
||||||
this.ClientSize = new System.Drawing.Size(488, 252);
|
this.ClientSize = new System.Drawing.Size(488, 252);
|
||||||
this.ControlBox = false;
|
this.ControlBox = false;
|
||||||
|
this.Controls.Add(this.label2);
|
||||||
|
this.Controls.Add(this.lblVersion);
|
||||||
this.Controls.Add(this.lblStatus);
|
this.Controls.Add(this.lblStatus);
|
||||||
this.Controls.Add(this.lnkMail);
|
this.Controls.Add(this.lnkMail);
|
||||||
this.Controls.Add(this.label1);
|
this.Controls.Add(this.label1);
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
this.Name = "DSplash";
|
this.Name = "DSplash";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Text = "Clinical Scheduling";
|
this.Text = "Clinical Scheduling";
|
||||||
this.Load += new System.EventHandler(this.DSplash_Load);
|
this.Load += new System.EventHandler(this.DSplash_Load);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public delegate void dSetStatus(string sStatus);
|
||||||
|
public delegate void dAny();
|
||||||
|
|
||||||
public void SetStatus(string sStatus)
|
public void SetStatus(string sStatus)
|
||||||
{
|
{
|
||||||
this.Status = sStatus;
|
if (this.InvokeRequired == true)
|
||||||
|
{
|
||||||
|
dSetStatus d = new dSetStatus(SetStatus);
|
||||||
|
this.Invoke(d, new object[] { sStatus });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.Diagnostics.Debug.Assert(this.InvokeRequired == false);
|
||||||
|
this.lblStatus.Text = sStatus;
|
||||||
|
this.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DSplash_Load(object sender, System.EventArgs e)
|
private void DSplash_Load(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
//this.lblVersion.Text = "Version " + Application.ProductVersion;
|
this.lblVersion.Text = "Version " + Application.ProductVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Properties
|
public void RemoteClose()
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the value of the Status displayed on the splash screen
|
|
||||||
/// </summary>
|
|
||||||
public String Status
|
|
||||||
{
|
{
|
||||||
get
|
dAny d = new dAny(this.Close);
|
||||||
|
this.Invoke(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoteHide()
|
||||||
{
|
{
|
||||||
return lblStatus.Text;
|
dAny d = new dAny(this.Hide);
|
||||||
}
|
this.Invoke(d);
|
||||||
set
|
|
||||||
{
|
|
||||||
lblStatus.Text = value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion Properties
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,4 +117,27 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
AAABAAIAICAQAAAAAADoAgAAJgAAABAQEAAAAAAAKAEAAA4DAAAoAAAAIAAAAEAAAAABAAQAAAAAAIAC
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/
|
||||||
|
AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIh3iI
|
||||||
|
iId4iAAAAAAAAAAACId4iIiHeIAiIiIggAAAAAAAAAAAAAgCqqqqoggAAAAAAAAAAACAKqqqqiAIAAiH
|
||||||
|
eId4iIiIAqqqqqIAAIAIh3iHeIiIgCqqqqogAACAAAAAAAAACAKqqqqiAAAAgAAAAAAAAIAqqqqqIAAA
|
||||||
|
AIAAAAAAAAgCqqqqogAAAAgAAAAAAAAAIiIiIiAAAACAAAAA////8AAAAAAAAAAIAAAAAP////8Aqqqq
|
||||||
|
IAAAgAAAAAD/iIj/gCqqqqIACAAAAAAA/4iI/4gCqqqqIIAAAAAAAP//////8AAAAAgAAAAAAAD/////
|
||||||
|
//+IiIiPAAAAAAAA/4iI/4iI/4iI/wAAAAAAAP+IiP+IiP+IiP8AAAAAAAD/////////////AAAAAAAA
|
||||||
|
/////////////wAAAAAAAP+IiP+IiP+IiP8AAAAAAAD/iIj/iIj/iIj/AAAAAAAA/////////////wAA
|
||||||
|
AAAAAP////////////8AAAAAAERERERERERERERERAAAAABEREREREREREREREQAAAAARERERERERERE
|
||||||
|
REREAAAAAERERERERERERERERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////
|
||||||
|
///4AAAP+AAAB///gAP//wADgAAAAYAAAAH/+AAB//AAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8AA
|
||||||
|
AD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/////////
|
||||||
|
//8oAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAA
|
||||||
|
AACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAHh4iHgA
|
||||||
|
CAAAAAAAACIiAAh4eIgCqqIIAAAAACqqIAAAAAACqqIAAAAP/wAAAAAAAA+IgKqiAAAAD//4AADwAAAP
|
||||||
|
iPiPiPAAAA//////8AAAD4j4j4jwAAAP//////AAAERERERERAAAREREREREAAAAAAAAAAAA//8AAMAD
|
||||||
|
AAD/gQAAgAAAAP4AAADAAQAAwAMAAMADAADAAwAAwAMAAMADAADAAwAAwAMAAMADAADAAwAA//8AAA==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
Loading…
Reference in New Issue