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