1
1
var net = require ( 'net' ) ;
2
2
var hl7 = require ( '../hl7/index.js' ) ;
3
-
4
- var HOST = '127.0.0.1' ;
5
- var PORT = 6969 ;
6
-
3
+ var util = require ( 'util' ) ;
4
+ var EventEmitter = require ( 'events' ) . EventEmitter ;
7
5
8
6
//The header is a vertical tab character <VT> its hex value is 0x0b.
9
7
//The trailer is a field separator character <FS> (hex 0x1c) immediately followed by a carriage return <CR> (hex 0x0d)
10
8
11
- var VT = String . fromCharCode ( 0x0b ) ;
12
- var FS = String . fromCharCode ( 0x1c ) ;
13
- var CR = String . fromCharCode ( 0x0d ) ;
9
+ var VT = String . fromCharCode ( 0x0b ) ;
10
+ var FS = String . fromCharCode ( 0x1c ) ;
11
+ var CR = String . fromCharCode ( 0x0d ) ;
14
12
15
13
16
- function ackn ( data , ack_type ) {
17
- //get message ID
18
- var msg_id = data [ 0 ] [ 10 ] ;
19
14
20
- var header = [ data [ 0 ] ] ;
21
-
22
- //switch around sender/receiver names
23
- header [ 0 ] [ 3 ] = data [ 0 ] [ 5 ] ;
24
- header [ 0 ] [ 4 ] = data [ 0 ] [ 6 ] ;
25
- header [ 0 ] [ 5 ] = data [ 0 ] [ 3 ] ;
26
- header [ 0 ] [ 6 ] = data [ 0 ] [ 4 ] ;
27
15
28
- var result = hl7 . serializeJSON ( header ) ;
29
- result = result + "\r" + "MSA|" + ack_type + "|" + msg_id ;
30
-
31
- return result ;
32
- }
16
+ function MLLPServer ( host , port ) {
33
17
34
- net . createServer ( function ( sock ) {
35
-
36
- console . log ( 'CONNECTED: ' + sock . remoteAddress + ':' + sock . remotePort ) ;
37
-
38
- sock . on ( 'data' , function ( data ) {
39
- data = data . toString ( ) ;
40
- //strip separators
41
- data = data . substring ( 1 , data . length - 3 ) ;
42
- var data2 = hl7 . parseString ( data ) ;
43
-
44
- var ack = ackn ( data2 , "AA" ) ;
45
-
46
- console . log ( "DATA:\nfrom " + sock . remoteAddress + ':\n' + data . split ( "\r" ) . join ( "\n" ) ) ;
47
- console . log ( ) ;
48
-
49
- sock . write ( VT + ack + FS + CR ) ;
50
- console . log ( "ACK:\n" + ack . split ( "\r" ) . join ( "\n" ) ) ;
51
- console . log ( ) ;
52
-
53
- } ) ;
18
+ var self = this ;
19
+
20
+ var HOST = host || '127.0.0.1' ;
21
+ var PORT = port || 6969 ;
22
+
23
+ var Server = net . createServer ( function ( sock ) {
24
+
25
+ console . log ( 'CONNECTED: ' + sock . remoteAddress + ':' + sock . remotePort ) ;
26
+
27
+
28
+ function ackn ( data , ack_type ) {
29
+ //get message ID
30
+ var msg_id = data [ 0 ] [ 10 ] ;
31
+
32
+ var header = [ data [ 0 ] ] ;
33
+
34
+ //switch around sender/receiver names
35
+ header [ 0 ] [ 3 ] = data [ 0 ] [ 5 ] ;
36
+ header [ 0 ] [ 4 ] = data [ 0 ] [ 6 ] ;
37
+ header [ 0 ] [ 5 ] = data [ 0 ] [ 3 ] ;
38
+ header [ 0 ] [ 6 ] = data [ 0 ] [ 4 ] ;
39
+
40
+ var result = hl7 . serializeJSON ( header ) ;
41
+ result = result + "\r" + "MSA|" + ack_type + "|" + msg_id ;
42
+
43
+ return result ;
44
+ }
45
+
46
+ sock . on ( 'data' , function ( data ) {
47
+ data = data . toString ( ) ;
48
+ //strip separators
49
+ data = data . substring ( 1 , data . length - 3 ) ;
50
+ var data2 = hl7 . parseString ( data ) ;
51
+
52
+ self . emit ( 'hl7' , data2 ) ;
53
+
54
+ var ack = ackn ( data2 , "AA" ) ;
55
+
56
+ console . log ( "DATA:\nfrom " + sock . remoteAddress + ':\n' + data . split ( "\r" ) . join ( "\n" ) ) ;
57
+ console . log ( ) ;
58
+
59
+ sock . write ( VT + ack + FS + CR ) ;
60
+ console . log ( "ACK:\n" + ack . split ( "\r" ) . join ( "\n" ) ) ;
61
+ console . log ( ) ;
62
+
63
+ } ) ;
64
+
65
+ sock . on ( 'close' , function ( data ) {
66
+ console . log ( 'CLOSED: ' + sock . remoteAddress + ' ' + sock . remotePort ) ;
67
+ } ) ;
54
68
55
- sock . on ( 'close' , function ( data ) {
56
- console . log ( 'CLOSED: ' + sock . remoteAddress + ' ' + sock . remotePort ) ;
57
69
} ) ;
58
-
59
- } ) . listen ( PORT , HOST ) ;
60
70
61
- console . log ( 'Server listening on ' + HOST + ':' + PORT ) ;
71
+
72
+ Server . listen ( PORT , HOST ) ;
73
+
74
+ }
75
+
76
+ util . inherits ( MLLPServer , EventEmitter ) ;
77
+
78
+ exports . MLLPServer = MLLPServer ;
0 commit comments