-
Notifications
You must be signed in to change notification settings - Fork 107
Code Sample Patient XML
Michael Folkerts edited this page Jul 6, 2018
·
1 revision
Below is a Eclipse v11 script code sample that extracts the full ESAPI XML description for the active patient and saves it to the windows temp directory. The generated file could be large (a few MBs) and may take a minute or two to create.
public void Execute(ScriptContext context)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = ("\t");
System.IO.MemoryStream mStream = new System.IO.MemoryStream();
using (XmlWriter writer = XmlWriter.Create(mStream, settings))
{
writer.WriteStartDocument(true);
writer.WriteStartElement("Patient");
context.Patient.WriteXml(writer); // add the Patient XML to the writer stream
writer.WriteEndElement(); // </Patient>
writer.WriteEndDocument();
// done writing to the memory stream
writer.Flush();
mStream.Flush();
// create the XML file.
string temp = System.Environment.GetEnvironmentVariable("TEMP");
string sXMLPath = string.Format("{0}\\{1}({2})-patient.xml", temp, context.Patient.LastName, context.Patient.Id);
using (System.IO.FileStream file = new System.IO.FileStream(sXMLPath, System.IO.FileMode.Create, System.IO.FileAccess.Write))
{
// Have to rewind the MemoryStream in order to read its contents.
mStream.Position = 0;
mStream.CopyTo(file);
file.Flush();
file.Close();
}
// 'Start' generated XML file to launch browser window
System.Diagnostics.Process.Start(sXMLPath);
// Sleep for a few seconds to let internet browser window to start
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));
}
}