Ejemplo n.º 1
0
        public void SXPRSTMixedComponentsFormatting()
        {
            SXPR <RTO <INT, INT> > test = SXPR <RTO <INT, INT> > .CreateSXPR(new IVL <RTO <INT, INT> >(new RTO <INT, INT>(1, 3), new RTO <INT, INT>(2, 3)),
                                                                             new PIVL <RTO <INT, INT> >(
                                                                                 new IVL <RTO <INT, INT> >(new RTO <INT, INT>(2, 3), new RTO <INT, INT>(5, 6)),
                                                                                 new PQ((decimal)1.0, "y")
                                                                                 )
                                                                             //new SXCM<RTO<INT,INT>>(new RTO<INT,INT>(1,2)) { Operator = SetOperator.A },
                                                                             //new IVL<RTO<INT,INT>>(new RTO<INT,INT>(1,2)) { Operator = SetOperator.Intersect
                                                                             );

            StringWriter      sw   = new StringWriter();
            DatatypeFormatter fmtr = new DatatypeFormatter();
            XmlStateWriter    xw   = new XmlStateWriter(XmlWriter.Create(sw));

            xw.WriteStartElement("sxpr");
            fmtr.Graph(xw, test);
            xw.WriteEndElement(); // comp
            xw.Flush();
            Tracer.Trace(sw.ToString());
            StringReader   sr  = new StringReader(sw.ToString());
            XmlStateReader rdr = new XmlStateReader(XmlReader.Create(sr));

            rdr.Read(); rdr.Read();
            var parse = fmtr.Parse(rdr, typeof(SXPR <RTO <INT, INT> >)).Structure as SXPR <RTO <INT, INT> >;

            Assert.AreEqual(parse.Count, test.Count);
            for (int i = 0; i < parse.Count; i++)
            {
                Assert.AreEqual(parse[i].GetType(), test[i].GetType());
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Logs the message.
        /// </summary>
        /// <param name="message">The message to log.</param>
        private static void LogMessage(IGraphable message)
        {
            XmlWriter writer = null;

            var formatter = new XmlIts1Formatter
            {
                ValidateConformance = true,
            };

            var dtf = new DatatypeFormatter();

            formatter.GraphAides.Add(dtf);

            var sb = new StringBuilder();

            writer = XmlWriter.Create(sb, new XmlWriterSettings {
                Indent = true, OmitXmlDeclaration = true
            });

            var stateWriter = new XmlStateWriter(writer);

            formatter.Graph(stateWriter, message);

            stateWriter.Flush();

            traceSource.TraceEvent(TraceEventType.Verbose, 0, sb.ToString());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Format a data type into a string in a localisation namespace
        /// </summary>
        /// <param name="dataType">The data type to format</param>
        /// <param name="elementName">The name of the element</param>
        public static void SerialiseDataType(IGraphable dataType, XmlWriter xmlWriter, string elementName, string localNamespace)
        {
            if (dataType != null)
            {
                xmlWriter.WriteStartElement(elementName, localNamespace);

                DatatypeFormatter ft = new DatatypeFormatter(DatatypeFormatterCompatibilityMode.ClinicalDocumentArchitecture);
                ft.GraphObject(xmlWriter, dataType);
                xmlWriter.WriteEndElement();
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Parse a string
        /// </summary>
        /// <param name="actualXml"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        internal static object ParseString(string xmlString, Type type)
        {
            StringReader      sr   = new StringReader(xmlString);
            DatatypeFormatter fmtr = new DatatypeFormatter();
            XmlStateReader    rdr  = new XmlStateReader(XmlReader.Create(sr));

            while (rdr.NodeType != XmlNodeType.Element)
            {
                rdr.Read();
            }
            var result = fmtr.Parse(rdr, type);

            Assert.AreEqual(ResultCode.Accepted, result.Code);
            return(result.Structure);
        }
        public void GetSupportedPropertiesTest01()
        {
            // Create the data type formatter
            IDatatypeStructureFormatter datatypeFormatter = new DatatypeFormatter();

            // Get supported properties for ED
            var supportedProperties =
                datatypeFormatter.GetSupportedProperties(typeof(ED));

            // Determine if Translation is supported
            bool isTranslationSupported =
                Array.Exists(supportedProperties, o => o.Name == "Translation");

            Console.WriteLine("ED.Translation is supported? {0}", isTranslationSupported);

            Assert.AreNotEqual(true, isTranslationSupported);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Graph the SXCM to the console
        /// </summary>
        public void Graph(System.Xml.XmlWriter s, object o, DatatypeFormatterGraphResult result)
        {
            // Output the object
            Type   t    = o.GetType();
            ANY    any  = (ANY)o;
            object oper = t.GetProperty("Operator").GetValue(o, null),
                   valu = t.GetProperty("Value").GetValue(o, null);

            if (oper != null && any.NullFlavor == null)
            {
                s.WriteAttributeString("operator", Util.ToWireFormat(oper));
            }
            // Format the object
            var formatter = DatatypeFormatter.GetFormatter(valu.GetType());

            formatter.Host = this.Host;
            formatter.Graph(s, valu, result);
        }
        public void GetSupportedPropertiesTest04()
        {
            // Create the data type formatter
            IDatatypeStructureFormatter datatypeFormatter = new DatatypeFormatter();

            // Get supported properties for ED
            var supportedProperties =
                datatypeFormatter.GetSupportedProperties(typeof(ED));

            // Determine if Compression is supported
            bool isCompressionSupported =
                Array.Exists(supportedProperties, o => o.Name == "Compression");

            Console.WriteLine("ED.Compression is supported? {0}", isCompressionSupported);

            // Same logic as test 3; rephrased for confirmation.
            Assert.AreNotEqual(false, isCompressionSupported);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Parse an SXCM from the wire
        /// </summary>
        public object Parse(System.Xml.XmlReader s, DatatypeFormatterParseResult result)
        {
            // Determine the generic type formatter
            var formatter = DatatypeFormatter.GetFormatter(GenericArguments[0]);

            // Create the return value
            Type            sxcmType = typeof(SXCM <>);
            Type            genType  = sxcmType.MakeGenericType(GenericArguments);
            ConstructorInfo ci       = genType.GetConstructor(Type.EmptyTypes);
            Object          retVal   = null;

            if (ci != null)
            {
                retVal = ci.Invoke(null);
            }
            else
            {
                throw new ArgumentException("Constructor on type must have a parameterless constructor");
            }

            // Operator
            if (s.GetAttribute("operator") != null)
            {
                genType.GetProperty("Operator").SetValue(retVal, Util.FromWireFormat(s.GetAttribute("operator"), typeof(SetOperator)), null);
            }
            // Value
            if (formatter != null)
            {
                formatter.Host = this.Host;
                var value = formatter.Parse(s, result);
                genType.GetProperty("Value").SetValue(retVal, value, null);

                if (value != null)
                {
                    ((ANY)retVal).NullFlavor = ((ANY)value).NullFlavor;
                    ((ANY)retVal).Flavor     = ((ANY)value).Flavor;
                    ((ANY)value).NullFlavor  = null;
                    ((ANY)value).Flavor      = null;
                }
            }


            return(retVal);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Serialize as a string
        /// </summary>
        internal static String SerializeAsString(IGraphable graph, DatatypeFormatterCompatibilityMode mode)
        {
            DatatypeFormatter fmtr = new DatatypeFormatter(mode);
            StringWriter      sw   = new StringWriter();
            XmlStateWriter    xsw  = new XmlStateWriter(XmlWriter.Create(sw, new XmlWriterSettings()
            {
                Indent = true
            }));

            xsw.WriteStartElement("test", "urn:hl7-org:v3");
            xsw.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
            var result = fmtr.Graph(xsw, graph);

            xsw.WriteEndElement();
            xsw.Flush();
            sw.Flush();
            System.Diagnostics.Trace.WriteLine(sw.ToString());
            Assert.AreEqual(ResultCode.Accepted, result.Code);
            return(sw.ToString());
        }
Ejemplo n.º 10
0
        public void EV_1089ENXPParseTest()
        {
            EN myEn = EN.FromFamilyGiven(EntityNameUse.License, "Toet", "J");

            myEn.Part[0].Qualifier = new SET <CS <EntityNamePartQualifier> >();
            myEn.Part[1].Qualifier = new SET <CS <EntityNamePartQualifier> >();
            myEn.Part[0].Qualifier.Add(EntityNamePartQualifier.Birth);
            myEn.Part[1].Qualifier.Add(EntityNamePartQualifier.Initial);
            String xmlString = R1SerializationHelper.SerializeAsString(myEn);

            StringReader      sr   = new StringReader(xmlString);
            DatatypeFormatter fmtr = new DatatypeFormatter();
            XmlStateReader    rdr  = new XmlStateReader(XmlReader.Create(sr));

            while (rdr.NodeType != XmlNodeType.Element)
            {
                rdr.Read();
            }
            var result = fmtr.Parse(rdr, typeof(EN));

            Assert.AreEqual(0, result.Details.Count(o => o.Type == Connectors.ResultDetailType.Error));
        }
Ejemplo n.º 11
0
        public void SXPRTSMixedComponentsFormatting()
        {
            SXPR <TS> test = SXPR <TS> .CreateSXPR(new IVL <TS>(DateTime.Now, DateTime.Now.AddDays(1)),
                                                   new PIVL <TS>(
                                                       new IVL <TS>(DateTime.Now, DateTime.Now.AddDays(1)),
                                                       new PQ((decimal)1.0, "y")
                                                       ),
                                                   //new SXCM<TS>(DateTime.Now) { Operator = SetOperator.A },
                                                   new IVL <TS>(DateTime.Now) { Operator = SetOperator.Intersect },
                                                   new EIVL <TS>(DomainTimingEventType.BeforeLunch,
                                                                 new IVL <PQ>(
                                                                     new PQ((decimal)1.0, "d")
                                                                     )
                                                                 ) { Operator = SetOperator.Inclusive });

            StringWriter      sw   = new StringWriter();
            DatatypeFormatter fmtr = new DatatypeFormatter();
            XmlStateWriter    xw   = new XmlStateWriter(XmlWriter.Create(sw));

            xw.WriteStartElement("sxpr");
            fmtr.Graph(xw, test);
            xw.WriteEndElement(); // comp
            xw.Flush();
            Tracer.Trace(sw.ToString());
            StringReader   sr  = new StringReader(sw.ToString());
            XmlStateReader rdr = new XmlStateReader(XmlReader.Create(sr));

            rdr.Read(); rdr.Read();
            var parse = fmtr.Parse(rdr, typeof(SXPR <TS>)).Structure as SXPR <TS>;

            Assert.AreEqual(parse.Count, test.Count);
            for (int i = 0; i < parse.Count; i++)
            {
                Assert.AreEqual(parse[i].GetType(), test[i].GetType());
            }
        }