MAGGTERR	;WOIFO/GEK - IMAGING ERROR TRAP, AND ERROR LOG ; [ 06/20/2001 08:56 ]
	;;3.0;IMAGING;**8,59**;Nov 27, 2007;Build 20
	;;Per VHA Directive 2004-038, this routine should not be modified.
	;; +---------------------------------------------------------------+
	;; | Property of the US Government.                                |
	;; | No permission to copy or redistribute this software is given. |
	;; | Use of unreleased versions of this software requires the user |
	;; | to execute a written test agreement with the VistA Imaging    |
	;; | Development Office of the Department of Veterans Affairs,     |
	;; | telephone (301) 734-0100.                                     |
	;; |                                                               |
	;; | The Food and Drug Administration classifies this software as  |
	;; | a medical device.  As such, it may not be changed in any way. |
	;; | Modifications to this software may result in an adulterated   |
	;; | medical device under 21CFR820, the use of which is considered |
	;; | to be a violation of US Federal Statutes.                     |
	;; +---------------------------------------------------------------+
	;;
	Q
	;  Imaging routines should have this code for setting error trap
	;  This will enable logging Imaging errors and Sending messages for
	;  certain errors etc. later
	;N $ETRAP,$ESTACK S $ETRAP="D ERRA^MAGGTERR"
	;
	; This assumes the Return variable or array is MAGRY or MAGRY()
	Q
ERRA	; ERROR TRAP FOR Array Return variables
	N ERR S ERR=$$EC^%ZOSV
	S MAGRY(0)="0^"_ERR
	D LOGERR(ERR)
	D @^%ZOSF("ERRTN")
	Q
	;
AERRA	; ERROR TRAP FOR Global Return Variables
	N ERR S ERR=$$EC^%ZOSV
	S @MAGRY@(0)="0^ERROR "_ERR
	D LOGERR(ERR)
	D @^%ZOSF("ERRTN")
	Q
ERR	; ERROR TRAP FOR String Return variables
	N ERR S ERR=$$EC^%ZOSV
	S MAGRY="0^ERROR "_ERR
	D LOGERR(ERR)
	D @^%ZOSF("ERRTN")
	Q
LOGERR(ERROR)	;
	Q:'$G(MAGJOB("SESSION"))
	N SESS,WRKS,ERR
	S SESS=$G(MAGJOB("SESSION"))
	; Quit if No entry in Session File.
	Q:'$D(^MAG(2006.82,SESS,0))
	I '$D(^MAG(2006.82,SESS,"ERR",0)) S ^MAG(2006.82,SESS,"ERR",0)="^2006.823A^0^0"
	S ERR=$O(^MAG(2006.82,SESS,"ERR"," "),-1)+1
	S ^MAG(2006.82,SESS,"ERR",ERR,0)=ERROR
	S $P(^MAG(2006.82,SESS,"ERR",0),"^",3,4)=ERR_"^"_ERR
	;
	Q:'$G(MAGJOB("WRKSIEN"))
	S WRKS=$G(MAGJOB("WRKSIEN"))
	; Quit if No entry in Workstation File.
	Q:'$D(^MAG(2006.81,WRKS,0))
	S $P(^MAG(2006.81,WRKS,0),"^",11)=ERR
	Q
