Code Search for Developers
 
 
  

DemoClientApp.cs from HL7v3 Test Harness at Krugle


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

HL7v3 Test Harness

The HL7 Test Harness system is an HL7 v3 message conformance testing application that also provides the ability to simulate the message processing actions of a client and/or server system. The app provides message workflow, format and content testing.

Project homepage: http://sourceforge.net/projects/hl7-testharness
Programming language(s): C#,XML
License: gpl2

  Properties/
    AssemblyInfo.cs
    Resources.Designer.cs
    Resources.resx
    Settings.Designer.cs
    Settings.settings
    app.manifest
  Resources/
    BHR0117B.jpg
    BHR0120.jpg
    PHARMACY.WMF
    bottle.JPG
    indicator.gif
    med_24.gif
    med_35.gif
    medical_simble.gif
  publish/
    DemoClientApp_1_0_0_3/
      xsl/
        Data.xml.deploy
        allergyGrid.xsl.deploy
        allergyQuery.xsl.deploy
        createAllergy.xsl.deploy
        createDispense.xsl.deploy
        createDispensePickup.xsl.deploy
        createPrescription.xsl.deploy
        dispenseGrid.xsl.deploy
        patientSearch.xsl.deploy
        prescriptionGrid.xsl.deploy
        prescriptionQuery.xsl.deploy
        searchGrid.xsl.deploy
      DemoClientApp.exe.deploy
      DemoClientApp.exe.manifest
      pill.ico.deploy
    DemoClientApp_1_0_0_4/
      xsl/
        Data.xml.deploy
        allergyGrid.xsl.deploy
        allergyQuery.xsl.deploy
        createAllergy.xsl.deploy
        createDispense.xsl.deploy
        createDispensePickup.xsl.deploy
        createPrescription.xsl.deploy
        dispenseGrid.xsl.deploy
        patientSearch.xsl.deploy
        prescriptionGrid.xsl.deploy
        prescriptionQuery.xsl.deploy
        searchGrid.xsl.deploy
      DemoClientApp.exe.deploy
      DemoClientApp.exe.manifest
      pill.ico.deploy
    DemoClientApp.application
    DemoClientApp_1_0_0_3.application
    DemoClientApp_1_0_0_4.application
    setup.exe
  xsl/
    Data.xml
    allergyGrid.xsl
    allergyQuery.xsl
    createAllergy.xsl
    createDispense.xsl
    createDispensePickup.xsl
    createPrescription.xsl
    dispenseGrid.xsl
    patientSearch.xsl
    prescriptionGrid.xsl
    prescriptionQuery.xsl
    searchGrid.xsl
  DemoClientApp.Designer.cs
  DemoClientApp.cs
  DemoClientApp.csproj
  DemoClientApp.csproj.user
  DemoClientApp.resx
  DemoClientApp.sln
  DemoClientApp.suo
  MessageHandler.cs
  Program.cs
  Provider.Designer.cs
  Provider.cs
  Provider.resx
  Status.Designer.cs
  Status.cs
  Status.resx
  pill.ico
  readme.txt
  requestItem.cs