示例#1
0
        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);
        }
示例#2
0
 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);
         }
     }
 }
示例#3
0
        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;
            }
        }
示例#4
0
        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);
        }