using System; using System.Windows.Forms; //using RPX20Lib; using System.Data; //using System.Data.OleDb; using System.Text; using IndianHealthService.BMXNet; using System.Reflection; using System.Diagnostics; namespace IndianHealthService.ClinicalScheduling { /// /// Contains information about the RPMS connection /// public class CGConnectInfo { public CGConnectInfo() { // // TODO: Add constructor logic here // } private bool m_bConnected; string m_sVerify; string m_sAccess; string m_sServerAddress; int m_nServerPort; private string m_sDUZ; private string m_sDUZ2; private int m_nDivisionCount = 0; private string m_sUserName; private string m_sDivision; public bool Connected { get { return m_bConnected; } } public bool LoadConnectInfo() { //Returns True if able to connect to RPMS //Step 1 //Get RPMS Server Address and Port from Registry. //Prompt for them if they're not there. //Return False if unable to get address/port /////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// //Old Version Below: //Loads and decypts M Connection info from registry //Tests connection //Sets m_bConnected based on test //returns m_bConnected //(see ConnectInfo.cpp) string sTempAddress; sTempAddress = "127.0.0.1"; // sTempAddress = "161.223.91.10"; int nTempPort = 0; // Load from registry (HKCU) // Decrypt Access and Verify codes string sTempAccess2 = "HMWXXX8"; //TODO: Get from registry // sTempAccess2 = "JANXXX1"; //TODO: Get from registry // if (!DecryptString(pbAccessData, &lAccessSize, sTempAccess2)) // return FALSE; // string sTempVerify2 = "MOLLYB8"; //TODO: Get from registry // sTempVerify2 = "JANXXX2"; //TODO: Get from registry // if (!DecryptString(pbVerifyData, &lVerifySize, sTempVerify2)) // return FALSE; m_sAccess = sTempAccess2; m_sVerify = sTempVerify2; m_sServerAddress = sTempAddress; if (m_sServerAddress == "") { m_sServerAddress = "RPMSWindow"; m_sAccess = ""; m_sVerify = ""; } m_nServerPort = nTempPort; if (m_nServerPort == 0) m_nServerPort = 9200; // RPX20Lib.MConnect m; // m = new MConnectClass(); BMXNetLib m = new BMXNetLib(); m.MServerPort = m_nServerPort; m.AppContext="BMXRPC"; bool bRet = false; try { bRet = m.OpenConnection(sTempAddress, sTempAccess2, sTempVerify2); } catch (BMXNetException exBMX) { throw exBMX; } catch (Exception bmxEx) { string sMessage = bmxEx.Message + bmxEx.StackTrace; throw new BMXNetException(sMessage); } if (bRet == true){ try { this.m_sAccess = sTempAccess2; this.m_sVerify = sTempVerify2; this.m_sServerAddress = sTempAddress; this.m_nServerPort = m.MServerPort; this.m_sDUZ = m.DUZ; string sRpc = "BMX USER"; m_sUserName = m.TransmitRPC(sRpc, m_sDUZ); System.Data.DataTable rsDivisions; rsDivisions = this.GetUserDivisions(m_sAccess, m_sVerify, m_sServerAddress, m_nServerPort); m_nDivisionCount = rsDivisions.Rows.Count; foreach (System.Data.DataRow r in rsDivisions.Rows) { string sTemp = r["MOST_RECENT_LOOKUP"].ToString(); if (sTemp == "1") { this.m_sDivision = r["FACILITY_NAME"].ToString(); this.m_sDUZ2 = r["FACILITY_IEN"].ToString(); break; } } m_bConnected = true; } catch(Exception bmxEx) { m_bConnected = false; string sMessage = bmxEx.Message + bmxEx.StackTrace; throw new BMXNetException(sMessage); } } return m_bConnected; } bool TestConnection(string sAccess, string sVerify, string sAddress, int nPort) { // Try RPMS Connection & set m_bconnected TRUE if successful // RPX20Lib.MConnect m; // m = new MConnectClass(); BMXNetLib m = new BMXNetLib(); bool bRet = false; try { //from old MServices->Login m.MServerPort = nPort; bRet = m.OpenConnection(sAddress, sAccess, sVerify); this.m_sDUZ = m.DUZ; } catch(Exception ex) { Debug.Write("CConnectInfo::TestConnection: Error: " + ex.Message); bRet = false; } finally { m.CloseConnection(); } return bRet; } private DataTable GetUserDivisions(string sTempAccess2, string sTempVerify2, string sTempAddress, int MServerPort) { try { //Connection string model: //"Provider=BMXODB.RPMS.1;Data source=127.0.0.1;Location=9200;Extended Properties=BMXRPC;Password=HMWXXX8^MOLLYB8" string sConn; sConn = "Data source=" + sTempAddress + ";Location=" + MServerPort.ToString() + ";Extended Properties=BMXRPC;Password=" + sTempAccess2 + "^" + sTempVerify2; BMXNetConnection rpmsConn = new BMXNetConnection(sConn); rpmsConn.Open(); BMXNetCommand cmd = (BMXNetCommand) rpmsConn.CreateCommand(); cmd.CommandText = "BMXGetFacRS^" + m_sDUZ; BMXNetDataAdapter da = new BMXNetDataAdapter(); da.SelectCommand = cmd; DataSet dsDivisions = new DataSet("Divisions"); da.Fill(dsDivisions, "DivisionTable"); DataTable tb = dsDivisions.Tables["DivisionTable"]; return tb; } catch (Exception bmxEx) { string sMessage = bmxEx.Message + bmxEx.StackTrace; throw new BMXNetException(sMessage); } } public string UserName { get { return this.m_sUserName; } } public string DivisionName { get { return this.m_sDivision; } } public string GetDSN(string sAppContext) { string sDsn = "Data source="; if (sAppContext == "") sAppContext = "BMXRPC"; if (this.m_bConnected == false) return sDsn.ToString(); sDsn += this.m_sServerAddress ; sDsn += ";Location="; sDsn += this.m_nServerPort.ToString(); sDsn += ";Extended Properties="; sDsn += sAppContext; sDsn += ";Password="; sDsn += this.m_sAccess; sDsn += "^"; sDsn += this.m_sVerify; return sDsn; } /// /// String representation of DUZ /// public string DUZ { get { return m_sDUZ; } } } }