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