Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: VAQADM50

VAQADM50.m

Go to the documentation of this file.
  1. VAQADM50 ;ALB/JRP - GENERATE PDX TRANSMISSIONS;10-MAR-93
  1. ;;1.5;PATIENT DATA EXCHANGE;**5,35**;NOV 17, 1993
  1. START ;START RESPONSE TIME MONITORING (TIME TO BUILD/SEND COMPLETE TRANSMISSION)
  1. I ($D(XRTL)) D T0^%ZOSV
  1. Q
  1. ;
  1. STOP ;STOP RESPONSE TIME MONITORING
  1. I ($D(XRT0)) S XRTN=$T(+0) D T1^%ZOSV K XRTN,XRT0
  1. Q
  1. ;
  1. GENXMIT ;MAIN ENTRY POINT FOR GENERATING PDX TRANSMISSIONS
  1. ;INPUT : VAQTRN - Array of pointers to VAQ - TRANSACTION file
  1. ;OUTPUT : None
  1. ;NOTE : This module builds/transmits the PDX transmissions, it
  1. ; does not prompt the user for information. Messages
  1. ; stating any errors that may occur will be sent to the
  1. ; current user & the mail group 'VAQ PDX ERRORS'
  1. ;
  1. ;CHECK INPUT
  1. Q:('$D(VAQTRN))
  1. Q:('$O(VAQTRN("")))
  1. ;DECLARE VARIABLES
  1. N ARRAY1,ARRAY2,ARRAY3,ARRAY4,ARRAY5,TMP,XMZ,XMY,TYPE
  1. N TMPARR,XMDUN,DOMAIN,TRANS,SITE,X,ERRNUM,VERSION,LINE,XMCHAN
  1. N DEFENCON,DEFTYPE
  1. S ARRAY1="^TMP(""VAQ-XMIT"","_$J_",""BLD"")"
  1. S ARRAY2="^TMP(""VAQ-XMIT"","_$J_",""DOM"")"
  1. S ARRAY3="^TMP(""VAQ-XMIT"","_$J_",""ERR"")"
  1. S ARRAY4="^TMP(""VAQ-XMIT"","_$J_",""V1.0"")"
  1. S ARRAY5="^TMP(""VAQ-XMIT"","_$J_",""XTRCT"")"
  1. S XMCHAN=1
  1. K @ARRAY1,@ARRAY2,@ARRAY3,@ARRAY4,@ARRAY5
  1. ;GET SITE NAME FROM PARAMETER FILE
  1. S TMP=+$O(^VAT(394.81,0))
  1. S SITE=+$G(^VAT(394.81,TMP,0))
  1. S TMP=$P($G(^DIC(4,SITE,0)),"^",1)
  1. I (TMP="") S TMP=$P($$SITE^VASITE,"^",2) S:(TMP=-1) TMP="UNKNOWN"
  1. S SITE=TMP
  1. ;DETERMINE DEFAULT ENCRYPTION VALUES
  1. S DEFENCON=0
  1. S DEFTYPE=$$NCRYPTON^VAQUTL2(2)
  1. S:(DEFTYPE'="") DEFENCON=1
  1. ;"COMBINE" TRANSMISSIONS TO SAME DOMAIN & SCREEN OUT V1.0 MESSAGES
  1. S TRANS=""
  1. F S TRANS=$O(VAQTRN(TRANS)) Q:('TRANS) D
  1. .I ('$D(^VAT(394.61,TRANS,0))) S @ARRAY3@(TRANS,0)="Transaction does not exist" Q
  1. .;GET VERSION NUMBER
  1. .S VERSION=+$P($G(^VAT(394.61,TRANS,0)),"^",7)
  1. .;GET MESSAGE TYPE
  1. .S TMP=$$STATYPE^VAQCON1(TRANS)
  1. .I ($P(TMP,"^",1)="-1") D Q
  1. ..S @ARRAY3@(TRANS,0)="Could not determine message type"
  1. ..S @ARRAY3@(TRANS,1)=$P(TMP,"^",2)
  1. .S TYPE=$P(TMP,"^",2)
  1. .S:(TYPE="ACK") TYPE=$P(TMP,"^",1)
  1. .;GET DOMAIN
  1. .S DOMAIN=""
  1. .S:((TYPE="VAQ-UNACK")!(TYPE="REQ")) DOMAIN=$P($G(^VAT(394.61,TRANS,"ATHR2")),"^",2)
  1. .S:((TYPE="RES")!(TYPE="UNS")!(TYPE="VAQ-RQACK")) DOMAIN=$P($G(^VAT(394.61,TRANS,"RQST2")),"^",2)
  1. .I (TYPE="REC") S @ARRAY3@(TRANS,0)="Can not transmit a transaction that is being received" Q
  1. .I (DOMAIN="") S @ARRAY3@(TRANS,0)="Transaction did not contain a domain to transmit message to" Q
  1. .I $$CLOSDOM^VAQUTL97(TRANS,DOMAIN) D Q ; Don't send transactions to closed domains. (And mark such transactions for purging.)
  1. . .S @ARRAY3@(TRANS,0)="Domain is closed: "_DOMAIN
  1. .;SCREEN OUT VERSION 1.0 MESSAGE
  1. .I (VERSION=1) S @ARRAY4@(TRANS)="" Q
  1. .;COMBINE 1.5 MESSAGES TO SAME DOMAIN
  1. .S TMP=$P(DOMAIN,".",1)
  1. .S @ARRAY1@(TMP,TRANS)=""
  1. .S @ARRAY2@(TMP)=DOMAIN
  1. .;FILE ENCRYPTION VALUES FOR REQUESTS & UNSOLICITED PDXS
  1. .I ((TYPE="REQ")!(TYPE="UNS")) D
  1. ..S TMP=$$FILEINFO^VAQFILE(394.61,TRANS,40,$S(DEFENCON:"YES",1:"NO"))
  1. ..Q:('DEFENCON)
  1. ..S TMP=$$FILEINFO^VAQFILE(394.61,TRANS,41,DEFTYPE)
  1. ;GENERATE & SEND VERSION 1.0 MESSAGES
  1. S TRANS=""
  1. F S TRANS=$O(@ARRAY4@(TRANS)) Q:(TRANS="") D START D D STOP
  1. .S TMP=$$SEND10^VAQCON93(TRANS)
  1. .I (+TMP) D
  1. ..S @ARRAY3@(TRANS,0)="Error occurred while building transmission(1)"
  1. ..S @ARRAY3@(TRANS,1)=$P(TMP,"^",2)
  1. ;GENERATE & SEND VERSION 1.0 MESSAGES
  1. D XMIT15^VAQADM51
  1. ;SEND ERROR MESSAGES (IF NEEDED)
  1. I (+$O(@ARRAY3@(""))) D
  1. .D ERR2USR^VAQBUL01
  1. .D ERR2IRM^VAQBUL01
  1. K @ARRAY1,@ARRAY2,@ARRAY3,@ARRAY4,@ARRAY5
  1. S:($D(ZTQUEUED)) ZTREQ="@"
  1. Q