コード例 #1
0
        /// <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;
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }