diff --git a/src/NHapi.Base/Model/AbstractSegment.cs b/src/NHapi.Base/Model/AbstractSegment.cs
index c06764d68..6a6bb23d6 100644
--- a/src/NHapi.Base/Model/AbstractSegment.cs
+++ b/src/NHapi.Base/Model/AbstractSegment.cs
@@ -167,13 +167,6 @@ public virtual IType GetField(int number, int rep)
ErrorCode.APPLICATION_INTERNAL_ERROR);
}
- if (rep > items[number - 1].MaxRepetitions)
- {
- throw new HL7Exception(
- $"Can't get repetition {rep} from field {number} - maximum repetitions is only {items[number - 1].MaxRepetitions} reps.",
- ErrorCode.APPLICATION_INTERNAL_ERROR);
- }
-
// add a rep if necessary ...
if (rep == currentReps)
{
diff --git a/tests/NHapi.NUnit/Parser/PipeParserV25Tests.cs b/tests/NHapi.NUnit/Parser/PipeParserV25Tests.cs
index 2d2abd15f..143920de8 100644
--- a/tests/NHapi.NUnit/Parser/PipeParserV25Tests.cs
+++ b/tests/NHapi.NUnit/Parser/PipeParserV25Tests.cs
@@ -2,9 +2,11 @@ namespace NHapi.NUnit.Parser
{
using System;
using System.Collections.Generic;
+ using System.Linq;
using global::NUnit.Framework;
+ using NHapi.Base.Model;
using NHapi.Base.Parser;
using NHapi.Model.V25.Datatype;
using NHapi.Model.V25.Message;
@@ -91,6 +93,34 @@ public void TestObx5DataTypeIsSetFromObx2_AndAllDataTypesAreConstructable(Type e
Assert.IsAssignableFrom(expectedObservationValueType, actualObservationValueType);
}
+ ///
+ /// https://github.com/nHapiNET/nHapi/issues/276.
+ ///
+ [Test]
+ public void TestParsingQPD3_WhenQPD3HasMultipleRepetitions_NoExceptionIsThrown()
+ {
+ var message =
+ "MSH|^~\\&|PatientManager|IHE|ICS|FORTH|20220215130712||QBP^Q22^QBP_Q21|5b2e49550924456db9e0844e35348144|P|2.5||||||UNICODE UTF-8\r"
+ + "QPD|IHE PDQ Query|20220215130712|@PID.5.2^fname~@PID.7.1^20220202~@PID.8^M|||||^^^IHEFACILITY&1.3.6.1.4.1.21367.3000.1.6&ISO~^^^IHEBLUE&1.3.6.1.4.1.21367.13.20.3000&ISO\r"
+ + "RCP|I";
+
+ var parser = new PipeParser();
+ var parsed = (QBP_Q21)parser.Parse(message);
+
+ var qpd3Fields = parsed.QPD.GetField(3).Cast().ToList();
+
+ Assert.AreEqual(3, qpd3Fields.Count);
+
+ Assert.AreEqual("@PID.5.2", ((GenericPrimitive)((Varies)((GenericComposite)qpd3Fields[0].Data)[0]).Data).Value);
+ Assert.AreEqual("fname", ((GenericPrimitive)((Varies)((GenericComposite)qpd3Fields[0].Data)[1]).Data).Value);
+
+ Assert.AreEqual("@PID.7.1", ((GenericPrimitive)((Varies)((GenericComposite)qpd3Fields[1].Data)[0]).Data).Value);
+ Assert.AreEqual("20220202", ((GenericPrimitive)((Varies)((GenericComposite)qpd3Fields[1].Data)[1]).Data).Value);
+
+ Assert.AreEqual("@PID.8", ((GenericPrimitive)((Varies)((GenericComposite)qpd3Fields[2].Data)[0]).Data).Value);
+ Assert.AreEqual("M", ((GenericPrimitive)((Varies)((GenericComposite)qpd3Fields[2].Data)[1]).Data).Value);
+ }
+
[Test]
public void TestObx5DataTypeIsSetFromObx2_WhenObx2IsEmptyAndDefaultIsSet_DefaultTypeIsUsed()
{