/// <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)) });
/// <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)) });