public void Save(ECG_Data data)
{
if (data is R_Peaks_Data)
{
R_Peaks_Data basicData = data as R_Peaks_Data;
ECG_Worker ew = new ECG_Worker();
XmlDocument file = new XmlDocument();
string fileName = analysisName + "_Data.xml";
file.Load(System.IO.Path.Combine(directory, fileName));
XmlNode root = file.SelectSingleNode("EKG");
XmlElement module = file.CreateElement(string.Empty, "module", string.Empty);
string moduleName = this.GetType().Name;
moduleName = moduleName.Replace("_Data_Worker", "");
XmlNodeList existingModules = file.SelectNodes("EKG/module");
foreach (XmlNode existingModule in existingModules)
{
if (existingModule.Attributes["name"].Value == moduleName)
{
root.RemoveChild(existingModule);
}
}
module.SetAttribute("name", moduleName);
root.AppendChild(module);
List<Tuple<string, Vector<double>>> rPeaks = basicData.RPeaks;
foreach (var tuple in rPeaks)
{
XmlElement RPeaks = file.CreateElement(string.Empty, "RPeaks", string.Empty);
module.AppendChild(RPeaks);
XmlElement lead = file.CreateElement(string.Empty, "lead", string.Empty);
XmlText leadValue = file.CreateTextNode(tuple.Item1);
lead.AppendChild(leadValue);
RPeaks.AppendChild(lead);
XmlElement indices = file.CreateElement(string.Empty, "indices", string.Empty);
string indicesText = null;
foreach (var value in tuple.Item2)
{
indicesText += value.ToString() + " ";
}
XmlText indicesValue = file.CreateTextNode(indicesText);
indices.AppendChild(indicesValue);
RPeaks.AppendChild(indices);
}
List<Tuple<string, Vector<double>>> rrIntervals = basicData.RRInterval;
foreach (var tuple in rrIntervals)
{
XmlElement RRInterval = file.CreateElement(string.Empty, "RRInterval", string.Empty);
module.AppendChild(RRInterval);
XmlElement lead = file.CreateElement(string.Empty, "lead", string.Empty);
XmlText leadValue = file.CreateTextNode(tuple.Item1);
lead.AppendChild(leadValue);
RRInterval.AppendChild(lead);
XmlElement intervals = file.CreateElement(string.Empty, "intervals", string.Empty);
string intervalsText = null;
foreach (var value in tuple.Item2)
{
intervalsText += value.ToString() + " ";
}
XmlText intervalsValue = file.CreateTextNode(intervalsText);
intervals.AppendChild(intervalsValue);
RRInterval.AppendChild(intervals);
}
ew.InternalXMLFile = file;
file.Save(System.IO.Path.Combine(directory, fileName));
}
}