Code Search for Developers
 
 
  

MessageHandler.cs from HL7v3 Test Harness at Krugle


Show MessageHandler.cs syntax highlighted

using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Xml.Xsl;
using System.Xml;
using System.Xml.XPath;
using System.Net;


namespace DemoClientApp
{
    class MessageHandler
    {
        private String xslDirectory = Directory.GetCurrentDirectory() + "\\xsl\\";

        public String getLocalHostName()
        {
            return "http://" + Dns.GetHostName();
        }

        public XmlDocument sendMessage(XmlDocument msg, String address)
        {
            XmlDocument response;

            response = SendReceiveMessage(msg, address);

            return response;
        }

        public XmlDocument transformMessage(XmlDocument msg, String transformFileName)
        {
            XsltArgumentList arg = new XsltArgumentList();
            return transformMessage(msg, transformFileName, arg);
        }

        public XmlDocument transformMessage(XmlDocument msg, String transformFileName, XsltArgumentList arg)
        {
            //XslTransform transformer;
            XslCompiledTransform transformer = new XslCompiledTransform(false);
            XsltSettings settings = new XsltSettings(true, true);
            XmlDocument message = new XmlDocument();
            MemoryStream ms = new MemoryStream();
            StreamWriter sw = new StreamWriter(ms);

            StringBuilder sbuilder = new StringBuilder();
            TextWriter writer = new StringWriter(sbuilder);

            try
            {
                transformer.Load(transformFileName, settings, new XmlUrlResolver());

                DateTime d = DateTime.Now;
                arg.RemoveParam("now", "");
                arg.AddParam("now", "", d.ToString("yyyyMMddHHmmss"));
                arg.RemoveParam("OID", "");
                arg.AddParam("OID", "", Guid.NewGuid().ToString());
                arg.RemoveParam("xslDir", "");
                arg.AddParam("xslDir", "", xslDirectory);


                // Execute the transform.
                transformer.Transform(msg, arg, sw);

                ms.Seek(0, SeekOrigin.Begin);
                message.Load(ms);
            }
            catch
            {
                throw;
            }
            finally
            {
                if (transformer != null)
                    transformer.TemporaryFiles.Delete();

                transformer = null;
                settings = null;
                sw = null;
                ms = null;
            }

            return (message);
        }


        private XmlDocument SendReceiveMessage(XmlDocument TxMsg, String ServerAddr)
        {
            HttpWebRequest req = null;
            HttpWebResponse rsp = null;
            XmlDocument RxMsg = new XmlDocument();

            try
            {
                req = (HttpWebRequest)WebRequest.Create(ServerAddr);
                req.Method = "POST";        // Post method
                req.ContentType = "text/xml";     // content type
                req.Timeout = 200000;
                req.KeepAlive = false;

                // Wrap the request stream with a text-based writer
                StreamWriter writer = new StreamWriter(req.GetRequestStream());
                // Write the xml text into the stream
                TxMsg.Save(writer);
                writer.Close();
                // Send the data to the webserver
                rsp = (HttpWebResponse)req.GetResponse();

                RxMsg.Load(rsp.GetResponseStream());
            }
            catch
            {
                throw;
            }
            finally
            {
                if (rsp != null)
                {
                    rsp.GetResponseStream().Close();
                    rsp.Close();
                    rsp = null;
                }
                if (req != null)
                {
                    req.GetRequestStream().Close();
                    req.Abort();
                    req = null;
                }

            }
            return RxMsg;
        }

    }
}




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