hl7v2 1.4.2 → 1.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,52 +11,84 @@ class HL7MessageNode {
11
11
  /**
12
12
  * Searches for a segment of a given type
13
13
  */
14
- getSegment(segmentType, index = 0) {
14
+ getSegment(segmentType, indexOrAfter) {
15
15
  let k = 0;
16
- for (const seg of this.items) {
16
+ for (let i = 0; i < this.items.length; i++) {
17
+ const seg = this.items[i];
17
18
  if (seg instanceof hl7_segment_js_1.HL7Segment && seg.segmentType === segmentType) {
18
- if (!index || index === k)
19
+ if (!indexOrAfter)
19
20
  return seg;
20
- k++;
21
+ if (typeof indexOrAfter === 'number') {
22
+ if (indexOrAfter === k++)
23
+ return seg;
24
+ }
25
+ else {
26
+ if (indexOrAfter === seg)
27
+ indexOrAfter = undefined;
28
+ }
21
29
  }
22
30
  }
23
31
  }
24
32
  /**
25
33
  * Searches for a segment of a given type in reverse order
26
34
  */
27
- getSegmentFromLast(segmentType, index = 0) {
28
- for (let k = this.items.length - 1; k >= 0; k--) {
29
- const seg = this.items[k];
35
+ getSegmentFromLast(segmentType, indexOrAfter) {
36
+ let k = 0;
37
+ for (let i = this.items.length - 1; i >= 0; i--) {
38
+ const seg = this.items[i];
30
39
  if (seg instanceof hl7_segment_js_1.HL7Segment && seg.segmentType === segmentType) {
31
- if (!index || index === k)
40
+ if (!indexOrAfter)
32
41
  return seg;
33
- k++;
42
+ if (typeof indexOrAfter === 'number') {
43
+ if (indexOrAfter === k++)
44
+ return seg;
45
+ }
46
+ else {
47
+ if (indexOrAfter === seg)
48
+ indexOrAfter = undefined;
49
+ }
34
50
  }
35
51
  }
36
52
  }
37
53
  /**
38
54
  * Searches for a node of a given name
39
55
  */
40
- getNode(nodeName, index = 0) {
56
+ getNode(nodeName, indexOrAfter) {
41
57
  let k = 0;
42
- for (const seg of this.items) {
43
- if (seg instanceof HL7MessageNode && seg.name === nodeName) {
44
- if (!index || index === k)
45
- return seg;
46
- k++;
58
+ for (let i = 0; i < this.items.length; i++) {
59
+ const node = this.items[i];
60
+ if (node instanceof HL7MessageNode && node.name === nodeName) {
61
+ if (!indexOrAfter)
62
+ return node;
63
+ if (typeof indexOrAfter === 'number') {
64
+ if (indexOrAfter === k++)
65
+ return node;
66
+ }
67
+ else {
68
+ if (indexOrAfter === node)
69
+ indexOrAfter = undefined;
70
+ }
47
71
  }
48
72
  }
49
73
  }
50
74
  /**
51
75
  * Searches for a node of a given name in reverse order
52
76
  */
53
- getNodeFromLast(nodeName, index = 0) {
54
- for (let k = this.items.length - 1; k >= 0; k--) {
55
- const seg = this.items[k];
56
- if (seg instanceof HL7MessageNode && seg.name === nodeName) {
57
- if (!index || index === k)
58
- return seg;
59
- k++;
77
+ getNodeFromLast(nodeName, indexOrAfter) {
78
+ let k = 0;
79
+ for (let i = this.items.length - 1; i >= 0; i--) {
80
+ const node = this.items[i];
81
+ if (node instanceof HL7MessageNode && node.name === nodeName) {
82
+ if (!indexOrAfter)
83
+ return node;
84
+ if (typeof indexOrAfter === 'number') {
85
+ if (indexOrAfter === k++)
86
+ return node;
87
+ }
88
+ else {
89
+ if (indexOrAfter === node)
90
+ indexOrAfter = undefined;
91
+ }
60
92
  }
61
93
  }
62
94
  }
@@ -63,26 +63,43 @@ class HL7Message {
63
63
  /**
64
64
  * Searches for a segment of a given type
65
65
  */
66
- getSegment(segmentType, index = 0) {
66
+ getSegment(segmentType, indexOrAfter) {
67
67
  let k = 0;
68
- for (const seg of this.segments) {
69
- if (seg.segmentType === segmentType) {
70
- if (!index || index === k)
68
+ for (let i = 0; i < this.segments.length; i++) {
69
+ const seg = this.segments[i];
70
+ if (seg instanceof hl7_segment_js_1.HL7Segment && seg.segmentType === segmentType) {
71
+ if (!indexOrAfter)
71
72
  return seg;
72
- k++;
73
+ if (typeof indexOrAfter === 'number') {
74
+ if (indexOrAfter === k++)
75
+ return seg;
76
+ }
77
+ else {
78
+ if (indexOrAfter === seg)
79
+ indexOrAfter = undefined;
80
+ }
73
81
  }
74
82
  }
75
83
  }
76
84
  /**
77
85
  * Searches for a segment of a given type in reverse order
78
86
  */
79
- getSegmentFromLast(segmentType, index = 0) {
80
- for (let k = this.segments.length - 1; k >= 0; k--) {
81
- const seg = this.segments[k];
82
- if (seg.segmentType === segmentType) {
83
- if (!index || index === k)
87
+ getSegmentFromLast(segmentType, indexOrAfter) {
88
+ let k = 0;
89
+ for (let i = this.segments.length - 1; i >= 0; i--) {
90
+ const seg = this.segments[i];
91
+ if (seg instanceof hl7_segment_js_1.HL7Segment && seg.segmentType === segmentType) {
92
+ if (!indexOrAfter)
84
93
  return seg;
85
- k++;
94
+ if (typeof indexOrAfter === 'number') {
95
+ if (indexOrAfter === k++)
96
+ return seg;
97
+ i++;
98
+ }
99
+ else {
100
+ if (indexOrAfter === seg)
101
+ indexOrAfter = undefined;
102
+ }
86
103
  }
87
104
  }
88
105
  }
@@ -43,15 +43,6 @@ class HL7Segment {
43
43
  def.type = def.type || 'ST';
44
44
  return (this._fields[position - 1] = new hl7_field_js_1.HL7Field(this, position, def));
45
45
  }
46
- next(segmentType) {
47
- let index = this.index + 1;
48
- let segment = this.message.segments[index];
49
- while (segment) {
50
- if (!segmentType || segment.segmentType === segmentType)
51
- return segment;
52
- segment = this.message.segments[++index];
53
- }
54
- }
55
46
  toHL7String(options) {
56
47
  const { fieldSeparator } = this.message;
57
48
  let out = this.segmentType + fieldSeparator;
package/cjs/index.js CHANGED
@@ -6,6 +6,7 @@ tslib_1.__exportStar(require("./hl7-component.js"), exports);
6
6
  tslib_1.__exportStar(require("./hl7-error.js"), exports);
7
7
  tslib_1.__exportStar(require("./hl7-field.js"), exports);
8
8
  tslib_1.__exportStar(require("./hl7-message.js"), exports);
9
+ tslib_1.__exportStar(require("./hl7-message-node.js"), exports);
9
10
  tslib_1.__exportStar(require("./hl7-repetition.js"), exports);
10
11
  tslib_1.__exportStar(require("./hl7-segment.js"), exports);
11
12
  tslib_1.__exportStar(require("./hl7-sub-component.js"), exports);
@@ -8,52 +8,84 @@ export class HL7MessageNode {
8
8
  /**
9
9
  * Searches for a segment of a given type
10
10
  */
11
- getSegment(segmentType, index = 0) {
11
+ getSegment(segmentType, indexOrAfter) {
12
12
  let k = 0;
13
- for (const seg of this.items) {
13
+ for (let i = 0; i < this.items.length; i++) {
14
+ const seg = this.items[i];
14
15
  if (seg instanceof HL7Segment && seg.segmentType === segmentType) {
15
- if (!index || index === k)
16
+ if (!indexOrAfter)
16
17
  return seg;
17
- k++;
18
+ if (typeof indexOrAfter === 'number') {
19
+ if (indexOrAfter === k++)
20
+ return seg;
21
+ }
22
+ else {
23
+ if (indexOrAfter === seg)
24
+ indexOrAfter = undefined;
25
+ }
18
26
  }
19
27
  }
20
28
  }
21
29
  /**
22
30
  * Searches for a segment of a given type in reverse order
23
31
  */
24
- getSegmentFromLast(segmentType, index = 0) {
25
- for (let k = this.items.length - 1; k >= 0; k--) {
26
- const seg = this.items[k];
32
+ getSegmentFromLast(segmentType, indexOrAfter) {
33
+ let k = 0;
34
+ for (let i = this.items.length - 1; i >= 0; i--) {
35
+ const seg = this.items[i];
27
36
  if (seg instanceof HL7Segment && seg.segmentType === segmentType) {
28
- if (!index || index === k)
37
+ if (!indexOrAfter)
29
38
  return seg;
30
- k++;
39
+ if (typeof indexOrAfter === 'number') {
40
+ if (indexOrAfter === k++)
41
+ return seg;
42
+ }
43
+ else {
44
+ if (indexOrAfter === seg)
45
+ indexOrAfter = undefined;
46
+ }
31
47
  }
32
48
  }
33
49
  }
34
50
  /**
35
51
  * Searches for a node of a given name
36
52
  */
37
- getNode(nodeName, index = 0) {
53
+ getNode(nodeName, indexOrAfter) {
38
54
  let k = 0;
39
- for (const seg of this.items) {
40
- if (seg instanceof HL7MessageNode && seg.name === nodeName) {
41
- if (!index || index === k)
42
- return seg;
43
- k++;
55
+ for (let i = 0; i < this.items.length; i++) {
56
+ const node = this.items[i];
57
+ if (node instanceof HL7MessageNode && node.name === nodeName) {
58
+ if (!indexOrAfter)
59
+ return node;
60
+ if (typeof indexOrAfter === 'number') {
61
+ if (indexOrAfter === k++)
62
+ return node;
63
+ }
64
+ else {
65
+ if (indexOrAfter === node)
66
+ indexOrAfter = undefined;
67
+ }
44
68
  }
45
69
  }
46
70
  }
47
71
  /**
48
72
  * Searches for a node of a given name in reverse order
49
73
  */
50
- getNodeFromLast(nodeName, index = 0) {
51
- for (let k = this.items.length - 1; k >= 0; k--) {
52
- const seg = this.items[k];
53
- if (seg instanceof HL7MessageNode && seg.name === nodeName) {
54
- if (!index || index === k)
55
- return seg;
56
- k++;
74
+ getNodeFromLast(nodeName, indexOrAfter) {
75
+ let k = 0;
76
+ for (let i = this.items.length - 1; i >= 0; i--) {
77
+ const node = this.items[i];
78
+ if (node instanceof HL7MessageNode && node.name === nodeName) {
79
+ if (!indexOrAfter)
80
+ return node;
81
+ if (typeof indexOrAfter === 'number') {
82
+ if (indexOrAfter === k++)
83
+ return node;
84
+ }
85
+ else {
86
+ if (indexOrAfter === node)
87
+ indexOrAfter = undefined;
88
+ }
57
89
  }
58
90
  }
59
91
  }
@@ -59,26 +59,43 @@ export class HL7Message {
59
59
  /**
60
60
  * Searches for a segment of a given type
61
61
  */
62
- getSegment(segmentType, index = 0) {
62
+ getSegment(segmentType, indexOrAfter) {
63
63
  let k = 0;
64
- for (const seg of this.segments) {
65
- if (seg.segmentType === segmentType) {
66
- if (!index || index === k)
64
+ for (let i = 0; i < this.segments.length; i++) {
65
+ const seg = this.segments[i];
66
+ if (seg instanceof HL7Segment && seg.segmentType === segmentType) {
67
+ if (!indexOrAfter)
67
68
  return seg;
68
- k++;
69
+ if (typeof indexOrAfter === 'number') {
70
+ if (indexOrAfter === k++)
71
+ return seg;
72
+ }
73
+ else {
74
+ if (indexOrAfter === seg)
75
+ indexOrAfter = undefined;
76
+ }
69
77
  }
70
78
  }
71
79
  }
72
80
  /**
73
81
  * Searches for a segment of a given type in reverse order
74
82
  */
75
- getSegmentFromLast(segmentType, index = 0) {
76
- for (let k = this.segments.length - 1; k >= 0; k--) {
77
- const seg = this.segments[k];
78
- if (seg.segmentType === segmentType) {
79
- if (!index || index === k)
83
+ getSegmentFromLast(segmentType, indexOrAfter) {
84
+ let k = 0;
85
+ for (let i = this.segments.length - 1; i >= 0; i--) {
86
+ const seg = this.segments[i];
87
+ if (seg instanceof HL7Segment && seg.segmentType === segmentType) {
88
+ if (!indexOrAfter)
80
89
  return seg;
81
- k++;
90
+ if (typeof indexOrAfter === 'number') {
91
+ if (indexOrAfter === k++)
92
+ return seg;
93
+ i++;
94
+ }
95
+ else {
96
+ if (indexOrAfter === seg)
97
+ indexOrAfter = undefined;
98
+ }
82
99
  }
83
100
  }
84
101
  }
@@ -40,15 +40,6 @@ export class HL7Segment {
40
40
  def.type = def.type || 'ST';
41
41
  return (this._fields[position - 1] = new HL7Field(this, position, def));
42
42
  }
43
- next(segmentType) {
44
- let index = this.index + 1;
45
- let segment = this.message.segments[index];
46
- while (segment) {
47
- if (!segmentType || segment.segmentType === segmentType)
48
- return segment;
49
- segment = this.message.segments[++index];
50
- }
51
- }
52
43
  toHL7String(options) {
53
44
  const { fieldSeparator } = this.message;
54
45
  let out = this.segmentType + fieldSeparator;
package/esm/index.js CHANGED
@@ -3,6 +3,7 @@ export * from './hl7-component.js';
3
3
  export * from './hl7-error.js';
4
4
  export * from './hl7-field.js';
5
5
  export * from './hl7-message.js';
6
+ export * from './hl7-message-node.js';
6
7
  export * from './hl7-repetition.js';
7
8
  export * from './hl7-segment.js';
8
9
  export * from './hl7-sub-component.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hl7v2",
3
3
  "description": "HL7 v2 parser, serializer, validator for NodeJS",
4
- "version": "1.4.2",
4
+ "version": "1.4.4",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
7
7
  "dependencies": {
@@ -15,7 +15,7 @@
15
15
  "uid": "^2.0.2"
16
16
  },
17
17
  "peerDependencies": {
18
- "hl7v2-dictionary": "^1.4.2"
18
+ "hl7v2-dictionary": "^1.4.4"
19
19
  },
20
20
  "type": "module",
21
21
  "exports": {
@@ -6,17 +6,17 @@ export declare class HL7MessageNode {
6
6
  /**
7
7
  * Searches for a segment of a given type
8
8
  */
9
- getSegment(segmentType: string, index?: number): HL7Segment | undefined;
9
+ getSegment(segmentType: string, indexOrAfter?: number | HL7Segment): HL7Segment | undefined;
10
10
  /**
11
11
  * Searches for a segment of a given type in reverse order
12
12
  */
13
- getSegmentFromLast(segmentType: string, index?: number): HL7Segment | undefined;
13
+ getSegmentFromLast(segmentType: string, indexOrAfter?: number | HL7Segment): HL7Segment | undefined;
14
14
  /**
15
15
  * Searches for a node of a given name
16
16
  */
17
- getNode(nodeName: string, index?: number): HL7MessageNode | undefined;
17
+ getNode(nodeName: string, indexOrAfter?: number | HL7MessageNode): HL7MessageNode | undefined;
18
18
  /**
19
19
  * Searches for a node of a given name in reverse order
20
20
  */
21
- getNodeFromLast(nodeName: string, index?: number): HL7MessageNode | undefined;
21
+ getNodeFromLast(nodeName: string, indexOrAfter?: number | HL7MessageNode): HL7MessageNode | undefined;
22
22
  }
@@ -23,11 +23,11 @@ export declare class HL7Message {
23
23
  /**
24
24
  * Searches for a segment of a given type
25
25
  */
26
- getSegment(segmentType: string, index?: number): HL7Segment | undefined;
26
+ getSegment(segmentType: string, indexOrAfter?: number | HL7Segment): HL7Segment | undefined;
27
27
  /**
28
28
  * Searches for a segment of a given type in reverse order
29
29
  */
30
- getSegmentFromLast(segmentType: string, index?: number): HL7Segment | undefined;
30
+ getSegmentFromLast(segmentType: string, indexOrAfter?: number | HL7Segment): HL7Segment | undefined;
31
31
  toHL7String(options?: HL7MessageSerializeOptions): string;
32
32
  parse(input: string | Buffer, options?: HL7MessageParseOptions): void;
33
33
  buildStructureTree(): HL7MessageNode;
@@ -13,7 +13,6 @@ export declare class HL7Segment {
13
13
  clear(): void;
14
14
  field(fieldPos: number): HL7Field;
15
15
  defineField(position: number, def: HL7FieldDefinition): HL7Field;
16
- next(segmentType?: string): HL7Segment | undefined;
17
16
  toHL7String(options?: Hl7SegmentSerializeOptions): string;
18
17
  static parse(message: HL7Message, input: string, options?: Hl7SegmentParseOptions): HL7Segment;
19
18
  }
package/types/index.d.cts CHANGED
@@ -3,6 +3,7 @@ export * from './hl7-component.js';
3
3
  export * from './hl7-error.js';
4
4
  export * from './hl7-field.js';
5
5
  export * from './hl7-message.js';
6
+ export * from './hl7-message-node.js';
6
7
  export * from './hl7-repetition.js';
7
8
  export * from './hl7-segment.js';
8
9
  export * from './hl7-sub-component.js';
package/types/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export * from './hl7-component.js';
3
3
  export * from './hl7-error.js';
4
4
  export * from './hl7-field.js';
5
5
  export * from './hl7-message.js';
6
+ export * from './hl7-message-node.js';
6
7
  export * from './hl7-repetition.js';
7
8
  export * from './hl7-segment.js';
8
9
  export * from './hl7-sub-component.js';