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

            SequenceNumberTestObservationMasterFile = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableDecimal() : null;
            DerivedSpecimen             = segments.Length > 2 && segments[2].Length > 0 ? segments[2] : null;
            ContainerDescription        = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <Text>(segments[3], false, seps) : null;
            ContainerVolume             = segments.Length > 4 && segments[4].Length > 0 ? segments[4].ToNullableDecimal() : null;
            ContainerUnits              = segments.Length > 5 && segments[5].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[5], false, seps) : null;
            Specimen                    = segments.Length > 6 && segments[6].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[6], false, seps) : null;
            Additive                    = segments.Length > 7 && segments[7].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[7], false, seps) : null;
            Preparation                 = segments.Length > 8 && segments[8].Length > 0 ? TypeSerializer.Deserialize <Text>(segments[8], false, seps) : null;
            SpecialHandlingRequirements = segments.Length > 9 && segments[9].Length > 0 ? TypeSerializer.Deserialize <Text>(segments[9], false, seps) : null;
            NormalCollectionVolume      = segments.Length > 10 && segments[10].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[10], false, seps) : null;
            MinimumCollectionVolume     = segments.Length > 11 && segments[11].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[11], false, seps) : null;
            SpecimenRequirements        = segments.Length > 12 && segments[12].Length > 0 ? TypeSerializer.Deserialize <Text>(segments[12], false, seps) : null;
            SpecimenPriorities          = segments.Length > 13 && segments[13].Length > 0 ? segments[13].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null;
            SpecimenRetentionTime       = segments.Length > 14 && segments[14].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[14], false, seps) : null;
        }
Exemple #2
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));
                }
            }

            SetIdFt1                      = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableUInt() : null;
            TransactionId                 = segments.Length > 2 && segments[2].Length > 0 ? segments[2] : null;
            TransactionBatchId            = segments.Length > 3 && segments[3].Length > 0 ? segments[3] : null;
            TransactionDate               = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <DateTimeRange>(segments[4], false, seps) : null;
            TransactionPostingDate        = segments.Length > 5 && segments[5].Length > 0 ? segments[5].ToNullableDateTime() : null;
            TransactionType               = segments.Length > 6 && segments[6].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[6], false, seps) : null;
            TransactionCode               = segments.Length > 7 && segments[7].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[7], false, seps) : null;
            TransactionDescription        = segments.Length > 8 && segments[8].Length > 0 ? segments[8] : null;
            TransactionDescriptionAlt     = segments.Length > 9 && segments[9].Length > 0 ? segments[9] : null;
            TransactionQuantity           = segments.Length > 10 && segments[10].Length > 0 ? segments[10].ToNullableDecimal() : null;
            TransactionAmountExtended     = segments.Length > 11 && segments[11].Length > 0 ? TypeSerializer.Deserialize <CompositePrice>(segments[11], false, seps) : null;
            TransactionAmountUnit         = segments.Length > 12 && segments[12].Length > 0 ? TypeSerializer.Deserialize <CompositePrice>(segments[12], false, seps) : null;
            DepartmentCode                = segments.Length > 13 && segments[13].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[13], false, seps) : null;
            HealthPlanId                  = segments.Length > 14 && segments[14].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[14], false, seps) : null;
            InsuranceAmount               = segments.Length > 15 && segments[15].Length > 0 ? TypeSerializer.Deserialize <CompositePrice>(segments[15], false, seps) : null;
            AssignedPatientLocation       = segments.Length > 16 && segments[16].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[16], false, seps) : null;
            FeeSchedule                   = segments.Length > 17 && segments[17].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[17], false, seps) : null;
            PatientType                   = segments.Length > 18 && segments[18].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[18], false, seps) : null;
            DiagnosisCodeFt1              = segments.Length > 19 && segments[19].Length > 0 ? segments[19].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null;
            PerformedByCode               = segments.Length > 20 && segments[20].Length > 0 ? segments[20].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            OrderedByCode                 = segments.Length > 21 && segments[21].Length > 0 ? segments[21].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            UnitCost                      = segments.Length > 22 && segments[22].Length > 0 ? TypeSerializer.Deserialize <CompositePrice>(segments[22], false, seps) : null;
            FillerOrderNumber             = segments.Length > 23 && segments[23].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[23], false, seps) : null;
            EnteredByCode                 = segments.Length > 24 && segments[24].Length > 0 ? segments[24].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            ProcedureCode                 = segments.Length > 25 && segments[25].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[25], false, seps) : null;
            ProcedureCodeModifier         = segments.Length > 26 && segments[26].Length > 0 ? segments[26].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithNoExceptions>(x, false, seps)) : null;
            AdvancedBeneficiaryNoticeCode = segments.Length > 27 && segments[27].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[27], false, seps) : null;
            MedicallyNecessaryDuplicateProcedureReason = segments.Length > 28 && segments[28].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[28], false, seps) : null;
            NdcCode                     = segments.Length > 29 && segments[29].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[29], false, seps) : null;
            PaymentReferenceId          = segments.Length > 30 && segments[30].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(segments[30], false, seps) : null;
            TransactionReferenceKey     = segments.Length > 31 && segments[31].Length > 0 ? segments[31].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => x.ToUInt()) : null;
            PerformingFacility          = segments.Length > 32 && segments[32].Length > 0 ? segments[32].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeNameAndIdNumberForOrganizations>(x, false, seps)) : null;
            OrderingFacility            = segments.Length > 33 && segments[33].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeNameAndIdNumberForOrganizations>(segments[33], false, seps) : null;
            ItemNumber                  = segments.Length > 34 && segments[34].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[34], false, seps) : null;
            ModelNumber                 = segments.Length > 35 && segments[35].Length > 0 ? segments[35] : null;
            SpecialProcessingCode       = segments.Length > 36 && segments[36].Length > 0 ? segments[36].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null;
            ClinicCode                  = segments.Length > 37 && segments[37].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[37], false, seps) : null;
            ReferralNumber              = segments.Length > 38 && segments[38].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(segments[38], false, seps) : null;
            AuthorizationNumber         = segments.Length > 39 && segments[39].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(segments[39], false, seps) : null;
            ServiceProviderTaxonomyCode = segments.Length > 40 && segments[40].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[40], false, seps) : null;
            RevenueCode                 = segments.Length > 41 && segments[41].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[41], false, seps) : null;
            PrescriptionNumber          = segments.Length > 42 && segments[42].Length > 0 ? segments[42] : null;
            NdcQtyAndUom                = segments.Length > 43 && segments[43].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[43], false, seps) : null;
        }
        /// <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));
                }
            }

            CycleStartTime        = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableDateTime() : null;
            CycleCount            = segments.Length > 2 && segments[2].Length > 0 ? segments[2].ToNullableDecimal() : null;
            TempMax               = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[3], false, seps) : null;
            TempMin               = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[4], false, seps) : null;
            LoadNumber            = segments.Length > 5 && segments[5].Length > 0 ? segments[5].ToNullableDecimal() : null;
            ConditionTime         = segments.Length > 6 && segments[6].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[6], false, seps) : null;
            SterilizeTime         = segments.Length > 7 && segments[7].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[7], false, seps) : null;
            ExhaustTime           = segments.Length > 8 && segments[8].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[8], false, seps) : null;
            TotalCycleTime        = segments.Length > 9 && segments[9].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[9], false, seps) : null;
            DeviceStatus          = segments.Length > 10 && segments[10].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[10], false, seps) : null;
            CycleStartDateTime    = segments.Length > 11 && segments[11].Length > 0 ? segments[11].ToNullableDateTime() : null;
            DryTime               = segments.Length > 12 && segments[12].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[12], false, seps) : null;
            LeakRate              = segments.Length > 13 && segments[13].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[13], false, seps) : null;
            ControlTemperature    = segments.Length > 14 && segments[14].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[14], false, seps) : null;
            SterilizerTemperature = segments.Length > 15 && segments[15].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[15], false, seps) : null;
            CycleCompleteTime     = segments.Length > 16 && segments[16].Length > 0 ? segments[16].ToNullableDateTime() : null;
            UnderTemperature      = segments.Length > 17 && segments[17].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[17], false, seps) : null;
            OverTemperature       = segments.Length > 18 && segments[18].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[18], false, seps) : null;
            AbortCycle            = segments.Length > 19 && segments[19].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[19], false, seps) : null;
            Alarm                  = segments.Length > 20 && segments[20].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[20], false, seps) : null;
            LongInChargePhase      = segments.Length > 21 && segments[21].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[21], false, seps) : null;
            LongInExhaustPhase     = segments.Length > 22 && segments[22].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[22], false, seps) : null;
            LongInFastExhaustPhase = segments.Length > 23 && segments[23].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[23], false, seps) : null;
            Reset                  = segments.Length > 24 && segments[24].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[24], false, seps) : null;
            OperatorUnload         = segments.Length > 25 && segments[25].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[25], false, seps) : null;
            DoorOpen               = segments.Length > 26 && segments[26].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[26], false, seps) : null;
            ReadingFailure         = segments.Length > 27 && segments[27].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[27], false, seps) : null;
            CycleType              = segments.Length > 28 && segments[28].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[28], false, seps) : null;
            ThermalRinseTime       = segments.Length > 29 && segments[29].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[29], false, seps) : null;
            WashTime               = segments.Length > 30 && segments[30].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[30], false, seps) : null;
            InjectionRate          = segments.Length > 31 && segments[31].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[31], false, seps) : null;
            ProcedureCode          = segments.Length > 32 && segments[32].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[32], false, seps) : null;
            PatientIdentifierList  = segments.Length > 33 && segments[33].Length > 0 ? segments[33].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(x, false, seps)) : null;
            AttendingDoctor        = segments.Length > 34 && segments[34].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[34], false, seps) : null;
            DilutionFactor         = segments.Length > 35 && segments[35].Length > 0 ? TypeSerializer.Deserialize <StructuredNumeric>(segments[35], false, seps) : null;
            FillTime               = segments.Length > 36 && segments[36].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[36], false, seps) : null;
            InletTemperature       = segments.Length > 37 && segments[37].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[37], false, seps) : null;
        }
Exemple #4
0
        public void ToDelimitedString_WithAllProperties_ReturnsCorrectlySequencedFields()
        {
            IType hl7Type = new CompositeQuantityWithUnits
            {
                Quantity = 1,
                Units    = new CodedWithExceptions
                {
                    Identifier = "2"
                }
            };

            string expected = "1^2";
            string actual   = hl7Type.ToDelimitedString();

            Assert.Equal(expected, actual);
        }
Exemple #5
0
        public void FromDelimitedString_WithAllProperties_ReturnsCorrectlyInitializedFields()
        {
            IType expected = new CompositeQuantityWithUnits
            {
                Quantity = 1,
                Units    = new CodedWithExceptions
                {
                    IsSubcomponent = true,
                    Identifier     = "2"
                }
            };

            IType actual = new CompositeQuantityWithUnits();

            actual.FromDelimitedString("1^2");

            expected.Should().BeEquivalentTo(actual);
        }
Exemple #6
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));
                }
            }

            BloodProductCode = segments.Length > 1 && segments[1].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[1], false, seps) : null;
            BloodAmount      = segments.Length > 2 && segments[2].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[2], false, seps) : null;
        }
        /// <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));
                }
            }

            SetIdCdo                          = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableUInt() : null;
            ActionCode                        = segments.Length > 2 && segments[2].Length > 0 ? segments[2] : null;
            CumulativeDosageLimit             = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[3], false, seps) : null;
            CumulativeDosageLimitTimeInterval = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[4], false, seps) : null;
        }
Exemple #8
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));
                }
            }

            RequestedGiveCode                      = segments.Length > 1 && segments[1].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[1], false, seps) : null;
            RequestedGiveAmountMinimum             = segments.Length > 2 && segments[2].Length > 0 ? segments[2].ToNullableDecimal() : null;
            RequestedGiveAmountMaximum             = segments.Length > 3 && segments[3].Length > 0 ? segments[3].ToNullableDecimal() : null;
            RequestedGiveUnits                     = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[4], false, seps) : null;
            RequestedDosageForm                    = segments.Length > 5 && segments[5].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[5], false, seps) : null;
            ProvidersPharmacyTreatmentInstructions = segments.Length > 6 && segments[6].Length > 0 ? segments[6].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedElement>(x, false, seps)) : null;
            ProvidersAdministrationInstructions    = segments.Length > 7 && segments[7].Length > 0 ? segments[7].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedElement>(x, false, seps)) : null;
            DeliverToLocation                      = segments.Length > 8 && segments[8].Length > 0 ? TypeSerializer.Deserialize <LocationWithAddressVariationOne>(segments[8], false, seps) : null;
            AllowSubstitutions                     = segments.Length > 9 && segments[9].Length > 0 ? segments[9] : null;
            RequestedDispenseCode                  = segments.Length > 10 && segments[10].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[10], false, seps) : null;
            RequestedDispenseAmount                = segments.Length > 11 && segments[11].Length > 0 ? segments[11].ToNullableDecimal() : null;
            RequestedDispenseUnits                 = segments.Length > 12 && segments[12].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[12], false, seps) : null;
            NumberOfRefills                        = segments.Length > 13 && segments[13].Length > 0 ? segments[13].ToNullableDecimal() : null;
            OrderingProvidersDeaNumber             = segments.Length > 14 && segments[14].Length > 0 ? segments[14].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            PharmacistTreatmentSuppliersVerifierId = segments.Length > 15 && segments[15].Length > 0 ? segments[15].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            NeedsHumanReview                       = segments.Length > 16 && segments[16].Length > 0 ? segments[16] : null;
            RequestedGivePerTimeUnit               = segments.Length > 17 && segments[17].Length > 0 ? segments[17] : null;
            RequestedGiveStrength                  = segments.Length > 18 && segments[18].Length > 0 ? segments[18].ToNullableDecimal() : null;
            RequestedGiveStrengthUnits             = segments.Length > 19 && segments[19].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[19], false, seps) : null;
            Indication = segments.Length > 20 && segments[20].Length > 0 ? segments[20].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedElement>(x, false, seps)) : null;
            RequestedGiveRateAmount = segments.Length > 21 && segments[21].Length > 0 ? segments[21] : null;
            RequestedGiveRateUnits  = segments.Length > 22 && segments[22].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[22], false, seps) : null;
            TotalDailyDose          = segments.Length > 23 && segments[23].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[23], false, seps) : null;
        }
        /// <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));
                }
            }

            SubstanceIdentifier          = segments.Length > 1 && segments[1].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[1], false, seps) : null;
            SubstanceStatus              = segments.Length > 2 && segments[2].Length > 0 ? segments[2].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null;
            SubstanceType                = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[3], false, seps) : null;
            InventoryContainerIdentifier = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[4], false, seps) : null;
            ContainerCarrierIdentifier   = segments.Length > 5 && segments[5].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[5], false, seps) : null;
            PositionOnCarrier            = segments.Length > 6 && segments[6].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[6], false, seps) : null;
            InitialQuantity              = segments.Length > 7 && segments[7].Length > 0 ? segments[7].ToNullableDecimal() : null;
            CurrentQuantity              = segments.Length > 8 && segments[8].Length > 0 ? segments[8].ToNullableDecimal() : null;
            AvailableQuantity            = segments.Length > 9 && segments[9].Length > 0 ? segments[9].ToNullableDecimal() : null;
            ConsumptionQuantity          = segments.Length > 10 && segments[10].Length > 0 ? segments[10].ToNullableDecimal() : null;
            QuantityUnits                = segments.Length > 11 && segments[11].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[11], false, seps) : null;
            ExpirationDateTime           = segments.Length > 12 && segments[12].Length > 0 ? segments[12].ToNullableDateTime() : null;
            FirstUsedDateTime            = segments.Length > 13 && segments[13].Length > 0 ? segments[13].ToNullableDateTime() : null;
            OnBoardStabilityDuration     = segments.Length > 14 && segments[14].Length > 0 ? segments[14] : null;
            TestFluidIdentifiers         = segments.Length > 15 && segments[15].Length > 0 ? segments[15].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null;
            ManufacturerLotNumber        = segments.Length > 16 && segments[16].Length > 0 ? segments[16] : null;
            ManufacturerIdentifier       = segments.Length > 17 && segments[17].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[17], false, seps) : null;
            SupplierIdentifier           = segments.Length > 18 && segments[18].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[18], false, seps) : null;
            OnBoardStabilityTime         = segments.Length > 19 && segments[19].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[19], false, seps) : null;
            TargetValue = segments.Length > 20 && segments[20].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[20], false, seps) : null;
            EquipmentStateIndicatorTypeCode = segments.Length > 21 && segments[21].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[21], false, seps) : null;
            EquipmentStateIndicatorValue    = segments.Length > 22 && segments[22].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[22], false, seps) : null;
        }