/// <inheritdoc/> public void FromDelimitedString(string delimitedString, Separators separators) { Separators seps = separators ?? new Separators().UsingConfigurationValues(); string[] segments = delimitedString == null ? Array.Empty <string>() : delimitedString.Split(seps.FieldSeparator, StringSplitOptions.None); if (segments.Length > 0) { if (string.Compare(Id, segments[0], true, CultureInfo.CurrentCulture) != 0) { throw new ArgumentException($"{ nameof(delimitedString) } does not begin with the proper segment Id: '{ Id }{ seps.FieldSeparator }'.", nameof(delimitedString)); } } RuWhereSubjectDefinition = segments.Length > 1 && segments[1].Length > 0 ? segments[1].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; RuWhenDataStartDateTime = segments.Length > 2 && segments[2].Length > 0 ? segments[2].ToNullableDateTime() : null; RuWhenDataEndDateTime = segments.Length > 3 && segments[3].Length > 0 ? segments[3].ToNullableDateTime() : null; RuWhatUserQualifier = segments.Length > 4 && segments[4].Length > 0 ? segments[4].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; RuOtherResultsSubjectDefinition = segments.Length > 5 && segments[5].Length > 0 ? segments[5].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; RuWhichDateTimeQualifier = segments.Length > 6 && segments[6].Length > 0 ? segments[6].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; RuWhichDateTimeStatusQualifier = segments.Length > 7 && segments[7].Length > 0 ? segments[7].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; RuDateTimeSelectionQualifier = segments.Length > 8 && segments[8].Length > 0 ? segments[8].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; RuQuantityTimingQualifier = segments.Length > 9 && segments[9].Length > 0 ? TypeSerializer.Deserialize <TimingQuantity>(segments[9], false, seps) : null; }
public void FromDelimitedString_WithAllProperties_ReturnsCorrectlyInitializedFields() { IType expected = new TimingQuantity { Quantity = new CompositeQuantityWithUnits { IsSubcomponent = true, Quantity = 1 }, Interval = new RepeatInterval { IsSubcomponent = true, RepeatPattern = new CodedWithExceptions { IsSubcomponent = true, Identifier = "2" } }, Duration = "3", StartDateTime = new DateTime(2020, 4, 4, 0, 0, 4), EndDateTime = new DateTime(2020, 5, 5, 0, 0, 5), Priority = "6", Condition = "7", Text = new Text { IsSubcomponent = true, Value = "8" }, Conjunction = "9", OrderSequencing = new OrderSequenceDefinition { IsSubcomponent = true, SequenceResultsFlag = "10" }, OccurrenceDuration = new CodedWithExceptions { IsSubcomponent = true, Identifier = "11" }, TotalOccurrences = 12 }; IType actual = new TimingQuantity(); actual.FromDelimitedString("1^2^3^20200404000004^20200505000005^6^7^8^9^10^11^12"); expected.Should().BeEquivalentTo(actual); }
public void ToDelimitedString_WithAllProperties_ReturnsCorrectlySequencedFields() { IType hl7Type = new TimingQuantity { Quantity = new CompositeQuantityWithUnits { Quantity = 1 }, Interval = new RepeatInterval { RepeatPattern = new CodedWithExceptions { Identifier = "2" } }, Duration = "3", StartDateTime = new DateTime(2020, 4, 4, 0, 0, 4), EndDateTime = new DateTime(2020, 5, 5, 0, 0, 5), Priority = "6", Condition = "7", Text = new Text { Value = "8" }, Conjunction = "9", OrderSequencing = new OrderSequenceDefinition { SequenceResultsFlag = "10" }, OccurrenceDuration = new CodedWithExceptions { Identifier = "11" }, TotalOccurrences = 12 }; string expected = "1^2^3^20200404000004^20200505000005^6^7^8^9^10^11^12"; string actual = hl7Type.ToDelimitedString(); Assert.Equal(expected, actual); }