public XIMOutboundMessage Clone() { XIMOutboundMessage msg = new XIMOutboundMessage(); msg.HL7EventType = HL7EventType.Clone(); msg.GWEventType = GWEventType.Clone(); msg.XSLFileName = XSLFileName; //msg.Rule.RuleID = Rule.RuleID; // do not copy RuleID msg.Rule.RuleName = Rule.RuleName; msg.Rule.MaxRecordCount = Rule.MaxRecordCount; msg.Rule.CheckProcessFlag = Rule.CheckProcessFlag; msg.Rule.AutoUpdateProcessFlag = Rule.AutoUpdateProcessFlag; foreach (XIMMappingItem item in Rule.QueryResult.MappingList) { XIMMappingItem i = item.Clone() as XIMMappingItem; msg.Rule.QueryResult.MappingList.Add(i); } foreach (QueryCriteriaItem item in Rule.QueryCriteria.MappingList) { QueryCriteriaItem i = new QueryCriteriaItem(); i.Type = item.Type; i.Translating = item.Translating.Clone(); i.TargetField = item.TargetField; i.SourceField = item.SourceField; i.Singal = item.Singal; i.RedundancyFlag = item.RedundancyFlag; i.Operator = item.Operator; i.GWDataDBField = item.GWDataDBField.Clone(); msg.Rule.QueryCriteria.MappingList.Add(i); } return(msg); }
private static void GenerateTargetFieldName(XIMOutboundMessage message) { if (message == null) { return; } foreach (XIMMappingItem item in message.MappingList) { if (item.Enable && !XIMHelper.IsComplex(item.Element.Type)) { GenerateTargetFieldName(item); } } }
private static void SetXIMHeader(XmlDocument doc, XIMOutboundMessage message, SocketConfig config) { if (doc == null || message == null || config == null) { return; } XmlNode node = null; node = CreateNode(doc, doc, XmlMessage.Request.XISVersion.GetXPath()); if (node != null) { node.InnerText = "3.0"; } node = CreateNode(doc, doc, XmlMessage.Request.Name.GetXPath()); if (node != null) { node.InnerText = message.HL7EventType.Name; } node = CreateNode(doc, doc, XmlMessage.Request.Qualifier.GetXPath()); if (node != null) { node.InnerText = message.HL7EventType.Qualifier; } node = CreateNode(doc, doc, XmlMessage.Request.OriginatingDevice.GetXPath()); if (node != null) { node.InnerText = config.SourceDeviceName; } node = CreateNode(doc, doc, XmlMessage.Request.TransactionID.GetXPath()); if (node != null) { node.InnerText = TransactionID; // GetTransactionID(); } node = CreateNode(doc, doc, XmlMessage.Request.TargetDevice.GetXPath()); if (node != null) { node.InnerText = config.TargetDeviceName; } }
public static string GenerateXSL(XIMOutboundMessage message, SocketConfig config) { if (message == null) { return(null); } XmlDocument doc = new XmlDocument(); SetXIMHeader(doc, message, config); foreach (XIMMappingItem item in message.MappingList) { string xpath = item.Element.GetXPath(); XmlNode node = CreateNode(doc, doc, xpath); if (node == null) { continue; } if (item.Translating.Type == TranslatingType.FixValue) { node.InnerText = item.Translating.ConstValue; } else { string tName = GetTypeTemplateForOutbound(item.Element.Type); string xPath = DataSetXPathRoot + item.TargetField; if (tName == null) { node.InnerXml = "<xsl_value-of select=\"" + xPath + "\"/>"; } else { StringBuilder sbb = new StringBuilder(); sbb.Append("<xsl_for-each select =\"" + xPath + "\">"); sbb.Append("<xsl_call-template name =\"" + tName + "\">"); sbb.Append("</xsl_call-template>"); sbb.Append("</xsl_for-each>"); node.InnerXml = sbb.ToString(); } } } StringBuilder sb = new StringBuilder(); sb.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); sb.AppendLine("<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">"); sb.AppendLine(" <xsl:include href = \"" + TemplateFileNameOut + "\"/>"); sb.AppendLine(" <xsl:template match=\"/\">"); //StringBuilder sbxml = new StringBuilder(); //StringWriter sw = new StringWriter(sbxml); //XmlTextWriter xtw = new XmlTextWriter(sw); //doc.WriteTo(xtw); //sb.AppendLine(sbxml.ToString().Replace("<xsl_", "<xsl:").Replace("</xsl_", "</xsl:")); sb.AppendLine(doc.OuterXml.Replace("<xsl_", "<xsl:").Replace("</xsl_", "</xsl:")); sb.AppendLine(" </xsl:template>"); sb.AppendLine("</xsl:stylesheet>"); string str = sb.ToString(); str = str.Replace("<XMLRequestMessage>", "<XMLRequestMessage SchemaVersion=\"2.0\">"); str = str.Replace("<XIM>", "<XIM XIMSchemaVersion=\"2.0\">"); return(str); }