1 | HLOPBLD1 ;ALB/CJM-HL7 - Building segments (CONTINUED) ;10/24/2006
|
---|
2 | ;;1.6;HEALTH LEVEL SEVEN;**126,132**;Oct 13, 1995;Build 6
|
---|
3 | ;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | BUILDHDR(HLMSTATE,TYPE,HDR) ;Builds the header segment in 2 lines, line 1 is components 1-6
|
---|
6 | ;Input:
|
---|
7 | ; HLMSTATE("HDR") - (pass by reference, required) These subscripts are used:
|
---|
8 | ; "FIELD SEPARATOR"
|
---|
9 | ; "ENCODING CHARACTERS"
|
---|
10 | ; "SENDING APPLICATION"
|
---|
11 | ; "RECEIVING APPLICATION"
|
---|
12 | ; "RECEIVING FACILITY",1 and ,2 and ,3
|
---|
13 | ; "DT/TM OF MESSAGE"
|
---|
14 | ; "SECURITY"
|
---|
15 | ; "ACCEPT ACK TYPE"
|
---|
16 | ; "APP ACK TYPE"
|
---|
17 | ; "PROCESSING ID"
|
---|
18 | ;
|
---|
19 | ; *MSH ONLY*
|
---|
20 | ; "CONTINUATION POINTER"
|
---|
21 | ; "COUNTRY"
|
---|
22 | ; "EVENT"
|
---|
23 | ; "MESSAGE STRUCTURE"
|
---|
24 | ; "MESSAGE TYPE"
|
---|
25 | ; "PROCESSING MODE"
|
---|
26 | ; "VERSION"
|
---|
27 | ;
|
---|
28 | ; *BHS ONLY*
|
---|
29 | ; "REFERENCE BATCH CONTROL ID"
|
---|
30 | ;
|
---|
31 | ; HLMSTATE("BATCH")
|
---|
32 | ; HLMSTATE("BATCH","CURRENT MESSAGE") - batch messages only
|
---|
33 | ; HLMSTATE("IEN") - ien, file 778
|
---|
34 | ;
|
---|
35 | ; TYPE - must be either "MSH" or "BHS"
|
---|
36 | ;
|
---|
37 | ;Output:
|
---|
38 | ; HLMSTATE("HDR") - these subscripts will be added, unless building an MSH within a batch:
|
---|
39 | ; "SENDING FACILITY",1 and ,2 and ,3
|
---|
40 | ; "PROCESSING ID"
|
---|
41 | ; "MESSAGE CONTROL ID" (MSH ONLY)
|
---|
42 | ; "BATCH CONTROL ID" (BHS ONLY)
|
---|
43 | ; "DT/TM OF MESSAGE"
|
---|
44 | ; HDR (pass by reference) This will return the segment in an array form at HDR(1),HDR(2) (two lines).
|
---|
45 | ;
|
---|
46 | K HDR
|
---|
47 | N SEG,BATCH,LEN,FS,CS
|
---|
48 | ;
|
---|
49 | ;shortcuts
|
---|
50 | S HDR="HLMSTATE(""HDR"")"
|
---|
51 | S BATCH=HLMSTATE("BATCH")
|
---|
52 | S FS=@HDR@("FIELD SEPARATOR")
|
---|
53 | S CS=$E(@HDR@("ENCODING CHARACTERS"),1)
|
---|
54 | ;
|
---|
55 | S HDR(1)=TYPE_FS_@HDR@("ENCODING CHARACTERS")_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("SENDING APPLICATION")))
|
---|
56 | ;
|
---|
57 | ;If building an MSH segment for a batch message, these parameters should already be determined
|
---|
58 | D:(('HLMSTATE("BATCH"))!(TYPE="BHS"))
|
---|
59 | .N PORT
|
---|
60 | .S PORT=$$RTRNPORT^HLOAPP($G(@HDR@("SENDING APPLICATION")))
|
---|
61 | .S:'PORT PORT=HLMSTATE("SYSTEM","PORT")
|
---|
62 | .S @HDR@("SENDING FACILITY",1)=HLMSTATE("SYSTEM","STATION")
|
---|
63 | .S @HDR@("SENDING FACILITY",2)=HLMSTATE("SYSTEM","DOMAIN")_":"_PORT
|
---|
64 | .S @HDR@("SENDING FACILITY",3)="DNS"
|
---|
65 | .;
|
---|
66 | .;create the unique message ids, using the ien from file 778
|
---|
67 | .S:TYPE="BHS" @HDR@("BATCH CONTROL ID")=HLMSTATE("SYSTEM","STATION")_" "_HLMSTATE("IEN")
|
---|
68 | .S:TYPE="MSH" @HDR@("MESSAGE CONTROL ID")=HLMSTATE("SYSTEM","STATION")_" "_HLMSTATE("IEN")
|
---|
69 | .;
|
---|
70 | .S @HDR@("PROCESSING ID")=HLMSTATE("SYSTEM","PROCESSING ID")
|
---|
71 | .S @HDR@("DT/TM OF MESSAGE")=$$HLDATE^HLFNC($$NOW^XLFDT,"TS")
|
---|
72 | ;
|
---|
73 | S HDR(1)=HDR(1)_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("SENDING FACILITY",1)))_CS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("SENDING FACILITY",2)))_CS_"DNS"
|
---|
74 | S HDR(1)=HDR(1)_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("RECEIVING APPLICATION")))
|
---|
75 | S HDR(1)=HDR(1)_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("RECEIVING FACILITY",1)))_CS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("RECEIVING FACILITY",2)))
|
---|
76 | S HDR(1)=HDR(1)_CS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("RECEIVING FACILITY",3)))
|
---|
77 | S HDR(2)=FS_$$ESCAPE^HLOPBLD(.HLMSTATE,@HDR@("DT/TM OF MESSAGE"))_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("SECURITY")))
|
---|
78 | ;
|
---|
79 | I TYPE="MSH" D
|
---|
80 | .N ID
|
---|
81 | .S HDR(2)=HDR(2)_FS_@HDR@("MESSAGE TYPE")_CS_@HDR@("EVENT")_CS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("MESSAGE STRUCTURE")))
|
---|
82 | .S:BATCH ID=@HDR@("BATCH CONTROL ID")_"-"_$G(HLMSTATE("BATCH","CURRENT MESSAGE"))
|
---|
83 | .S:'BATCH ID=@HDR@("MESSAGE CONTROL ID")
|
---|
84 | .S HDR(2)=HDR(2)_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,ID)_FS_@HDR@("PROCESSING ID")_CS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("PROCESSING MODE")))_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,@HDR@("VERSION"))
|
---|
85 | .S HDR(2)=HDR(2)_FS_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("CONTINUATION POINTER")))_FS_@HDR@("ACCEPT ACK TYPE")_FS_@HDR@("APP ACK TYPE")_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("COUNTRY")))
|
---|
86 | ;
|
---|
87 | I TYPE="BHS" D
|
---|
88 | .N TEXT
|
---|
89 | .S TEXT="PROCESSING ID"_"="_@HDR@("PROCESSING ID")_" "
|
---|
90 | .I $L($G(@HDR@("ACCEPT ACK TYPE"))) S TEXT=TEXT_"ACCEPT ACK TYPE"_"="_@HDR@("ACCEPT ACK TYPE")_" "
|
---|
91 | .I $L($G(@HDR@("APP ACK TYPE"))) S TEXT=TEXT_"APP ACK TYPE"_"="_@HDR@("APP ACK TYPE")_" "
|
---|
92 | .S HDR(2)=HDR(2)_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,TEXT)_FS_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,@HDR@("BATCH CONTROL ID"))_FS_$$ESCAPE^HLOPBLD(.HLMSTATE,$G(@HDR@("REFERENCE BATCH CONTROL ID")))
|
---|
93 | Q
|
---|