- XQALGUI ; SFCIOFO/JLI - KERNEL COMPONENTS FOR ALERTS ;07/24/11 15:02
- ;;8.0;KERNEL;**207,513**;Jul 10, 1995;Build 16
- ;Per VHA Directive 2004-038, this routine should not be modified
- ;
- ; added CURRSURO and SETSURO entry points 3/21/00 jli
- ;
- ; All entry is at the ENTRY tag. The type of processing is indicated by the
- ; variable LOC which contains the name of the tag to be used for processing.
- ; The following tags currently exist and expect the variable names indicated
- ;
- ; SEND
- ; GETLIST
- ; ISPEND
- ; ISNEW
- ; DELETE
- ; FORWARD
- ; CURRSURO
- ; SETSURO
- ;
- ENTRY(XQALRSLT,DATA) ;
- K ^TMP($J) N I,LOC,XQA,XQACTMSG,XQAEND,XQAID,XQALFWD,XQALRSL1,XQAMSG,XQASTART,XQASURO,XQATEXT
- N NAME,XQALSTO S NAME="" S XQALSTO=$NA(^TMP("XQALXQAL",$J)) K @XQALSTO
- F S NAME=$O(DATA(NAME)) Q:NAME="" D I $E(NAME)'=U S @("^TMP(""XQALXQAL"",$J,"_NAME1_")")=DATA(NAME)
- . I $E(NAME)=U S @NAME=DATA(NAME) Q
- . S NAME1=""""
- . F I=1:1 S X=$P(NAME,",",I) Q:X="" S NAME1=NAME1_$S(I>1:",""",1:"")_X_""""
- S NAME="" F S NAME=$O(@XQALSTO@(NAME)) Q:NAME="" D:$D(@XQALSTO@(NAME))>1 I $D(@XQALSTO@(NAME))=1 N @NAME S @NAME=@XQALSTO@(NAME)
- . N NAME1 S NAME1=""
- . F S NAME1=$O(@XQALSTO@(NAME,NAME1)) Q:NAME1="" S @(NAME_"("""_NAME1_""")")=^(NAME1)
- Q:'$D(LOC)
- ; need to add code here to check key if XQAUSER is defined and not DUZ
- G @LOC
- ;
- 2 ;
- SEND ;
- SETUP ; ENTRY FOR SETUP NEW ALERT
- I '$D(XQAUSER) S XQAUSER=DUZ
- Q:($O(XQA(""))="") Q:'$D(XQAMSG)
- I $D(^TMP($J,"XQAL1")) S XQATEXT=$NA(^TMP($J,"XQAL1"))
- D SETUP^XQALERT ; Supported Reference
- Q
- ;
- GETLIST ; GET LIST OF ALERTS FOR USER
- I '$D(XQAUSER) S XQAUSER=DUZ
- S XQALRSLT=$NA(^TMP($J)),XQALRSL1=$NA(^TMP("XQALXQAL",$J)) K @XQALRSL1,@XQALRSLT
- D GETUSER1^XQALDATA(XQALRSL1,XQAUSER) ;
- F I=0:0 S I=$O(@XQALRSL1@(I)) Q:I'>0 S X=^(I) K ^(I) S @XQALRSLT@(I)=X
- Q
- ;
- ISPEND ;
- S XQALRSLT=$NA(^TMP($J,"XQALXQAL")) K @XQALRSLT
- I $O(^XTV(8992,DUZ,"XQA",0))>0 S @XQALRSLT@(1)=1
- E S @XQALRSLT@(1)=0
- Q
- ;
- ISNEW ;
- S XQALRSLT=$NA(^TMP($J,"XQALXQAL")) K @XQALRSLT
- S @XQALRSLT@(1)=0
- F I=0:0 S I=$O(^XTV(8992,DUZ,"XQA",I)) Q:I'>0 I $P($G(^(I,0)),U,4)>0 S @XQALRSLT@(1)=1 Q
- Q
- ;
- DELETE ;
- I '$D(XQAUSER) S XQAUSER=DUZ
- D DELETE^XQALERT
- Q
- ;
- FORWARD ;
- I '$D(XQAUSER) N XQAUSER S XQAUSER=DUZ
- S XQALFWD(1)=IEN
- D FORWARD^XQALFWD(.XQALFWD,.XQA,"A",$G(XQACTMSG))
- Q
- ;
- GETSURO ; GET CURRENT SURROGATE INFORMATION (IF ANY)
- I '$D(XQAUSER) S XQAUSER=DUZ
- N X S X=$$GETSURO^XQALSURO(XQAUSER) I X'>0 S X="" ; SUPPORTED REFERENCE
- S XQALRSLT=$NA(^TMP($J,"XQALXQAL")) K @XQALRSLT
- S @XQALRSLT@(1)=X
- Q
- ;
- SETSURO ; SET NEW SURROGATE
- Q:XQASURO'>0
- I '$D(XQAUSER) S XQAUSER=DUZ
- S XQALRSLT=$NA(^TMP("XQALRSLT",$J)) K @XQALRSLT
- S @XQALRSLT@(1)=$$SETSURO1^XQALSURO(XQAUSER,XQASURO,XQASTART,XQAEND) ; SUPPORTED REFERENCE
- Q
- ;
- SUROFOR ;
- N SUROLIST S XQALRSLT=$NA(^TMP("XQALRSLT",$J)) K @XQALRSLT
- I '$D(XQAUSER) S XQAUSER=DUZ
- D SUROFOR^XQALSURO(.SUROLIST,XQAUSER)
- M @XQALRSLT=SUROLIST
- Q
- Q
- ;
- REMVSURO ; REMOVE SURROGATE
- I '$D(XQAUSER) S XQAUSER=DUZ
- D REMVSURO^XQALSURO(XQAUSER) ; SUPPORTED REFERENCE
- Q
- ;
- GETDATA ;
- S XQALRSLT=$NA(^TMP("XQALRSLT",$J)) K @XQALRSLT
- N IEN S IEN=$O(^XTV(8992,"AXQA",XQAID,DUZ,0)) Q:IEN'>0
- S @XQALRSLT@(1)=$P(^XTV(8992,DUZ,"XQA",IEN,0),U,7,8)
- S @XQALRSLT@(2)=$G(^XTV(8992,DUZ,"XQA",IEN,1))
- S @XQALRSLT@(3)=$P($G(^XTV(8992,DUZ,"XQA",IEN,3)),U)
- Q
- ;
- GETLONG ; TAKE LONG TEXT BACK TO THE CLIENT
- S XQALRSLT=$NA(^TMP("XQALRSLT",$J)) K @XQALRSLT
- I '$D(XQAUSER) N XQAUSER S XQAUSER=DUZ
- N IEN,IENS,XQALTMP S IEN=$O(^XTV(8992,"AXQA",XQAID,XQAUSER,0)) Q:IEN'>0
- S IENS=IEN_","_XQAUSER_",",XQALTMP=$NA(^TMP($J)) K @XQALTMP
- D GETS^DIQ(8992.01,(IEN_","_XQAUSER_","),"4","",XQALTMP)
- F I=0:0 S I=$O(@XQALTMP@(8992.01,IENS,4,I)) Q:I'>0 S @XQALRSLT@(I)=^(I)
- K @XQALTMP
- Q
- ;
- CHKADPAC ; Check for ADPAC or IRM status
- S XQALRSLT=$NA(^TMP("XQALRSLT",$J)) K @XQALRSLT
- N XQALVAL,RESULT S XQALVAL=0
- D OWNSKEY^XUSRB(.RESULT,"XQAL-DELETE") S XQALVAL=RESULT(0)
- S @XQALRSLT@(1)=XQALVAL
- Q
- ;
- XQALGUI ; SFCIOFO/JLI - KERNEL COMPONENTS FOR ALERTS ;07/24/11 15:02
- +1 ;;8.0;KERNEL;**207,513**;Jul 10, 1995;Build 16
- +2 ;Per VHA Directive 2004-038, this routine should not be modified
- +3 ;
- +4 ; added CURRSURO and SETSURO entry points 3/21/00 jli
- +5 ;
- +6 ; All entry is at the ENTRY tag. The type of processing is indicated by the
- +7 ; variable LOC which contains the name of the tag to be used for processing.
- +8 ; The following tags currently exist and expect the variable names indicated
- +9 ;
- +10 ; SEND
- +11 ; GETLIST
- +12 ; ISPEND
- +13 ; ISNEW
- +14 ; DELETE
- +15 ; FORWARD
- +16 ; CURRSURO
- +17 ; SETSURO
- +18 ;
- ENTRY(XQALRSLT,DATA) ;
- +1 KILL ^TMP($JOB)
- NEW I,LOC,XQA,XQACTMSG,XQAEND,XQAID,XQALFWD,XQALRSL1,XQAMSG,XQASTART,XQASURO,XQATEXT
- +2 NEW NAME,XQALSTO
- SET NAME=""
- SET XQALSTO=$NAME(^TMP("XQALXQAL",$JOB))
- KILL @XQALSTO
- +3 FOR
- SET NAME=$ORDER(DATA(NAME))
- IF NAME=""
- QUIT
- Begin DoDot:1
- +4 IF $EXTRACT(NAME)=U
- SET @NAME=DATA(NAME)
- QUIT
- +5 SET NAME1=""""
- +6 FOR I=1:1
- SET X=$PIECE(NAME,",",I)
- IF X=""
- QUIT
- SET NAME1=NAME1_$SELECT(I>1:",""",1:"")_X_""""
- End DoDot:1
- IF $EXTRACT(NAME)'=U
- SET @("^TMP(""XQALXQAL"",$J,"_NAME1_")")=DATA(NAME)
- +7 SET NAME=""
- FOR
- SET NAME=$ORDER(@XQALSTO@(NAME))
- IF NAME=""
- QUIT
- IF $DATA(@XQALSTO@(NAME))>1
- Begin DoDot:1
- +8 NEW NAME1
- SET NAME1=""
- +9 FOR
- SET NAME1=$ORDER(@XQALSTO@(NAME,NAME1))
- IF NAME1=""
- QUIT
- SET @(NAME_"("""_NAME1_""")")=^(NAME1)
- End DoDot:1
- IF $DATA(@XQALSTO@(NAME))=1
- NEW @NAME
- SET @NAME=@XQALSTO@(NAME)
- +10 IF '$DATA(LOC)
- QUIT
- +11 ; need to add code here to check key if XQAUSER is defined and not DUZ
- +12 GOTO @LOC
- +13 ;
- 2 ;
- SEND ;
- SETUP ; ENTRY FOR SETUP NEW ALERT
- +1 IF '$DATA(XQAUSER)
- SET XQAUSER=DUZ
- +2 IF ($ORDER(XQA(""))="")
- QUIT
- IF '$DATA(XQAMSG)
- QUIT
- +3 IF $DATA(^TMP($JOB,"XQAL1"))
- SET XQATEXT=$NAME(^TMP($JOB,"XQAL1"))
- +4 ; Supported Reference
- DO SETUP^XQALERT
- +5 QUIT
- +6 ;
- GETLIST ; GET LIST OF ALERTS FOR USER
- +1 IF '$DATA(XQAUSER)
- SET XQAUSER=DUZ
- +2 SET XQALRSLT=$NAME(^TMP($JOB))
- SET XQALRSL1=$NAME(^TMP("XQALXQAL",$JOB))
- KILL @XQALRSL1,@XQALRSLT
- +3 ;
- DO GETUSER1^XQALDATA(XQALRSL1,XQAUSER)
- +4 FOR I=0:0
- SET I=$ORDER(@XQALRSL1@(I))
- IF I'>0
- QUIT
- SET X=^(I)
- KILL ^(I)
- SET @XQALRSLT@(I)=X
- +5 QUIT
- +6 ;
- ISPEND ;
- +1 SET XQALRSLT=$NAME(^TMP($JOB,"XQALXQAL"))
- KILL @XQALRSLT
- +2 IF $ORDER(^XTV(8992,DUZ,"XQA",0))>0
- SET @XQALRSLT@(1)=1
- +3 IF '$TEST
- SET @XQALRSLT@(1)=0
- +4 QUIT
- +5 ;
- ISNEW ;
- +1 SET XQALRSLT=$NAME(^TMP($JOB,"XQALXQAL"))
- KILL @XQALRSLT
- +2 SET @XQALRSLT@(1)=0
- +3 FOR I=0:0
- SET I=$ORDER(^XTV(8992,DUZ,"XQA",I))
- IF I'>0
- QUIT
- IF $PIECE($GET(^(I,0)),U,4)>0
- SET @XQALRSLT@(1)=1
- QUIT
- +4 QUIT
- +5 ;
- DELETE ;
- +1 IF '$DATA(XQAUSER)
- SET XQAUSER=DUZ
- +2 DO DELETE^XQALERT
- +3 QUIT
- +4 ;
- FORWARD ;
- +1 IF '$DATA(XQAUSER)
- NEW XQAUSER
- SET XQAUSER=DUZ
- +2 SET XQALFWD(1)=IEN
- +3 DO FORWARD^XQALFWD(.XQALFWD,.XQA,"A",$GET(XQACTMSG))
- +4 QUIT
- +5 ;
- GETSURO ; GET CURRENT SURROGATE INFORMATION (IF ANY)
- +1 IF '$DATA(XQAUSER)
- SET XQAUSER=DUZ
- +2 ; SUPPORTED REFERENCE
- NEW X
- SET X=$$GETSURO^XQALSURO(XQAUSER)
- IF X'>0
- SET X=""
- +3 SET XQALRSLT=$NAME(^TMP($JOB,"XQALXQAL"))
- KILL @XQALRSLT
- +4 SET @XQALRSLT@(1)=X
- +5 QUIT
- +6 ;
- SETSURO ; SET NEW SURROGATE
- +1 IF XQASURO'>0
- QUIT
- +2 IF '$DATA(XQAUSER)
- SET XQAUSER=DUZ
- +3 SET XQALRSLT=$NAME(^TMP("XQALRSLT",$JOB))
- KILL @XQALRSLT
- +4 ; SUPPORTED REFERENCE
- SET @XQALRSLT@(1)=$$SETSURO1^XQALSURO(XQAUSER,XQASURO,XQASTART,XQAEND)
- +5 QUIT
- +6 ;
- SUROFOR ;
- +1 NEW SUROLIST
- SET XQALRSLT=$NAME(^TMP("XQALRSLT",$JOB))
- KILL @XQALRSLT
- +2 IF '$DATA(XQAUSER)
- SET XQAUSER=DUZ
- +3 DO SUROFOR^XQALSURO(.SUROLIST,XQAUSER)
- +4 MERGE @XQALRSLT=SUROLIST
- +5 QUIT
- +6 QUIT
- +7 ;
- REMVSURO ; REMOVE SURROGATE
- +1 IF '$DATA(XQAUSER)
- SET XQAUSER=DUZ
- +2 ; SUPPORTED REFERENCE
- DO REMVSURO^XQALSURO(XQAUSER)
- +3 QUIT
- +4 ;
- GETDATA ;
- +1 SET XQALRSLT=$NAME(^TMP("XQALRSLT",$JOB))
- KILL @XQALRSLT
- +2 NEW IEN
- SET IEN=$ORDER(^XTV(8992,"AXQA",XQAID,DUZ,0))
- IF IEN'>0
- QUIT
- +3 SET @XQALRSLT@(1)=$PIECE(^XTV(8992,DUZ,"XQA",IEN,0),U,7,8)
- +4 SET @XQALRSLT@(2)=$GET(^XTV(8992,DUZ,"XQA",IEN,1))
- +5 SET @XQALRSLT@(3)=$PIECE($GET(^XTV(8992,DUZ,"XQA",IEN,3)),U)
- +6 QUIT
- +7 ;
- GETLONG ; TAKE LONG TEXT BACK TO THE CLIENT
- +1 SET XQALRSLT=$NAME(^TMP("XQALRSLT",$JOB))
- KILL @XQALRSLT
- +2 IF '$DATA(XQAUSER)
- NEW XQAUSER
- SET XQAUSER=DUZ
- +3 NEW IEN,IENS,XQALTMP
- SET IEN=$ORDER(^XTV(8992,"AXQA",XQAID,XQAUSER,0))
- IF IEN'>0
- QUIT
- +4 SET IENS=IEN_","_XQAUSER_","
- SET XQALTMP=$NAME(^TMP($JOB))
- KILL @XQALTMP
- +5 DO GETS^DIQ(8992.01,(IEN_","_XQAUSER_","),"4","",XQALTMP)
- +6 FOR I=0:0
- SET I=$ORDER(@XQALTMP@(8992.01,IENS,4,I))
- IF I'>0
- QUIT
- SET @XQALRSLT@(I)=^(I)
- +7 KILL @XQALTMP
- +8 QUIT
- +9 ;
- CHKADPAC ; Check for ADPAC or IRM status
- +1 SET XQALRSLT=$NAME(^TMP("XQALRSLT",$JOB))
- KILL @XQALRSLT
- +2 NEW XQALVAL,RESULT
- SET XQALVAL=0
- +3 DO OWNSKEY^XUSRB(.RESULT,"XQAL-DELETE")
- SET XQALVAL=RESULT(0)
- +4 SET @XQALRSLT@(1)=XQALVAL
- +5 QUIT
- +6 ;