| 1 | VAQCON94 ;ALB/JRP - MESSAGE CONSTRUCTION;22-APR-93 | 
|---|
| 2 | ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993 | 
|---|
| 3 | XMIT10(TRANPTR,MESSNUM,ARRAY,OFFSET) ;BUILD A 1.0 MESSAGE | 
|---|
| 4 | ;INPUT  : TRANPTR - Pointer to VAQ - TRANSACTION file (full global ref) | 
|---|
| 5 | ;         MESSNUM - Message number to place message into | 
|---|
| 6 | ;                   (if 0, message will be placed in ARRAY) | 
|---|
| 7 | ;         ARRAY - Array to store message in (full global reference) | 
|---|
| 8 | ;         OFFSET - Where to begin placing information (defaults to 0) | 
|---|
| 9 | ;OUTPUT  : N - Number of lines in message | 
|---|
| 10 | ;         -1^Error_Text - Error | 
|---|
| 11 | ;NOTES   : If MESSNUM=0, then the message will be placed into | 
|---|
| 12 | ;            ARRAY(LineNumber)=Line_of_info | 
|---|
| 13 | ;          If MESSNUM>0 then the message will be placed into | 
|---|
| 14 | ;            ^XMB(3.9,MESSNUM,2,LineNumber,0)=Line_of_info | 
|---|
| 15 | ;        : The first subscript in ROOT must be a pointer to the | 
|---|
| 16 | ;          transaction.  The second subscript in ROOT must be the | 
|---|
| 17 | ;          segment abbreviation.  This is required to identify the | 
|---|
| 18 | ;          segments for the transaction. | 
|---|
| 19 | ;            ROOT(TransactionPointer,SegmentAbbreviation) | 
|---|
| 20 | ;        : Segments required for a 1.0 message will be extracted by | 
|---|
| 21 | ;          this routine.  This is done to ensure that encryption has | 
|---|
| 22 | ;          been turned off. | 
|---|
| 23 | ; | 
|---|
| 24 | ;CHECK INPUT | 
|---|
| 25 | Q:('(+$G(TRANPTR))) "-1^Did not pass pointer to VAQ - TRANSACTION file" | 
|---|
| 26 | S MESSNUM=+$G(MESSNUM) | 
|---|
| 27 | I (('MESSNUM)&($G(ARRAY)="")) Q "-1^Did not pass message number or reference to output array" | 
|---|
| 28 | I (MESSNUM) Q:('$D(^XMB(3.9,MESSNUM))) "-1^Valid message number not passed" | 
|---|
| 29 | S OFFSET=+$G(OFFSET) | 
|---|
| 30 | N TMP,DFN,SEGPTR,LINE,VAQIGNC,ROOT,STATUS,TYPE | 
|---|
| 31 | K ^TMP("VAQ-10",$J) | 
|---|
| 32 | S LINE=OFFSET | 
|---|
| 33 | ;IGNORE ENCRYPTION RULES (1.0 DOES NOT SUPPORT IT) | 
|---|
| 34 | S VAQIGNC=1 | 
|---|
| 35 | ;GET STATUS | 
|---|
| 36 | S TMP=$$STATYPE^VAQCON1(TRANPTR) | 
|---|
| 37 | S STATUS=$P(TMP,"^",1) | 
|---|
| 38 | S TYPE=$P(TMP,"^",2) | 
|---|
| 39 | Q:(STATUS="-1") TMP | 
|---|
| 40 | Q:((STATUS="VAQ-AUTO")!(STATUS="VAQ-PROC")!(STATUS="VAQ-TUNSL")) "-1^Transaction does not require a PDX message in version 1.0" | 
|---|
| 41 | Q:((STATUS="VAQ-RTRNS")!(STATUS="VAQ-UNACK")) "-1^Transmission does not have a version 1.0 equivalent" | 
|---|
| 42 | Q:(TYPE="REC") "-1^Transaction is being received, not transmitted" | 
|---|
| 43 | ;GET PATIENT | 
|---|
| 44 | S DFN=+$P($G(^VAT(394.61,TRANPTR,0)),"^",3) | 
|---|
| 45 | I ((STATUS="VAQ-RSLT")!(STATUS="VAQ-UNSOL")) Q:('DFN) "-1^Transaction did not contain pointer to PATIENT file" | 
|---|
| 46 | ;EXTRACT INFORMATION (IF NEEDED) | 
|---|
| 47 | I ((STATUS="VAQ-RSLT")!(STATUS="VAQ-UNSOL")) D | 
|---|
| 48 | .;EXTRACT MINIMUM DATA | 
|---|
| 49 | .S ROOT="^TMP(""VAQ-10"",$J,""PDX*MIN"")" | 
|---|
| 50 | .S SEGPTR=$O(^VAT(394.71,"C","PDX*MIN","")) | 
|---|
| 51 | .S TMP=$$SEGXTRCT^VAQDBI(TRANPTR,"",ROOT,SEGPTR) | 
|---|
| 52 | .Q:(TMP<0) | 
|---|
| 53 | .;EXTRACT MAS DATA | 
|---|
| 54 | .S ROOT="^TMP(""VAQ-10"",$J,""PDX*MAS"")" | 
|---|
| 55 | .S SEGPTR=$O(^VAT(394.71,"C","PDX*MAS","")) | 
|---|
| 56 | .S TMP=$$SEGXTRCT^VAQDBI(TRANPTR,"",ROOT,SEGPTR) | 
|---|
| 57 | .Q:(TMP<0) | 
|---|
| 58 | .;EXTRACT PHARMACY DATA | 
|---|
| 59 | .S ROOT="^TMP(""VAQ-10"",$J,""PDX*MPL"")" | 
|---|
| 60 | .S SEGPTR=$O(^VAT(394.71,"C","PDX*MPL","")) | 
|---|
| 61 | .S TMP=$$SEGXTRCT^VAQDBI(TRANPTR,"",ROOT,SEGPTR) | 
|---|
| 62 | I (TMP<0) K ^TMP("VAQ-10",$J) Q TMP | 
|---|
| 63 | ;BUILD HEADER BLOCK | 
|---|
| 64 | S TMP=$$HEAD10^VAQCON99(TRANPTR,MESSNUM,ARRAY,LINE) | 
|---|
| 65 | I (TMP<0) K ^TMP("VAQ-10",$J) Q TMP | 
|---|
| 66 | S LINE=LINE+TMP | 
|---|
| 67 | ;BUILD DATA BLOCKS | 
|---|
| 68 | S ROOT="^TMP(""VAQ-10"",$J)" | 
|---|
| 69 | I ((STATUS="VAQ-RSLT")!(STATUS="VAQ-UNSOL")) D | 
|---|
| 70 | .S TMP=$$DATA10^VAQCON97(TRANPTR,ROOT,MESSNUM,ARRAY,LINE) | 
|---|
| 71 | .Q:(TMP<0) | 
|---|
| 72 | .S LINE=LINE+TMP | 
|---|
| 73 | I (TMP<0) K ^TMP("VAQ-10",$J) Q TMP | 
|---|
| 74 | K ^TMP("VAQ-10",$J) | 
|---|
| 75 | Q (LINE-OFFSET) | 
|---|