Show DemoClientApp.cs syntax highlighted
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Xsl;
using System.Threading;
namespace DemoClientApp
{
public partial class DemoClientApp : Form
{
private Thread loadingThread;
private String patientSearchGridFilename = "xsl/searchGrid.xsl";
private String patientSearchFilename = "xsl/patientSearch.xsl";
private String createPrescritionFilename = "xsl/createPrescription.xsl";
private String createDispenseFilename = "xsl/createDispense.xsl";
private String createDispensePickupFilename = "xsl/createDispensePickup.xsl";
private String createAllergyFilename = "xsl/createAllergy.xsl";
private String extractResponseIDFilename = "xsl/extractResponseID.xsl";
private requestItem[] profileRequestsXsl =
{ new requestItem("xsl/prescriptionQuery.xsl", "xsl/prescriptionGrid.xsl"),
new requestItem("xsl/allergyQuery.xsl", "xsl/allergyGrid.xsl") };
private DataSet clientData;
private DataSet clientProfileData;
private int dispenseLevel;
private int prescriptionLevel;
public DemoClientApp()
{
clientData = new DataSet();
clientProfileData = new DataSet();
InitializeComponent();
dispenseLevel = 0;
prescriptionLevel = 0;
}
private void loadPatientProfile()
{
MessageHandler msgHandler = new MessageHandler();
XsltArgumentList arg = new XsltArgumentList();
XmlDocument request = new XmlDocument();
XmlDocument response = new XmlDocument();
XmlDocument DataSet = new XmlDocument();
StringReader reader;
try
{
startLoading();
prescriptionGrid.DataSource = null;
prescriptionGrid.DataMember = null;
dispenseGrid.DataSource = null;
dispenseGrid.DataMember = null;
allergyGrid.DataSource = null;
allergyGrid.DataMember = null;
clientProfileData = null;
clientProfileData = new DataSet();
arg.AddParam("patientPHN", "", patient_phn.Text);
arg.AddParam("providerName", "", providerName.Text);
foreach (requestItem Item in profileRequestsXsl)
{
request = msgHandler.transformMessage(request, Item.requestXsl, arg);
response = msgHandler.sendMessage(request, DIS.Text);
arg.RemoveParam("DataSet", "");
arg.AddParam("DataSet", "", DataSet);
DataSet = msgHandler.transformMessage(response, Item.DataGridXsl, arg);
}
reader = new StringReader(DataSet.OuterXml);
clientProfileData.ReadXml(reader);
reader.Close();
try
{
prescriptionGrid.DataSource = clientProfileData.DefaultViewManager;
prescriptionGrid.DataMember = "prescription";
}
catch { }
try
{
dispenseGrid.DataSource = clientProfileData.DefaultViewManager;
dispenseGrid.DataMember = "prescription";
}
catch { }
try
{
allergyGrid.DataSource = clientProfileData.DefaultViewManager;
allergyGrid.DataMember = "allergy";
}
catch { }
}
finally
{
endLoading();
reader = null;
}
}
private void patientSearch(object sender, EventArgs e)
{
MessageHandler msgHandler = new MessageHandler();
XsltArgumentList arg = new XsltArgumentList();
XmlDocument request = new XmlDocument();
XmlDocument response = new XmlDocument();
try
{
if (CR.Text.Length > 0)
{
startLoading();
arg.AddParam("providerName", "", providerName.Text);
if (patientFirstName.Text.Length > 0)
arg.AddParam("patientFirstName", "", patientFirstName.Text);
if (patientLastName.Text.Length > 0)
arg.AddParam("patientLastName", "", patientLastName.Text);
request = msgHandler.transformMessage(request, patientSearchFilename, arg);
response = msgHandler.sendMessage(request, CR.Text);
loadSearchGrid(response);
endLoading();
}
else
{
MessageBox.Show("Client Registry Server Address Must be set", "ERROR");
}
}
catch (Exception ex)
{
endLoading();
MessageBox.Show("Error Searching for Patient [" + ex.Message + "]", "ERROR");
}
}
private void loadSearchGrid(XmlDocument searchResults)
{
MessageHandler msgHandler = new MessageHandler();
String GridData = msgHandler.transformMessage(searchResults, patientSearchGridFilename).OuterXml;
StringReader reader = new StringReader(GridData);
// clear both the client list and any profile data we have.
clientData.Clear();
clientProfileData.Clear();
clientData.ReadXml(reader);
patientGrid.DataSource = clientData;
patientGrid.DataMember = "patient";
reader.Close();
reader = null;
}
private void LoadDefaults(object sender, EventArgs e)
{
MessageHandler msgHandler = new MessageHandler();
Provider providerWindow = new Provider();
providerWindow.ShowDialog();
providerName.Text = providerWindow.providerName;
if (providerWindow.EMR)
{
EMRpic.Visible = true;
pharmacyPic.Visible = false;
this.Text = "DEMO EMR Application";
}
else
{
EMRpic.Visible = false;
pharmacyPic.Visible = true;
this.Text = "DEMO Pharmacy Application";
}
patient_phn.Text = "";
patient_name.Text = "";
patient_gender.Text = "";
patient_dob.Text = "";
CR.Text = msgHandler.getLocalHostName() + ":8080/CR_Server";
PR.Text = msgHandler.getLocalHostName() + ":8080/PR_Server";
LR.Text = msgHandler.getLocalHostName() + ":8080/LR_Server";
DIS.Text = msgHandler.getLocalHostName() + ":8080/DIS_Server";
CPS.Text = msgHandler.getLocalHostName() + ":8080/DIS_Server";
}
private void LoadClientInfo(object sender, EventArgs e)
{
clientProfileData.Clear();
patient_phn.Text = patientGrid[patientGrid.CurrentRowIndex, 0].ToString();
patient_name.Text = patientGrid[patientGrid.CurrentRowIndex, 1].ToString();
patient_gender.Text = patientGrid[patientGrid.CurrentRowIndex, 2].ToString();
patient_dob.Text = patientGrid[patientGrid.CurrentRowIndex, 3].ToString();
loadPatientProfile();
}
private void prescribe(object sender, EventArgs e)
{
MessageHandler msgHandler = new MessageHandler();
XsltArgumentList arg = new XsltArgumentList();
XmlDocument request = new XmlDocument();
XmlDocument response = new XmlDocument();
try
{
startLoading();
arg.AddParam("patientPHN", "", patient_phn.Text);
arg.AddParam("providerName", "", providerName.Text);
arg.AddParam("Drug-name", "", rx_drug.Text);
arg.AddParam("Drug-quantity", "", rx_quantity.Text);
arg.AddParam("Drug-refills", "", rx_refills.Text);
arg.AddParam("Drug-doseInstruction", "", rx_instruction.Text);
arg.AddParam("Drug-dosePerDay", "", rx_tabsPerDay.Text);
arg.AddParam("Drug-dosePerDay-unit", "", "tab");
request = msgHandler.transformMessage(request, createPrescritionFilename, arg);
response = msgHandler.sendMessage(request, DIS.Text);
}
finally
{
endLoading();
}
}
private void getPrescription(object sender, EventArgs e)
{
//rx_date.Format = DateTimePickerFormat.Custom;
//rx_date.Text = prescriptionGrid[prescriptionGrid.CurrentRowIndex, 0].ToString();
//rx_date.Format = DateTimePickerFormat.Short;
if (prescriptionLevel == 0)
{
rx_drug.Text = prescriptionGrid[prescriptionGrid.CurrentRowIndex, 3].ToString();
rx_quantity.Text = prescriptionGrid[prescriptionGrid.CurrentRowIndex, 4].ToString();
rx_refills.Text = prescriptionGrid[prescriptionGrid.CurrentRowIndex, 5].ToString();
rx_tabsPerDay.Text = prescriptionGrid[prescriptionGrid.CurrentRowIndex, 6].ToString();
rx_instruction.Text = prescriptionGrid[prescriptionGrid.CurrentRowIndex, 7].ToString();
}
//dispenseGrid.DataSource = prescriptionGrid;
//dispenseGrid.DataMember = "dispense";
}
private void getDispense(object sender, EventArgs e)
{
//rx_date.Format = DateTimePickerFormat.Custom;
//rx_date.Text = prescriptionGrid[prescriptionGrid.CurrentRowIndex, 0].ToString();
//rx_date.Format = DateTimePickerFormat.Short;
int row;
bool found = false;
for (row = 50; row >= 0 & found == false; row--)
{
try
{
if (dispenseGrid.IsSelected(row))
{
found = true;
row++;
}
}
catch { }
}
if (dispenseLevel == 0 )
{
if (row >=0)
{
string quantity = dispenseGrid[row, 4].ToString();
string refills = dispenseGrid[row, 5].ToString();
int quantity_per_fill = 1;
try
{
quantity_per_fill = Int32.Parse(quantity);
if (Int32.Parse(refills) > 0)
{
quantity_per_fill = quantity_per_fill / Int32.Parse(refills);
}
}
catch { }
dispense_rx.Text = dispenseGrid[row, 0].ToString();
dispense_drug.Text = dispenseGrid[row, 3].ToString();
dispense_quantity.Text = quantity_per_fill.ToString();
dispense_tabsPerDay.Text = dispenseGrid[row, 6].ToString();
dispense_instructions.Text = dispenseGrid[row, 7].ToString();
createDispensePickup.Visible = false;
createDispense.Visible = true;
}
}
else if (dispenseLevel == 1 )
{
if (row >= 0)
{
dispense_id.Text = dispenseGrid[row, 0].ToString();
dispense_rx.Text = dispenseGrid[row, 1].ToString();
dispense_drug.Text = dispenseGrid[row, 4].ToString();
dispense_quantity.Text = dispenseGrid[row, 5].ToString();
dispense_tabsPerDay.Text = dispenseGrid[row, 6].ToString();
dispense_instructions.Text = dispenseGrid[row, 7].ToString();
createDispense.Visible = false;
createDispensePickup.Visible = true;
}
else
{
createDispensePickup.Visible = false;
createDispense.Visible = true;
}
}
//dispenseGrid.DataSource = prescriptionGrid;
//dispenseGrid.DataMember = "dispense";
}
private void addAllergy(object sender, EventArgs e)
{
MessageHandler msgHandler = new MessageHandler();
XsltArgumentList arg = new XsltArgumentList();
XmlDocument request = new XmlDocument();
XmlDocument response = new XmlDocument();
try
{
startLoading();
allergy_startdate.CustomFormat = "yyyyMMdd";
allergy_startdate.Format = DateTimePickerFormat.Custom;
arg.AddParam("patientPHN", "", patient_phn.Text);
arg.AddParam("providerName", "", providerName.Text);
arg.AddParam("Allergy-type", "", allergy_type.Text);
arg.AddParam("Allergy-status", "", allergy_status.Text);
arg.AddParam("Allergy-startDate", "", allergy_startdate.Text);
arg.AddParam("Allergy-severity", "", allergy_severity.Text);
arg.AddParam("Allergy-uncertainty", "", allergy_uncertianty.Text);
arg.AddParam("Allergy-code", "", allergy_code.Text);
allergy_startdate.Format = DateTimePickerFormat.Short;
request = msgHandler.transformMessage(request, createAllergyFilename, arg);
response = msgHandler.sendMessage(request, DIS.Text);
}
finally
{
endLoading();
}
}
private void viewAllergy(object sender, EventArgs e)
{
//allergy_startdate.Text = allergyGrid[allergyGrid.CurrentRowIndex, 0].ToString();
allergy_startdate.Format = DateTimePickerFormat.Short;
allergy_status.Text = allergyGrid[allergyGrid.CurrentRowIndex, 1].ToString();
allergy_type.Text = allergyGrid[allergyGrid.CurrentRowIndex, 2].ToString();
allergy_code.Text = allergyGrid[allergyGrid.CurrentRowIndex, 3].ToString();
allergy_severity.Text = allergyGrid[allergyGrid.CurrentRowIndex, 4].ToString();
allergy_uncertianty.Text = allergyGrid[allergyGrid.CurrentRowIndex, 5].ToString();
}
private void showLoading()
{
Status Loader = new Status((this.Right - 130), this.Top + 40);
Loader.ShowDialog();
}
private void startLoading()
{
this.Cursor = Cursors.WaitCursor;
//process_indicator.Visible = true;
//process_status.Visible = true;
loadingThread = new Thread(new ThreadStart(showLoading));
loadingThread.Start();
}
private void endLoading()
{
this.Cursor = Cursors.Default;
//process_indicator.Visible = false;
//process_status.Visible = false;
if (loadingThread != null)
loadingThread.Abort();
loadingThread = null;
}
private void dispenseGrid_Navigate(object sender, NavigateEventArgs ne)
{
if (ne.Forward)
dispenseLevel++;
else
dispenseLevel--;
}
private void prescriptionGrid_Navigate(object sender, NavigateEventArgs ne)
{
if (ne.Forward)
prescriptionLevel++;
else
prescriptionLevel--;
}
private void dispense(object sender, EventArgs e)
{
MessageHandler msgHandler = new MessageHandler();
XsltArgumentList arg = new XsltArgumentList();
XmlDocument request = new XmlDocument();
XmlDocument response = new XmlDocument();
try
{
startLoading();
arg.AddParam("patientPHN", "", patient_phn.Text);
arg.AddParam("providerName", "", providerName.Text);
arg.AddParam("prescriptionID", "", dispense_rx.Text);
arg.AddParam("Drug-name", "", dispense_drug.Text);
arg.AddParam("Drug-quantity", "", dispense_quantity.Text);
arg.AddParam("Drug-quantity-unit", "", "");
arg.AddParam("Drug-doseInstruction", "", dispense_instructions.Text);
arg.AddParam("Drug-maxDosePerDay", "", dispense_tabsPerDay.Text);
int total_days = 0;
try
{
total_days = Int32.Parse(dispense_quantity.Text);
if (Int32.Parse(dispense_tabsPerDay.Text) > 0)
{
total_days = total_days / Int32.Parse(dispense_tabsPerDay.Text);
}
}
catch { }
arg.AddParam("Drug-total-days", "", total_days);
request = msgHandler.transformMessage(request, createDispenseFilename, arg);
response = msgHandler.sendMessage(request, DIS.Text);
XmlNamespaceManager nsmg = new XmlNamespaceManager(response.NameTable);
nsmg.AddNamespace("hl7", "urn:hl7-org:v3");
try
{
dispense_id.Text = response.SelectSingleNode("descendant-or-self::hl7:controlActEvent/hl7:subject/hl7:supplyEvent/hl7:id/@extension", nsmg).Value;
createDispense.Visible = false;
createDispensePickup.Visible = true;
}
catch
{
dispense_id.Text = "";
}
}
finally
{
endLoading();
}
}
private void pickupDispense(object sender, EventArgs e)
{
MessageHandler msgHandler = new MessageHandler();
XsltArgumentList arg = new XsltArgumentList();
XmlDocument request = new XmlDocument();
XmlDocument response = new XmlDocument();
try
{
startLoading();
arg.AddParam("patientPHN", "", patient_phn.Text);
arg.AddParam("providerName", "", providerName.Text);
arg.AddParam("dispenseID", "", dispense_id.Text);
request = msgHandler.transformMessage(request, createDispensePickupFilename, arg);
response = msgHandler.sendMessage(request, DIS.Text);
createDispense.Visible = false;
createDispensePickup.Visible = false;
}
finally
{
endLoading();
}
}
private void patientGrid_Navigate(object sender, NavigateEventArgs ne)
{
}
}
}
See more files for this project here