| 1 | VAQADM50 ;ALB/JRP - GENERATE PDX TRANSMISSIONS;10-MAR-93
 | 
|---|
| 2 |  ;;1.5;PATIENT DATA EXCHANGE;**5,35**;NOV 17, 1993
 | 
|---|
| 3 | START ;START RESPONSE TIME MONITORING (TIME TO BUILD/SEND COMPLETE TRANSMISSION)
 | 
|---|
| 4 |  I ($D(XRTL)) D T0^%ZOSV
 | 
|---|
| 5 |  Q
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | STOP ;STOP RESPONSE TIME MONITORING
 | 
|---|
| 8 |  I ($D(XRT0)) S XRTN=$T(+0) D T1^%ZOSV K XRTN,XRT0
 | 
|---|
| 9 |  Q
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | GENXMIT ;MAIN ENTRY POINT FOR GENERATING PDX TRANSMISSIONS
 | 
|---|
| 12 |  ;INPUT  : VAQTRN - Array of pointers to VAQ - TRANSACTION file
 | 
|---|
| 13 |  ;OUTPUT : None
 | 
|---|
| 14 |  ;NOTE   : This module builds/transmits the PDX transmissions, it
 | 
|---|
| 15 |  ;         does not prompt the user for information.  Messages
 | 
|---|
| 16 |  ;         stating any errors that may occur will be sent to the
 | 
|---|
| 17 |  ;         current user & the mail group 'VAQ PDX ERRORS'
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;CHECK INPUT
 | 
|---|
| 20 |  Q:('$D(VAQTRN))
 | 
|---|
| 21 |  Q:('$O(VAQTRN("")))
 | 
|---|
| 22 |  ;DECLARE VARIABLES
 | 
|---|
| 23 |  N ARRAY1,ARRAY2,ARRAY3,ARRAY4,ARRAY5,TMP,XMZ,XMY,TYPE
 | 
|---|
| 24 |  N TMPARR,XMDUN,DOMAIN,TRANS,SITE,X,ERRNUM,VERSION,LINE,XMCHAN
 | 
|---|
| 25 |  N DEFENCON,DEFTYPE
 | 
|---|
| 26 |  S ARRAY1="^TMP(""VAQ-XMIT"","_$J_",""BLD"")"
 | 
|---|
| 27 |  S ARRAY2="^TMP(""VAQ-XMIT"","_$J_",""DOM"")"
 | 
|---|
| 28 |  S ARRAY3="^TMP(""VAQ-XMIT"","_$J_",""ERR"")"
 | 
|---|
| 29 |  S ARRAY4="^TMP(""VAQ-XMIT"","_$J_",""V1.0"")"
 | 
|---|
| 30 |  S ARRAY5="^TMP(""VAQ-XMIT"","_$J_",""XTRCT"")"
 | 
|---|
| 31 |  S XMCHAN=1
 | 
|---|
| 32 |  K @ARRAY1,@ARRAY2,@ARRAY3,@ARRAY4,@ARRAY5
 | 
|---|
| 33 |  ;GET SITE NAME FROM PARAMETER FILE
 | 
|---|
| 34 |  S TMP=+$O(^VAT(394.81,0))
 | 
|---|
| 35 |  S SITE=+$G(^VAT(394.81,TMP,0))
 | 
|---|
| 36 |  S TMP=$P($G(^DIC(4,SITE,0)),"^",1)
 | 
|---|
| 37 |  I (TMP="") S TMP=$P($$SITE^VASITE,"^",2) S:(TMP=-1) TMP="UNKNOWN"
 | 
|---|
| 38 |  S SITE=TMP
 | 
|---|
| 39 |  ;DETERMINE DEFAULT ENCRYPTION VALUES
 | 
|---|
| 40 |  S DEFENCON=0
 | 
|---|
| 41 |  S DEFTYPE=$$NCRYPTON^VAQUTL2(2)
 | 
|---|
| 42 |  S:(DEFTYPE'="") DEFENCON=1
 | 
|---|
| 43 |  ;"COMBINE" TRANSMISSIONS TO SAME DOMAIN & SCREEN OUT V1.0 MESSAGES
 | 
|---|
| 44 |  S TRANS=""
 | 
|---|
| 45 |  F  S TRANS=$O(VAQTRN(TRANS)) Q:('TRANS)  D
 | 
|---|
| 46 |  .I ('$D(^VAT(394.61,TRANS,0))) S @ARRAY3@(TRANS,0)="Transaction does not exist" Q
 | 
|---|
| 47 |  .;GET VERSION NUMBER
 | 
|---|
| 48 |  .S VERSION=+$P($G(^VAT(394.61,TRANS,0)),"^",7)
 | 
|---|
| 49 |  .;GET MESSAGE TYPE
 | 
|---|
| 50 |  .S TMP=$$STATYPE^VAQCON1(TRANS)
 | 
|---|
| 51 |  .I ($P(TMP,"^",1)="-1") D  Q
 | 
|---|
| 52 |  ..S @ARRAY3@(TRANS,0)="Could not determine message type"
 | 
|---|
| 53 |  ..S @ARRAY3@(TRANS,1)=$P(TMP,"^",2)
 | 
|---|
| 54 |  .S TYPE=$P(TMP,"^",2)
 | 
|---|
| 55 |  .S:(TYPE="ACK") TYPE=$P(TMP,"^",1)
 | 
|---|
| 56 |  .;GET DOMAIN
 | 
|---|
| 57 |  .S DOMAIN=""
 | 
|---|
| 58 |  .S:((TYPE="VAQ-UNACK")!(TYPE="REQ")) DOMAIN=$P($G(^VAT(394.61,TRANS,"ATHR2")),"^",2)
 | 
|---|
| 59 |  .S:((TYPE="RES")!(TYPE="UNS")!(TYPE="VAQ-RQACK")) DOMAIN=$P($G(^VAT(394.61,TRANS,"RQST2")),"^",2)
 | 
|---|
| 60 |  .I (TYPE="REC") S @ARRAY3@(TRANS,0)="Can not transmit a transaction that is being received" Q
 | 
|---|
| 61 |  .I (DOMAIN="") S @ARRAY3@(TRANS,0)="Transaction did not contain a domain to transmit message to" Q
 | 
|---|
| 62 |  .I $$CLOSDOM^VAQUTL97(TRANS,DOMAIN) D  Q  ; Don't send transactions to closed domains.  (And mark such transactions for purging.)
 | 
|---|
| 63 |  . .S @ARRAY3@(TRANS,0)="Domain is closed: "_DOMAIN
 | 
|---|
| 64 |  .;SCREEN OUT VERSION 1.0 MESSAGE
 | 
|---|
| 65 |  .I (VERSION=1) S @ARRAY4@(TRANS)="" Q
 | 
|---|
| 66 |  .;COMBINE 1.5 MESSAGES TO SAME DOMAIN
 | 
|---|
| 67 |  .S TMP=$P(DOMAIN,".",1)
 | 
|---|
| 68 |  .S @ARRAY1@(TMP,TRANS)=""
 | 
|---|
| 69 |  .S @ARRAY2@(TMP)=DOMAIN
 | 
|---|
| 70 |  .;FILE ENCRYPTION VALUES FOR REQUESTS & UNSOLICITED PDXS
 | 
|---|
| 71 |  .I ((TYPE="REQ")!(TYPE="UNS")) D
 | 
|---|
| 72 |  ..S TMP=$$FILEINFO^VAQFILE(394.61,TRANS,40,$S(DEFENCON:"YES",1:"NO"))
 | 
|---|
| 73 |  ..Q:('DEFENCON)
 | 
|---|
| 74 |  ..S TMP=$$FILEINFO^VAQFILE(394.61,TRANS,41,DEFTYPE)
 | 
|---|
| 75 |  ;GENERATE & SEND VERSION 1.0 MESSAGES
 | 
|---|
| 76 |  S TRANS=""
 | 
|---|
| 77 |  F  S TRANS=$O(@ARRAY4@(TRANS)) Q:(TRANS="")  D START D  D STOP
 | 
|---|
| 78 |  .S TMP=$$SEND10^VAQCON93(TRANS)
 | 
|---|
| 79 |  .I (+TMP) D
 | 
|---|
| 80 |  ..S @ARRAY3@(TRANS,0)="Error occurred while building transmission(1)"
 | 
|---|
| 81 |  ..S @ARRAY3@(TRANS,1)=$P(TMP,"^",2)
 | 
|---|
| 82 |  ;GENERATE & SEND VERSION 1.0 MESSAGES
 | 
|---|
| 83 |  D XMIT15^VAQADM51
 | 
|---|
| 84 |  ;SEND ERROR MESSAGES (IF NEEDED)
 | 
|---|
| 85 |  I (+$O(@ARRAY3@(""))) D
 | 
|---|
| 86 |  .D ERR2USR^VAQBUL01
 | 
|---|
| 87 |  .D ERR2IRM^VAQBUL01
 | 
|---|
| 88 |  K @ARRAY1,@ARRAY2,@ARRAY3,@ARRAY4,@ARRAY5
 | 
|---|
| 89 |  S:($D(ZTQUEUED)) ZTREQ="@"
 | 
|---|
| 90 |  Q
 | 
|---|