/// <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)); } } FacilityIdFac = segments.Length > 1 && segments[1].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[1], false, seps) : null; FacilityType = segments.Length > 2 && segments[2].Length > 0 ? segments[2] : null; FacilityAddress = segments.Length > 3 && segments[3].Length > 0 ? segments[3].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedAddress>(x, false, seps)) : null; FacilityTelecommunication = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(segments[4], false, seps) : null; ContactPerson = segments.Length > 5 && segments[5].Length > 0 ? segments[5].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null; ContactTitle = segments.Length > 6 && segments[6].Length > 0 ? segments[6].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; ContactAddress = segments.Length > 7 && segments[7].Length > 0 ? segments[7].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedAddress>(x, false, seps)) : null; ContactTelecommunication = segments.Length > 8 && segments[8].Length > 0 ? segments[8].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(x, false, seps)) : null; SignatureAuthority = segments.Length > 9 && segments[9].Length > 0 ? segments[9].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null; SignatureAuthorityTitle = segments.Length > 10 && segments[10].Length > 0 ? segments[10] : null; SignatureAuthorityAddress = segments.Length > 11 && segments[11].Length > 0 ? segments[11].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedAddress>(x, false, seps)) : null; SignatureAuthorityTelecommunication = segments.Length > 12 && segments[12].Length > 0 ? TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(segments[12], 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)); } } PrimaryKeyValueLdp = segments.Length > 1 && segments[1].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[1], false, seps) : null; LocationDepartment = segments.Length > 2 && segments[2].Length > 0 ? segments[2] : null; LocationService = segments.Length > 3 && segments[3].Length > 0 ? segments[3].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; SpecialtyType = segments.Length > 4 && segments[4].Length > 0 ? segments[4].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedElement>(x, false, seps)) : null; ValidPatientClasses = segments.Length > 5 && segments[5].Length > 0 ? segments[5].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; ActiveInactiveFlag = segments.Length > 6 && segments[6].Length > 0 ? segments[6] : null; ActivationDateLdp = segments.Length > 7 && segments[7].Length > 0 ? segments[7].ToNullableDateTime() : null; InactivationDateLdp = segments.Length > 8 && segments[8].Length > 0 ? segments[8].ToNullableDateTime() : null; InactivatedReason = segments.Length > 9 && segments[9].Length > 0 ? segments[9] : null; VisitingHours = segments.Length > 10 && segments[10].Length > 0 ? segments[10].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <VisitingHours>(x, false, seps)) : null; ContactPhone = segments.Length > 11 && segments[11].Length > 0 ? TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(segments[11], 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)); } } SetIdNk1 = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableUInt() : null; Name = segments.Length > 2 && segments[2].Length > 0 ? segments[2].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedPersonName>(x, false, seps)) : null; Relationship = segments.Length > 3 && segments[3].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[3], false, seps) : null; Address = segments.Length > 4 && segments[4].Length > 0 ? segments[4].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedAddress>(x, false, seps)) : null; PhoneNumber = segments.Length > 5 && segments[5].Length > 0 ? segments[5].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(x, false, seps)) : null; BusinessPhoneNumber = segments.Length > 6 && segments[6].Length > 0 ? segments[6].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(x, false, seps)) : null; ContactRole = segments.Length > 7 && segments[7].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[7], false, seps) : null; StartDate = segments.Length > 8 && segments[8].Length > 0 ? segments[8].ToNullableDateTime() : null; EndDate = segments.Length > 9 && segments[9].Length > 0 ? segments[9].ToNullableDateTime() : null; NextOfKinAssociatedPartiesJobTitle = segments.Length > 10 && segments[10].Length > 0 ? segments[10] : null; NextOfKinAssociatedPartiesJobCodeClass = segments.Length > 11 && segments[11].Length > 0 ? TypeSerializer.Deserialize <JobCodeClass>(segments[11], false, seps) : null; NextOfKinAssociatedPartiesEmployeeNumber = segments.Length > 12 && segments[12].Length > 0 ? TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(segments[12], false, seps) : null; OrganizationNameNk1 = segments.Length > 13 && segments[13].Length > 0 ? segments[13].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeNameAndIdNumberForOrganizations>(x, false, seps)) : null; MaritalStatus = segments.Length > 14 && segments[14].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[14], false, seps) : null; AdministrativeSex = segments.Length > 15 && segments[15].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[15], false, seps) : null; DateTimeOfBirth = segments.Length > 16 && segments[16].Length > 0 ? segments[16].ToNullableDateTime() : null; LivingDependency = segments.Length > 17 && segments[17].Length > 0 ? segments[17].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; AmbulatoryStatus = segments.Length > 18 && segments[18].Length > 0 ? segments[18].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; Citizenship = segments.Length > 19 && segments[19].Length > 0 ? segments[19].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; PrimaryLanguage = segments.Length > 20 && segments[20].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[20], false, seps) : null; LivingArrangement = segments.Length > 21 && segments[21].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[21], false, seps) : null; PublicityCode = segments.Length > 22 && segments[22].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[22], false, seps) : null; ProtectionIndicator = segments.Length > 23 && segments[23].Length > 0 ? segments[23] : null; StudentIndicator = segments.Length > 24 && segments[24].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[24], false, seps) : null; Religion = segments.Length > 25 && segments[25].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[25], false, seps) : null; MothersMaidenName = segments.Length > 26 && segments[26].Length > 0 ? segments[26].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedPersonName>(x, false, seps)) : null; Nationality = segments.Length > 27 && segments[27].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[27], false, seps) : null; EthnicGroup = segments.Length > 28 && segments[28].Length > 0 ? segments[28].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; ContactReason = segments.Length > 29 && segments[29].Length > 0 ? segments[29].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; ContactPersonsName = segments.Length > 30 && segments[30].Length > 0 ? segments[30].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedPersonName>(x, false, seps)) : null; ContactPersonsTelephoneNumber = segments.Length > 31 && segments[31].Length > 0 ? segments[31].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(x, false, seps)) : null; ContactPersonsAddress = segments.Length > 32 && segments[32].Length > 0 ? segments[32].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedAddress>(x, false, seps)) : null; NextOfKinAssociatedPartysIdentifiers = segments.Length > 33 && segments[33].Length > 0 ? segments[33].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(x, false, seps)) : null; JobStatus = segments.Length > 34 && segments[34].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[34], false, seps) : null; Race = segments.Length > 35 && segments[35].Length > 0 ? segments[35].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; Handicap = segments.Length > 36 && segments[36].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[36], false, seps) : null; ContactPersonSocialSecurityNumber = segments.Length > 37 && segments[37].Length > 0 ? segments[37] : null; NextOfKinBirthPlace = segments.Length > 38 && segments[38].Length > 0 ? segments[38] : null; VipIndicator = segments.Length > 39 && segments[39].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[39], false, seps) : null; NextOfKinTelecommunicationInformation = segments.Length > 40 && segments[40].Length > 0 ? TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(segments[40], false, seps) : null; ContactPersonsTelecommunicationInformation = segments.Length > 41 && segments[41].Length > 0 ? TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(segments[41], false, seps) : null; }
public void FromDelimitedString_WithAllProperties_ReturnsCorrectlyInitializedFields() { IType expected = new ExtendedTelecommunicationNumber { TelephoneNumber = "1", TelecommunicationUseCode = "2", TelecommunicationEquipmentType = "3", CommunicationAddress = "4", CountryCode = 5, AreaCityCode = 6, LocalNumber = 7, Extension = 8, AnyText = "9", ExtensionPrefix = "10", SpeedDialCode = "11", UnformattedTelephoneNumber = "12", EffectiveStartDate = new DateTime(2020, 1, 13, 0, 0, 13), ExpirationDate = new DateTime(2020, 1, 14, 0, 0, 14), ExpirationReason = new CodedWithExceptions { IsSubcomponent = true, Identifier = "15" }, ProtectionCode = new CodedWithExceptions { IsSubcomponent = true, Identifier = "16" }, SharedTelecommunicationIdentifier = new EntityIdentifier { IsSubcomponent = true, EntityId = "17" }, PreferenceOrder = 18 }; IType actual = new ExtendedTelecommunicationNumber(); actual.FromDelimitedString("1^2^3^4^5^6^7^8^9^10^11^12^20200113000013^20200114000014^15^16^17^18"); expected.Should().BeEquivalentTo(actual); }
public void ToDelimitedString_WithAllProperties_ReturnsCorrectlySequencedFields() { IType hl7Type = new ExtendedTelecommunicationNumber { TelephoneNumber = "1", TelecommunicationUseCode = "2", TelecommunicationEquipmentType = "3", CommunicationAddress = "4", CountryCode = 5, AreaCityCode = 6, LocalNumber = 7, Extension = 8, AnyText = "9", ExtensionPrefix = "10", SpeedDialCode = "11", UnformattedTelephoneNumber = "12", EffectiveStartDate = new DateTime(2020, 1, 13, 0, 0, 13), ExpirationDate = new DateTime(2020, 1, 14, 0, 0, 14), ExpirationReason = new CodedWithExceptions { Identifier = "15" }, ProtectionCode = new CodedWithExceptions { Identifier = "16" }, SharedTelecommunicationIdentifier = new EntityIdentifier { EntityId = "17" }, PreferenceOrder = 18 }; string expected = "1^2^3^4^5^6^7^8^9^10^11^12^20200113000013^20200114000014^15^16^17^18"; string actual = hl7Type.ToDelimitedString(); Assert.Equal(expected, actual); }