Example #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));
                }
            }

            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);
        }
Example #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));
                }
            }

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