@@ -11,12 +11,20 @@ export class HL7MessageNode {
1111 /**
1212 * Searches for a segment of a given type
1313 */
14- getSegment ( segmentType : string , index : number = 0 ) : HL7Segment | undefined {
14+ getSegment (
15+ segmentType : string ,
16+ indexOrAfter ?: number | HL7Segment ,
17+ ) : HL7Segment | undefined {
1518 let k = 0 ;
16- for ( const seg of this . items ) {
19+ for ( let i = 0 ; i < this . items . length ; i ++ ) {
20+ const seg = this . items [ i ] ;
1721 if ( seg instanceof HL7Segment && seg . segmentType === segmentType ) {
18- if ( ! index || index === k ) return seg ;
19- k ++ ;
22+ if ( ! indexOrAfter ) return seg ;
23+ if ( typeof indexOrAfter === 'number' ) {
24+ if ( indexOrAfter === k ++ ) return seg ;
25+ } else {
26+ if ( indexOrAfter === seg ) indexOrAfter = undefined ;
27+ }
2028 }
2129 }
2230 }
@@ -26,26 +34,39 @@ export class HL7MessageNode {
2634 */
2735 getSegmentFromLast (
2836 segmentType : string ,
29- index : number = 0 ,
37+ indexOrAfter ? : number | HL7Segment ,
3038 ) : HL7Segment | undefined {
31- for ( let k = this . items . length - 1 ; k >= 0 ; k -- ) {
32- const seg = this . items [ k ] ;
39+ let k = 0 ;
40+ for ( let i = this . items . length - 1 ; i >= 0 ; i -- ) {
41+ const seg = this . items [ i ] ;
3342 if ( seg instanceof HL7Segment && seg . segmentType === segmentType ) {
34- if ( ! index || index === k ) return seg ;
35- k ++ ;
43+ if ( ! indexOrAfter ) return seg ;
44+ if ( typeof indexOrAfter === 'number' ) {
45+ if ( indexOrAfter === k ++ ) return seg ;
46+ } else {
47+ if ( indexOrAfter === seg ) indexOrAfter = undefined ;
48+ }
3649 }
3750 }
3851 }
3952
4053 /**
4154 * Searches for a node of a given name
4255 */
43- getNode ( nodeName : string , index : number = 0 ) : HL7MessageNode | undefined {
56+ getNode (
57+ nodeName : string ,
58+ indexOrAfter ?: number | HL7MessageNode ,
59+ ) : HL7MessageNode | undefined {
4460 let k = 0 ;
45- for ( const seg of this . items ) {
46- if ( seg instanceof HL7MessageNode && seg . name === nodeName ) {
47- if ( ! index || index === k ) return seg ;
48- k ++ ;
61+ for ( let i = 0 ; i < this . items . length ; i ++ ) {
62+ const node = this . items [ i ] ;
63+ if ( node instanceof HL7MessageNode && node . name === nodeName ) {
64+ if ( ! indexOrAfter ) return node ;
65+ if ( typeof indexOrAfter === 'number' ) {
66+ if ( indexOrAfter === k ++ ) return node ;
67+ } else {
68+ if ( indexOrAfter === node ) indexOrAfter = undefined ;
69+ }
4970 }
5071 }
5172 }
@@ -55,13 +76,18 @@ export class HL7MessageNode {
5576 */
5677 getNodeFromLast (
5778 nodeName : string ,
58- index : number = 0 ,
79+ indexOrAfter ? : number | HL7MessageNode ,
5980 ) : HL7MessageNode | undefined {
60- for ( let k = this . items . length - 1 ; k >= 0 ; k -- ) {
61- const seg = this . items [ k ] ;
62- if ( seg instanceof HL7MessageNode && seg . name === nodeName ) {
63- if ( ! index || index === k ) return seg ;
64- k ++ ;
81+ let k = 0 ;
82+ for ( let i = this . items . length - 1 ; i >= 0 ; i -- ) {
83+ const node = this . items [ i ] ;
84+ if ( node instanceof HL7MessageNode && node . name === nodeName ) {
85+ if ( ! indexOrAfter ) return node ;
86+ if ( typeof indexOrAfter === 'number' ) {
87+ if ( indexOrAfter === k ++ ) return node ;
88+ } else {
89+ if ( indexOrAfter === node ) indexOrAfter = undefined ;
90+ }
6591 }
6692 }
6793 }
0 commit comments