/// <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)); } } PlacerAppointmentId = segments.Length > 1 && segments[1].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[1], false, seps) : null; FillerAppointmentId = segments.Length > 2 && segments[2].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[2], false, seps) : null; OccurrenceNumber = segments.Length > 3 && segments[3].Length > 0 ? segments[3].ToNullableDecimal() : null; PlacerGroupNumber = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifierPair>(segments[4], false, seps) : null; ScheduleId = segments.Length > 5 && segments[5].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[5], false, seps) : null; EventReason = segments.Length > 6 && segments[6].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[6], false, seps) : null; AppointmentReason = segments.Length > 7 && segments[7].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[7], false, seps) : null; AppointmentType = segments.Length > 8 && segments[8].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[8], false, seps) : null; AppointmentDuration = segments.Length > 9 && segments[9].Length > 0 ? segments[9].ToNullableDecimal() : null; AppointmentDurationUnits = segments.Length > 10 && segments[10].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[10], false, seps) : null; AppointmentTimingQuantity = segments.Length > 11 && segments[11].Length > 0 ? segments[11] : null; PlacerContactPerson = segments.Length > 12 && segments[12].Length > 0 ? segments[12].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null; PlacerContactPhoneNumber = segments.Length > 13 && segments[13].Length > 0 ? TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(segments[13], false, seps) : null; PlacerContactAddress = segments.Length > 14 && segments[14].Length > 0 ? segments[14].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedAddress>(x, false, seps)) : null; PlacerContactLocation = segments.Length > 15 && segments[15].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[15], false, seps) : null; FillerContactPerson = segments.Length > 16 && segments[16].Length > 0 ? segments[16].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null; FillerContactPhoneNumber = segments.Length > 17 && segments[17].Length > 0 ? TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(segments[17], false, seps) : null; FillerContactAddress = segments.Length > 18 && segments[18].Length > 0 ? segments[18].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedAddress>(x, false, seps)) : null; FillerContactLocation = segments.Length > 19 && segments[19].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[19], false, seps) : null; EnteredByPerson = segments.Length > 20 && segments[20].Length > 0 ? segments[20].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null; EnteredByPhoneNumber = segments.Length > 21 && segments[21].Length > 0 ? segments[21].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(x, false, seps)) : null; EnteredByLocation = segments.Length > 22 && segments[22].Length > 0 ? TypeSerializer.Deserialize <PersonLocation>(segments[22], false, seps) : null; ParentPlacerAppointmentId = segments.Length > 23 && segments[23].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[23], false, seps) : null; ParentFillerAppointmentId = segments.Length > 24 && segments[24].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[24], false, seps) : null; FillerStatusCode = segments.Length > 25 && segments[25].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[25], false, seps) : null; PlacerOrderNumber = segments.Length > 26 && segments[26].Length > 0 ? segments[26].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <EntityIdentifier>(x, false, seps)) : null; FillerOrderNumber = segments.Length > 27 && segments[27].Length > 0 ? segments[27].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <EntityIdentifier>(x, false, seps)) : null; AlternatePlacerOrderGroupNumber = segments.Length > 28 && segments[28].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifierPair>(segments[28], false, seps) : null; }
public void ToDelimitedString_WithAllProperties_ReturnsCorrectlySequencedFields() { IType hl7Type = new EntityIdentifierPair { PlacerAssignedIdentifier = new EntityIdentifier { EntityId = "1" }, FillerAssignedIdentifier = new EntityIdentifier { EntityId = "2" } }; string expected = "1^2"; string actual = hl7Type.ToDelimitedString(); Assert.Equal(expected, actual); }
public void FromDelimitedString_WithAllProperties_ReturnsCorrectlyInitializedFields() { IType expected = new EntityIdentifierPair { PlacerAssignedIdentifier = new EntityIdentifier { IsSubcomponent = true, EntityId = "1" }, FillerAssignedIdentifier = new EntityIdentifier { IsSubcomponent = true, EntityId = "2" } }; IType actual = new EntityIdentifierPair(); actual.FromDelimitedString("1^2"); expected.Should().BeEquivalentTo(actual); }
/// <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)); } } SetIdObr = segments.Length > 1 && segments[1].Length > 0 ? segments[1].ToNullableUInt() : 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; UniversalServiceIdentifier = segments.Length > 4 && segments[4].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[4], false, seps) : null; Priority = segments.Length > 5 && segments[5].Length > 0 ? segments[5] : null; RequestedDateTime = segments.Length > 6 && segments[6].Length > 0 ? segments[6].ToNullableDateTime() : null; ObservationDateTime = segments.Length > 7 && segments[7].Length > 0 ? segments[7].ToNullableDateTime() : null; ObservationEndDateTime = segments.Length > 8 && segments[8].Length > 0 ? segments[8].ToNullableDateTime() : null; CollectionVolume = segments.Length > 9 && segments[9].Length > 0 ? TypeSerializer.Deserialize <CompositeQuantityWithUnits>(segments[9], false, seps) : null; CollectorIdentifier = segments.Length > 10 && segments[10].Length > 0 ? segments[10].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null; SpecimenActionCode = segments.Length > 11 && segments[11].Length > 0 ? segments[11] : null; DangerCode = segments.Length > 12 && segments[12].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[12], false, seps) : null; RelevantClinicalInformation = segments.Length > 13 && segments[13].Length > 0 ? segments[13].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; SpecimenReceivedDateTime = segments.Length > 14 && segments[14].Length > 0 ? segments[14].ToNullableDateTime() : null; SpecimenSource = segments.Length > 15 && segments[15].Length > 0 ? segments[15] : null; OrderingProvider = segments.Length > 16 && segments[16].Length > 0 ? segments[16].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null; OrderCallbackPhoneNumber = segments.Length > 17 && segments[17].Length > 0 ? segments[17].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedTelecommunicationNumber>(x, false, seps)) : null; PlacerField1 = segments.Length > 18 && segments[18].Length > 0 ? segments[18] : null; PlacerField2 = segments.Length > 19 && segments[19].Length > 0 ? segments[19] : null; FillerField1 = segments.Length > 20 && segments[20].Length > 0 ? segments[20] : null; FillerField2 = segments.Length > 21 && segments[21].Length > 0 ? segments[21] : null; ResultsRptStatusChngDateTime = segments.Length > 22 && segments[22].Length > 0 ? segments[22].ToNullableDateTime() : null; ChargeToPractice = segments.Length > 23 && segments[23].Length > 0 ? TypeSerializer.Deserialize <MoneyAndChargeCode>(segments[23], false, seps) : null; DiagnosticServSectId = segments.Length > 24 && segments[24].Length > 0 ? segments[24] : null; ResultStatus = segments.Length > 25 && segments[25].Length > 0 ? segments[25] : null; ParentResult = segments.Length > 26 && segments[26].Length > 0 ? TypeSerializer.Deserialize <ParentResultLink>(segments[26], false, seps) : null; QuantityTiming = segments.Length > 27 && segments[27].Length > 0 ? segments[27].Split(seps.FieldRepeatSeparator, StringSplitOptions.None) : null; ResultCopiesTo = segments.Length > 28 && segments[28].Length > 0 ? segments[28].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdNumberAndNameForPersons>(x, false, seps)) : null; ParentResultsObservationIdentifier = segments.Length > 29 && segments[29].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifierPair>(segments[29], false, seps) : null; TransportationMode = segments.Length > 30 && segments[30].Length > 0 ? segments[30] : null; ReasonForStudy = segments.Length > 31 && segments[31].Length > 0 ? segments[31].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; PrincipalResultInterpreter = segments.Length > 32 && segments[32].Length > 0 ? TypeSerializer.Deserialize <NameWithDateAndLocation>(segments[32], false, seps) : null; AssistantResultInterpreter = segments.Length > 33 && segments[33].Length > 0 ? segments[33].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <NameWithDateAndLocation>(x, false, seps)) : null; Technician = segments.Length > 34 && segments[34].Length > 0 ? segments[34].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <NameWithDateAndLocation>(x, false, seps)) : null; Transcriptionist = segments.Length > 35 && segments[35].Length > 0 ? segments[35].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <NameWithDateAndLocation>(x, false, seps)) : null; ScheduledDateTime = segments.Length > 36 && segments[36].Length > 0 ? segments[36].ToNullableDateTime() : null; NumberOfSampleContainers = segments.Length > 37 && segments[37].Length > 0 ? segments[37].ToNullableDecimal() : null; TransportLogisticsOfCollectedSample = segments.Length > 38 && segments[38].Length > 0 ? segments[38].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; CollectorsComment = segments.Length > 39 && segments[39].Length > 0 ? segments[39].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; TransportArrangementResponsibility = segments.Length > 40 && segments[40].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[40], false, seps) : null; TransportArranged = segments.Length > 41 && segments[41].Length > 0 ? segments[41] : null; EscortRequired = segments.Length > 42 && segments[42].Length > 0 ? segments[42] : null; PlannedPatientTransportComment = segments.Length > 43 && segments[43].Length > 0 ? segments[43].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; ProcedureCode = segments.Length > 44 && segments[44].Length > 0 ? TypeSerializer.Deserialize <CodedWithNoExceptions>(segments[44], false, seps) : null; ProcedureCodeModifier = segments.Length > 45 && segments[45].Length > 0 ? segments[45].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithNoExceptions>(x, false, seps)) : null; PlacerSupplementalServiceInformation = segments.Length > 46 && segments[46].Length > 0 ? segments[46].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; FillerSupplementalServiceInformation = segments.Length > 47 && segments[47].Length > 0 ? segments[47].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <CodedWithExceptions>(x, false, seps)) : null; MedicallyNecessaryDuplicateProcedureReason = segments.Length > 48 && segments[48].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[48], false, seps) : null; ResultHandling = segments.Length > 49 && segments[49].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[49], false, seps) : null; ParentUniversalServiceIdentifier = segments.Length > 50 && segments[50].Length > 0 ? TypeSerializer.Deserialize <CodedWithExceptions>(segments[50], false, seps) : null; ObservationGroupId = segments.Length > 51 && segments[51].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[51], false, seps) : null; ParentObservationGroupId = segments.Length > 52 && segments[52].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifier>(segments[52], false, seps) : null; AlternatePlacerOrderNumber = segments.Length > 53 && segments[53].Length > 0 ? segments[53].Split(seps.FieldRepeatSeparator, StringSplitOptions.None).Select(x => TypeSerializer.Deserialize <ExtendedCompositeIdWithCheckDigit>(x, false, seps)) : null; ParentOrder = segments.Length > 53 && segments[53].Length > 0 ? TypeSerializer.Deserialize <EntityIdentifierPair>(segments[53], false, seps) : null; }