Пример #1
0
        public void ToDelimitedString_WithAllProperties_ReturnsCorrectlySequencedFields()
        {
            IType hl7Type = new ExtendedCompositeIdNumberAndNameForPersons
            {
                PersonIdentifier = "1",
                FamilyName       = new FamilyName
                {
                    Surname = "2"
                },
                GivenName = "3",
                SecondAndFurtherGivenNamesOrInitialsThereof = "4",
                Suffix      = "5",
                Prefix      = "6",
                Degree      = "7",
                SourceTable = new CodedWithExceptions
                {
                    Identifier = "8"
                },
                AssigningAuthority = new HierarchicDesignator
                {
                    NamespaceId = "9"
                },
                NameTypeCode         = "10",
                IdentifierCheckDigit = "11",
                CheckDigitScheme     = "12",
                IdentifierTypeCode   = "13",
                AssigningFacility    = new HierarchicDesignator
                {
                    NamespaceId = "14"
                },
                NameRepresentationCode = "15",
                NameContext            = new CodedWithExceptions
                {
                    Identifier = "16"
                },
                NameValidityRange = new DateTimeRange
                {
                    RangeStartDateTime = new DateTime(2020, 1, 17, 0, 0, 17)
                },
                NameAssemblyOrder     = "18",
                EffectiveDate         = new DateTime(2020, 1, 19, 0, 0, 19),
                ExpirationDate        = new DateTime(2020, 1, 20, 0, 0, 20),
                ProfessionalSuffix    = "21",
                AssigningJurisdiction = new CodedWithExceptions
                {
                    Identifier = "22"
                },
                AssigningAgencyOrDepartment = new CodedWithExceptions
                {
                    Identifier = "23"
                },
                SecurityCheck       = "24",
                SecurityCheckScheme = "25"
            };

            string expected = "1^2^3^4^5^6^7^8^9^10^11^12^13^14^15^16^20200117000017^18^20200119000019^20200120000020^21^22^23^24^25";
            string actual   = hl7Type.ToDelimitedString();

            Assert.Equal(expected, actual);
        }
Пример #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));
                }
            }

            SetIdObx              = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableUInt() : null;
            ValueType             = segments.Length > 2 && segments[2].Length > 0 ? segments[2] : null;
            ObservationIdentifier = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[3], false, seps) : null;
            ObservationSubId      = segments.Length > 4 && segments[4].Length > 0 ? segments[4] : null;
            ObservationValue      = segments.Length > 5 && segments[5].Length > 0 ? segments[5].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null;
            Units                                 = segments.Length > 6 && segments[6].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[6], false, seps) : null;
            ReferencesRange                       = segments.Length > 7 && segments[7].Length > 0 ? segments[7] : null;
            InterpretationCodes                   = segments.Length > 8 && segments[8].Length > 0 ? segments[8].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null;
            Probability                           = segments.Length > 9 && segments[9].Length > 0 ? segments[9].ToNullableDecimal() : null;
            NatureOfAbnormalTest                  = segments.Length > 10 && segments[10].Length > 0 ? segments[10].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null;
            ObservationResultStatus               = segments.Length > 11 && segments[11].Length > 0 ? segments[11] : null;
            EffectiveDateOfReferenceRange         = segments.Length > 12 && segments[12].Length > 0 ? segments[12].ToNullableDateTime() : null;
            UserDefinedAccessChecks               = segments.Length > 13 && segments[13].Length > 0 ? segments[13] : null;
            DateTimeOfTheObservation              = segments.Length > 14 && segments[14].Length > 0 ? segments[14].ToNullableDateTime() : null;
            ProducersId                           = segments.Length > 15 && segments[15].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[15], false, seps) : null;
            ResponsibleObserver                   = segments.Length > 16 && segments[16].Length > 0 ? segments[16].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            ObservationMethod                     = segments.Length > 17 && segments[17].Length > 0 ? segments[17].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null;
            EquipmentInstanceIdentifier           = segments.Length > 18 && segments[18].Length > 0 ? segments[18].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <EntityIdentifier>(x, false, seps)) : null;
            DateTimeOfTheAnalysis                 = segments.Length > 19 && segments[19].Length > 0 ? segments[19].ToNullableDateTime() : null;
            ObservationSite                       = segments.Length > 20 && segments[20].Length > 0 ? segments[20].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null;
            ObservationInstanceIdentifier         = segments.Length > 21 && segments[21].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[21], false, seps) : null;
            MoodCode                              = segments.Length > 22 && segments[22].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[22], false, seps) : null;
            PerformingOrganizationName            = segments.Length > 23 && segments[23].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeNameAndIdNumberForOrganizations>(segments[23], false, seps) : null;
            PerformingOrganizationAddress         = segments.Length > 24 && segments[24].Length > 0 ? TypeSerializer.Deserialize <ExtendedAddress>(segments[24], false, seps) : null;
            PerformingOrganizationMedicalDirector = segments.Length > 25 && segments[25].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[25], false, seps) : null;
        }
Пример #3
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));
                }
            }

            BusinessRuleOverrideType = segments.Length > 1 && segments[1].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[1], false, seps) : null;
            BusinessRuleOverrideCode = segments.Length > 2 && segments[2].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[2], false, seps) : null;
            OverrideComments         = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <Text>(segments[3], false, seps) : null;
            OverrideEnteredBy        = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[4], false, seps) : null;
            OverrideAuthorizedBy     = segments.Length > 5 && segments[5].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[5], false, seps) : null;
        }
Пример #4
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));
                }
            }

            SetIdBpx                  = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableUInt() : null;
            BpDispenseStatus          = segments.Length > 2 && segments[2].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[2], false, seps) : null;
            BpStatus                  = segments.Length > 3 && segments[3].Length > 0 ? segments[3] : null;
            BpDateTimeOfStatus        = segments.Length > 4 && segments[4].Length > 0 ? segments[4].ToNullableDateTime() : null;
            BcDonationId              = segments.Length > 5 && segments[5].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[5], false, seps) : null;
            BcComponent               = segments.Length > 6 && segments[6].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[6], false, seps) : null;
            BcDonationTypeIntendedUse = segments.Length > 7 && segments[7].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[7], false, seps) : null;
            CpCommercialProduct       = segments.Length > 8 && segments[8].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[8], false, seps) : null;
            CpManufacturer            = segments.Length > 9 && segments[9].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeNameAndIdNumberForOrganizations>(segments[9], false, seps) : null;
            CpLotNumber               = segments.Length > 10 && segments[10].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[10], false, seps) : null;
            BpBloodGroup              = segments.Length > 11 && segments[11].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[11], false, seps) : null;
            BcSpecialTesting          = segments.Length > 12 && segments[12].Length > 0 ? segments[12].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithNoExceptions>(x, false, seps)) : null;
            BpExpirationDateTime      = segments.Length > 13 && segments[13].Length > 0 ? segments[13].ToNullableDateTime() : null;
            BpQuantity                = segments.Length > 14 && segments[14].Length > 0 ? segments[14].ToNullableDecimal() : null;
            BpAmount                  = segments.Length > 15 && segments[15].Length > 0 ? segments[15].ToNullableDecimal() : null;
            BpUnits    = segments.Length > 16 && segments[16].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[16], false, seps) : null;
            BpUniqueId = segments.Length > 17 && segments[17].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[17], false, seps) : null;
            BpActualDispensedToLocation = segments.Length > 18 && segments[18].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[18], false, seps) : null;
            BpActualDispensedToAddress  = segments.Length > 19 && segments[19].Length > 0 ? TypeSerializer.Deserialize <ExtendedAddress>(segments[19], false, seps) : null;
            BpDispensedToReceiver       = segments.Length > 20 && segments[20].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[20], false, seps) : null;
            BpDispensingIndividual      = segments.Length > 21 && segments[21].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[21], false, seps) : null;
        }
Пример #5
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));
                }
            }

            RecordLevelEventCode = segments.Length > 1 && segments[1].Length > 0 ? segments[1] : null;
            MfnControlId         = segments.Length > 2 && segments[2].Length > 0 ? segments[2] : null;
            EffectiveDateTime    = segments.Length > 3 && segments[3].Length > 0 ? segments[3].ToNullableDateTime() : null;
            PrimaryKeyValueMfe   = segments.Length > 4 && segments[4].Length > 0 ? segments[4].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null;
            PrimaryKeyValueType  = segments.Length > 5 && segments[5].Length > 0 ? segments[5].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null;
            EnteredDateTime      = segments.Length > 6 && segments[6].Length > 0 ? segments[6].ToNullableDateTime() : null;
            EnteredBy            = segments.Length > 7 && segments[7].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[7], false, seps) : null;
        }
Пример #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));
                }
            }

            OrderControl           = segments.Length > 1 && segments[1].Length > 0 ? segments[1] : null;
            PlacerOrderNumber      = segments.Length > 2 && segments[2].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[2], false, seps) : null;
            FillerOrderNumber      = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[3], false, seps) : null;
            PlacerGroupNumber      = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[4], false, seps) : null;
            OrderStatus            = segments.Length > 5 && segments[5].Length > 0 ? segments[5] : null;
            ResponseFlag           = segments.Length > 6 && segments[6].Length > 0 ? segments[6] : null;
            QuantityTiming         = segments.Length > 7 && segments[7].Length > 0 ? TypeSerializer.Deserialize <TimingQuantity>(segments[7], false, seps) : null;
            ParentOrder            = segments.Length > 8 && segments[8].Length > 0 ? TypeSerializer.Deserialize <ParentOrder>(segments[8], false, seps) : null;
            DateTimeOfTransaction  = segments.Length > 9 && segments[9].Length > 0 ? segments[9].ToNullableDateTime() : null;
            EnteredBy              = segments.Length > 10 && segments[10].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[10], false, seps) : null;
            VerifiedBy             = segments.Length > 11 && segments[11].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[11], false, seps) : null;
            OrderingProvider       = segments.Length > 12 && segments[12].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[12], false, seps) : null;
            EnterersLocation       = segments.Length > 13 && segments[13].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[13], false, seps) : null;
            CallBackPhoneNumber    = segments.Length > 14 && segments[14].Length > 0 ? segments[14].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(x, false, seps)) : null;
            OrderEffectiveDateTime = segments.Length > 15 && segments[15].Length > 0 ? segments[15].ToNullableDateTime() : null;
            OrderControlCodeReason = segments.Length > 16 && segments[16].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[16], false, seps) : null;
            EnteringOrganization   = segments.Length > 17 && segments[17].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[17], false, seps) : null;
            EnteringDevice         = segments.Length > 18 && segments[18].Length > 0 ? TypeSerializer.Deserialize <CodedElement>(segments[18], false, seps) : null;
            ActionBy = segments.Length > 19 && segments[19].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[19], false, seps) : null;
        }
Пример #7
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));
                }
            }

            SetIdPv1                = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableUInt() : null;
            PatientClass            = segments.Length > 2 && segments[2].Length > 0 ? segments[2] : null;
            AssignedPatientLocation = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[3], false, seps) : null;
            AdmissionType           = segments.Length > 4 && segments[4].Length > 0 ? segments[4] : null;
            PreadmitNumber          = segments.Length > 5 && segments[5].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(segments[5], false, seps) : null;
            PriorPatientLocation    = segments.Length > 6 && segments[6].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[6], false, seps) : null;
            AttendingDoctor         = segments.Length > 7 && segments[7].Length > 0 ? segments[7].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            ReferringDoctor         = segments.Length > 8 && segments[8].Length > 0 ? segments[8].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            ConsultingDoctor        = segments.Length > 9 && segments[9].Length > 0 ? segments[9].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            HospitalService         = segments.Length > 10 && segments[10].Length > 0 ? segments[10] : null;
            TemporaryLocation       = segments.Length > 11 && segments[11].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[11], false, seps) : null;
            PreadmitTestIndicator   = segments.Length > 12 && segments[12].Length > 0 ? segments[12] : null;
            ReadmissionIndicator    = segments.Length > 13 && segments[13].Length > 0 ? segments[13] : null;
            AdmitSource             = segments.Length > 14 && segments[14].Length > 0 ? segments[14] : null;
            AmbulatoryStatus        = segments.Length > 15 && segments[15].Length > 0 ? segments[15].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null;
            VipIndicator            = segments.Length > 16 && segments[16].Length > 0 ? segments[16] : null;
            AdmittingDoctor         = segments.Length > 17 && segments[17].Length > 0 ? segments[17].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null;
            PatientType             = segments.Length > 18 && segments[18].Length > 0 ? segments[18] : null;
            VisitNumber             = segments.Length > 19 && segments[19].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(segments[19], false, seps) : null;
            FinancialClass          = segments.Length > 20 && segments[20].Length > 0 ? segments[20].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <FinancialClass>(x, false, seps)) : null;
            ChargePriceIndicator    = segments.Length > 21 && segments[21].Length > 0 ? segments[21] : null;
            CourtesyCode            = segments.Length > 22 && segments[22].Length > 0 ? segments[22] : null;
            CreditRating            = segments.Length > 23 && segments[23].Length > 0 ? segments[23] : null;
            ContractCode            = segments.Length > 24 && segments[24].Length > 0 ? segments[24].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null;
            ContractEffectiveDate   = segments.Length > 25 && segments[25].Length > 0 ? segments[25].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => x.ToDateTime()) : null;
            ContractAmount          = segments.Length > 26 && segments[26].Length > 0 ? segments[26].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => x.ToDecimal()) : null;
            ContractPeriod          = segments.Length > 27 && segments[27].Length > 0 ? segments[27].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => x.ToDecimal()) : null;
            InterestCode            = segments.Length > 28 && segments[28].Length > 0 ? segments[28] : null;
            TransferToBadDebtCode   = segments.Length > 29 && segments[29].Length > 0 ? segments[29] : null;
            TransferToBadDebtDate   = segments.Length > 30 && segments[30].Length > 0 ? segments[30].ToNullableDateTime() : null;
            BadDebtAgencyCode       = segments.Length > 31 && segments[31].Length > 0 ? segments[31] : null;
            BadDebtTransferAmount   = segments.Length > 32 && segments[32].Length > 0 ? segments[32].ToNullableDecimal() : null;
            BadDebtRecoveryAmount   = segments.Length > 33 && segments[33].Length > 0 ? segments[33].ToNullableDecimal() : null;
            DeleteAccountIndicator  = segments.Length > 34 && segments[34].Length > 0 ? segments[34] : null;
            DeleteAccountDate       = segments.Length > 35 && segments[35].Length > 0 ? segments[35].ToNullableDateTime() : null;
            DischargeDisposition    = segments.Length > 36 && segments[36].Length > 0 ? segments[36] : null;
            DischargedToLocation    = segments.Length > 37 && segments[37].Length > 0 ? TypeSerializer.Deserialize <DischargeToLocationAndDate>(segments[37], false, seps) : null;
            DietType                = segments.Length > 38 && segments[38].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[38], false, seps) : null;
            ServicingFacility       = segments.Length > 39 && segments[39].Length > 0 ? segments[39] : null;
            BedStatus               = segments.Length > 40 && segments[40].Length > 0 ? segments[40] : null;
            AccountStatus           = segments.Length > 41 && segments[41].Length > 0 ? segments[41] : null;
            PendingLocation         = segments.Length > 42 && segments[42].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[42], false, seps) : null;
            PriorTemporaryLocation  = segments.Length > 43 && segments[43].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[43], false, seps) : null;
            AdmitDateTime           = segments.Length > 44 && segments[44].Length > 0 ? segments[44].ToNullableDateTime() : null;
            DischargeDateTime       = segments.Length > 45 && segments[45].Length > 0 ? segments[45].ToNullableDateTime() : null;
            CurrentPatientBalance   = segments.Length > 46 && segments[46].Length > 0 ? segments[46].ToNullableDecimal() : null;
            TotalCharges            = segments.Length > 47 && segments[47].Length > 0 ? segments[47].ToNullableDecimal() : null;
            TotalAdjustments        = segments.Length > 48 && segments[48].Length > 0 ? segments[48].ToNullableDecimal() : null;
            TotalPayments           = segments.Length > 49 && segments[49].Length > 0 ? segments[49].ToNullableDecimal() : null;
            AlternateVisitId        = segments.Length > 50 && segments[50].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(segments[50], false, seps) : null;
            VisitIndicator          = segments.Length > 51 && segments[51].Length > 0 ? segments[51] : null;
            OtherHealthcareProvider = segments.Length > 52 && segments[52].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(segments[52], false, seps) : null;
        }