[613] | 1 | VAQCON2 ;ALB/JRP - MESSAGE CONSTRUCTION;12-APR-93
|
---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
|
---|
| 3 | SENDER(TRAN) ;DETERMINE MESSAGE SENDER
|
---|
| 4 | ;INPUT : TRAN - Pointer to VAQ - TRANSACTION file
|
---|
| 5 | ;OUTPUT : Name_of_sender^DUZ_of_sender - Success
|
---|
| 6 | ; Null - Error
|
---|
| 7 | ;NOTE : Defaults to current user
|
---|
| 8 | ;
|
---|
| 9 | ;CHECK INPUT
|
---|
| 10 | Q:('(+$G(TRAN))) ""
|
---|
| 11 | Q:('$D(^VAT(394.61,TRAN))) ""
|
---|
| 12 | ;DECLARE VARIABLES
|
---|
| 13 | N TYPE,USER,TMP
|
---|
| 14 | ;GET MESSAGE TYPE & STATUS
|
---|
| 15 | S TMP=$$STATYPE^VAQCON1(TRAN)
|
---|
| 16 | Q:($P(TMP,"^",1)="-1") ""
|
---|
| 17 | S TYPE=$P(TMP,"^",2)
|
---|
| 18 | Q:(TYPE="REC") ""
|
---|
| 19 | ;DETERMINE CURRENT USER
|
---|
| 20 | S USER=""
|
---|
| 21 | S:((TYPE="ACK")!(TYPE="RET")) USER="PDX Server"
|
---|
| 22 | S:(TYPE="REQ") USER=$P($G(^VAT(394.61,TRAN,"RQST1")),"^",2)
|
---|
| 23 | S:((TYPE="RES")!(TYPE="UNS")) USER=$P($G(^VAT(394.61,TRAN,"ATHR1")),"^",2)
|
---|
| 24 | I (USER="") D
|
---|
| 25 | .S TMP=+$G(DUZ)
|
---|
| 26 | .Q:('TMP)
|
---|
| 27 | .S X=$P($G(^VA(200,TMP,0)),"^",1)
|
---|
| 28 | .S USER=X
|
---|
| 29 | Q:(USER="") ""
|
---|
| 30 | S TMP=+$O(^VA(200,"B",USER,""))
|
---|
| 31 | S:(('TMP)&(USER="PDX Server")) TMP=.5
|
---|
| 32 | Q USER_"^"_TMP
|
---|
| 33 | ;
|
---|
| 34 | HEADER(TRANPTR,MESSNUM,ARRAY,OFFSET) ;CONSTRUCT HEADER BLOCK
|
---|
| 35 | ;INPUT : TRANPTR - Pointer to VAQ - TRANSACTION file
|
---|
| 36 | ; MESSNUM - Message number to place block into
|
---|
| 37 | ; (if 0, block will be placed in ARRAY)
|
---|
| 38 | ; ARRAY - Array to store block in (full global reference)
|
---|
| 39 | ; OFFSET - Where to begin placing information (defaults to 0)
|
---|
| 40 | ;OUTPUT : N - Number of lines in block
|
---|
| 41 | ; -1^Error_Text - Error
|
---|
| 42 | ;NOTES : If MESSNUM=0, then the block will be placed into
|
---|
| 43 | ; ARRAY(LineNumber)=Line_of_info
|
---|
| 44 | ; If MESSNUM>0 then the block will be placed into
|
---|
| 45 | ; ^XMB(3.9,MESSNUM,2,LineNumber,0)=Line_of_info
|
---|
| 46 | ;
|
---|
| 47 | ;CHECK INPUT
|
---|
| 48 | S TRANPTR=+$G(TRANPTR)
|
---|
| 49 | Q:(('TRANPTR)!('$D(^VAT(394.61,TRANPTR)))) "-1^Did not pass a valid pointer to VAQ - TRANSACTION file"
|
---|
| 50 | S MESSNUM=+$G(MESSNUM)
|
---|
| 51 | I (('MESSNUM)&($G(ARRAY)="")) Q "-1^Did not pass message number or reference to array"
|
---|
| 52 | I (MESSNUM) Q:('$D(^XMB(3.9,MESSNUM))) "-1^Valid message number not passed"
|
---|
| 53 | S OFFSET=+$G(OFFSET)
|
---|
| 54 | ;DECLARE VARIABLES
|
---|
| 55 | N LINE,TYPE,STATUS,DATETIME,TRANNUM,ENCMTHD,PDXVER,TMP,X
|
---|
| 56 | S LINE=OFFSET
|
---|
| 57 | ;DETERMINE STATUS
|
---|
| 58 | S TMP=$$STATYPE^VAQCON1(TRANPTR)
|
---|
| 59 | Q:($P(TMP,"^",1)="-1") TMP
|
---|
| 60 | S STATUS=$P(TMP,"^",1)
|
---|
| 61 | ;DETERMINE MESSAGE TYPE
|
---|
| 62 | S TYPE=$P(TMP,"^",2)
|
---|
| 63 | Q:(TYPE="REC") "-1^Transaction is being received, not transmitted"
|
---|
| 64 | ;GET VERSION NUMBER
|
---|
| 65 | S PDXVER=$$PDXVER^VAQUTL1
|
---|
| 66 | Q:(PDXVER<0) PDXVER
|
---|
| 67 | ;DETERMINE TRANSACTION NUMBER
|
---|
| 68 | S TMP=$G(^VAT(394.61,TRANPTR,0))
|
---|
| 69 | ;DEFAULT TO LOCAL TRANSACTION NUMBER
|
---|
| 70 | S TRANNUM=+TMP
|
---|
| 71 | ;CHANGE TO REMOTE TRANSACTION IF NECCESSARY
|
---|
| 72 | S:((TYPE="RES")!(TYPE="ACK")!(TYPE="RET")) TRANNUM=+$P(TMP,"^",6)
|
---|
| 73 | Q:('TRANNUM) "-1^Could not determine remote transaction number"
|
---|
| 74 | ;DETERMINE ENCRYPTION METHOD
|
---|
| 75 | S ENCMTHD=$$TRANENC^VAQUTL3(TRANPTR,3)
|
---|
| 76 | ;DETERMINE DATE/TIME
|
---|
| 77 | S DATETIME=$$NOW^VAQUTL99
|
---|
| 78 | ;BUILD HEADER
|
---|
| 79 | ;LINE 1
|
---|
| 80 | S TMP="$HEADER"
|
---|
| 81 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 82 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 83 | S LINE=LINE+1
|
---|
| 84 | ;LINE 2
|
---|
| 85 | S TMP=TYPE
|
---|
| 86 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 87 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 88 | S LINE=LINE+1
|
---|
| 89 | ;LINE 3
|
---|
| 90 | S TMP=STATUS
|
---|
| 91 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 92 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 93 | S LINE=LINE+1
|
---|
| 94 | ;LINE 4
|
---|
| 95 | S TMP=PDXVER
|
---|
| 96 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 97 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 98 | S LINE=LINE+1
|
---|
| 99 | ;LINE 5
|
---|
| 100 | S TMP=DATETIME
|
---|
| 101 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 102 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 103 | S LINE=LINE+1
|
---|
| 104 | ;LINE 6
|
---|
| 105 | S TMP=$S('MESSNUM:"",1:MESSNUM)
|
---|
| 106 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 107 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 108 | S LINE=LINE+1
|
---|
| 109 | ;LINE 7
|
---|
| 110 | S TMP=TRANNUM
|
---|
| 111 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 112 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 113 | S LINE=LINE+1
|
---|
| 114 | ;LINE 8
|
---|
| 115 | S TMP=ENCMTHD
|
---|
| 116 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 117 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 118 | S LINE=LINE+1
|
---|
| 119 | ;LINE 9
|
---|
| 120 | S TMP="$$HEADER"
|
---|
| 121 | S:('MESSNUM) @ARRAY@(LINE)=TMP
|
---|
| 122 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE)
|
---|
| 123 | S LINE=LINE+1
|
---|
| 124 | ;DONE
|
---|
| 125 | Q (LINE-OFFSET)
|
---|