/// <summary>
        /// Parses the text representing a single Message value into an instance of the appropriate type based upon the HL7 version provided in delimitedString.
        /// </summary>
        /// <param name="delimitedString">A string representation that will be deserialized into the object instance.</param>
        /// <returns>An instance of type Message.</returns>
        /// <exception cref="ArgumentException">Unable to determine the HL7 version provided in delimitedString.</exception>
        /// <exception cref="ArgumentNullException">delimitedString is null.</exception>
        public static IMessage Deserialize(string delimitedString)
        {
            if (string.IsNullOrEmpty(delimitedString))
            {
                throw new ArgumentNullException(nameof(delimitedString), $"{ nameof(delimitedString) } is null.");
            }

            // Detect HL7 version
            Hl7Version version = MessageHelper.DetectVersion(delimitedString);

            // Return
            return(version switch
            {
                Hl7Version.V230 => Deserialize <V230.Message>(delimitedString),
                Hl7Version.V231 => Deserialize <V231.Message>(delimitedString),
                Hl7Version.V240 => Deserialize <V240.Message>(delimitedString),
                Hl7Version.V250 => Deserialize <V250.Message>(delimitedString),
                Hl7Version.V251 => Deserialize <V251.Message>(delimitedString),
                Hl7Version.V260 => Deserialize <V260.Message>(delimitedString),
                Hl7Version.V270 => Deserialize <V270.Message>(delimitedString),
                Hl7Version.V271 => Deserialize <V271.Message>(delimitedString),
                Hl7Version.V280 => Deserialize <V280.Message>(delimitedString),
                Hl7Version.V281 => Deserialize <V281.Message>(delimitedString),
                Hl7Version.V282 => Deserialize <V282.Message>(delimitedString),
                Hl7Version.V290 => Deserialize <V290.Message>(delimitedString),
                Hl7Version.None => throw new ArgumentException($"Unable to determine the HL7 version provided in { nameof(delimitedString) }.", nameof(delimitedString)),
                _ => throw new ArgumentException($"Unable to determine the HL7 version provided in { nameof(delimitedString) }.", nameof(delimitedString))
            });
Beispiel #2
0
 /// <summary>
 /// Creates a new instance of the Message class that's appropriate for the given HL7 version.
 /// </summary>
 /// <param name="version">The HL7 version.</param>
 /// <returns>An instance of the Message class.</returns>
 /// <exception cref="ArgumentException">An invalid HL7 version was provided.</exception>
 public static IMessage NewInstance(Hl7Version version)
 {
     return(version switch
     {
         Hl7Version.V230 => new V230.Message(),
         Hl7Version.V231 => new V231.Message(),
         Hl7Version.V240 => new V240.Message(),
         Hl7Version.V250 => new V250.Message(),
         Hl7Version.V251 => new V251.Message(),
         Hl7Version.V260 => new V260.Message(),
         Hl7Version.V270 => new V270.Message(),
         Hl7Version.V271 => new V271.Message(),
         Hl7Version.V280 => new V280.Message(),
         Hl7Version.V281 => new V281.Message(),
         Hl7Version.V282 => new V282.Message(),
         Hl7Version.V290 => new V290.Message(),
         Hl7Version.None => throw new ArgumentException("An invalid version was provided.", nameof(version)),
         _ => throw new ArgumentException("An invalid version was provided.", nameof(version))
     });