From 19b5e6c65908da7bff7ba5b31042cf69190963b1 Mon Sep 17 00:00:00 2001 From: Phil Corrick Date: Thu, 30 Apr 2026 10:25:52 +0800 Subject: [PATCH 1/4] Fix HL7 version field extraction to handle array values by imploding components --- src/HL7/Message.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/HL7/Message.php b/src/HL7/Message.php index ee00d9f..3a62224 100644 --- a/src/HL7/Message.php +++ b/src/HL7/Message.php @@ -128,7 +128,8 @@ protected function resetCtrl(Segment $segment): bool } if ($segment->getField(12)) { - $this->hl7Version = $segment->getField(12); + $field = $segment->getField(12); + $this->hl7Version = is_array($field) ? implode($this->componentSeparator, $field) : (string) $field; } return true; From 794e5207ba932cd655595eb42e61a3f2c4f5f781 Mon Sep 17 00:00:00 2001 From: Phil Corrick Date: Thu, 30 Apr 2026 10:46:29 +0800 Subject: [PATCH 2/4] Fix HL7 version field extraction to handle nested arrays with subcomponent separator --- src/HL7/Message.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/HL7/Message.php b/src/HL7/Message.php index 3a62224..53b7459 100644 --- a/src/HL7/Message.php +++ b/src/HL7/Message.php @@ -129,7 +129,14 @@ protected function resetCtrl(Segment $segment): bool if ($segment->getField(12)) { $field = $segment->getField(12); - $this->hl7Version = is_array($field) ? implode($this->componentSeparator, $field) : (string) $field; + if (is_array($field)) { + $this->hl7Version = implode($this->componentSeparator, array_map( + fn($v) => is_array($v) ? implode($this->subcomponentSeparator, $v) : (string) $v, + $field + )); + } else { + $this->hl7Version = (string) $field; + } } return true; From 315604dc75cecab54c55ade29f895073bb3b74d7 Mon Sep 17 00:00:00 2001 From: Phil Corrick Date: Fri, 1 May 2026 10:17:11 +0800 Subject: [PATCH 3/4] add test for MSH-12 field --- tests/MessageTest.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/MessageTest.php b/tests/MessageTest.php index 9f49c67..2dbf6f8 100644 --- a/tests/MessageTest.php +++ b/tests/MessageTest.php @@ -664,4 +664,12 @@ class MessageTest extends TestCase self::assertSame([0, 1, 2], array_keys($msgObj->getSegments())); } + + #[Test] public function version_field_with_subcomponents_in_MSH_12_is_parsed_to_correct_string(): void + { + $msg = new Message("MSH|^~\\&||||||||||2.7^NZL&1.0\r"); + + $reflection = new \ReflectionProperty(Message::class, 'hl7Version'); + self::assertSame('2.7^NZL&1.0', $reflection->getValue($msg)); + } } From 9be6b80e51c6fb8295b54fb587d44943ff30c4cf Mon Sep 17 00:00:00 2001 From: Phil Corrick Date: Sat, 2 May 2026 20:43:01 +0800 Subject: [PATCH 4/4] update MSH-12 messge test --- tests/MessageTest.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/MessageTest.php b/tests/MessageTest.php index 2dbf6f8..010d6ec 100644 --- a/tests/MessageTest.php +++ b/tests/MessageTest.php @@ -668,8 +668,6 @@ class MessageTest extends TestCase #[Test] public function version_field_with_subcomponents_in_MSH_12_is_parsed_to_correct_string(): void { $msg = new Message("MSH|^~\\&||||||||||2.7^NZL&1.0\r"); - - $reflection = new \ReflectionProperty(Message::class, 'hl7Version'); - self::assertSame('2.7^NZL&1.0', $reflection->getValue($msg)); + self::assertSame("MSH|^~\&||||||||||2.7^NZL&1.0|\n", $msg->toString(true)); } }