| [613] | 1 | VAQCON ;ALB/JRP - MESSAGE CONSTRUCTION;14-APR-93 | 
|---|
|  | 2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993 | 
|---|
|  | 3 | XMIT(TRANARR,ROOT,MESSNUM,ARRAY,OFFSET) ;BUILD MESSAGE FOR TRANSACTION | 
|---|
|  | 4 | ;INPUT  : TRANARR - Array whose subscripts are pointers to | 
|---|
|  | 5 | ;                   VAQ - TRANSACTION file (full global reference) | 
|---|
|  | 6 | ;         ROOT - Location of Extraction Arrays (full global reference) | 
|---|
|  | 7 | ;         MESSNUM - Message number to place transmisison into | 
|---|
|  | 8 | ;                   (if 0, transmission will be placed in ARRAY) | 
|---|
|  | 9 | ;         ARRAY - Array to store transmission in (full global reference) | 
|---|
|  | 10 | ;         OFFSET - Where to begin placing information (defaults to 0) | 
|---|
|  | 11 | ;OUTPUT : N - Number of lines in transmission | 
|---|
|  | 12 | ;        -1^Error_Text - Error | 
|---|
|  | 13 | ;NOTES  : Transactions pointed to by TRANARR will be placed in the | 
|---|
|  | 14 | ;         same transmission and therefore should have the same domain | 
|---|
|  | 15 | ;         as their destination. | 
|---|
|  | 16 | ;       : If MESSNUM=0, then the transmission will be placed into | 
|---|
|  | 17 | ;           ARRAY(LineNumber)=Line_of_info | 
|---|
|  | 18 | ;         If MESSNUM>0 then the transmission will be placed into | 
|---|
|  | 19 | ;           ^XMB(3.9,MESSNUM,2,LineNumber,0)=Line_of_info | 
|---|
|  | 20 | ;       : The first subscript in ROOT must be a pointer to the | 
|---|
|  | 21 | ;         transaction.  The second subscript in ROOT must be the | 
|---|
|  | 22 | ;         segment abbreviation.  This is required to identify the | 
|---|
|  | 23 | ;         segments for each transaction contained in a DATA or DISPLAY | 
|---|
|  | 24 | ;         block.  ( ROOT(TransactionPointer,SegmentAbbreviation) ) | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | ;CHECK INPUT | 
|---|
|  | 27 | Q:($G(TRANARR)="") "-1^Did not pass reference to array of transaction pointers" | 
|---|
|  | 28 | S ROOT=$G(ROOT) | 
|---|
|  | 29 | S MESSNUM=+$G(MESSNUM) | 
|---|
|  | 30 | I (('MESSNUM)&($G(ARRAY)="")) Q "-1^Did not pass message number or reference to output array" | 
|---|
|  | 31 | I (MESSNUM) Q:('$D(^XMB(3.9,MESSNUM))) "-1^Valid message number not passed" | 
|---|
|  | 32 | S OFFSET=+$G(OFFSET) | 
|---|
|  | 33 | ;DECLARE VARIABLES | 
|---|
|  | 34 | N TMP,X,LINE,TRANPTR,Y,TMPROOT | 
|---|
|  | 35 | S LINE=OFFSET | 
|---|
|  | 36 | ;START PDX TRANSMISSION | 
|---|
|  | 37 | S TMP="$TRANSMIT" | 
|---|
|  | 38 | S:('MESSNUM) @ARRAY@(LINE)=TMP | 
|---|
|  | 39 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE) | 
|---|
|  | 40 | S LINE=LINE+1 | 
|---|
|  | 41 | ;LOOP THROUGH EACH TRANSACTION | 
|---|
|  | 42 | S TRANPTR="" | 
|---|
|  | 43 | F  S TRANPTR=$O(@TRANARR@(TRANPTR)) Q:('TRANPTR)  D  Q:(TMP<0) | 
|---|
|  | 44 | .;PLACE TRANSACTION POINTER INTO ROOT | 
|---|
|  | 45 | .S TMP=$P(ROOT,"(",1) | 
|---|
|  | 46 | .S X=$P(ROOT,"(",2) | 
|---|
|  | 47 | .S Y=$P(X,")",1) | 
|---|
|  | 48 | .S:(Y="") TMPROOT=TMP_"("_TRANPTR_")" | 
|---|
|  | 49 | .S:(Y'="") TMPROOT=TMP_"("_Y_","_TRANPTR_")" | 
|---|
|  | 50 | .S:(ROOT="") TMPROOT="" | 
|---|
|  | 51 | .;PUT IN MESSAGE | 
|---|
|  | 52 | .S TMP=$$MESSAGE^VAQCON0(TRANPTR,TMPROOT,MESSNUM,ARRAY,LINE) | 
|---|
|  | 53 | .Q:(TMP<0) | 
|---|
|  | 54 | .S LINE=LINE+TMP | 
|---|
|  | 55 | Q:(TMP<0) TMP | 
|---|
|  | 56 | ;END PDX TRANSMISSION | 
|---|
|  | 57 | S TMP="$$TRANSMIT" | 
|---|
|  | 58 | S:('MESSNUM) @ARRAY@(LINE)=TMP | 
|---|
|  | 59 | S:(MESSNUM) X=$$ADDLINE^VAQCON1(TMP,MESSNUM,LINE) | 
|---|
|  | 60 | S LINE=LINE+1 | 
|---|
|  | 61 | Q (LINE-OFFSET) | 
|---|