Initial commit of C# Source Code. Now to try to get it to compile.

This commit is contained in:
sam 2010-06-30 07:09:50 +00:00
parent 782d05d287
commit 94d4875737
42 changed files with 10971 additions and 0 deletions

View File

@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BMXNetTest", "BMXNetTest\BMXNetTest.csproj", "{A3A19C51-73D2-4EEE-A190-F1EFBF477BCB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BMXNet", "BMXNet\BMXNet.csproj", "{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A3A19C51-73D2-4EEE-A190-F1EFBF477BCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A3A19C51-73D2-4EEE-A190-F1EFBF477BCB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A3A19C51-73D2-4EEE-A190-F1EFBF477BCB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A3A19C51-73D2-4EEE-A190-F1EFBF477BCB}.Release|Any CPU.Build.0 = Release|Any CPU
{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Binary file not shown.

View File

@ -0,0 +1,61 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("BMXNet20")]
[assembly: AssemblyDescription("ADO.NET 2.0 Data Provider for RPMS")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Indian Health Service")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]
//[assembly: AssemblyKeyName("")]
[assembly: AssemblyFileVersionAttribute("2.0.0.0")]
[assembly: ComVisibleAttribute(false)]

View File

@ -0,0 +1,161 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{DE8E4CC9-4F3A-4E32-8DFE-EE5692E8FC45}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>
</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>BMXNet20</AssemblyName>
<AssemblyOriginatorKeyFile>IHSPrivateKey.pfx</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>true</DelaySign>
<OutputType>Library</OutputType>
<RootNamespace>BMXNet</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<SignAssembly>true</SignAssembly>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>bmxnet.xml</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>1591</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<DocumentationFile>bmxnet.xml</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>1591</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
</Reference>
<Reference Include="System.Runtime.Serialization.Formatters.Soap">
<Name>System.Runtime.Serialization.Formatters.Soap</Name>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="BMXNetAdapter.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="BMXNetCommand.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="BMXNetConnectInfo.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="BMXNetConnection.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="BMXNetDataReader.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="BMXNetException.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="BMXNetLib.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="BMXNetParameter.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="BMXNetParameterCollection.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="BMXNetTransaction.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="DLoginInfo.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DSelectDivision.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DServerInfo.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="RPMSDb.cs">
<SubType>Code</SubType>
</Compile>
<EmbeddedResource Include="DLoginInfo.resx">
<DependentUpon>DLoginInfo.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="DSelectDivision.resx">
<DependentUpon>DSelectDivision.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="DServerInfo.resx">
<DependentUpon>DServerInfo.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="IHSPrivateKey.pfx" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,55 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LastOpenVersion>7.10.3077</LastOpenVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ReferencePath>c:\documents and settings\administrator\my documents\visual studio projects\clinicalscheduling\calendargrid\bin\release\</ReferencePath>
<CopyProjectDestinationFolder>
</CopyProjectDestinationFolder>
<CopyProjectUncPath>
</CopyProjectUncPath>
<CopyProjectOption>0</CopyProjectOption>
<ProjectView>ProjectFiles</ProjectView>
<ProjectTrust>0</ProjectTrust>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<EnableASPDebugging>false</EnableASPDebugging>
<EnableASPXDebugging>false</EnableASPXDebugging>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<EnableSQLServerDebugging>false</EnableSQLServerDebugging>
<RemoteDebugEnabled>false</RemoteDebugEnabled>
<RemoteDebugMachine>
</RemoteDebugMachine>
<StartAction>Program</StartAction>
<StartArguments>http://homedev.ihs.gov/otherprgms/clinicalscheduling/ClinicalScheduling.exe</StartArguments>
<StartPage>
</StartPage>
<StartProgram>C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\IEExec.exe</StartProgram>
<StartURL>
</StartURL>
<StartWorkingDirectory>
</StartWorkingDirectory>
<StartWithIE>true</StartWithIE>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<EnableASPDebugging>false</EnableASPDebugging>
<EnableASPXDebugging>false</EnableASPXDebugging>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<EnableSQLServerDebugging>false</EnableSQLServerDebugging>
<RemoteDebugEnabled>false</RemoteDebugEnabled>
<RemoteDebugMachine>
</RemoteDebugMachine>
<StartAction>Project</StartAction>
<StartArguments>
</StartArguments>
<StartPage>
</StartPage>
<StartProgram>
</StartProgram>
<StartURL>
</StartURL>
<StartWorkingDirectory>
</StartWorkingDirectory>
<StartWithIE>false</StartWithIE>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,374 @@
using System;
using System.Data;
using System.Data.Common;
namespace IndianHealthService.BMXNet
{
public class BMXNetDataAdapter : DbDataAdapter, IDbDataAdapter
{
private BMXNetCommand m_selectCommand;
private BMXNetCommand m_insertCommand;
private BMXNetCommand m_updateCommand;
private BMXNetCommand m_deleteCommand;
/*
* Inherit from Component through DbDataAdapter. The event
* mechanism is designed to work with the Component.Events
* property. These variables are the keys used to find the
* events in the components list of events.
*/
static private readonly object EventRowUpdated = new object();
static private readonly object EventRowUpdating = new object();
public BMXNetDataAdapter()
{
}
new public BMXNetCommand SelectCommand
{
get { return m_selectCommand; }
set { m_selectCommand = value; }
}
IDbCommand IDbDataAdapter.SelectCommand
{
get { return m_selectCommand; }
set { m_selectCommand = (BMXNetCommand)value; }
}
new public BMXNetCommand InsertCommand
{
get { return m_insertCommand; }
set { m_insertCommand = value; }
}
IDbCommand IDbDataAdapter.InsertCommand
{
get { return m_insertCommand; }
set { m_insertCommand = (BMXNetCommand)value; }
}
new public BMXNetCommand UpdateCommand
{
get { return m_updateCommand; }
set { m_updateCommand = value; }
}
IDbCommand IDbDataAdapter.UpdateCommand
{
get { return m_updateCommand; }
set { m_updateCommand = (BMXNetCommand)value; }
}
new public BMXNetCommand DeleteCommand
{
get { return m_deleteCommand; }
set { m_deleteCommand = value; }
}
IDbCommand IDbDataAdapter.DeleteCommand
{
get { return m_deleteCommand; }
set { m_deleteCommand = (BMXNetCommand)value; }
}
/*
* Implement abstract methods inherited from DbDataAdapter.
*/
public override int Fill(
DataSet ds
)
{
//The inital call to base.fill calls the RPC which loads up the array
//After base.fill returns, create a datareader
BMXNetConnection bmxConn = (BMXNetConnection) this.SelectCommand.Connection;
RPMSDb bmxDB = bmxConn.RPMSDb;
DataTable dt = new DataTable();
//Execute the RPC call
base.Fill(dt);
//Get the table name
dt.TableName = bmxDB.ResultSets[0].fmFileID;
dt.ExtendedProperties.Add("fmSeed", bmxDB.ResultSets[0].fmSeed);
string sParentTable = dt.TableName;
//Add the first table to the DataSet
ds.Tables.Add(dt);
//If bmxDB resultset array count is greater than 1
int nSets = bmxDB.ResultSets.GetUpperBound(0) + 1;
if (nSets > 1)
{
//Set primary key for first table
string sKeyField = bmxDB.ResultSets[0].fmKeyField;
DataColumn dcKey = dt.Columns[sKeyField];
DataColumn[] dcKeys = new DataColumn[1];
dcKeys[0] = dcKey;
dt.PrimaryKey = dcKeys;
string[] sRelations = new string[nSets];
//loop and get the rest of the tables
for (int k = 1; k < nSets; k++)
{
//Increment the current recordset counter in bmxDB
bmxDB.CurrentRecordSet++;
//Create the next table
dt = new DataTable();
//Fill it
base.Fill(dt);
//Get the table name
string sChildTable = bmxDB.ResultSets[k].fmFileID;
dt.TableName = sChildTable;
//Add it to the dataset
ds.Tables.Add(dt);
//Get the foreign key field
string sForeignKey = bmxDB.ResultSets[k].fmForeignKey;
//Set the data relationship
string sParentKey;
sParentKey = "BMXIEN";
sParentKey = "PATIENT_IEN";
DataRelation dr = new DataRelation("Relation" + k.ToString() , //Relation Name
ds.Tables[sParentTable].Columns[sParentKey], //; //parent
ds.Tables[sChildTable].Columns[sForeignKey]) ;//child
ds.Relations.Add(dr);
}
bmxDB.CurrentRecordSet = 0;
}
return dt.Rows.Count;
}
override protected DataTable FillSchema(
DataTable dataTable,
SchemaType schemaType,
IDbCommand command,
CommandBehavior behavior
)
{
behavior = CommandBehavior.SchemaOnly;
BMXNetDataReader dReader =(BMXNetDataReader) command.ExecuteReader(behavior);
DataTable dtSchema = dReader.GetSchemaTable();
return dtSchema;
}
override protected int Update(
DataRow[] dataRows,
DataTableMapping tableMapping
)
{
//Build UpdateCommand's m_sCmdText using UpdateCommand's parameters
// and data in dataRows;
// execute non query and increment nRet;
string sCmd = "";
int nRecordsAffected = 0;
//Get recordset-level info from parameters
BMXNetParameter parm = (BMXNetParameter) UpdateCommand.Parameters[0];
string sFileID = parm.SourceColumn;
parm = (BMXNetParameter) UpdateCommand.Parameters[1];
string sKeyField = parm.SourceColumn;
string sKeyID = "";
char[] cRecDelim = new char[1];
cRecDelim[0] = (char) 30;
string sValue = "";
string sFMFieldID;
string sColumnName;
int nColIndex;
//Process deletions
foreach (DataRow r in dataRows)
{
if (r.RowState == DataRowState.Deleted)
{
r.RejectChanges(); //so that I can get to the row id
//Build DAS
char cSep = Convert.ToChar(",");
string[] saKeyFields = sKeyField.Split(cSep);
string sTmp = "";
for (int j = 0; j < saKeyFields.GetLength(0); j++)
{
if (saKeyFields[j] != "")
{
if (j > 0)
sTmp = sTmp + ",";
if (j == saKeyFields.GetLength(0) - 1)
sTmp += "-";
sTmp += r[saKeyFields[j]];
}
}
sCmd = sTmp;
sCmd = sFileID + "^" + sCmd + "^";
UpdateCommand.CommandText = "UPDATE " + sCmd;
int nRet = this.UpdateCommand.ExecuteNonQuery();
r.Delete();
nRecordsAffected += nRet;
}
}
//Process Edits and Adds
foreach (DataRow r in dataRows)
{
if (r.RowState != DataRowState.Deleted)
{
string sMsg = "";
sKeyID = "";
for (int j=2; j < UpdateCommand.Parameters.Count; j++)
{
parm = (BMXNetParameter) UpdateCommand.Parameters[j];
sColumnName = parm.ParameterName;
sFMFieldID = parm.SourceColumn;
//Find a column id in r whose column name is sColumnName
nColIndex = -1;
for (int k = 0; k < r.Table.Columns.Count; k ++)
{
if (r.Table.Columns[k].ColumnName == sColumnName)
{
nColIndex = k;
break;
}
}
if (nColIndex > -1)
{
if (r.ItemArray[nColIndex].GetType() == typeof(System.DateTime))
{
DateTime dValue = (DateTime) r.ItemArray[nColIndex];
if ((dValue.Minute == 0) && (dValue.Hour == 0))
{
sValue = dValue.ToString("M-d-yyyy");
}
else
{
sValue = dValue.ToString("M-d-yyyy@HH:mm");
}
}
else
{
sValue = r.ItemArray[nColIndex].ToString();
}
if (parm.IsKey == false)
{
if (sMsg != "")
sMsg += (char) 30;
sMsg += sFMFieldID + "|" + sValue;
}
}
switch (sFMFieldID)
{
case ".0001":
if (sKeyID == "")
{
sKeyID = sValue + ",";
}
else
{
sKeyID = sValue + "," + sKeyID;
}
break;
case ".001":
if (sKeyID == "")
{
sKeyID = sValue;
}
else
{
sKeyID = sKeyID + sValue;
}
break;
default:
break;
}
}
sCmd = sFileID + "^" + sKeyID + "^" + sMsg;
UpdateCommand.CommandText = "UPDATE " + sCmd;
int nRet = this.UpdateCommand.ExecuteNonQuery();
nRecordsAffected += nRet;
}//end if RowState != deleted
}//end for
return nRecordsAffected;
}
override protected RowUpdatedEventArgs CreateRowUpdatedEvent(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)
{
return new BMXNetRowUpdatedEventArgs(dataRow, command, statementType, tableMapping);
}
override protected RowUpdatingEventArgs CreateRowUpdatingEvent(DataRow dataRow, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)
{
return new BMXNetRowUpdatingEventArgs(dataRow, command, statementType, tableMapping);
}
override protected void OnRowUpdating(RowUpdatingEventArgs value)
{
BMXNetRowUpdatingEventHandler handler = (BMXNetRowUpdatingEventHandler) Events[EventRowUpdating];
if ((null != handler) && (value is BMXNetRowUpdatingEventArgs))
{
handler(this, (BMXNetRowUpdatingEventArgs) value);
}
}
override protected void OnRowUpdated(RowUpdatedEventArgs value)
{
BMXNetRowUpdatedEventHandler handler = (BMXNetRowUpdatedEventHandler) Events[EventRowUpdated];
if ((null != handler) && (value is BMXNetRowUpdatedEventArgs))
{
handler(this, (BMXNetRowUpdatedEventArgs) value);
}
}
public event BMXNetRowUpdatingEventHandler RowUpdating
{
add { Events.AddHandler(EventRowUpdating, value); }
remove { Events.RemoveHandler(EventRowUpdating, value); }
}
public event BMXNetRowUpdatedEventHandler RowUpdated
{
add { Events.AddHandler(EventRowUpdated, value); }
remove { Events.RemoveHandler(EventRowUpdated, value); }
}
}
public delegate void BMXNetRowUpdatingEventHandler(object sender, BMXNetRowUpdatingEventArgs e);
public delegate void BMXNetRowUpdatedEventHandler(object sender, BMXNetRowUpdatedEventArgs e);
public class BMXNetRowUpdatingEventArgs : RowUpdatingEventArgs
{
public BMXNetRowUpdatingEventArgs(DataRow row, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)
: base(row, command, statementType, tableMapping)
{
}
// Hide the inherited implementation of the command property.
new public BMXNetCommand Command
{
get { return (BMXNetCommand)base.Command; }
set { base.Command = value; }
}
}
public class BMXNetRowUpdatedEventArgs : RowUpdatedEventArgs
{
public BMXNetRowUpdatedEventArgs(DataRow row, IDbCommand command, StatementType statementType, DataTableMapping tableMapping)
: base(row, command, statementType, tableMapping)
{
}
// Hide the inherited implementation of the command property.
new public BMXNetCommand Command
{
get { return (BMXNetCommand)base.Command; }
}
}
}

View File

@ -0,0 +1,344 @@
using System;
using System.Data;
using System.Data.Common;
namespace IndianHealthService.BMXNet
{
public class BMXNetCommand : System.Data.Common.DbCommand, IDbCommand
{
BMXNetConnection m_connection;
BMXNetTransaction m_txn;
string m_sCmdText;
UpdateRowSource m_updatedRowSource = UpdateRowSource.None;
BMXNetParameterCollection m_parameters = new BMXNetParameterCollection();
// the default constructor
public BMXNetCommand()
{
}
// other constructors
public BMXNetCommand(string cmdText)
{
m_sCmdText = cmdText;
}
public BMXNetCommand(string cmdText, BMXNetConnection connection)
{
m_sCmdText = cmdText;
m_connection = connection;
}
public BMXNetCommand(string cmdText, BMXNetConnection connection, BMXNetTransaction txn)
{
m_sCmdText = cmdText;
m_connection = connection;
m_txn = txn;
}
/****
* IMPLEMENT THE REQUIRED PROPERTIES.
****/
override public string CommandText
{
get { return m_sCmdText; }
set { m_sCmdText = value; }
}
override public int CommandTimeout
{
/*
* BMXNet does not support a command time-out. As a result,
* for the get, zero is returned because zero indicates an indefinite
* time-out period. For the set, throw an exception.
*/
get { return 0; }
set { if (value != 0) throw new NotSupportedException(); }
}
override public CommandType CommandType
{
/*
* BMXNet only supports CommandType.Text.
*/
get { return CommandType.Text; }
set { if (value != CommandType.Text) throw new NotSupportedException(); }
}
protected override DbConnection DbConnection
{
get
{
return m_connection;
}
set
{
if (m_connection != value)
this.Transaction = null;
m_connection = (BMXNetConnection)value;
}
}
new public IDbConnection Connection
{
/*
* The user should be able to set or change the connection at
* any time.
*/
get { return m_connection; }
set
{
/*
* The connection is associated with the transaction
* so set the transaction object to return a null reference if the connection
* is reset.
*/
if (m_connection != value)
this.Transaction = null;
m_connection = (BMXNetConnection)value;
}
}
new public BMXNetParameterCollection Parameters
{
get { return m_parameters; }
}
IDataParameterCollection IDbCommand.Parameters
{
get { return m_parameters; }
}
override protected DbParameterCollection DbParameterCollection
{
get
{
throw new Exception("The method or operation is not implemented.");
}
}
new public IDbTransaction Transaction
{
/*
* Set the transaction. Consider additional steps to ensure that the transaction
* is compatible with the connection, because the two are usually linked.
*/
get { return m_txn; }
set { m_txn = (BMXNetTransaction)value; }
}
override protected DbTransaction DbTransaction
{
/*
* Set the transaction. Consider additional steps to ensure that the transaction
* is compatible with the connection, because the two are usually linked.
*/
get
{
throw new Exception("The method or operation is not implemented.");
}
set
{
throw new Exception("The method or operation is not implemented.");
}
}
override public bool DesignTimeVisible
{
get
{return false ; }
set { ;}
}
override public UpdateRowSource UpdatedRowSource
{
get { return m_updatedRowSource; }
set { m_updatedRowSource = value; }
}
/****
* IMPLEMENT THE REQUIRED METHODS.
****/
override public void Cancel()
{
// BMXNet does not support canceling a command
// once it has been initiated.
throw new NotSupportedException();
}
new public IDbDataParameter CreateParameter()
{
return (IDbDataParameter)(new BMXNetParameter());
}
override protected DbParameter CreateDbParameter()
{
throw new Exception("The method or operation is not implemented.");
}
override public int ExecuteNonQuery()
{
/*
* ExecuteNonQuery is intended for commands that do
* not return results, instead returning only the number
* of records affected.
*/
// There must be a valid and open connection.
if (m_connection == null || m_connection.State != ConnectionState.Open)
throw new InvalidOperationException("Connection must valid and open");
// Execute the command.
RPMSDb.RPMSDbResultSet resultset;
m_connection.RPMSDb.Execute(m_sCmdText, out resultset);
// Return the number of records affected.
return resultset.recordsAffected;
}
new public IDataReader ExecuteReader()
{
/*
* ExecuteReader should retrieve results from the data source
* and return a DataReader that allows the user to process
* the results.
*/
// There must be a valid and open connection.
if (m_connection == null || m_connection.State != ConnectionState.Open)
throw new InvalidOperationException("Connection must valid and open");
// Execute the command.
RPMSDb.RPMSDbResultSet resultset;
m_connection.RPMSDb.Execute(m_sCmdText, out resultset);
return new BMXNetDataReader(resultset);
}
new public IDataReader ExecuteReader(CommandBehavior behavior)
{
/*
* ExecuteReader should retrieve results from the data source
* and return a DataReader that allows the user to process
* the results.
*/
// There must be a valid and open connection.
if (m_connection == null || m_connection.State != ConnectionState.Open)
throw new InvalidOperationException("Connection must valid and open");
/*If SchemaOnly or KeyInfo behavior, Set BMXSchema flag
*execute the command, then unset the BMXSchema flag
*Otherwise, just Execute the command.
*/
RPMSDb.RPMSDbResultSet resultset;
if (((behavior & (CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo)) > 0))
{
m_connection.bmxNetLib.TransmitRPC("BMX SCHEMA ONLY", "TRUE");
m_connection.RPMSDb.Execute(m_sCmdText, out resultset);
m_connection.bmxNetLib.TransmitRPC("BMX SCHEMA ONLY", "FALSE");
}
else
{
m_connection.RPMSDb.Execute(m_sCmdText, out resultset);
}
/*
* The only CommandBehavior option supported by BMXNet
* is the automatic closing of the connection
* when the user is done with the reader.
*/
if (behavior == CommandBehavior.CloseConnection)
return new BMXNetDataReader(resultset, m_connection);
else
return new BMXNetDataReader(resultset);
}
override protected DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
{
throw new Exception("The method or operation is not implemented.");
}
override public object ExecuteScalar()
{
/*
* ExecuteScalar assumes that the command will return a single
* row with a single column, or if more rows/columns are returned
* it will return the first column of the first row.
*/
// There must be a valid and open connection.
if (m_connection == null || m_connection.State != ConnectionState.Open)
throw new InvalidOperationException("Connection must valid and open");
// Execute the command.
RPMSDb.RPMSDbResultSet resultset;
m_connection.RPMSDb.Execute(m_sCmdText, out resultset);
// Return the first column of the first row.
// Return a null reference if there is no data.
if (resultset.data.Length == 0)
return null;
return resultset.data[0, 0];
}
override public void Prepare()
{
// BMXNet Prepare is a no-op.
}
void IDisposable.Dispose()
{
this.Dispose(true);
System.GC.SuppressFinalize(this);
}
//private void Dispose(bool disposing)
//{
// /*
// * Dispose of the object and perform any cleanup.
// */
//}
/****
* IMPLEMENT BMX-Specific METHODS.
****/
public void BMXBuildUpdateCommand(DataTable dtSchema)
{
string sText = "UPDATE ";
sText += "@File, ";
sText += "@Record, ";
//Build Parameters array
BMXNetParameter[] parms = new BMXNetParameter[dtSchema.Rows.Count+2];
parms[0] = new BMXNetParameter("@File", DbType.String);
parms[0].SourceVersion = DataRowVersion.Original;
parms[0].SourceColumn = dtSchema.ExtendedProperties["BMXTable"].ToString();
Parameters.Add(parms[0]);
parms[1] = new BMXNetParameter("@Record", DbType.String);
parms[1].SourceVersion = DataRowVersion.Original;
parms[1].SourceColumn = dtSchema.ExtendedProperties["BMXKey"].ToString();;
Parameters.Add(parms[1]);
int i = 1;
foreach (DataRow r in dtSchema.Rows)
{
//Make a parameter for the Key Field and all non-ReadOnly fields
if ( ((bool) r["IsReadOnly"] == false) || ( (bool) r["IsKey"] == true ) )
{
i++;
parms[i] = new BMXNetParameter(r["ColumnName"].ToString(), DbType.String);
parms[i].SourceVersion = DataRowVersion.Current;
parms[i].SourceColumn = r["BaseColumnName"].ToString(); //FM FieldNumber
parms[i].IsKey = Convert.ToBoolean(r["IsKey"]);
Parameters.Add(parms[i]);
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,326 @@
using System;
using System.Data;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
namespace IndianHealthService.BMXNet
{
public class BMXNetConnection : System.Data.Common.DbConnection, IDbConnection
{
private ConnectionState m_state;
private string m_sConnString;
private BMXNetLib m_rpx;
private RPMSDb m_RPMSDb;
private int m_nTimeout;
private string m_sDatabase;
private string m_sAccess;
private string m_sVerify;
private int m_nPort;
private string m_sAddress;
private string m_sAppContext;
private bool m_bUseWinIdent;
// default constructor.
public BMXNetConnection()
{
// Initialize the connection object into the closed state.
m_state = ConnectionState.Closed;
this.m_rpx = new BMXNetLib();
}
public BMXNetConnection(string sConnString)
{
// Initialize the connection object into a closed state.
m_state = ConnectionState.Closed;
this.ConnectionString = sConnString;
this.m_rpx = new BMXNetLib();
}
public BMXNetConnection(BMXNetLib bmxLib)
{
if (bmxLib.Connected == true)
{
m_state = ConnectionState.Open;
m_rpx = bmxLib;
m_RPMSDb = new RPMSDb(m_rpx);
}
else
{
m_state = ConnectionState.Closed;
}
}
/****
* IMPLEMENT THE REQUIRED PROPERTIES.
****/
override public string ConnectionString
{
get
{
return m_sConnString;
}
set
{
m_nTimeout = 0;
try
{
// Parse values from connect string
m_sConnString = value;
string sSemi = ";";
string sEq = "=";
string sU = "^";
char[] cSemi = sSemi.ToCharArray();
char[] cEq = sEq.ToCharArray();
char[] cU = sU.ToCharArray();
string [] saSplit = m_sConnString.Split(cSemi);
string [] saProp;
string [] saTemp;
string sPropName;
string sPropVal;
for (int j = 0; j<saSplit.Length; j++)
{
saProp = saSplit[j].Split(cEq);
if (saProp.Length != 2)
{
//throw invalid parameter exception
}
sPropName = saProp[0];
sPropVal = saProp[1];
sPropName = sPropName.ToUpper();
if (sPropName == "PASSWORD")
{
saTemp = sPropVal.Split(cU);
if (saTemp.Length != 2)
{
//throw invalid parameter exception
}
m_sAccess = saTemp[0];
m_sVerify = saTemp[1];
}
if (sPropName == "ACCESS CODE")
{
m_sAccess = sPropVal;
}
if (sPropName == "VERIFY CODE")
{
m_sVerify = sPropVal;
}
if ((sPropName == "LOCATION") || (sPropName == "PORT"))
{
m_nPort = Convert.ToInt16(sPropVal);
}
if (sPropName == "DATA SOURCE")
{
m_sAddress = sPropVal;
m_sDatabase = sPropVal;
}
if (sPropName == "EXTENDED PROPERTIES")
{
m_sAppContext = sPropVal;
}
if (sPropName == "WINIDENT")
{
m_bUseWinIdent = false;
sPropVal = sPropVal.ToUpper();
if (sPropVal == "TRUE")
m_bUseWinIdent = true;
}
}
}
catch (Exception e)
{
//re-throw exception
throw e;
}
}
}
public override int ConnectionTimeout
{
get
{
// Returns the connection time-out value set in the connection
// string. Zero indicates an indefinite time-out period.
return m_nTimeout;
}
}
override public string Database
{
get
{
// Returns an initial database as set in the connection string.
// An empty string indicates not set - do not return a null reference.
return m_sDatabase;
}
}
override public ConnectionState State
{
get { return m_state; }
}
public BMXNetLib bmxNetLib
{
get
{
return this.m_rpx;
}
}
/****
* IMPLEMENT THE REQUIRED METHODS.
****/
new public IDbTransaction BeginTransaction()
{
throw new NotSupportedException();
}
protected override System.Data.Common.DbTransaction BeginDbTransaction(IsolationLevel isolationLevel)
{
throw new Exception("The method or operation is not implemented.");
}
new public IDbTransaction BeginTransaction(IsolationLevel level)
{
throw new NotSupportedException();
}
override public void ChangeDatabase(string dbName)
{
//should dbname include address, port, access & verify?
/*
* Change the database setting on the back-end. Note that it is a method
* and not a property because the operation requires an expensive
* round trip.
*/
}
override public void Open()
{
/*
* Open the RPMS connection and set the ConnectionState
* property.
*/
//If the connection is already open, then return.
//If you wan't to re-open an already open connection,
//you must first close it.
if (m_rpx.Connected == true)
return;
try
{
m_state = ConnectionState.Connecting;
m_rpx = new BMXNetLib();
m_rpx.MServerPort = m_nPort;
bool bRet = false;
if (this.m_bUseWinIdent == true)
{
WindowsIdentity winIdent = WindowsIdentity.GetCurrent();
bRet = m_rpx.OpenConnection(m_sAddress, winIdent);
}
else
{
bRet = m_rpx.OpenConnection(m_sAddress, m_sAccess, m_sVerify);
}
if (bRet == true)
{
m_state = ConnectionState.Open;
}
else
{
m_state = ConnectionState.Closed;
return;
}
m_RPMSDb = new RPMSDb(m_rpx);
}
catch (Exception ex)
{
string s = ex.Message + ex.StackTrace;
throw new BMXNetException(s);
}
}
override public void Close()
{
/*
* Close the rpms connection and set the ConnectionState
* property.
*/
try
{
if (m_state == ConnectionState.Closed)
return;
m_rpx.CloseConnection();
m_state = ConnectionState.Closed;
}
catch (Exception ex)
{
string s = ex.Message + ex.StackTrace;
Debug.Write(s);
}
}
new public IDbCommand CreateCommand()
{
// Return a new instance of a command object.
BMXNetCommand comm = new BMXNetCommand();
comm.Connection = this;
return comm;
}
override protected System.Data.Common.DbCommand CreateDbCommand()
{
// Return a new instance of a command object.
BMXNetCommand comm = new BMXNetCommand();
comm.Connection = this;
return comm;
}
public override string DataSource
{
get { throw new Exception("The method or operation is not implemented."); }
}
public override string ServerVersion
{
get { throw new Exception("The method or operation is not implemented."); }
}
/*
* Implementation specific properties / methods.
*/
internal RPMSDb RPMSDb
{
get { return m_RPMSDb; }
}
void IDisposable.Dispose()
{
this.Dispose(true);
System.GC.SuppressFinalize(this);
}
//protected override void Dispose(bool disposing)
//{
// /*
// * Dispose of the object and perform any cleanup.
// */
// if (m_state == ConnectionState.Open)
// {
// this.Close();
// }
//}
}
}

View File

@ -0,0 +1,391 @@
using System;
using System.Data;
using System.Globalization;
namespace IndianHealthService.BMXNet
{
public class BMXNetDataReader : IDataReader
{
// The DataReader should always be open when returned to the user.
private bool m_fOpen = true;
// Keep track of the results and position
// within the resultset (starts prior to first record).
private RPMSDb.RPMSDbResultSet m_resultset;
private static int m_STARTPOS = -1;
private int m_nPos = m_STARTPOS;
/*
* Keep track of the connection in order to implement the
* CommandBehavior.CloseConnection flag. A null reference means
* normal behavior (do not automatically close).
*/
private BMXNetConnection m_connection = null;
/*
* Because the user should not be able to directly create a
* DataReader object, the constructors are
* marked as internal.
*/
internal BMXNetDataReader(RPMSDb.RPMSDbResultSet resultset)
{
m_resultset = resultset;
}
internal BMXNetDataReader(RPMSDb.RPMSDbResultSet resultset, BMXNetConnection connection)
{
m_resultset = resultset;
m_connection = connection;
}
/****
* METHODS / PROPERTIES FROM IDataReader.
****/
public int Depth
{
/*
* Always return a value of zero if nesting is not supported.
*/
get { return 0; }
}
public bool IsClosed
{
/*
* Keep track of the reader state - some methods should be
* disallowed if the reader is closed.
*/
get { return !m_fOpen; }
}
public int RecordsAffected
{
/*
* RecordsAffected is only applicable to batch statements
* that include inserts/updates/deletes. BMXNet always
* returns -1.
*/
get { return -1; }
}
public void Close()
{
/*
* Close the reader. BMXNet only changes the state,
* but an actual implementation would also clean up any
* resources used by the operation. For example,
* cleaning up any resources waiting for data to be
* returned by the server.
*/
m_fOpen = false;
}
public bool NextResult()
{
// BMXNet only returns a single resultset. However,
// DbDataAdapter expects NextResult to return a value.
return false;
}
public bool Read()
{
// Return true if it is possible to advance and if you are still positioned
// on a valid row. Because the data array in the resultset
// is two-dimensional, you must divide by the number of columns.
if (++m_nPos >= m_resultset.data.Length / m_resultset.metaData.Length)
return false;
else
return true;
}
public DataTable GetSchemaTable()
{
DataTable dtSchema = new DataTable();
dtSchema.Columns.Add("ColumnName", typeof(System.String));
dtSchema.Columns.Add("ColumnSize", typeof(Int32));
dtSchema.Columns.Add("ColumnOrdinal", typeof(Int32));
dtSchema.Columns.Add("NumericPrecision", typeof(Int16));
dtSchema.Columns.Add("NumericScale", typeof(Int16));
dtSchema.Columns.Add("DataType", typeof(System.Type));
dtSchema.Columns.Add("AllowDBNull", typeof(bool));
dtSchema.Columns.Add("IsReadOnly", typeof(bool));
dtSchema.Columns.Add("IsUnique", typeof(bool));
dtSchema.Columns.Add("IsRowVersion", typeof(bool));
dtSchema.Columns.Add("IsKey", typeof(bool));
dtSchema.Columns.Add("IsAutoIncrement", typeof(bool));
dtSchema.Columns.Add("IsLong", typeof(bool));
dtSchema.Columns.Add("BaseTableName", typeof(System.String));
dtSchema.Columns.Add("BaseColumnName", typeof(System.String));
dtSchema.ExtendedProperties.Add("BMXTable", m_resultset.fmFileID);
dtSchema.ExtendedProperties.Add("BMXKey", m_resultset.fmKeyField);
for (int i=0; i < m_resultset.metaData.GetLength(0); i++)
{
DataRow r = dtSchema.NewRow();
r["BaseTableName"] = m_resultset.fmFileID;
r["BaseColumnName"] = m_resultset.metaData[i].fmFieldID;
r["ColumnName"] = m_resultset.metaData[i].name;
r["ColumnSize"] = m_resultset.metaData[i].maxSize;
r["ColumnOrdinal"] = i;
r["NumericPrecision"] = 0;
r["NumericScale"] = 0;
r["DataType"] = m_resultset.metaData[i].type;
r["AllowDBNull"] = false;
r["IsReadOnly"] = m_resultset.metaData[i].fmReadOnly;
r["IsUnique"] = false;
if (m_resultset.metaData[i].name == "BMXIEN")
r["IsUnique"] = true;
r["IsRowVersion"] = false;
r["IsKey"] = m_resultset.metaData[i].fmKeyField;
r["IsAutoIncrement"] = false;
r["IsLong"] = false;
dtSchema.Rows.Add(r);
}
return dtSchema;
}
/****
* METHODS / PROPERTIES FROM IDataRecord.
****/
public int FieldCount
{
// Return the count of the number of columns, which in
// this case is the size of the column metadata
// array.
get { return m_resultset.metaData.Length; }
}
public String GetName(int i)
{
return m_resultset.metaData[i].name;
}
public String GetDataTypeName(int i)
{
/*
* Usually this would return the name of the type
* as used on the back end, for example 'smallint' or 'varchar'.
* BMXNet returns the simple name of the .NET Framework type.
*/
return m_resultset.metaData[i].type.Name;
}
public Type GetFieldType(int i)
{
// Return the actual Type class for the data type.
return m_resultset.metaData[i].type;
}
public Object GetValue(int i)
{
return m_resultset.data[m_nPos, i];
}
public int GetValues(object[] values)
{
int i = 0, j = 0;
for ( ; i < values.Length && j < m_resultset.metaData.Length; i++, j++)
{
values[i] = m_resultset.data[m_nPos, j];
}
return i;
}
public int GetOrdinal(string name)
{
// Look for the ordinal of the column with the same name and return it.
for (int i = 0; i < m_resultset.metaData.Length; i++)
{
if (0 == _cultureAwareCompare(name, m_resultset.metaData[i].name))
{
return i;
}
}
// Throw an exception if the ordinal cannot be found.
throw new IndexOutOfRangeException("Could not find specified column in results");
}
public object this [ int i ]
{
get { return m_resultset.data[m_nPos, i]; }
}
public object this [ String name ]
{
// Look up the ordinal and return
// the value at that position.
get { return this[GetOrdinal(name)]; }
}
public bool GetBoolean(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (bool)m_resultset.data[m_nPos, i];
}
public byte GetByte(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (byte)m_resultset.data[m_nPos, i];
}
public long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length)
{
// BMXNet does not support this method.
throw new NotSupportedException("GetBytes not supported.");
}
public char GetChar(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (char)m_resultset.data[m_nPos, i];
}
public long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length)
{
// BMXNet does not support this method.
throw new NotSupportedException("GetChars not supported.");
}
public Guid GetGuid(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (Guid)m_resultset.data[m_nPos, i];
}
public Int16 GetInt16(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (Int16)m_resultset.data[m_nPos, i];
}
public Int32 GetInt32(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (Int32)m_resultset.data[m_nPos, i];
}
public Int64 GetInt64(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (Int64)m_resultset.data[m_nPos, i];
}
public float GetFloat(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (float)m_resultset.data[m_nPos, i];
}
public double GetDouble(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (double)m_resultset.data[m_nPos, i];
}
public String GetString(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (String)m_resultset.data[m_nPos, i];
}
public Decimal GetDecimal(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (Decimal)m_resultset.data[m_nPos, i];
}
public DateTime GetDateTime(int i)
{
/*
* Force the cast to return the type. InvalidCastException
* should be thrown if the data is not already of the correct type.
*/
return (DateTime)m_resultset.data[m_nPos, i];
}
public IDataReader GetData(int i)
{
/*
* BMXNet code does not support this method. Need,
* to implement this in order to expose nested tables and
* other hierarchical data.
*/
throw new NotSupportedException("GetData not supported.");
}
public bool IsDBNull(int i)
{
return m_resultset.data[m_nPos, i] == DBNull.Value;
}
/*
* Implementation specific methods.
*/
private int _cultureAwareCompare(string strA, string strB)
{
return CultureInfo.CurrentCulture.CompareInfo.Compare(strA, strB, CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase);
}
void IDisposable.Dispose()
{
this.Dispose(true);
System.GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (disposing)
{
try
{
this.Close();
}
catch (Exception e)
{
throw new SystemException("An exception of type " + e.GetType() +
" was encountered while closing the BMXNetDataReader.");
}
}
}
}
}

View File

@ -0,0 +1,20 @@
wkEo-ZJt!dG)49K{nX1BS$vH<&:Myf*>Ae0jQW=;|#PsO`'%+rmb[gpqN,l6/hFC@DcUa ]z~R}"V\iIxu?872.(TYL5_3
rKv`R;M/9BqAF%&tSs#Vh)dO1DZP> *fX'u[.4lY=-mg_ci802N7LTG<]!CWo:3?{+,5Q}(@jaExn$~p\IyHwzU"|k6Jeb
\pV(ZJk"WQmCn!Y,y@1d+~8s?[lNMxgHEt=uw|X:qSLjAI*}6zoF{T3#;ca)/h5%`P4$r]G'9e2if_>UDKb7<v0&- RBO.
depjt3g4W)qD0V~NJar\B "?OYhcu[<Ms%Z`RIL_6:]AX-zG.#}$@vk7/5x&*m;(yb2Fn+l'PwUof1K{9,|EQi>H=CT8S!
NZW:1}K$byP;jk)7'`x90B|cq@iSsEnu,(l-hf.&Y_?J#R]+voQXU8mrV[!p4tg~OMez CAaGFD6H53%L/dT2<*>"{\wI=
vCiJ<oZ9|phXVNn)m K`t/SI%]A5qOWe\&?;jT~M!fz1l>[D_0xR32c*4.P"G{r7}E8wUgyudF+6-:B=$(sY,LkbHa#'@Q
hvMX,'4Ty;[a8/{6l~F_V"}qLI\!@x(D7bRmUH]W15J%N0BYPkrs&9:$)Zj>u|zwQ=ieC-oGA.#?tfdcO3gp`S+En K2*<
jd!W5[];4'<C$/&x|rZ(k{>?ghBzIFN}fAK"#`p_TqtD*1E37XGVs@0nmSe+Y6Qyo-aUu%i8c=H2vJ\) R:MLb.9,wlO~P
2ThtjEM+!=xXb)7,ZV{*ci3"8@_l-HS69L>]\AUF/Q%:qD?1~m(yvO0e'<#o$p4dnIzKP|`NrkaGg.ufCRB[; sJYwW}5&
vB\5/zl-9y:Pj|=(R'7QJI *&CTX"p0]_3.idcuOefVU#omwNZ`$Fs?L+1Sk<,b)hM4A6[Y%aDrg@~KqEW8t>H};n!2xG{
sFz0Bo@_HfnK>LR}qWXV+D6`Y28=4Cm~G/7-5A\b9!a#rP.l&M$hc3ijQk;),TvUd<[:I"u1'NZSOw]*gxtE{eJp|y (?%
M@,D}|LJyGO8`$*ZqH .j>c~h<d=fimszv[#-53F!+a;NC'6T91IV?(0x&/{B)w"]Q\YUWprk4:ol%g2nE7teRKbAPuS_X
.mjY#_0*H<B=Q+FML6]s;r2:e8R}[ic&KA 1w{)vV5d,$u"~xD/Pg?IyfthO@CzWp%!`N4Z'3-(o|J9XUE7k\TlqSb>anG
xVa1']_GU<X`|\NgM?LS9{"jT%s$}y[nvtlefB2RKJW~(/cIDCPow4,>#zm+:5b@06O3Ap8=*7ZFY!H-uEQk; .q)i&rhd
I]Jz7AG@QX."%3Lq>METUo{Pp_ |a6<0dYVSv8:b)~W9NK`(r'4fs&wim\kReC2hg=HOj$1B*/nxt,;c#y+![?lFuZ-5D}
Rr(Ge6F Hx>q$m&C%M~Tn,:"o'tX/*yP.{lZ!YkiVhuw_<KE5a[;}W0gjsz3]@7cI2\QN?f#4p|vb1OUBD9)=-LJA+d`S8
I~k>y|m};d)-7DZ"Fe/Y<B:xwojR,Vh]O0Sc[`$sg8GXE!1&Qrzp._W%TNK(=J 3i*2abuHA4C'?Mv\Pq{n#56LftUl@9+
~A*>9 WidFN,1KsmwQ)GJM{I4:C%}#Ep(?HB/r;t.&U8o|l['Lg"2hRDyZ5`nbf]qjc0!zS-TkYO<_=76a\X@$Pe3+xVvu
yYgjf"5VdHc#uA,W1i+v'6|@pr{n;DJ!8(btPGaQM.LT3oe?NB/&9>Z`-}02*%x<7lsqz4OS ~E$\R]KI[:UwC_=h)kXmF
5:iar.{YU7mBZR@-K|2 "+~`M%8sq4JhPo<_X\Sg3WC;Tuxz,fvEQ1p9=w}FAI&j/keD0c?)LN6OHV]lGy'$*>nd[(tb!#

View File

@ -0,0 +1,33 @@
using System;
using System.Runtime.Serialization;
namespace IndianHealthService.BMXNet
{
/// <summary>
/// Custom exception class for BMXNet
/// </summary>
[Serializable]
public class BMXNetException : System.ApplicationException
{
public BMXNetException()
{
}
public BMXNetException(string message) : base(message)
{
}
public BMXNetException(string message, Exception inner) : base(message, inner)
{
}
// deserialization constructor
public BMXNetException(SerializationInfo info,
StreamingContext context):
base(info, context)
{
}
}
}

View File

@ -0,0 +1,852 @@
using System;
using System.Diagnostics;
using System.Text;
using System.IO;
using System.Net.Sockets;
using System.Net;
namespace IndianHealthService.BMXNet
{
/// <summary>
/// BMXNetLib implements low-level socket connectivity to RPMS databases.
/// The VA RPC Broker must be running on the RPMS server in order for
/// BMXNetLib to connect.
/// </summary>
public class BMXNetLib
{
public BMXNetLib()
{
m_sWKID = "XWB";
m_sWINH = "";
m_sPRCH = "";
m_sWISH = "";
m_cHDR = ADEBHDR(m_sWKID,m_sWINH,m_sPRCH,m_sWISH);
}
#region Piece Functions
/// <summary>
/// Corresponds to M's $L(STRING,DELIMITER)
/// </summary>
/// <param name="sInput"></param>
/// <param name="sDelim"></param>
/// <returns></returns>
public static int PieceLength(string sInput, string sDelim)
{
char[] cDelim = sDelim.ToCharArray();
string [] cSplit = sInput.Split(cDelim);
return cSplit.GetLength(0);
}
/// <summary>
/// Corresponds to M's $$Piece function
/// </summary>
/// <param name="sInput"></param>
/// <param name="sDelim"></param>
/// <param name="nNumber"></param>
/// <returns></returns>
public static string Piece(string sInput, string sDelim, int nNumber)
{
char[] cDelim = sDelim.ToCharArray();
string [] cSplit = sInput.Split(cDelim);
int nLength = cSplit.GetLength(0);
if ((nLength < nNumber)||(nNumber < 1))
return "";
return cSplit[nNumber-1];
}
// public static string Piece(string[] sInput, string sDelim, int nNumber)
// {
// char[] cDelim = sDelim.ToCharArray();
// int nLength = sInput.GetLength(0);
// if ((nLength < nNumber)||(nNumber < 1))
// return "";
//
// return sInput[nNumber-1];
//
// }
public static string Piece(string sInput, string sDelim, int nNumber, int nEnd)
{
try
{
if (nNumber < 0)
nNumber = 1;
if (nEnd < nNumber)
return "";
if (nEnd == nNumber)
return Piece(sInput, sDelim, nNumber);
char[] cDelim = sDelim.ToCharArray();
string [] cSplit = sInput.Split(cDelim);
int nLength = cSplit.GetLength(0);
if ((nLength < nNumber)||(nNumber < 1))
return "";
//nNumber = 1-based index of the starting element to return
//nLength = count of elements
//nEnd = 1-based index of last element to return
//nCount = number of elements past nNumber to return
//convert nNumber to 0-based index:
nNumber--;
//convert nEnd to 0-based index;
nEnd--;
//Calculate nCount;
int nCount = nEnd - nNumber + 1;
//Adjust nCount for number of elements
if (nCount + nNumber >= nLength)
{
nCount = nLength - nNumber;
}
string sRet = string.Join(sDelim, cSplit, nNumber, nCount );
return sRet;
}
catch (Exception bmxEx)
{
string sMessage = bmxEx.Message + bmxEx.StackTrace;
throw new BMXNetException(sMessage);
}
}
// public static string Piece(string[] sInput, string sDelim, int nNumber, int nEnd)
// {
// if (nEnd < nNumber)
// return "";
//
//
// if (nEnd == nNumber)
// return Piece(sInput, sDelim, nNumber);
//
// char[] cDelim = sDelim.ToCharArray();
// int nLength = sInput.GetLength(0);
//
// if ((nLength < nNumber)||(nNumber < 1))
// return "";
//
// if (nEnd > nLength)
// nEnd = nLength;
//
// return string.Join(sDelim, sInput, nNumber - 1, nEnd - 1);
// }
#endregion Piece Functions
#region RPX Fields
private string m_sWKID;
private string m_sWISH;
private string m_sPRCH;
private string m_sWINH;
private string m_cHDR;
private string m_cVerify;
private string m_cAccess;
private string m_cDUZ;
private string m_cAuthentication;
private string m_cAppContext;
private bool m_bConnected;
private int m_nMServerPort;
private string m_cServerAddress;
private string m_cDUZ2;
private string m_cLoginFacility;
#endregion RPX Fields
#region Encryption Keys
private string[] m_sKey = new string[]
{
@"wkEo-ZJt!dG)49K{nX1BS$vH<&:Myf*>Ae0jQW=;|#PsO`'%+rmb[gpqN,l6/hFC@DcUa ]z~R}""V\iIxu?872.(TYL5_3",
@"rKv`R;M/9BqAF%&tSs#Vh)dO1DZP> *fX'u[.4lY=-mg_ci802N7LTG<]!CWo:3?{+,5Q}(@jaExn$~p\IyHwzU""|k6Jeb",
@"\pV(ZJk""WQmCn!Y,y@1d+~8s?[lNMxgHEt=uw|X:qSLjAI*}6zoF{T3#;ca)/h5%`P4$r]G'9e2if_>UDKb7<v0&- RBO.",
@"depjt3g4W)qD0V~NJar\B ""?OYhcu[<Ms%Z`RIL_6:]AX-zG.#}$@vk7/5x&*m;(yb2Fn+l'PwUof1K{9,|EQi>H=CT8S!",
@"NZW:1}K$byP;jk)7'`x90B|cq@iSsEnu,(l-hf.&Y_?J#R]+voQXU8mrV[!p4tg~OMez CAaGFD6H53%L/dT2<*>""{\wI=",
@"vCiJ<oZ9|phXVNn)m K`t/SI%]A5qOWe\&?;jT~M!fz1l>[D_0xR32c*4.P""G{r7}E8wUgyudF+6-:B=$(sY,LkbHa#'@Q",
@"hvMX,'4Ty;[a8/{6l~F_V""}qLI\!@x(D7bRmUH]W15J%N0BYPkrs&9:$)Zj>u|zwQ=ieC-oGA.#?tfdcO3gp`S+En K2*<",
@"jd!W5[];4'<C$/&x|rZ(k{>?ghBzIFN}fAK""#`p_TqtD*1E37XGVs@0nmSe+Y6Qyo-aUu%i8c=H2vJ\) R:MLb.9,wlO~P",
@"2ThtjEM+!=xXb)7,ZV{*ci3""8@_l-HS69L>]\AUF/Q%:qD?1~m(yvO0e'<#o$p4dnIzKP|`NrkaGg.ufCRB[; sJYwW}5&",
@"vB\5/zl-9y:Pj|=(R'7QJI *&CTX""p0]_3.idcuOefVU#omwNZ`$Fs?L+1Sk<,b)hM4A6[Y%aDrg@~KqEW8t>H};n!2xG{",
@"sFz0Bo@_HfnK>LR}qWXV+D6`Y28=4Cm~G/7-5A\b9!a#rP.l&M$hc3ijQk;),TvUd<[:I""u1'NZSOw]*gxtE{eJp|y (?%",
@"M@,D}|LJyGO8`$*ZqH .j>c~h<d=fimszv[#-53F!+a;NC'6T91IV?(0x&/{B)w""]Q\YUWprk4:ol%g2nE7teRKbAPuS_X",
@".mjY#_0*H<B=Q+FML6]s;r2:e8R}[ic&KA 1w{)vV5d,$u""~xD/Pg?IyfthO@CzWp%!`N4Z'3-(o|J9XUE7k\TlqSb>anG",
@"xVa1']_GU<X`|\NgM?LS9{""jT%s$}y[nvtlefB2RKJW~(/cIDCPow4,>#zm+:5b@06O3Ap8=*7ZFY!H-uEQk; .q)i&rhd",
@"I]Jz7AG@QX.""%3Lq>METUo{Pp_ |a6<0dYVSv8:b)~W9NK`(r'4fs&wim\kReC2hg=HOj$1B*/nxt,;c#y+![?lFuZ-5D}",
@"Rr(Ge6F Hx>q$m&C%M~Tn,:""o'tX/*yP.{lZ!YkiVhuw_<KE5a[;}W0gjsz3]@7cI2\QN?f#4p|vb1OUBD9)=-LJA+d`S8",
@"I~k>y|m};d)-7DZ""Fe/Y<B:xwojR,Vh]O0Sc[`$sg8GXE!1&Qrzp._W%TNK(=J 3i*2abuHA4C'?Mv\Pq{n#56LftUl@9+",
@"~A*>9 WidFN,1KsmwQ)GJM{I4:C%}#Ep(?HB/r;t.&U8o|l['Lg""2hRDyZ5`nbf]qjc0!zS-TkYO<_=76a\X@$Pe3+xVvu",
@"yYgjf""5VdHc#uA,W1i+v'6|@pr{n;DJ!8(btPGaQM.LT3oe?NB/&9>Z`-}02*%x<7lsqz4OS ~E$\R]KI[:UwC_=h)kXmF",
@"5:iar.{YU7mBZR@-K|2 ""+~`M%8sq4JhPo<_X\Sg3WC;Tuxz,fvEQ1p9=w}FAI&j/keD0c?)LN6OHV]lGy'$*>nd[(tb!#",
};
#endregion Encryption Keys
#region RPX Functions
/// <summary>
/// Given strInput = "13" builds "013" if nLength = 3. Default for nLength is 3.
/// </summary>
/// <param name="strInput"></param>
/// <returns></returns>
private string ADEBLDPadString(string strInput)
{
return ADEBLDPadString(strInput, 3);
}
/// <summary>
/// Given strInput = "13" builds "013" if nLength = 3 Default for nLength is 3.
/// </summary>
/// <param name="strInput"></param>
/// <param name="nLength">Default = 3</param>
/// <returns></returns>
private string ADEBLDPadString(string strInput, int nLength /*=3*/)
{
return strInput.PadLeft(nLength, '0');
}
/// <summary>
/// Concatenates zero-padded length of sInput to sInput
/// Given "Hello" returns "004Hello"
/// If nSize = 5, returns "00004Hello"
/// Default for nSize is 3.
/// </summary>
/// <param name="sInput"></param>
/// <param name="nSize"></param>
/// <returns></returns>
private string ADEBLDB(string sInput)
{
return ADEBLDB(sInput, 3);
}
/// <summary>
/// Concatenates zero-padded length of sInput to sInput
/// Given "Hello" returns "004Hello"
/// If nSize = 5, returns "00004Hello"
/// Default for nSize is 3.
/// </summary>
/// <param name="sInput"></param>
/// <param name="nSize"></param>
/// <returns></returns>
private string ADEBLDB(string sInput, int nSize /*=3*/)
{
int nLen = sInput.Length;
string sLen = this.ADEBLDPadString(nLen.ToString(), nSize);
return sLen + sInput;
}
/// <summary>
/// Build protocol header
/// </summary>
/// <param name="sWKID"></param>
/// <param name="sWINH"></param>
/// <param name="sPRCH"></param>
/// <param name="sWISH"></param>
/// <returns></returns>
private string ADEBHDR(string sWKID, string sWINH, string sPRCH, string sWISH)
{
string strResult;
strResult = sWKID+";"+sWINH+";"+sPRCH+";"+sWISH+";";
strResult = ADEBLDB(strResult);
return strResult;
}
private string ADEBLDMsg(string cHDR, string cRPC, string cParam, string cMult)
{
//Builds RPC message
//Automatically splits parameters longer than 200 into subscripted array
string cMSG;
string sBuild = "";
string sPiece = "";
string sBig = "";
int l;
int nLength;
if (cParam == "")
{
cMSG = "0" + cRPC ;
}
else
{
l = PieceLength(cParam, "^");
for (int j=1; j <= l; j++)
{
sPiece = Piece(cParam, "^", j);
if ((j == l) && (sPiece.Length > 200))
{
//Split up long param into array pieces
sBig = sPiece;
sPiece = ".x";
nLength = sPiece.Length + 1;
sPiece = ADEBLDPadString(nLength.ToString()) + "2" + sPiece;
sBuild = sBuild + sPiece;
int nSubscript = 1;
string sSubscript ="";
int nSubLen = 0;
string sSubLen ="";
int nBigLen = sBig.Length;
string sHunk ="";
int nHunkLen = 0;
string sHunkLen ="";
do
{
sHunk = sBig.Substring(0,200);
sBig = sBig.Substring(201, sBig.Length + 1);
nBigLen = sBig.Length;
sSubscript = nSubscript.ToString();
nSubLen = sSubscript.Length;
sSubLen = nSubLen.ToString();
sSubLen = ADEBLDPadString(sSubLen);
nHunkLen = sHunk.Length;
sHunkLen = nHunkLen.ToString();
sHunkLen = ADEBLDPadString(sHunkLen);
cMult = cMult + sSubLen + sSubscript + sHunkLen + sHunk;
nSubscript++;
} while (nBigLen > 0);
}
else
{
nLength = sPiece.Length +1;
sPiece = ADEBLDPadString(nLength.ToString()) + "0" + sPiece;
sBuild = sBuild + sPiece;
}
}
nLength = sBuild.Length;
string sTotLen = ADEBLDPadString(nLength.ToString(),5);
if (cMult.Length > 0)
{
cMSG = "1"+ cRPC + "^" +sTotLen + sBuild;
}
else
{
cMSG = "0"+ cRPC + "^" +sTotLen + sBuild;
}
}
cMSG = ADEBLDB(cMSG, 5);
cMSG = cHDR + cMSG;
return cMSG;
}
private string ADEEncryp(string sInput)
{
//Encrypt a string
string strResult;
string strPercent;
string strAssoc;
string strIdix;
int nPercent;
int nAssocix;
int nIdix;
Debug.Assert(sInput != "");
System.Random rRand = new Random(DateTime.Now.Second);
nPercent = rRand.Next(0,10000);
nPercent += 72439;
nAssocix = nPercent % 20;
nAssocix++;
Debug.Assert(nAssocix < 21);
strPercent = nPercent.ToString();
strPercent = strPercent.Substring(1,2);
nIdix = Convert.ToInt32(strPercent);
nIdix = nIdix % 20;
nIdix++;
Debug.Assert(nIdix < 21);
const int nEncryptBase = 101;
strAssoc = LoadKey(nEncryptBase + nAssocix);
Debug.Assert(strAssoc.Length == 94);
strIdix = LoadKey(nEncryptBase + nIdix);
Debug.Assert(strIdix.Length == 94);
string sEncrypted = "";
foreach (char c in sInput)
{
string d = c.ToString();
int nFindChar = FindChar(strIdix, c);
if (nFindChar > -1)
{
d = strAssoc.Substring(nFindChar,1);
}
sEncrypted += d;
}
strResult = (char) (nIdix + 31) + sEncrypted + (char) (nAssocix + 31);
return strResult;
}
private int FindChar(byte[] c, char y)
{
int n = 0;
int nRet = -1;
for (n=0; n < c.Length; n++)
{
if (y == (char) c[n])
{
nRet = n;
break;
}
}
return nRet;
}
private int FindChar(string s, char y)
{
int n = 0;
int nRet = -1;
foreach (char c in s)
{
if (y == c)
{
nRet = n;
break;
}
n++;
}
return nRet;
}
private string LoadKey(int nID)
{
nID -= 102;
Debug.Assert( nID < 20);
return m_sKey[nID];
}
// private string GetLocalAddress()
// {
// return "";
// }
public bool OpenConnection(string sServerAddress, string sAccess, string sVerify)
{
try
{
m_cServerAddress = sServerAddress;
m_cAccess = sAccess;
m_cVerify = sVerify;
//Get the local host address and available port;
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
if (ipHostInfo.AddressList.Length < 1)
{
throw new BMXNetException("BMXNetLib.OpenConnection unable to find IP Address.");
}
//Start the listener
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 0);
TcpListener listener = new TcpListener(localEndPoint);
listener.Start();
IPEndPoint ipEp = (IPEndPoint) listener.LocalEndpoint;
int nLocalPort = ipEp.Port;
string sLocalAddress = ipAddress.ToString();
//Connect with the server
TcpClient connector = new TcpClient();
try
{
connector.Connect(m_cServerAddress, m_nMServerPort);
}
catch (SocketException exSocket)
{
string s = exSocket.Message + exSocket.StackTrace;
throw new BMXNetException(s);
}
//Prepare & send the connect message
string cSend = "TCPconnect^" + sLocalAddress + "^" + nLocalPort.ToString() + "^";
int nLen = cSend.Length;
string sLen = nLen.ToString();
sLen = sLen.PadLeft(5, '0');
cSend = "{XWB}" + sLen + cSend;
NetworkStream ns = connector.GetStream();
byte[] sendBytes = Encoding.ASCII.GetBytes(cSend);
ns.Write(sendBytes,0,sendBytes.Length);
//Accept connection from server
DateTime dStartTime = DateTime.Now;
DateTime dEndTime;
bool bPending = false;
while (bPending == false)
{
if (listener.Pending() == true)
{
m_pCommSocket = listener.AcceptTcpClient();
bPending = true;
this.m_bConnected = true;
break;
}
dEndTime = DateTime.Now;
TimeSpan ds = dEndTime - dStartTime;
if (ds.TotalSeconds > 10) //TODO: Parameterize this timeout value
{
throw new Exception("AcceptTcpClient failed.");
}
}
try
{
bool bSecurity = SendSecurityRequest();
}
catch (Exception ex)
{
//Close the connection
SendString(m_pCommSocket, "#BYE#");
m_pCommSocket.Close();
m_bConnected = false;
m_cServerAddress = "";
throw ex;
}
m_bConnected = true;
// if ( bSecurity != true)
// {
// //Close the connection
// SendString(m_pCommSocket, "#BYE#");
// m_pCommSocket.Close();
// m_bConnected = false;
// m_cServerAddress = "";
// }
// else
// {
// m_bConnected = true;
// }
return m_bConnected;
}
catch (BMXNetException bmxEx)
{
throw bmxEx;
}
catch (Exception ex)
{
string s = ex.Message + ex.StackTrace;
throw new BMXNetException(s);
}
}
private void SendString(TcpClient tcpClient, string cSendString)
{
string sMult = "";
SendString(tcpClient, cSendString, sMult);
}
private void SendString(TcpClient tcpClient, string cSendString, string cMult)
{
int nLen = cSendString.Length;
string sLen = nLen.ToString();
sLen = sLen.PadLeft(5, '0');
cSendString = sLen + cSendString;
nLen += 15;
sLen = nLen.ToString();
sLen = sLen.PadLeft(5, '0');
cSendString = "{XWB}" + sLen + cSendString;
cSendString = cSendString + cMult;
NetworkStream ns = tcpClient.GetStream();
byte[] sendBytes = Encoding.ASCII.GetBytes(cSendString);
ns.Write(sendBytes,0,sendBytes.Length);
return;
}
private string ReceiveString(TcpClient tcpClient)
{
NetworkStream ns = tcpClient.GetStream();
do
{
}while (ns.DataAvailable == false);
byte[] bReadBuffer = new byte[1024];
string sReadBuffer = "";
StringBuilder sbAll = new StringBuilder("", 1024);
int numberOfBytesRead = 0;
// Incoming message may be larger than the buffer size.
numberOfBytesRead = ns.Read(bReadBuffer, 0, 2); //first two bytes are 0
bool bFinished = false;
int nFind = -1;
do
{
numberOfBytesRead = ns.Read(bReadBuffer, 0, bReadBuffer.Length);
nFind = FindChar(bReadBuffer, (char) 4);
if (nFind > -1)
bFinished = true;
sReadBuffer = Encoding.ASCII.GetString(bReadBuffer, 0, numberOfBytesRead);
if (nFind > -1)
{
sbAll.Append(sReadBuffer, 0, numberOfBytesRead -1);
}
else
{
sbAll.Append(sReadBuffer);
}
}
while(bFinished == false);
return sbAll.ToString();
}
private bool SendSecurityRequest()
{
string strReceive = "";
string cAccess;
string cVerify;
//Setup Signon Environment
string cMSG = this.ADEBLDB("0XUS SIGNON SETUP^00000", 5);
cMSG = m_cHDR + cMSG;
SendString(m_pCommSocket, cMSG);
strReceive = ReceiveString(m_pCommSocket);
cAccess = m_cAccess.ToUpper();
cVerify = m_cVerify.ToUpper();
//Build AV Call
string strAV = cAccess + ";" + cVerify;
strAV = ADEEncryp(strAV);
cMSG = ADEBLDMsg(m_cHDR, "XUS AV CODE", strAV,"");
SendString(m_pCommSocket, cMSG);
strReceive = ReceiveString(m_pCommSocket);
char[] cDelim = {(char) 13,(char) 10,(char) 0};
m_cAuthentication = strReceive;
string sDelim = new string(cDelim);
int nPiece = 1;
m_cDUZ = Piece(m_cAuthentication, sDelim , nPiece);
if ((m_cDUZ == "0")||(m_cDUZ == ""))
{
m_cAccess = "";
m_cVerify = "";
string sReason = Piece(m_cAuthentication, sDelim, 7);
throw new Exception(sReason);
}
m_cAccess = cAccess;
m_cVerify = cVerify;
//Set up context
if (m_cAppContext == null)
m_cAppContext = "XUS SIGNON";
SendString(m_pCommSocket, ADEBLDMsg(m_cHDR, "XWB CREATE CONTEXT", ADEEncryp(m_cAppContext), ""));
m_cAuthentication = ReceiveString(m_pCommSocket);
return true;
}
public void CloseConnection()
{
if (!m_bConnected)
{
return;
}
SendString(m_pCommSocket, "#BYE#");
m_pCommSocket.Close();
m_bConnected = false;
m_cServerAddress = "";
m_cAuthentication = "";
m_cDUZ2 = "";
m_cAccess = "";
m_cVerify = "";
m_cDUZ = "";
}
public string TransmitRPC(string sRPC, string sParam)
{
if (m_bConnected == false)
{
//Raise Exception
throw new BMXNetException("BMXNetLib.TransmitRPC failed because BMXNetLib is not connected to RPMS.");
}
Debug.Assert(m_cDUZ != "");
Debug.Assert(m_pCommSocket != null);
string sMult = "";
string sSend = ADEBLDMsg(m_cHDR, sRPC, sParam, sMult);
SendString(m_pCommSocket, sSend, sMult);
string strResult = ReceiveString(m_pCommSocket);
return strResult;
}
public string GetLoginFacility()
{
try
{
if (m_bConnected == false)
{
throw new BMXNetException("BMXNetLib is not connected to RPMS");
}
if (m_cLoginFacility != "")
{
return m_cLoginFacility;
}
Debug.Assert(m_pCommSocket != null);
Debug.Assert(m_cDUZ != "");
SendString(m_pCommSocket, ADEBLDMsg(m_cHDR, "BMXGetFac", m_cDUZ, ""));
string sFac = ReceiveString(m_pCommSocket);
m_cLoginFacility = sFac;
return sFac;
}
catch (BMXNetException bmxEx)
{
string sMessage = bmxEx.Message + bmxEx.StackTrace;
throw new BMXNetException(sMessage);
}
catch (Exception ex)
{
throw ex;
}
}
TcpClient m_pCommSocket;
#endregion RPX Functions
#region RPX Properties
public string WKID
{
get
{
return m_sWKID;
}
set
{
m_sWKID = value;
}
}
public string PRCH
{
get
{
return m_sPRCH;
}
set
{
m_sPRCH = value;
}
}
public string WINH
{
get
{
return m_sWINH;
}
set
{
m_sWINH = value;
}
}
public string WISH
{
get
{
return m_sWISH;
}
set
{
m_sWISH = value;
}
}
public string AppContext
{
get
{
return m_cAppContext;
}
set
{
m_cAppContext = value;
//TODO: send the changed context to RPMS
}
}
public bool Connected
{
get
{
return m_bConnected;
}
}
public string DUZ
{
get
{
return m_cDUZ;
}
}
// public string Error
// {
// get
// {
// return "";
// }
// }
public string DUZ2
{
get
{
return m_cDUZ2;
}
set
{
m_cDUZ2 = value;
//TODO: send the changed context to RPMS
}
}
public string MServerAddress
{
get
{
return m_cServerAddress;
}
}
public int MServerPort
{
get
{
return m_nMServerPort;
}
set
{
m_nMServerPort = value;
}
}
#endregion RPX Properties
}
}

View File

@ -0,0 +1,149 @@
using System;
using System.Data;
namespace IndianHealthService.BMXNet
{
public class BMXNetParameter : IDataParameter
{
DbType m_dbType = DbType.Object;
ParameterDirection m_direction = ParameterDirection.Input;
bool m_fNullable = false;
bool m_fIsKey = false;
string m_sParamName;
string m_sSourceColumn;
DataRowVersion m_sourceVersion = DataRowVersion.Current;
object m_value;
public BMXNetParameter()
{
}
public BMXNetParameter(string parameterName, DbType type)
{
m_sParamName = parameterName;
m_dbType = type;
}
public BMXNetParameter(string parameterName, object value)
{
m_sParamName = parameterName;
this.Value = value;
// Setting the value also infers the type.
}
public BMXNetParameter( string parameterName, DbType dbType, string sourceColumn )
{
m_sParamName = parameterName;
m_dbType = dbType;
m_sSourceColumn = sourceColumn;
}
public DbType DbType
{
get { return m_dbType; }
set { m_dbType = value; }
}
public ParameterDirection Direction
{
get { return m_direction; }
set { m_direction = value; }
}
public Boolean IsKey
{
get { return m_fIsKey; }
set {m_fIsKey = value; }
}
public Boolean IsNullable
{
get { return m_fNullable; }
}
public String ParameterName
{
get { return m_sParamName; }
set { m_sParamName = value; }
}
public String SourceColumn
{
get { return m_sSourceColumn; }
set { m_sSourceColumn = value; }
}
public DataRowVersion SourceVersion
{
get { return m_sourceVersion; }
set { m_sourceVersion = value; }
}
public object Value
{
get
{
return m_value;
}
set
{
m_value = value;
m_dbType = _inferType(value);
}
}
private DbType _inferType(Object value)
{
switch (Type.GetTypeCode(value.GetType()))
{
case TypeCode.Empty:
throw new SystemException("Invalid data type");
case TypeCode.Object:
return DbType.Object;
case TypeCode.DBNull:
case TypeCode.Char:
case TypeCode.SByte:
case TypeCode.UInt16:
case TypeCode.UInt32:
case TypeCode.UInt64:
// Throw a SystemException for unsupported data types.
throw new SystemException("Invalid data type");
case TypeCode.Boolean:
return DbType.Boolean;
case TypeCode.Byte:
return DbType.Byte;
case TypeCode.Int16:
return DbType.Int16;
case TypeCode.Int32:
return DbType.Int32;
case TypeCode.Int64:
return DbType.Int64;
case TypeCode.Single:
return DbType.Single;
case TypeCode.Double:
return DbType.Double;
case TypeCode.Decimal:
return DbType.Decimal;
case TypeCode.DateTime:
return DbType.DateTime;
case TypeCode.String:
return DbType.String;
default:
throw new SystemException("Value is of unknown data type");
}
}
}
}

View File

@ -0,0 +1,85 @@
using System;
using System.Data;
using System.Collections;
using System.Globalization;
namespace IndianHealthService.BMXNet
{
/*
* Because IDataParameterCollection is primarily an IList,
* the sample can use an existing class for most of the implementation.
*/
public class BMXNetParameterCollection : ArrayList, IDataParameterCollection
{
public object this[string index]
{
get
{
return this[IndexOf(index)];
}
set
{
this[IndexOf(index)] = value;
}
}
public bool Contains(string parameterName)
{
return(-1 != IndexOf(parameterName));
}
public int IndexOf(string parameterName)
{
int index = 0;
foreach(BMXNetParameter item in this)
{
if (0 == _cultureAwareCompare(item.ParameterName, parameterName))
{
return index;
}
index++;
}
return -1;
}
public void RemoveAt(string parameterName)
{
RemoveAt(IndexOf(parameterName));
}
public override int Add(object value)
{
return Add((BMXNetParameter)value);
}
public int Add(BMXNetParameter value)
{
if (((BMXNetParameter)value).ParameterName != null)
{
return base.Add(value);
}
else
throw new ArgumentException("parameter must be named");
}
public int Add(string parameterName, DbType type)
{
return Add(new BMXNetParameter(parameterName, type));
}
public int Add(string parameterName, object value)
{
return Add(new BMXNetParameter(parameterName, value));
}
public int Add(string parameterName, DbType dbType, string sourceColumn)
{
return Add(new BMXNetParameter(parameterName, dbType, sourceColumn));
}
private int _cultureAwareCompare(string strA, string strB)
{
return CultureInfo.CurrentCulture.CompareInfo.Compare(strA, strB, CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase);
}
}
}

View File

@ -0,0 +1,64 @@
using System;
using System.Data;
namespace IndianHealthService.BMXNet
{
public class BMXNetTransaction : IDbTransaction
{
public IsolationLevel IsolationLevel
{
/*
* Should return the current transaction isolation
* level. For the BMXNet, assume the default
* which is ReadCommitted.
*/
get { return IsolationLevel.ReadCommitted; }
}
public void Commit()
{
/*
* Implement Commit here. Although the BMXNet does
* not provide an implementation, it should never be
* a no-op because data corruption could result.
*/
}
public void Rollback()
{
/*
* Implement Rollback here. Although the BMXNet does
* not provide an implementation, it should never be
* a no-op because data corruption could result.
*/
}
public IDbConnection Connection
{
/*
* Return the connection for the current transaction.
*/
get { return this.Connection; }
}
public void Dispose()
{
this.Dispose(true);
System.GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (disposing)
{
if (null != this.Connection)
{
// implicitly rollback if transaction still valid
this.Rollback();
}
}
}
}
}

View File

@ -0,0 +1,269 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace IndianHealthService.BMXNet
{
/// <summary>
/// Summary description for DLoginInfo.
/// </summary>
public class DLoginInfo : System.Windows.Forms.Form
{
private System.Windows.Forms.Panel pnlPageBottom;
private System.Windows.Forms.Button cmdCancel;
private System.Windows.Forms.Button cmdOK;
private System.Windows.Forms.Panel pnlDescription;
private System.Windows.Forms.GroupBox grpDescriptionResourceGroup;
private System.Windows.Forms.Label lblDescriptionResourceGroup;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtVerify;
private System.Windows.Forms.TextBox txtAccess;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public DLoginInfo()
{
InitializeComponent();
}
#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.pnlPageBottom = new System.Windows.Forms.Panel();
this.cmdCancel = new System.Windows.Forms.Button();
this.cmdOK = new System.Windows.Forms.Button();
this.pnlDescription = new System.Windows.Forms.Panel();
this.grpDescriptionResourceGroup = new System.Windows.Forms.GroupBox();
this.lblDescriptionResourceGroup = new System.Windows.Forms.Label();
this.txtVerify = new System.Windows.Forms.TextBox();
this.txtAccess = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.pnlPageBottom.SuspendLayout();
this.pnlDescription.SuspendLayout();
this.grpDescriptionResourceGroup.SuspendLayout();
this.SuspendLayout();
//
// pnlPageBottom
//
this.pnlPageBottom.Controls.Add(this.cmdCancel);
this.pnlPageBottom.Controls.Add(this.cmdOK);
this.pnlPageBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlPageBottom.Location = new System.Drawing.Point(0, 174);
this.pnlPageBottom.Name = "pnlPageBottom";
this.pnlPageBottom.Size = new System.Drawing.Size(448, 40);
this.pnlPageBottom.TabIndex = 6;
//
// cmdCancel
//
this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cmdCancel.Location = new System.Drawing.Point(376, 8);
this.cmdCancel.Name = "cmdCancel";
this.cmdCancel.Size = new System.Drawing.Size(56, 24);
this.cmdCancel.TabIndex = 4;
this.cmdCancel.Text = "Cancel";
//
// cmdOK
//
this.cmdOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.cmdOK.Location = new System.Drawing.Point(296, 8);
this.cmdOK.Name = "cmdOK";
this.cmdOK.Size = new System.Drawing.Size(64, 24);
this.cmdOK.TabIndex = 3;
this.cmdOK.Text = "OK";
this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
//
// pnlDescription
//
this.pnlDescription.Controls.Add(this.grpDescriptionResourceGroup);
this.pnlDescription.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlDescription.Location = new System.Drawing.Point(0, 102);
this.pnlDescription.Name = "pnlDescription";
this.pnlDescription.Size = new System.Drawing.Size(448, 72);
this.pnlDescription.TabIndex = 7;
//
// grpDescriptionResourceGroup
//
this.grpDescriptionResourceGroup.Controls.Add(this.lblDescriptionResourceGroup);
this.grpDescriptionResourceGroup.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpDescriptionResourceGroup.Location = new System.Drawing.Point(0, 0);
this.grpDescriptionResourceGroup.Name = "grpDescriptionResourceGroup";
this.grpDescriptionResourceGroup.Size = new System.Drawing.Size(448, 72);
this.grpDescriptionResourceGroup.TabIndex = 1;
this.grpDescriptionResourceGroup.TabStop = false;
this.grpDescriptionResourceGroup.Text = "Description";
//
// lblDescriptionResourceGroup
//
this.lblDescriptionResourceGroup.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblDescriptionResourceGroup.Location = new System.Drawing.Point(3, 16);
this.lblDescriptionResourceGroup.Name = "lblDescriptionResourceGroup";
this.lblDescriptionResourceGroup.Size = new System.Drawing.Size(442, 53);
this.lblDescriptionResourceGroup.TabIndex = 0;
this.lblDescriptionResourceGroup.Text = "Use this panel to enter the Access and Verify codes that you use to log in to the" +
" RPMS server. ";
//
// txtVerify
//
this.txtVerify.Location = new System.Drawing.Point(160, 56);
this.txtVerify.Name = "txtVerify";
this.txtVerify.PasswordChar = '*';
this.txtVerify.Size = new System.Drawing.Size(160, 20);
this.txtVerify.TabIndex = 2;
this.txtVerify.Text = "";
//
// txtAccess
//
this.txtAccess.Location = new System.Drawing.Point(160, 24);
this.txtAccess.Name = "txtAccess";
this.txtAccess.PasswordChar = '*';
this.txtAccess.Size = new System.Drawing.Size(160, 20);
this.txtAccess.TabIndex = 1;
this.txtAccess.Text = "";
//
// label2
//
this.label2.Location = new System.Drawing.Point(24, 56);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(128, 16);
this.label2.TabIndex = 12;
this.label2.Text = "RPMS Verify Code:";
//
// label1
//
this.label1.Location = new System.Drawing.Point(24, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(128, 16);
this.label1.TabIndex = 11;
this.label1.Text = "RPMS Access Code:";
//
// DLoginInfo
//
this.AcceptButton = this.cmdOK;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(448, 214);
this.Controls.Add(this.txtVerify);
this.Controls.Add(this.txtAccess);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.pnlDescription);
this.Controls.Add(this.pnlPageBottom);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "DLoginInfo";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "RPMS Login";
this.Load += new System.EventHandler(this.DLoginInfo_Load);
this.Activated += new System.EventHandler(this.DLoginInfo_Activated);
this.pnlPageBottom.ResumeLayout(false);
this.pnlDescription.ResumeLayout(false);
this.grpDescriptionResourceGroup.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
#region Fields
string m_sAccess;
string m_sVerify;
#endregion Fields
#region Methods
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
public void InitializePage(string sAccess, string sVerify)
{
m_sAccess = sAccess;
m_sVerify = sVerify;
UpdateDialogData(true);
}
/// <summary>
/// If b is true, moves member vars into control data
/// otherwise, moves control data into member vars
/// </summary>
/// <param name="b"></param>
private void UpdateDialogData(bool b)
{
if (b == true) //move member vars into controls
{
txtAccess.Text = m_sAccess;
txtVerify.Text = m_sVerify;
}
else //move control data into member vars
{
m_sVerify = txtVerify.Text;
m_sAccess = txtAccess.Text;
}
}
private void cmdOK_Click(object sender, System.EventArgs e)
{
this.UpdateDialogData(false);
return;
}
#endregion Methods
private void DLoginInfo_Activated(object sender, System.EventArgs e)
{
txtAccess.Focus();
}
private void DLoginInfo_Load(object sender, System.EventArgs e)
{
this.Activate();
}
#region Properties
/// <summary>
/// Gets the access code entered by the user.
/// </summary>
public string AccessCode
{
get
{
return m_sAccess;
}
}
/// <summary>
/// Gets the verify code entered by the user.
/// </summary>
public string VerifyCode
{
get
{
return m_sVerify;
}
}
#endregion Properties
}
}

View File

@ -0,0 +1,247 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
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">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</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 forserialized 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.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:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="pnlPageBottom.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="pnlPageBottom.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="pnlPageBottom.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="pnlPageBottom.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="pnlPageBottom.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="pnlPageBottom.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdCancel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cmdCancel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdCancel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdOK.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cmdOK.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdOK.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="pnlDescription.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="pnlDescription.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="pnlDescription.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="pnlDescription.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="pnlDescription.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="pnlDescription.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="grpDescriptionResourceGroup.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="grpDescriptionResourceGroup.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="grpDescriptionResourceGroup.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="grpDescriptionResourceGroup.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="grpDescriptionResourceGroup.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="grpDescriptionResourceGroup.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="lblDescriptionResourceGroup.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="lblDescriptionResourceGroup.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="lblDescriptionResourceGroup.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="txtVerify.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="txtVerify.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="txtVerify.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="txtAccess.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="txtAccess.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="txtAccess.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label2.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="label2.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label2.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="label1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.Name">
<value>DLoginInfo</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>

View File

@ -0,0 +1,223 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace IndianHealthService.BMXNet
{
/// <summary>
/// Summary description for DSelectDivision.
/// </summary>
public partial class DSelectDivision : System.Windows.Forms.Form
{
private System.Windows.Forms.Panel pnlPageBottom;
private System.Windows.Forms.Button cmdCancel;
private System.Windows.Forms.Button cmdOK;
private System.Windows.Forms.Panel pnlDescription;
private System.Windows.Forms.GroupBox grpDescriptionResourceGroup;
private System.Windows.Forms.Label lblDescriptionResourceGroup;
private System.Windows.Forms.ListBox lstDivision;
private System.Windows.Forms.Label label1;
private System.ComponentModel.Container components = null;
#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.pnlPageBottom = new System.Windows.Forms.Panel();
this.cmdCancel = new System.Windows.Forms.Button();
this.cmdOK = new System.Windows.Forms.Button();
this.pnlDescription = new System.Windows.Forms.Panel();
this.grpDescriptionResourceGroup = new System.Windows.Forms.GroupBox();
this.lblDescriptionResourceGroup = new System.Windows.Forms.Label();
this.lstDivision = new System.Windows.Forms.ListBox();
this.label1 = new System.Windows.Forms.Label();
this.pnlPageBottom.SuspendLayout();
this.pnlDescription.SuspendLayout();
this.grpDescriptionResourceGroup.SuspendLayout();
this.SuspendLayout();
//
// pnlPageBottom
//
this.pnlPageBottom.Controls.Add(this.cmdCancel);
this.pnlPageBottom.Controls.Add(this.cmdOK);
this.pnlPageBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlPageBottom.Location = new System.Drawing.Point(0, 262);
this.pnlPageBottom.Name = "pnlPageBottom";
this.pnlPageBottom.Size = new System.Drawing.Size(456, 40);
this.pnlPageBottom.TabIndex = 7;
//
// cmdCancel
//
this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cmdCancel.Location = new System.Drawing.Point(376, 8);
this.cmdCancel.Name = "cmdCancel";
this.cmdCancel.Size = new System.Drawing.Size(56, 24);
this.cmdCancel.TabIndex = 4;
this.cmdCancel.Text = "Cancel";
//
// cmdOK
//
this.cmdOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.cmdOK.Location = new System.Drawing.Point(296, 8);
this.cmdOK.Name = "cmdOK";
this.cmdOK.Size = new System.Drawing.Size(64, 24);
this.cmdOK.TabIndex = 3;
this.cmdOK.Text = "OK";
this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
//
// pnlDescription
//
this.pnlDescription.Controls.Add(this.grpDescriptionResourceGroup);
this.pnlDescription.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlDescription.Location = new System.Drawing.Point(0, 190);
this.pnlDescription.Name = "pnlDescription";
this.pnlDescription.Size = new System.Drawing.Size(456, 72);
this.pnlDescription.TabIndex = 8;
//
// grpDescriptionResourceGroup
//
this.grpDescriptionResourceGroup.Controls.Add(this.lblDescriptionResourceGroup);
this.grpDescriptionResourceGroup.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpDescriptionResourceGroup.Location = new System.Drawing.Point(0, 0);
this.grpDescriptionResourceGroup.Name = "grpDescriptionResourceGroup";
this.grpDescriptionResourceGroup.Size = new System.Drawing.Size(456, 72);
this.grpDescriptionResourceGroup.TabIndex = 1;
this.grpDescriptionResourceGroup.TabStop = false;
this.grpDescriptionResourceGroup.Text = "Description";
//
// lblDescriptionResourceGroup
//
this.lblDescriptionResourceGroup.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblDescriptionResourceGroup.Location = new System.Drawing.Point(3, 16);
this.lblDescriptionResourceGroup.Name = "lblDescriptionResourceGroup";
this.lblDescriptionResourceGroup.Size = new System.Drawing.Size(450, 53);
this.lblDescriptionResourceGroup.TabIndex = 0;
this.lblDescriptionResourceGroup.Text = "Use this panel to select the Division.";
//
// lstDivision
//
this.lstDivision.Location = new System.Drawing.Point(40, 48);
this.lstDivision.Name = "lstDivision";
this.lstDivision.Size = new System.Drawing.Size(384, 121);
this.lstDivision.TabIndex = 9;
//
// label1
//
this.label1.Location = new System.Drawing.Point(40, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(240, 16);
this.label1.TabIndex = 10;
this.label1.Text = "Select Division:";
//
// DSelectDivision
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(456, 302);
this.Controls.Add(this.label1);
this.Controls.Add(this.lstDivision);
this.Controls.Add(this.pnlDescription);
this.Controls.Add(this.pnlPageBottom);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "DSelectDivision";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Select Division";
this.pnlPageBottom.ResumeLayout(false);
this.pnlDescription.ResumeLayout(false);
this.grpDescriptionResourceGroup.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
#region Fields
private DataTable m_dtDivisions;
private string m_sDUZ2;
private string m_sDivisionName;
#endregion Fields
#region Properties
public string DivisionName
{
get
{
return this.m_sDivisionName;
}
}
public string DUZ2
{
get
{
return this.m_sDUZ2;
}
}
#endregion Properties
#region Methods
public void InitializePage(DataTable dtDivisions, string sDUZ2)
{
m_dtDivisions = dtDivisions;
m_sDUZ2 = sDUZ2;
UpdateDialogData(true);
}
/// <summary>
/// If b is true, moves member vars into control data
/// otherwise, moves control data into member vars
/// </summary>
/// <param name="b"></param>
private void UpdateDialogData(bool b)
{
if (b == true) //move member vars into controls
{
this.lstDivision.DataSource = m_dtDivisions;
lstDivision.DisplayMember = "FACILITY_NAME";
lstDivision.ValueMember = "FACILITY_IEN";
lstDivision.SelectedValue = m_sDUZ2;
}
else //move control data into member vars
{
this.m_sDUZ2 = lstDivision.SelectedValue.ToString();
this.m_sDivisionName = lstDivision.Text;
}
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
public DSelectDivision()
{
InitializeComponent();
}
#endregion Methods
private void cmdOK_Click(object sender, System.EventArgs e)
{
this.UpdateDialogData(false);
return;
}
}
}

View File

@ -0,0 +1,229 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
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">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</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 forserialized 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.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:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="pnlPageBottom.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="pnlPageBottom.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="pnlPageBottom.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="pnlPageBottom.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="pnlPageBottom.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="pnlPageBottom.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdCancel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cmdCancel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdCancel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdOK.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cmdOK.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdOK.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="pnlDescription.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="pnlDescription.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="pnlDescription.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="pnlDescription.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="pnlDescription.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="pnlDescription.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="grpDescriptionResourceGroup.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="grpDescriptionResourceGroup.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="grpDescriptionResourceGroup.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="grpDescriptionResourceGroup.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="grpDescriptionResourceGroup.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="grpDescriptionResourceGroup.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="lblDescriptionResourceGroup.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="lblDescriptionResourceGroup.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="lblDescriptionResourceGroup.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="lstDivision.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="lstDivision.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="lstDivision.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="label1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Name">
<value>DSelectDivision</value>
</data>
</root>

View File

@ -0,0 +1,326 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Diagnostics;
namespace IndianHealthService.BMXNet
{
/// <summary>
/// Prompts for RPMS Server address and port
/// Obtains current values, if any, from isolated storage
/// and uses them as defaults.
/// If OK, then writes values to isolated storage and returns
/// Address and Port as properties.
///
/// </summary>
public partial class DServerInfo : System.Windows.Forms.Form
{
private System.Windows.Forms.Panel pnlPageBottom;
private System.Windows.Forms.Button cmdCancel;
private System.Windows.Forms.Button cmdOK;
private System.Windows.Forms.Panel pnlDescription;
private System.Windows.Forms.GroupBox grpDescriptionResourceGroup;
private System.Windows.Forms.Label lblDescriptionResourceGroup;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtAddress;
private System.Windows.Forms.TextBox txtPort;
private TextBox txtNamespace;
private Label label3;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public DServerInfo()
{
InitializeComponent();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(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()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DServerInfo));
this.pnlPageBottom = new System.Windows.Forms.Panel();
this.cmdCancel = new System.Windows.Forms.Button();
this.cmdOK = new System.Windows.Forms.Button();
this.pnlDescription = new System.Windows.Forms.Panel();
this.grpDescriptionResourceGroup = new System.Windows.Forms.GroupBox();
this.lblDescriptionResourceGroup = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.txtAddress = new System.Windows.Forms.TextBox();
this.txtPort = new System.Windows.Forms.TextBox();
this.txtNamespace = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.pnlPageBottom.SuspendLayout();
this.pnlDescription.SuspendLayout();
this.grpDescriptionResourceGroup.SuspendLayout();
this.SuspendLayout();
//
// pnlPageBottom
//
this.pnlPageBottom.Controls.Add(this.cmdCancel);
this.pnlPageBottom.Controls.Add(this.cmdOK);
this.pnlPageBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlPageBottom.Location = new System.Drawing.Point(0, 203);
this.pnlPageBottom.Name = "pnlPageBottom";
this.pnlPageBottom.Size = new System.Drawing.Size(488, 40);
this.pnlPageBottom.TabIndex = 5;
//
// cmdCancel
//
this.cmdCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cmdCancel.Location = new System.Drawing.Point(376, 8);
this.cmdCancel.Name = "cmdCancel";
this.cmdCancel.Size = new System.Drawing.Size(56, 24);
this.cmdCancel.TabIndex = 2;
this.cmdCancel.Text = "Cancel";
this.cmdCancel.Click += new System.EventHandler(this.cmdCancel_Click);
//
// cmdOK
//
this.cmdOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.cmdOK.Location = new System.Drawing.Point(296, 8);
this.cmdOK.Name = "cmdOK";
this.cmdOK.Size = new System.Drawing.Size(64, 24);
this.cmdOK.TabIndex = 1;
this.cmdOK.Text = "OK";
this.cmdOK.Click += new System.EventHandler(this.cmdOK_Click);
//
// pnlDescription
//
this.pnlDescription.Controls.Add(this.grpDescriptionResourceGroup);
this.pnlDescription.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlDescription.Location = new System.Drawing.Point(0, 131);
this.pnlDescription.Name = "pnlDescription";
this.pnlDescription.Size = new System.Drawing.Size(488, 72);
this.pnlDescription.TabIndex = 6;
//
// grpDescriptionResourceGroup
//
this.grpDescriptionResourceGroup.Controls.Add(this.lblDescriptionResourceGroup);
this.grpDescriptionResourceGroup.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpDescriptionResourceGroup.Location = new System.Drawing.Point(0, 0);
this.grpDescriptionResourceGroup.Name = "grpDescriptionResourceGroup";
this.grpDescriptionResourceGroup.Size = new System.Drawing.Size(488, 72);
this.grpDescriptionResourceGroup.TabIndex = 1;
this.grpDescriptionResourceGroup.TabStop = false;
this.grpDescriptionResourceGroup.Text = "Description";
//
// lblDescriptionResourceGroup
//
this.lblDescriptionResourceGroup.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblDescriptionResourceGroup.Location = new System.Drawing.Point(3, 16);
this.lblDescriptionResourceGroup.Name = "lblDescriptionResourceGroup";
this.lblDescriptionResourceGroup.Size = new System.Drawing.Size(482, 53);
this.lblDescriptionResourceGroup.TabIndex = 0;
this.lblDescriptionResourceGroup.Text = resources.GetString("lblDescriptionResourceGroup.Text");
//
// label1
//
this.label1.Location = new System.Drawing.Point(24, 24);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(128, 16);
this.label1.TabIndex = 7;
this.label1.Text = "RPMS Server Address:";
//
// label2
//
this.label2.Location = new System.Drawing.Point(24, 56);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(128, 16);
this.label2.TabIndex = 8;
this.label2.Text = "Server Port:";
//
// txtAddress
//
this.txtAddress.Location = new System.Drawing.Point(160, 24);
this.txtAddress.Name = "txtAddress";
this.txtAddress.Size = new System.Drawing.Size(280, 20);
this.txtAddress.TabIndex = 9;
//
// txtPort
//
this.txtPort.Location = new System.Drawing.Point(160, 56);
this.txtPort.Name = "txtPort";
this.txtPort.Size = new System.Drawing.Size(72, 20);
this.txtPort.TabIndex = 10;
//
// txtNamespace
//
this.txtNamespace.Location = new System.Drawing.Point(160, 89);
this.txtNamespace.Name = "txtNamespace";
this.txtNamespace.Size = new System.Drawing.Size(72, 20);
this.txtNamespace.TabIndex = 12;
//
// label3
//
this.label3.Location = new System.Drawing.Point(24, 89);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(128, 16);
this.label3.TabIndex = 11;
this.label3.Text = "Server Namespace:";
//
// DServerInfo
//
this.AcceptButton = this.cmdOK;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(488, 243);
this.Controls.Add(this.txtNamespace);
this.Controls.Add(this.label3);
this.Controls.Add(this.txtPort);
this.Controls.Add(this.txtAddress);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.pnlDescription);
this.Controls.Add(this.pnlPageBottom);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Name = "DServerInfo";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "RPMS Server Address";
this.Load += new System.EventHandler(this.DServerInfo_Load);
this.pnlPageBottom.ResumeLayout(false);
this.pnlDescription.ResumeLayout(false);
this.grpDescriptionResourceGroup.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
#region Fields
string m_sAddress;
int m_nPort;
string m_sNamespace;
#endregion Fields
#region Methods
public void InitializePage(string sAddress, int nPort, string sNamespace)
{
m_sAddress = sAddress;
m_nPort = nPort;
m_sNamespace = sNamespace;
UpdateDialogData(true);
}
/// <summary>
/// If b is true, moves member vars into control data
/// otherwise, moves control data into member vars
/// </summary>
/// <param name="b"></param>
private void UpdateDialogData(bool b)
{
if (b == true) //move member vars into controls
{
txtAddress.Text = m_sAddress;
txtPort.Text = m_nPort.ToString();
txtNamespace.Text = m_sNamespace;
}
else //move control data into member vars
{
try
{
m_nPort = Convert.ToInt16(txtPort.Text);
}
catch (Exception ex)
{
Debug.Write(ex.Message);
m_nPort = 0;
}
m_sAddress = txtAddress.Text;
m_sNamespace = txtNamespace.Text;
}
}
private void cmdOK_Click(object sender, System.EventArgs e)
{
this.UpdateDialogData(false);
return;
}
private void cmdCancel_Click(object sender, System.EventArgs e)
{
return;
}
private void DServerInfo_Load(object sender, System.EventArgs e)
{
this.Activate();
}
#endregion Methods
#region Properties
/// <summary>
/// Gets/sets the internet address of the RPMS Server
/// </summary>
public string MServerAddress
{
get
{
return m_sAddress;
}
set
{
m_sAddress = value;
}
}
/// <summary>
/// Gets/sets the namespace of the RPMS Server
/// </summary>
public string MServerNamespace
{
get
{
return m_sNamespace;
}
set
{
m_sNamespace = value;
}
}
/// <summary>
/// Gets/sets the TCP/IP Port of the RPMS Server
/// </summary>
public int MServerPort
{
get
{
return m_nPort;
}
set
{
m_nPort = value;
}
}
#endregion Properties
}
}

View File

@ -0,0 +1,123 @@
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lblDescriptionResourceGroup.Text" xml:space="preserve">
<value>Use this panel to specify the internet address and port of the RPMS server. The RPMS Server Port refers to the IP Port to which the VA RPC Broker is assigned on the RPMS Server. You may optionally specify the namespace (UCI) in which the applicaiton will run.</value>
</data>
</root>

Binary file not shown.

View File

@ -0,0 +1,504 @@
using System;
using System.Data;
using System.Text;
using System.Diagnostics;
namespace IndianHealthService.BMXNet
{
/*
* This class executes a query or RPC against the connected
* RPMS database and formats the return value as a RPMSDbResultSet
*/
public class RPMSDb
{
private string m_sSelectCmd = "SELECT ";
private string m_sUpdateCmd = "UPDATE ";
private string m_sCmd = "";
private BMXNetLib m_rpx;
private string m_sQueryType = "";
private RPMSDbResultSet[] m_aResultSets = null;
private int m_nCurrentSet = 0;
public class RPMSDbResultSet
{
public struct MetaData
{
public string name;
public Type type;
public int maxSize;
public string fmFieldID;
public bool fmReadOnly;
public bool fmKeyField;
}
public int recordsAffected;
public MetaData[] metaData;
public object[,] data;
public string fmKeyField;
public string fmFileID;
public string fmForeignKey = "";
public int fmSeed = 0;
}
//Constructor
public RPMSDb(BMXNetLib rpx)
{
m_rpx = rpx;
}
public void Execute(string sCmd, out RPMSDbResultSet resultset)
{
/*
* SELECT, UPDATE and RPC operations.
*/
if (0 == String.Compare(sCmd, 0, m_sSelectCmd, 0, m_sSelectCmd.Length, true))
{
m_sCmd = sCmd;
m_sQueryType = "SELECT";
_executeSelect(out resultset);
}
else if (0 == String.Compare(sCmd, 0, m_sUpdateCmd, 0, m_sUpdateCmd.Length, true))
{
m_sCmd = sCmd;
m_sQueryType = "UPDATE";
_executeUpdate(out resultset);
}
else //RPC Call
{
m_sQueryType = "RPC";
m_sCmd = sCmd;
_executeSelect(out resultset);
}
}
private void _executeSelect(out RPMSDbResultSet resultset)
{
if (m_nCurrentSet == 0)
_resultsetCreate();
// Return the current resultset.
resultset = m_aResultSets[m_nCurrentSet];
}
private void _executeUpdate(out RPMSDbResultSet resultset)
{
string sRPC;
string sOldContext = m_rpx.AppContext;
if (m_rpx.AppContext != "BMXRPC")
{
m_rpx.AppContext = "BMXRPC";
}
sRPC = "BMX UPDATE";
int nStart = 7;
m_sCmd = m_sCmd.Substring(nStart);
string sResult = m_rpx.TransmitRPC( sRPC, m_sCmd);
if (sOldContext != m_rpx.AppContext)
{
m_rpx.AppContext = sOldContext;
}
resultset = new RPMSDbResultSet();
resultset.recordsAffected = 1; //Make this the return value of the call
}
private string CallRPX()
{
//Make rpx call
string sRPC;
string sParam;
string sOldContext = m_rpx.AppContext;
if (m_sQueryType == "SELECT")
{
if (m_rpx.AppContext != "BMXRPC")
{
m_rpx.AppContext = "BMXRPC";
}
sRPC = "BMX SQL";
sParam = m_sCmd;
}
else //it's an RPC (stored procedure)
{
sRPC = BMXNetLib.Piece(m_sCmd, "^", 1);
sParam = BMXNetLib.Piece(m_sCmd, "^", 2 , 99);
}
string sResult = m_rpx.TransmitRPC( sRPC, sParam);
if (sOldContext != m_rpx.AppContext)
{
m_rpx.AppContext = sOldContext;
}
return sResult;
}
private void ProcessHeader(string sHeader, int nSet, out int numCols)
{
//Modifies m_aResultSet[nSet]
string sFldDelim = "^";
char[] cFldDelim = sFldDelim.ToCharArray();
string sZero = "0";
char[] cZero = sZero.ToCharArray();
string sBar = "|";
char[] cBar = sBar.ToCharArray();
int j;
if (sHeader.StartsWith("@@@meta@@@") == true)
{
//New style -- ColumnHeaderInfo in [1]
//Parse out data location or update logic here
//RecordInfo ^ Column1 info ^ column2 info ^ ... ^ column n info
string sType;
string sMaxSize;
string sFieldName;
string sReadOnly;
string sKeyField;
string sFileID;
string sSeed = "";
int nMaxSize;
Type tType;
int nTemp = 10;
sHeader = sHeader.Substring(10,(sHeader.Length - nTemp));
string[] sRecordSetInfo = sHeader.Split(cFldDelim);
numCols = sRecordSetInfo.GetLength(0)-1;
m_aResultSets[nSet].metaData = new RPMSDbResultSet.MetaData[numCols];
//First ^-Piece is recordset-level info: RecordIdentifier|File#
string[] sRecordInfo = sRecordSetInfo[0].Split(cBar);
m_aResultSets[nSet].fmFileID = sRecordInfo[1];
if (sRecordInfo.GetLength(0) > 2)
{
sSeed = sRecordInfo[2];
sSeed = (sSeed == "")?"0":sSeed;
try
{
m_aResultSets[nSet].fmSeed = Convert.ToInt32(sSeed);
}
catch (Exception ex)
{
Debug.Assert(false, "BMXNet.RMSPDb: 'Seed' value failed to convert to integer.");
Debug.Write(ex.Message + "\n");
}
}
if (sRecordInfo.GetLength(0) > 3)
{
m_aResultSets[nSet].fmForeignKey = sRecordInfo[4];
}
m_aResultSets[nSet].fmKeyField = "";
//2nd through nth ^-Pieces are Column info: Fileman File#FileMan Field#|DataType|Field Length|Column Name|IsReadOnly|IsKeyField
for (j=1; j < sRecordSetInfo.GetLength(0); j++)
{
string[] sColumnInfo = sRecordSetInfo[j].Split(cBar);
//Field 0 = FileID
//Field 1 = FieldID
//Field 2 = DataType
//Field 3 = Length
//Field 4 = ColumnName
//Field 5 = IsReadOnly
//Field 6 = IsKeyField
sFileID = sColumnInfo[0];
string sFieldID = sColumnInfo[1];
switch (sFieldID)
{
case ".001":
m_aResultSets[nSet].fmKeyField += "," + sColumnInfo[4];
break;
case ".0001":
m_aResultSets[nSet].fmKeyField = sColumnInfo[4];
break;
default:
break;
}
sType = sColumnInfo[2];
switch (sType)
{
case "D":
tType = typeof(DateTime);
break;
case "I":
tType = typeof(Int32);
break;
case "N":
tType = typeof(System.Double);
break;
default:
tType = typeof(String);
break;
}
sMaxSize = sColumnInfo[3];
nMaxSize = Convert.ToInt16(sMaxSize);
sFieldName = sColumnInfo[4];
if (m_aResultSets[nSet].fmForeignKey == sFieldID)
{
m_aResultSets[nSet].fmForeignKey = sFieldName;
}
sReadOnly = sColumnInfo[5];
sKeyField = sColumnInfo[6];
_resultsetFillColumn(nSet, j-1, sFieldName, tType, nMaxSize, sFieldID, sReadOnly, sKeyField);
}
}
else
{
//Old style column header info
string sField;
string sType;
string sMaxSize;
string sFieldName;
int nMaxSize;
Type tType;
string[] saHeader = sHeader.Split(cFldDelim);
numCols = saHeader.GetLength(0);
m_aResultSets[nSet].metaData = new RPMSDbResultSet.MetaData[numCols];
for (j=0; j < numCols; j++)
{
sField = saHeader[j];
sType = sField.Substring(0,1);
if (sType == "D")
{
tType = typeof(DateTime);
}
else if(sType == "I")
{
tType = typeof(Int32);
}
else if(sType == "N")
{
tType = typeof(System.Double);
}
else
{
tType = typeof(String);
}
sMaxSize = sField.Substring(1,5);
sMaxSize = sMaxSize.TrimStart(cZero);
nMaxSize = Convert.ToInt16(sMaxSize);
sFieldName = sField.Substring(6, sField.Length - 6);
_resultsetFillColumn(nSet, j, sFieldName, tType, nMaxSize);
}
}
}
private void ProcessRecords(string[] sResultArray, int nRecords, int nSet, int numCols, int nStartIndex)
{
string sFldDelim = "^";
char[] cFldDelim = sFldDelim.ToCharArray();
m_aResultSets[nSet].data = new object[nRecords-1, numCols];
string[] saRecord;
int j;
for (j = nStartIndex; j < nRecords + nStartIndex -1; j++)
{
saRecord = sResultArray[j].Split(cFldDelim);
for (int k = 0; k< saRecord.GetLength(0); k++)
{
if (m_aResultSets[nSet].metaData[k].type == typeof(DateTime))
{
if (saRecord[k] == "")
{
m_aResultSets[nSet].data[j-nStartIndex, k] = null;
}
else
{
try
{
m_aResultSets[nSet].data[j-nStartIndex, k] = Convert.ToDateTime(saRecord[k]);
}
catch (Exception ex)
{
Debug.Write(ex.Message);
m_aResultSets[nSet].data[j-nStartIndex, k] = null;
}
}
}
else if (m_aResultSets[nSet].metaData[k].type == typeof(Int32))
{
if (saRecord[k] == "")
{
m_aResultSets[nSet].data[j-nStartIndex, k] = null;
}
else
{
try
{
m_aResultSets[nSet].data[j-nStartIndex, k] = Convert.ToInt32(saRecord[k]);
}
catch (Exception ex)
{
Debug.Write(ex.Message);
m_aResultSets[nSet].data[j-nStartIndex, k] = null;
}
}
}
//TODO: Double datatype here
else //it's a string
{
m_aResultSets[nSet].data[j-nStartIndex, k] = saRecord[k];
}
}
}
}
private void _resultsetCreate()
{
m_nCurrentSet = 0;
char[] cRecDelim = new char[1];
cRecDelim[0] = (char) 30;
char cEof = (char) 31;
string sEof = cEof.ToString();
string sFldDelim = "^";
char[] cFldDelim = sFldDelim.ToCharArray();
string sZero = "0";
char[] cZero = sZero.ToCharArray();
string sBar = "|";
char[] cBar = sBar.ToCharArray();
string sResult = this.CallRPX();
string[] sResultArray = sResult.Split(cRecDelim);
int nTotalRecords = sResultArray.GetLength(0);
//Get set count and record count
int[] naRecords; //Count of records for each set
int[] naHeaderIndex; //Location (index) of header records in sResultArray
int nRecordSetCount; //Count of recordsets
IndexRecords(sResultArray, out naRecords, out naHeaderIndex, out nRecordSetCount);
m_aResultSets = new RPMSDbResultSet[nRecordSetCount];
for (int nSet = 0; nSet < nRecordSetCount; nSet++)
{
int nHeaderIndex = naHeaderIndex[nSet];
int nRecords = naRecords[nSet];
int numCols = 0;
m_aResultSets[nSet] = new RPMSDbResultSet();
m_aResultSets[nSet].recordsAffected = 0;
//process header
string sHeader = sResultArray[nHeaderIndex];
ProcessHeader(sHeader, nSet, out numCols);
//process records
this.ProcessRecords(sResultArray, nRecords, nSet, numCols, nHeaderIndex+1);
}
}
private void IndexRecords(string[] sResultArray,
out int[] naRecordsOut,
out int[] naHeaderIndexOut,
out int nSets)
{
int[] naHeaderIndex = new int[999];
int nTotalRecords = sResultArray.GetLength(0);
nSets = 0;
int[] naRecords = new int[999];
if (sResultArray[0].StartsWith("@@@meta@@@") == false)
{
//this is an old-style header with only one record
nSets = 1;
naHeaderIndex[0] = 0;
naRecords[0]=nTotalRecords - 1;
}
else
{
//Count the number of record sets and record the index of each header record
for (int k = 0; k < nTotalRecords; k++)
{
if (sResultArray[k].StartsWith("@@@meta@@@") == true)
{
naHeaderIndex[nSets] = k;
nSets++;
}
}
//Calculate record count for each set
for (int k = 0; k < nSets - 1; k++)
{
naRecords[k] = naHeaderIndex[k+1] - naHeaderIndex[k] ;// - 1;
}
naRecords[nSets-1] = nTotalRecords - naHeaderIndex[nSets - 1] - 1;
}
naRecordsOut = new int[nSets];
naHeaderIndexOut = new int[nSets];
for (int k = 0; k < nSets; k++)
{
naRecordsOut[k] = naRecords[k];
naHeaderIndexOut[k] = naHeaderIndex[k];
}
}
private void _resultsetFillColumn(int nSet, int nIdx, string name, Type type, int maxSize)
{
m_aResultSets[nSet].metaData[nIdx].name = name;
m_aResultSets[nSet].metaData[nIdx].type = type;
m_aResultSets[nSet].metaData[nIdx].maxSize = maxSize;
}
private void _resultsetFillColumn(int nSet, int nIdx, string name, Type type, int maxSize,
string sFieldID, string sReadOnly, string sKeyField)
{
m_aResultSets[nSet].metaData[nIdx].name = name;
m_aResultSets[nSet].metaData[nIdx].type = type;
m_aResultSets[nSet].metaData[nIdx].maxSize = maxSize;
m_aResultSets[nSet].metaData[nIdx].fmFieldID = sFieldID;
m_aResultSets[nSet].metaData[nIdx].fmReadOnly = (sReadOnly == "FALSE")?false:true;
m_aResultSets[nSet].metaData[nIdx].fmKeyField = (sKeyField == "TRUE")?true:false;
}
/// <summary>
/// Returns the array of RMPSResultSets retrieved from RPMS
/// </summary>
public RPMSDbResultSet[] ResultSets
{
get
{
return m_aResultSets;
}
}
/// <summary>
/// Sets and Returns the current recordset
/// </summary>
public int CurrentRecordSet
{
get
{
return m_nCurrentSet;
}
set
{
m_nCurrentSet = value;
}
}
}
}

Binary file not shown.

View File

@ -0,0 +1,418 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BMXNet20</name>
</assembly>
<members>
<member name="T:IndianHealthService.BMXNet.DLoginInfo">
<summary>
Summary description for DLoginInfo.
</summary>
</member>
<member name="F:IndianHealthService.BMXNet.DLoginInfo.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DLoginInfo.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DLoginInfo.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DLoginInfo.UpdateDialogData(System.Boolean)">
<summary>
If b is true, moves member vars into control data
otherwise, moves control data into member vars
</summary>
<param name="b"></param>
</member>
<member name="P:IndianHealthService.BMXNet.DLoginInfo.AccessCode">
<summary>
Gets the access code entered by the user.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.DLoginInfo.VerifyCode">
<summary>
Gets the verify code entered by the user.
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.BMXNetConnectInfo">
<summary>
Contains methods and properties to support RPMS Login for .NET applications
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.SubscribeEvent(System.String)">
<summary>
Register interest in an RPMS event.
</summary>
<param name="EventName"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.UnSubscribeEvent(System.String)">
<summary>
Unregister an RPMS event
</summary>
<param name="EventName"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.RaiseEvent(System.String,System.String,System.Boolean)">
<summary>
Raise an RPMS event
</summary>
<param name="EventName">The name of the event to raise</param>
<param name="Param">Parameters associated with the event</param>
<param name="RaiseBack">True if the event should be raised back to the caller</param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.Login">
<summary>
For backwards compatibility. Internally calls LoadConnectInfo()
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.ChangeServerInfo">
<summary>
Change the internet address and port of the RPMS server
Throws a BMXNetException if user cancels
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo">
<summary>
Called to connect to an M server
Server address, port, Access and Verify codes will be
prompted for depending on whether these values are
cached.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.Int32)">
<summary>
Called to connect to the M server specified by
server address and listener port. The default namespace on the server will be used.
Access and Verify codes will be prompted if
valid values for the current Windows Identity are
not cached on the server.
</summary>
<param name="MServerAddress">The IP address or name of the MServer</param>
<param name="Port">The port on which the BMXNet Monitor is listening</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.Int32,System.String)">
<summary>
Called to connect to the M server specified by
server address, listener port and namespace.
Access and Verify codes will be prompted if
valid values for the current Windows Identity are
not cached on the server.
</summary>
<param name="MServerAddress">The IP address or name of the MServer</param>
<param name="Port">The port on which the BMXNet Monitor is listening</param>
<param name="Namespace">The namespace in which the BMXNet application will run</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.String)">
<summary>
Called to connect to an M server
using specific Access and Verify codes.
Server address and port will be prompted if they
are not cached in local storage.
</summary>
<param name="AccessCode">The user's access code</param>
<param name="VerifyCode">The user's verify code</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.Int32,System.String,System.String)">
<summary>
Called to connect to a specific M server
using specific Access and Verify codes.
</summary>
<param name="AccessCode">The user's access code</param>
<param name="VerifyCode">The user's verify code</param>
<param name="MServerAddress">The IP address or name of the MServer</param>
<param name="Port">The port on which the BMXNet Monitor is listening</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.Int32,System.String,System.String,System.String)">
<summary>
Called to connect to a specific namespace on the M server
using specific Access and Verify codes.
</summary>
<param name="AccessCode">The user's access code</param>
<param name="VerifyCode">The user's verify code</param>
<param name="MServerAddress">The IP address or name of the MServer</param>
<param name="Port">The port on which the BMXNet Monitor is listening</param>
<param name="Namespace">The namespace in which the BMXNet application will run</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.RPMSDataTable(System.String,System.String)">
<summary>
Creates and names a DataTable using the command in CommandString
and the name in TableName.
</summary>
<param name="CommandString"> The SQL or RPC call</param>
<param name="TableName">The name of the resulting table</param>
<returns>
Returns the resulting DataTable.
</returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.RPMSDataTable(System.String,System.String,System.Data.DataSet)">
<summary>
Creates and names a DataTable using the command in CommandString
and the name in TableName then adds it to DataSet.
</summary>
<param name="CommandString">The SQL or RPC call</param>
<param name="TableName">The name of the resulting table</param>
<param name="dsDataSet">The dataset in which to place the table</param>
<returns>
Returns the resulting DataTable.
</returns>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.EventPollingEnabled">
<summary>
Enables and disables event polling for the RPMS connection
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.EventPollingInterval">
<summary>
Sets and retrieves the interval in milliseconds for RPMS event polling
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.AutoFire">
<summary>
Sets and retrieves the number of times that the Event Timer will generage a BMXNet AutoFire event.
For example, if AutoFire == 3, then every 3rd time the Event Timer fires, it will generate an AutoFire event.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.ReceiveTimeout">
<summary>
Set and retrieve the timeout, in milliseconds, to receive a response from the RPMS server.
If the retrieve time exceeds the timeout, an exception will be thrown and the connection will be closed.
The default is 30 seconds.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.DUZ">
<summary>
Returns a string representation of DUZ
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.DUZ2">
<summary>
Sets and Returns DUZ(2)
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.MServerAddress">
<summary>
Gets the address of the RPMS Server
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.MServerPort">
<summary>
Gets the port on which the MServer is connected
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.BMXNetConnectInfo.ServerData">
<summary>
Serializes RPMS server address and port
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.BMXNetLib">
<summary>
BMXNetLib implements low-level socket connectivity to RPMS databases.
The VA RPC Broker must be running on the RPMS server in order for
BMXNetLib to connect.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.PieceLength(System.String,System.String)">
<summary>
Corresponds to M's $L(STRING,DELIMITER)
</summary>
<param name="sInput"></param>
<param name="sDelim"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.Piece(System.String,System.String,System.Int32)">
<summary>
Corresponds to M's $$Piece function
</summary>
<param name="sInput"></param>
<param name="sDelim"></param>
<param name="nNumber"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBLDPadString(System.String)">
<summary>
Given strInput = "13" builds "013" if nLength = 3. Default for nLength is 3.
</summary>
<param name="strInput"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBLDPadString(System.String,System.Int32)">
<summary>
Given strInput = "13" builds "013" if nLength = 3 Default for nLength is 3.
</summary>
<param name="strInput"></param>
<param name="nLength">Default = 3</param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBLDB(System.String)">
<summary>
Concatenates zero-padded length of sInput to sInput
Given "Hello" returns "004Hello"
If nSize = 5, returns "00004Hello"
Default for nSize is 3.
</summary>
<param name="sInput"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBLDB(System.String,System.Int32)">
<summary>
Concatenates zero-padded length of sInput to sInput
Given "Hello" returns "004Hello"
If nSize = 5, returns "00004Hello"
Default for nSize is 3.
</summary>
<param name="sInput"></param>
<param name="nSize"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBHDR(System.String,System.String,System.String,System.String)">
<summary>
Build protocol header
</summary>
<param name="sWKID"></param>
<param name="sWINH"></param>
<param name="sPRCH"></param>
<param name="sWISH"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.FindSubString(System.String,System.String)">
<summary>
Returns index of first instance of sSubString in sString.
If sSubString not found, returns -1.
</summary>
<param name="sString"></param>
<param name="sSubString"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.Lock(System.String,System.String,System.String)">
<summary>
Lock a local or global M variable
Returns true if lock is obtained during TimeOut seconds
Use + to increment, - to decrement lock.
</summary>
<param name="Variable"></param>
<param name="Increment"></param>
<param name="TimeOut"></param>
<returns></returns>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetLib.BMXRWL">
<summary>
Returns a reference to the internal ReaderWriterLock member.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetLib.RWLTimeout">
<summary>
Sets and returns the timeout in milliseconds for locking the transmit port.
If the transmit port is unavailable an ApplicationException will be thrown.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetLib.ReceiveTimeout">
<summary>
Set and retrieve the timeout, in milliseconds, to receive a response from the RPMS server.
If the retrieve time exceeds the timeout, an exception will be thrown and the connection will be closed.
The default is 30 seconds.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetLib.AppContext">
<summary>
Gets/sets the Kernel Application context
Throws an exception if unable to set the context.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.RPMSDb.ResultSets">
<summary>
Returns the array of RMPSResultSets retrieved from RPMS
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.RPMSDb.CurrentRecordSet">
<summary>
Sets and Returns the current recordset
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.DSelectDivision">
<summary>
Summary description for DSelectDivision.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DSelectDivision.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DSelectDivision.UpdateDialogData(System.Boolean)">
<summary>
If b is true, moves member vars into control data
otherwise, moves control data into member vars
</summary>
<param name="b"></param>
</member>
<member name="M:IndianHealthService.BMXNet.DSelectDivision.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.DServerInfo">
<summary>
Prompts for RPMS Server address and port
Obtains current values, if any, from isolated storage
and uses them as defaults.
If OK, then writes values to isolated storage and returns
Address and Port as properties.
</summary>
</member>
<member name="F:IndianHealthService.BMXNet.DServerInfo.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DServerInfo.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DServerInfo.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DServerInfo.UpdateDialogData(System.Boolean)">
<summary>
If b is true, moves member vars into control data
otherwise, moves control data into member vars
</summary>
<param name="b"></param>
</member>
<member name="P:IndianHealthService.BMXNet.DServerInfo.MServerAddress">
<summary>
Gets/sets the internet address of the RPMS Server
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.DServerInfo.MServerNamespace">
<summary>
Gets/sets the namespace of the RPMS Server
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.DServerInfo.MServerPort">
<summary>
Gets/sets the TCP/IP Port of the RPMS Server
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.BMXNetException">
<summary>
Custom exception class for BMXNet
</summary>
</member>
</members>
</doc>

View File

@ -0,0 +1,418 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>BMXNet20</name>
</assembly>
<members>
<member name="T:IndianHealthService.BMXNet.DLoginInfo">
<summary>
Summary description for DLoginInfo.
</summary>
</member>
<member name="F:IndianHealthService.BMXNet.DLoginInfo.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DLoginInfo.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DLoginInfo.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DLoginInfo.UpdateDialogData(System.Boolean)">
<summary>
If b is true, moves member vars into control data
otherwise, moves control data into member vars
</summary>
<param name="b"></param>
</member>
<member name="P:IndianHealthService.BMXNet.DLoginInfo.AccessCode">
<summary>
Gets the access code entered by the user.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.DLoginInfo.VerifyCode">
<summary>
Gets the verify code entered by the user.
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.BMXNetConnectInfo">
<summary>
Contains methods and properties to support RPMS Login for .NET applications
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.SubscribeEvent(System.String)">
<summary>
Register interest in an RPMS event.
</summary>
<param name="EventName"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.UnSubscribeEvent(System.String)">
<summary>
Unregister an RPMS event
</summary>
<param name="EventName"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.RaiseEvent(System.String,System.String,System.Boolean)">
<summary>
Raise an RPMS event
</summary>
<param name="EventName">The name of the event to raise</param>
<param name="Param">Parameters associated with the event</param>
<param name="RaiseBack">True if the event should be raised back to the caller</param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.Login">
<summary>
For backwards compatibility. Internally calls LoadConnectInfo()
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.ChangeServerInfo">
<summary>
Change the internet address and port of the RPMS server
Throws a BMXNetException if user cancels
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo">
<summary>
Called to connect to an M server
Server address, port, Access and Verify codes will be
prompted for depending on whether these values are
cached.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.Int32)">
<summary>
Called to connect to the M server specified by
server address and listener port. The default namespace on the server will be used.
Access and Verify codes will be prompted if
valid values for the current Windows Identity are
not cached on the server.
</summary>
<param name="MServerAddress">The IP address or name of the MServer</param>
<param name="Port">The port on which the BMXNet Monitor is listening</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.Int32,System.String)">
<summary>
Called to connect to the M server specified by
server address, listener port and namespace.
Access and Verify codes will be prompted if
valid values for the current Windows Identity are
not cached on the server.
</summary>
<param name="MServerAddress">The IP address or name of the MServer</param>
<param name="Port">The port on which the BMXNet Monitor is listening</param>
<param name="Namespace">The namespace in which the BMXNet application will run</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.String)">
<summary>
Called to connect to an M server
using specific Access and Verify codes.
Server address and port will be prompted if they
are not cached in local storage.
</summary>
<param name="AccessCode">The user's access code</param>
<param name="VerifyCode">The user's verify code</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.Int32,System.String,System.String)">
<summary>
Called to connect to a specific M server
using specific Access and Verify codes.
</summary>
<param name="AccessCode">The user's access code</param>
<param name="VerifyCode">The user's verify code</param>
<param name="MServerAddress">The IP address or name of the MServer</param>
<param name="Port">The port on which the BMXNet Monitor is listening</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.LoadConnectInfo(System.String,System.Int32,System.String,System.String,System.String)">
<summary>
Called to connect to a specific namespace on the M server
using specific Access and Verify codes.
</summary>
<param name="AccessCode">The user's access code</param>
<param name="VerifyCode">The user's verify code</param>
<param name="MServerAddress">The IP address or name of the MServer</param>
<param name="Port">The port on which the BMXNet Monitor is listening</param>
<param name="Namespace">The namespace in which the BMXNet application will run</param>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.RPMSDataTable(System.String,System.String)">
<summary>
Creates and names a DataTable using the command in CommandString
and the name in TableName.
</summary>
<param name="CommandString"> The SQL or RPC call</param>
<param name="TableName">The name of the resulting table</param>
<returns>
Returns the resulting DataTable.
</returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetConnectInfo.RPMSDataTable(System.String,System.String,System.Data.DataSet)">
<summary>
Creates and names a DataTable using the command in CommandString
and the name in TableName then adds it to DataSet.
</summary>
<param name="CommandString">The SQL or RPC call</param>
<param name="TableName">The name of the resulting table</param>
<param name="dsDataSet">The dataset in which to place the table</param>
<returns>
Returns the resulting DataTable.
</returns>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.EventPollingEnabled">
<summary>
Enables and disables event polling for the RPMS connection
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.EventPollingInterval">
<summary>
Sets and retrieves the interval in milliseconds for RPMS event polling
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.AutoFire">
<summary>
Sets and retrieves the number of times that the Event Timer will generage a BMXNet AutoFire event.
For example, if AutoFire == 3, then every 3rd time the Event Timer fires, it will generate an AutoFire event.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.ReceiveTimeout">
<summary>
Set and retrieve the timeout, in milliseconds, to receive a response from the RPMS server.
If the retrieve time exceeds the timeout, an exception will be thrown and the connection will be closed.
The default is 30 seconds.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.DUZ">
<summary>
Returns a string representation of DUZ
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.DUZ2">
<summary>
Sets and Returns DUZ(2)
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.MServerAddress">
<summary>
Gets the address of the RPMS Server
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetConnectInfo.MServerPort">
<summary>
Gets the port on which the MServer is connected
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.BMXNetConnectInfo.ServerData">
<summary>
Serializes RPMS server address and port
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.BMXNetLib">
<summary>
BMXNetLib implements low-level socket connectivity to RPMS databases.
The VA RPC Broker must be running on the RPMS server in order for
BMXNetLib to connect.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.PieceLength(System.String,System.String)">
<summary>
Corresponds to M's $L(STRING,DELIMITER)
</summary>
<param name="sInput"></param>
<param name="sDelim"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.Piece(System.String,System.String,System.Int32)">
<summary>
Corresponds to M's $$Piece function
</summary>
<param name="sInput"></param>
<param name="sDelim"></param>
<param name="nNumber"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBLDPadString(System.String)">
<summary>
Given strInput = "13" builds "013" if nLength = 3. Default for nLength is 3.
</summary>
<param name="strInput"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBLDPadString(System.String,System.Int32)">
<summary>
Given strInput = "13" builds "013" if nLength = 3 Default for nLength is 3.
</summary>
<param name="strInput"></param>
<param name="nLength">Default = 3</param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBLDB(System.String)">
<summary>
Concatenates zero-padded length of sInput to sInput
Given "Hello" returns "004Hello"
If nSize = 5, returns "00004Hello"
Default for nSize is 3.
</summary>
<param name="sInput"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBLDB(System.String,System.Int32)">
<summary>
Concatenates zero-padded length of sInput to sInput
Given "Hello" returns "004Hello"
If nSize = 5, returns "00004Hello"
Default for nSize is 3.
</summary>
<param name="sInput"></param>
<param name="nSize"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.ADEBHDR(System.String,System.String,System.String,System.String)">
<summary>
Build protocol header
</summary>
<param name="sWKID"></param>
<param name="sWINH"></param>
<param name="sPRCH"></param>
<param name="sWISH"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.FindSubString(System.String,System.String)">
<summary>
Returns index of first instance of sSubString in sString.
If sSubString not found, returns -1.
</summary>
<param name="sString"></param>
<param name="sSubString"></param>
<returns></returns>
</member>
<member name="M:IndianHealthService.BMXNet.BMXNetLib.Lock(System.String,System.String,System.String)">
<summary>
Lock a local or global M variable
Returns true if lock is obtained during TimeOut seconds
Use + to increment, - to decrement lock.
</summary>
<param name="Variable"></param>
<param name="Increment"></param>
<param name="TimeOut"></param>
<returns></returns>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetLib.BMXRWL">
<summary>
Returns a reference to the internal ReaderWriterLock member.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetLib.RWLTimeout">
<summary>
Sets and returns the timeout in milliseconds for locking the transmit port.
If the transmit port is unavailable an ApplicationException will be thrown.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetLib.ReceiveTimeout">
<summary>
Set and retrieve the timeout, in milliseconds, to receive a response from the RPMS server.
If the retrieve time exceeds the timeout, an exception will be thrown and the connection will be closed.
The default is 30 seconds.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.BMXNetLib.AppContext">
<summary>
Gets/sets the Kernel Application context
Throws an exception if unable to set the context.
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.RPMSDb.ResultSets">
<summary>
Returns the array of RMPSResultSets retrieved from RPMS
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.RPMSDb.CurrentRecordSet">
<summary>
Sets and Returns the current recordset
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.DSelectDivision">
<summary>
Summary description for DSelectDivision.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DSelectDivision.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DSelectDivision.UpdateDialogData(System.Boolean)">
<summary>
If b is true, moves member vars into control data
otherwise, moves control data into member vars
</summary>
<param name="b"></param>
</member>
<member name="M:IndianHealthService.BMXNet.DSelectDivision.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.DServerInfo">
<summary>
Prompts for RPMS Server address and port
Obtains current values, if any, from isolated storage
and uses them as defaults.
If OK, then writes values to isolated storage and returns
Address and Port as properties.
</summary>
</member>
<member name="F:IndianHealthService.BMXNet.DServerInfo.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DServerInfo.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DServerInfo.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="M:IndianHealthService.BMXNet.DServerInfo.UpdateDialogData(System.Boolean)">
<summary>
If b is true, moves member vars into control data
otherwise, moves control data into member vars
</summary>
<param name="b"></param>
</member>
<member name="P:IndianHealthService.BMXNet.DServerInfo.MServerAddress">
<summary>
Gets/sets the internet address of the RPMS Server
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.DServerInfo.MServerNamespace">
<summary>
Gets/sets the namespace of the RPMS Server
</summary>
</member>
<member name="P:IndianHealthService.BMXNet.DServerInfo.MServerPort">
<summary>
Gets/sets the TCP/IP Port of the RPMS Server
</summary>
</member>
<member name="T:IndianHealthService.BMXNet.BMXNetException">
<summary>
Custom exception class for BMXNet
</summary>
</member>
</members>
</doc>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,59 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("BMXNetTest")]
[assembly: AssemblyDescription("BMXNet test application")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Indian Health Service")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("2.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
[assembly: AssemblyFileVersionAttribute("2.0.0.0")]

Binary file not shown.

View File

@ -0,0 +1,126 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{A3A19C51-73D2-4EEE-A190-F1EFBF477BCB}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>BMXNetTest</AssemblyName>
<AssemblyOriginatorKeyFile>IHSPrivateKey.pfx</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>true</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>BMXNetTest</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<SignAssembly>false</SignAssembly>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="BMXNet20, Version=2.0.2459.21970, Culture=neutral, PublicKeyToken=069dc2499aed6a8c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Dotfuscator\Dotfuscated\BMXNet20.dll</HintPath>
</Reference>
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="frmBMXNetTest.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmVisitDemo.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="frmBMXNetTest.resx">
<DependentUpon>frmBMXNetTest.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="frmVisitDemo.resx">
<DependentUpon>frmVisitDemo.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="IHSPrivateKey.pfx" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,57 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LastOpenVersion>7.10.3077</LastOpenVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ReferencePath>C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\BMXNet\BMXNetTest\;C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\BMXNet\BMXNet\bin\Release\;C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\BMXNet\BMXNet\bin\Debug\;C:\Documents and Settings\Horace\My Documents\Visual Studio Projects\BMXNet\BMXNet\bin\Debug\;C:\Documents and Settings\Horace\My Documents\Visual Studio Projects\BMXNet\BMXNet\bin\Release\;C:\Documents and Settings\Administrator\My Documents\Visual Studio Projects\BMXNet20040610C\BMXNet\bin\Debug\</ReferencePath>
<CopyProjectDestinationFolder>
</CopyProjectDestinationFolder>
<CopyProjectUncPath>
</CopyProjectUncPath>
<CopyProjectOption>0</CopyProjectOption>
<ProjectView>ProjectFiles</ProjectView>
<ProjectTrust>0</ProjectTrust>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<EnableASPDebugging>false</EnableASPDebugging>
<EnableASPXDebugging>false</EnableASPXDebugging>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<EnableSQLServerDebugging>false</EnableSQLServerDebugging>
<RemoteDebugEnabled>false</RemoteDebugEnabled>
<RemoteDebugMachine>
</RemoteDebugMachine>
<StartAction>Project</StartAction>
<StartArguments>
</StartArguments>
<StartPage>
</StartPage>
<StartProgram>
</StartProgram>
<StartURL>
</StartURL>
<StartWorkingDirectory>
</StartWorkingDirectory>
<StartWithIE>true</StartWithIE>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<EnableASPDebugging>false</EnableASPDebugging>
<EnableASPXDebugging>false</EnableASPXDebugging>
<EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
<EnableSQLServerDebugging>false</EnableSQLServerDebugging>
<RemoteDebugEnabled>false</RemoteDebugEnabled>
<RemoteDebugMachine>
</RemoteDebugMachine>
<StartAction>Project</StartAction>
<StartArguments>
</StartArguments>
<StartPage>
</StartPage>
<StartProgram>
</StartProgram>
<StartURL>
</StartURL>
<StartWorkingDirectory>
</StartWorkingDirectory>
<StartWithIE>true</StartWithIE>
</PropertyGroup>
</Project>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,269 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace IndianHealthService.BMXNet
{
/// <summary>
/// Summary description for frmVisitDemo.
/// </summary>
public class frmVisitDemo : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox txtPatName;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button cmdViewVisitInfo;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.DataGrid dataGrid1;
private System.ComponentModel.Container components = null;
public frmVisitDemo()
{
InitializeComponent();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(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.txtPatName = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.cmdViewVisitInfo = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
this.dataGrid1 = new System.Windows.Forms.DataGrid();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
this.SuspendLayout();
//
// txtPatName
//
this.txtPatName.Location = new System.Drawing.Point(120, 24);
this.txtPatName.Name = "txtPatName";
this.txtPatName.Size = new System.Drawing.Size(152, 20);
this.txtPatName.TabIndex = 0;
this.txtPatName.Text = "W";
//
// label1
//
this.label1.Location = new System.Drawing.Point(16, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(104, 24);
this.label1.TabIndex = 1;
this.label1.Text = "First few characters of patient name:";
//
// cmdViewVisitInfo
//
this.cmdViewVisitInfo.Location = new System.Drawing.Point(304, 24);
this.cmdViewVisitInfo.Name = "cmdViewVisitInfo";
this.cmdViewVisitInfo.Size = new System.Drawing.Size(112, 24);
this.cmdViewVisitInfo.TabIndex = 2;
this.cmdViewVisitInfo.Text = "View Patient Visits";
this.cmdViewVisitInfo.Click += new System.EventHandler(this.cmdViewVisitInfo_Click);
//
// panel1
//
this.panel1.Controls.Add(this.cmdViewVisitInfo);
this.panel1.Controls.Add(this.txtPatName);
this.panel1.Controls.Add(this.label1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(584, 72);
this.panel1.TabIndex = 3;
//
// panel2
//
this.panel2.Controls.Add(this.dataGrid1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(0, 72);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(584, 246);
this.panel2.TabIndex = 4;
//
// dataGrid1
//
this.dataGrid1.AccessibleName = "DataGrid";
this.dataGrid1.AccessibleRole = System.Windows.Forms.AccessibleRole.Table;
this.dataGrid1.DataMember = "";
this.dataGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(0, 0);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.Size = new System.Drawing.Size(584, 246);
this.dataGrid1.TabIndex = 0;
//
// frmVisitDemo
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(584, 318);
this.Controls.Add(this.panel2);
this.Controls.Add(this.panel1);
this.Name = "frmVisitDemo";
this.Text = "frmVisitDemo";
this.panel1.ResumeLayout(false);
this.panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);
}
#endregion
#region Fields
BMXNetConnectInfo m_ci;
#endregion Fields
public void InitializePage(BMXNetConnectInfo ci)
{
m_ci = ci;
CreateGridStyles();
}
private void cmdViewVisitInfo_Click(object sender, System.EventArgs e)
{
if (m_ci.Connected == false)
{
MessageBox.Show("Must connect to RPMS first");
return;
}
try
{
//Declare new dataset and connection variables
DataSet m_dsGlobal = new DataSet("Global");
//Retrieve RPMS Records from PATIENT file
string sCmd = "SELECT BMXIEN DFN, NAME, AGE, SEX, DOB FROM PATIENT WHERE NAME LIKE '" + txtPatName.Text + "%'";
m_ci.RPMSDataTable(sCmd, "Patient", m_dsGlobal);
//Build Primary Key for Patient table
DataTable dtGroups = m_dsGlobal.Tables["Patient"];
DataColumn dcKey = dtGroups.Columns["DFN"];
DataColumn[] dcKeys = new DataColumn[1];
dcKeys[0] = dcKey;
dtGroups.PrimaryKey = dcKeys;
//Retrieve RPMS Records from VISIT file
sCmd = @"SELECT INTERNAL[PATIENT_NAME] PDFN, BMXIEN VDFN, VISIT/ADMIT_DATE&TIME, CLINIC, LOC._OF_ENCOUNTER FROM VISIT WHERE PATIENT_NAME LIKE '" + txtPatName.Text + "%'";
m_ci.RPMSDataTable(sCmd, "Visit", m_dsGlobal);
//Build Primary Key for Visit table
DataTable dtAGTypes = m_dsGlobal.Tables["Visit"];
DataColumn dcGTKey = dtAGTypes.Columns["VDFN"];
DataColumn[] dcGTKeys = new DataColumn[1];
dcGTKeys[0] = dcGTKey;
dtAGTypes.PrimaryKey = dcGTKeys;
//Build Data Relationship between Patient and Visit tables
DataRelation dr = new DataRelation("PatientVisit", //Relation Name
m_dsGlobal.Tables["Patient"].Columns["DFN"], //Parent
m_dsGlobal.Tables["Visit"].Columns["PDFN"]); //Child
m_dsGlobal.Relations.Add(dr);
this.dataGrid1.DataSource = m_dsGlobal.Tables["Patient"];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "BMXNetTest Error");
}
}
private void CreateGridStyles()
{
//Create DataGridTableStyle for Patient table
DataGridTableStyle tsRU = new DataGridTableStyle();
tsRU.MappingName = "Patient";
tsRU.ReadOnly = true;
// Add DFN column style.
DataGridColumnStyle colDFN = new DataGridTextBoxColumn();
colDFN.MappingName = "DFN";
colDFN.HeaderText = "DFN";
colDFN.Width = 0;
tsRU.GridColumnStyles.Add(colDFN);
// Add NAME column style.
DataGridColumnStyle colRUID = new DataGridTextBoxColumn();
colRUID.MappingName = "NAME";
colRUID.HeaderText = "Patient Name";
colRUID.Width = 250;
tsRU.GridColumnStyles.Add(colRUID);
// Add AGE column style.
DataGridColumnStyle colRUserID = new DataGridTextBoxColumn();
colRUserID.MappingName = "AGE";
colRUserID.HeaderText = "Age";
colRUserID.Width = 50;
tsRU.GridColumnStyles.Add(colRUserID);
// Add SEX column style.
DataGridColumnStyle colSex = new DataGridTextBoxColumn();
colSex.MappingName = "SEX";
colSex.HeaderText = "Sex";
colSex.Width = 50;
tsRU.GridColumnStyles.Add(colSex);
// Add DOB column style.
DataGridColumnStyle colDOB = new DataGridTextBoxColumn();
colDOB.MappingName = "DOB";
colDOB.HeaderText = "Date of Birth";
colDOB.Width = 100;
tsRU.GridColumnStyles.Add(colDOB);
this.dataGrid1.TableStyles.Add(tsRU);
//Create DataGridTableStyle for Visit table
DataGridTableStyle tsVisit = new DataGridTableStyle();
tsVisit.MappingName = "Visit";
tsVisit.ReadOnly = true;
// Add VISIT/ADMIT_DATE&TIME column style
DataGridColumnStyle colVDate = new DataGridTextBoxColumn();
colVDate.MappingName = "VISIT/ADMIT_DATE&TIME";
colVDate.HeaderText = "Visit Date & Time";
colVDate.Width = 150;
tsVisit.GridColumnStyles.Add(colVDate);
// Add LOC._OF_ENCOUNTER column style
DataGridColumnStyle colLocation = new DataGridTextBoxColumn();
colLocation.MappingName = "LOC._OF_ENCOUNTER";
colLocation.HeaderText = "Location of Encounter";
colLocation.Width = 200;
tsVisit.GridColumnStyles.Add(colLocation);
// Add CLINIC column style
DataGridColumnStyle colClinic = new DataGridTextBoxColumn();
colClinic.MappingName = "CLINIC";
colClinic.HeaderText = "Clinic";
colClinic.Width = 100;
tsVisit.GridColumnStyles.Add(colClinic);
this.dataGrid1.TableStyles.Add(tsVisit);
}
}
}

View File

@ -0,0 +1,202 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
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">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</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 forserialized 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.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:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<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" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</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>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="txtPatName.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="txtPatName.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="txtPatName.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="label1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdViewVisitInfo.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cmdViewVisitInfo.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cmdViewVisitInfo.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="panel1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="panel1.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="panel1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="panel1.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="panel1.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="panel1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="panel2.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="panel2.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="panel2.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="panel2.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="panel2.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="panel2.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="dataGrid1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="dataGrid1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="dataGrid1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.Name">
<value>frmVisitDemo</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>

1312
cs/bmx_0200scr/BMXNetLib.cs Normal file

File diff suppressed because it is too large Load Diff