| 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 | 
|---|