Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/HL7/Message.php
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,15 @@ public function reindexSegments(): void
}
}

/**
* After removing segments from the middle of the message, $msg->getSemgnets() returns an array with gaps in the
* keys. This method can be used to re-key the segments array
*/
public function rekeySegmentsInArray(): void
{
$this->segments = array_values($this->segments);
}

/**
* Return a string representation of this message.
*
Expand Down
13 changes: 13 additions & 0 deletions tests/MessageTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use Exception;
use InvalidArgumentException;
use DMS\PHPUnitExtensions\ArraySubset\Assert;
use PHPUnit\Framework\Attributes\Test;

class MessageTest extends TestCase
{
Expand Down Expand Up @@ -679,4 +680,16 @@ public function reindex_message_segments(): void
self::assertSame(2, $OBXs[1]->getId());
self::assertSame("CWE", $OBXs[1]->getValueType());
}

#[Test] public function it_can_reset_segment_array_keys_after_segments_are_removed(): void
{
$msgObj = new Message("MSH|^~\&|||||||ORU^01||P|2.3.1|\nABC|1|||\nABC|2|||\nABC|3|||");
$segments = $msgObj->getSegmentsByName('ABC');
$msgObj->removeSegment($segments[1]);
self::assertSame([0, 1, 3], array_keys($msgObj->getSegments()));

$msgObj->rekeySegmentsInArray();

self::assertSame([0, 1, 2], array_keys($msgObj->getSegments()));
}
}