ORB3UTL ;SLC/JMH - OE/RR Notification Utilities ;Aug 20, 2019@09:43
;;3.0;ORDER ENTRY/RESULTS REPORTING;**377,539**;Dec 17, 1997;Build 41
;
GENALRTS ;fire off due alerts
;get unfired records
N ORI S ORI=0
F S ORI=$O(^OR(100.97,"C",0,ORI)) Q:'ORI D
.N ORWHEN S ORWHEN=$P($G(^OR(100.97,ORI,0)),U,3)
.I ORWHEN<$$NOW^XLFDT() D GENALRT(ORI) W !,ORI
Q
;
GENALRT(ORID) ;fire a specific scheduled alert
N ORDUZ,ORMSG
S ORDUZ($P($G(^OR(100.97,ORID,0)),U,4))=$P($G(^OR(100.97,ORID,0)),U,4)
S ORMSG=$G(^OR(100.97,ORID,2))
N ORI S ORI=0 F S ORI=$O(^OR(100.97,ORID,3,ORI)) Q:'ORI S ORMSG(ORI)=$G(^OR(100.97,ORID,3,ORI,0))
N ORDFN S ORDFN=+$G(^OR(100.97,ORID,0))
D EN^ORB3(90,ORDFN,"",.ORDUZ,.ORMSG,"")
N ORXQAID S ORXQAID="OR,"_ORDFN_",90;"_$P($G(^OR(100.97,ORID,0)),U,4)_";"_$$NOW^XLFDT()
K ORFDART,ORMSGRT
S ORFDART(100.97,ORID_",",4)=ORXQAID
S ORFDART(100.97,ORID_",",7)=$$NOW^XLFDT()
D FILE^DIE("","ORFDART","ORMSGRT")
Q ORXQAID
;
SCHALRT(ORDATA) ;Schedule a long text alert
;ORDATA fields
; PATIENT - File 2 IEN - for the patient this alert is for
; WHEN - date/time of when this alert will be generated
; WHO - File 200 IEN of who will receive this alert
; TITLE - Free Text title of alert
; BODY(D0) - Word Processing body of the alert for long text
N DIC,DIE,DR,DA,ORFDART,ORIENRT,ORMSGRT
S ORFDART(100.97,"+1,",.01)=ORDATA("PATIENT")
D UPDATE^DIE("","ORFDART","ORIENRT","ORMSGRT")
I $D(ORIENRT(1)) S DA=ORIENRT(1)
S DIC="^OR(100.97,",DIC(0)="F",DIE=DIC
S DR="1////"_$$NOW^XLFDT()_";2////"_ORDATA("WHEN")_";3////"_ORDATA("WHO")_";5////"_ORDATA("TITLE")_";4////0"_";8////"_$G(ORDATA("IFN"))
D ^DIE
D WP^DIE(100.97,DA_",",6,,"ORDATA(""BODY"")","ERROR")
Q
;
DEFER(ORY,ORPROV,ORALERT,ORDT) ;defer an alert
;ORALERT - alert to defer
;ORPROV - provider to defer the alert for
;ORDT - date/time to defer the alert until
N ORROOT
S ORY=1
;CALL KERNEL API FOR DEFERRAL
D DEFALERT^XQALDATA("ORROOT",ORPROV,ORDT,ORALERT)
N ORRES S ORRES=$G(ORROOT(1),1)
I $P(ORRES,U)<0 S ORY=ORRES
Q
NOTIFPG(ORY,ORPAT,ORFROM,ORTO) ;page through a patients alerts
;ORPAT - patient DFN
;ORPG - page to get
;ORPGSZ - page size (defaults to 25)
N URGLIST,REMLIST,NONORLST,ORY2,I,ORTOTU,ORTOT
N ALRT,ALRTDFN,ALRTDT,ALRTI,ALRTLOC,ALRTMSG,ALRTPT,ALRTXQA,FWDBY,J,NONOR,ORHAS,ORN,ORN0,ORURG,PRE,REM,URG
D INDNOT(.ORY2)
K ORY
K ^TMP("ORB2",$J),^TMP("ORBG",$J)
D GETPAT3^XQALDATA("^TMP(""ORB2"",$J)",ORPAT,ORFROM,ORTO)
D URGLIST^ORQORB(.URGLIST)
D REMLIST^ORQORB(.REMLIST)
D REMNONOR^ORQORB(.NONORLST)
S (I,J)=0
F S I=$O(^TMP("ORB2",$J,I)) Q:'I D
.N ORPROV ; ajb
.S ALRTDFN=""
.S ALRT=^TMP("ORB2",$J,I)
.S PRE=$E(ALRT,1,1)
.S ALRTXQA=$P(ALRT,U,2) ;XQAID
.S NONOR="" F S NONOR=$O(NONORLST(NONOR)) Q:NONOR="" D
..I ALRTXQA[NONOR S REM=1 ;allow this type of alert to be Removed
.S ALRTMSG=$P($P(ALRT,U),PRE_" ",2)
.I $E(ALRT,4,8)'="-----" D ;not forwarded alert info/comment
..S ORURG="n/a"
..S ALRTI=$P(ALRT," ")
..S ALRTPT=""
..S ALRTLOC=""
..I $E($P(ALRTXQA,";"),1,3)="TIU" S ORURG="Moderate"
..I $P(ALRTXQA,",")="OR" D
...; ajb
... D
.... N XQALERTD D ALERTDAT^XQALBUTL(ALRTXQA)
.... S ORPROV=$$GET1^DIQ(100,+XQALERTD("2"),1)
...; ajb
...S ORN=$P($P(ALRTXQA,";"),",",3)
...S URG=$G(URGLIST(ORN))
...S ORURG=$S(URG=1:"HIGH",URG=2:"Moderate",1:"low")
...S REM=$G(REMLIST(ORN))
...S ORN0=$G(^ORD(100.9,+ORN,0))
...S ALRTI=$S(ORN=90:"L",$P(ORN0,U,6)="INFODEL":"I",1:"")
...S ALRTDFN=$P(ALRTXQA,",",2)
...S ALRTLOC=$G(^DPT(+$G(ALRTDFN),.1))
..S ALRTI=$S(ALRTI="I":"I",ALRTI="L":"L",1:"")
..I (ALRT["): ")!($G(ORN)=27&(ALRT[") CV")) D ;WAT
...S ALRTPT=$P(ALRT,": ")
...S ALRTPT=$E(ALRTPT,4,$L(ALRTPT))
...I $G(ORN)=27&(ALRT[") CV") S ALRTMSG=$P($P(ALRT,U),": ",2) ;WAT
...E S ALRTMSG=$P($P(ALRT,U),"): ",2) ;WAT
...I $E(ALRTMSG,1,1)="[" D
....S:'$L(ALRTLOC) ALRTLOC=$P($P(ALRTMSG,"]"),"[",2)
....S ALRTMSG=$P(ALRTMSG,"] ",2)
..I '$L($G(ALRTPT)) S ALRTPT="no patient"
..S ALRTDT=$P(ALRTXQA,";",3)
..S ALRTDT=$P(ALRTDT,".")_"."_$E($P(ALRTDT,".",2)_"0000",1,4)
..S ALRTDT=$E(ALRTDT,4,5)_"/"_$E(ALRTDT,6,7)_"/"_($E(ALRTDT,1,3)+1700)_"@"_$E($P(ALRTDT,".",2),1,2)_":"_$E($P(ALRTDT,".",2),3,4)
..;S ALRTDT=($E(ALRTDT,1,3)+1700)_"/"_$E(ALRTDT,4,5)_"/"_$E(ALRTDT,6,7)_"@"_$E($P(ALRTDT,".",2),1,2)_":"_$E($P(ALRTDT,".",2),3,4)
..S J=J+1,^TMP("ORBG",$J,J)=ALRTI_U_ALRTPT_U_ALRTLOC_U_ORURG_U_ALRTDT_U
..S ^TMP("ORBG",$J,J)=^TMP("ORBG",$J,J)_ALRTMSG_U_U_ALRTXQA_U_$G(REM)_U
.;
.;if alert forward info/comment:
.I $E(ALRTMSG,1,5)="-----" D
..S ALRTMSG=$P(ALRTMSG,"-----",2)
..I $E(ALRTMSG,1,14)=FWDBY D
...S J=J+1,^TMP("ORBG",$J,J)=FWDBY_U_$P($P(ALRTMSG,FWDBY,2),"Generated: ")_$P($P(ALRTMSG,FWDBY,2),"Generated: ",2)
..E S ^TMP("ORBG",$J,J)=^TMP("ORBG",$J,J)_U_""""_ALRTMSG_""""
.S ORHAS=$S($D(ORY2(ALRTXQA)):1,1:0)
.S ^TMP("ORBG",$J,J)=^TMP("ORBG",$J,J)_U_ORHAS
.I $G(ORPROV)'="" S ^TMP("ORBG",$J,J)=^TMP("ORBG",$J,J)_U_ORPROV ; ajb
;S ^TMP("ORBG",$J)=""
S ^TMP("ORBG",$J,0)=^TMP("ORB2",$J,0)
S ORY=$NA(^TMP("ORBG",$J))
Q
;
INDNOT(ORY) ;index the user's alerts by the xqaldata, include deferred alerts
N ORY2 D FASTUSER^ORWORB(.ORY2,0)
N ORI S ORI=0 F S ORI=$O(@ORY2@(ORI)) Q:'ORI D
. I $L($P(@ORY2@(ORI),U,8))>0 S ORY($P(@ORY2@(ORI),U,8))=@ORY2@(ORI)
Q
;
GETNOTIF(RETURN,ALERT) ; Return a notification structure to the SMART Dialog System
Set RETURN=$NA(^TMP($J)) Kill @RETURN
New ORTMP,X,IEN,IENS,DFN
Set DFN=+$Piece(ALERT,",",2)
Set IEN=+$Piece(ALERT,",",3),IENS=IEN_","
Set @RETURN@(0)="PROCESS AS SMART NOTIFICATION="_+$$GET1^DIQ(100.9,IENS,6.1,"I")
Quit:'$Piece(@RETURN@(0),"=",2) ; Flag not set for SMART processing
Set @RETURN@(1)="NOTE TITLE="_$$GET1^DIQ(100.9,IENS,6.2,"E")
Set @RETURN@(2)="NOTE TITLE IEN="_+$$GET1^DIQ(100.9,IENS,6.2,"I")
Set @RETURN@(3)="NOTIFICATION IEN="_IEN
Set @RETURN@(4)="NOTIFICATION NAME="_$$GET1^DIQ(100.9,IENS,.01,"E")
Set @RETURN@(5)="ALLOW ADDENDUM="_+$$GET1^DIQ(100.9,IENS,6.3,"I")
Set @RETURN@(6)="TIU OBJECT="_+$$GET1^DIQ(100.9,IENS,6.4,"I")
Set @RETURN@(7)="DFN="_DFN
Set @RETURN@(8)="ALERT="_ALERT
Set @RETURN@(9)="PATIENT NAME="_$P($G(^DPT(DFN,0)),U)
Quit
;
GETNOTES(RETURN,DOC,DFN) ; Returns existing notes that can be addended
Set RETURN=$NA(^TMP($J)) Kill @RETURN
New ROOT,STAT,IEN,LOOP
For STAT=7,8 Do
. Set LOOP=$Name(^TIU(8925,"APT",DFN,DOC,STAT))
. Set ROOT=$Extract(LOOP,1,$Length(LOOP)-1)_","
. For Set LOOP=$Query(@LOOP) Quit:$Piece(LOOP,ROOT)'="" Do
. . S IEN=$QSubscript(LOOP,$QLength(LOOP))
. . ; Validate MAKE ADDENDUM
. . Q:'$$CANDO^TIULP(IEN,"MAKE ADDENDUM")
. . Set @RETURN@(0)=$Get(@RETURN@(0))+1
. . Set @RETURN@(@RETURN@(0))=IEN_U_$$GET1^DIQ(8925,IEN,.01)_U_$$GET1^DIQ(8925,IEN,1301)_U_$$GET1^DIQ(8925,IEN,1211)
S @RETURN@(0)="COUNT="_$G(@RETURN@(0))
Quit
;
GETDESC(RETURN,ALERT) ; Returns notification description
S RETURN=$NA(^TMP($J)) K @RETURN
N ORNOTID S ORNOTID=$P($P(ALERT,";"),",",3)
I 'ORNOTID D Q
.S @RETURN@(0)="UNABLE TO DETERMINE ALERT"
N ORTIUOBJ S ORTIUOBJ=$P($G(^ORD(100.9,ORNOTID,6)),U,4)
I 'ORTIUOBJ D Q
.S @RETURN@(0)="NO DATA OBJECT SETUP"
S ORTIUOBJ=$P($G(^TIU(8925.1,ORTIUOBJ,0)),U,1)
I '$L(ORTIUOBJ) D Q
.S @RETURN@(0)="NO DATA OBJECT SETUP"
N DFN S DFN=$P($P(ALERT,";"),",",2)
I 'DFN D Q
.S @RETURN@(0)="UNABLE TO DETERMINE PATIENT"
; Value from the TIU OBJECT specified in file 100.9, field 6.4
N ORBOIL S ORBOIL=$$BOIL^TIUSRVD("|"_ORTIUOBJ_"|")
I $E(ORBOIL,0,2)="~@" D
.N ORGLOB S ORGLOB=$P(ORBOIL,"~@",2)
.I $D(@ORGLOB) D
..N ORGLOBI S ORGLOBI=0 F S ORGLOBI=$O(@ORGLOB@(ORGLOBI)) Q:'ORGLOBI D
...S @RETURN@(ORGLOBI-1)=@ORGLOB@(ORGLOBI,0)
E S @RETURN@(0)=ORBOIL
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HORB3UTL 7811 printed Oct 16, 2024@18:28:10 Page 2
ORB3UTL ;SLC/JMH - OE/RR Notification Utilities ;Aug 20, 2019@09:43
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**377,539**;Dec 17, 1997;Build 41
+2 ;
GENALRTS ;fire off due alerts
+1 ;get unfired records
+2 NEW ORI
SET ORI=0
+3 FOR
SET ORI=$ORDER(^OR(100.97,"C",0,ORI))
if 'ORI
QUIT
Begin DoDot:1
+4 NEW ORWHEN
SET ORWHEN=$PIECE($GET(^OR(100.97,ORI,0)),U,3)
+5 IF ORWHEN<$$NOW^XLFDT()
DO GENALRT(ORI)
WRITE !,ORI
End DoDot:1
+6 QUIT
+7 ;
GENALRT(ORID) ;fire a specific scheduled alert
+1 NEW ORDUZ,ORMSG
+2 SET ORDUZ($PIECE($GET(^OR(100.97,ORID,0)),U,4))=$PIECE($GET(^OR(100.97,ORID,0)),U,4)
+3 SET ORMSG=$GET(^OR(100.97,ORID,2))
+4 NEW ORI
SET ORI=0
FOR
SET ORI=$ORDER(^OR(100.97,ORID,3,ORI))
if 'ORI
QUIT
SET ORMSG(ORI)=$GET(^OR(100.97,ORID,3,ORI,0))
+5 NEW ORDFN
SET ORDFN=+$GET(^OR(100.97,ORID,0))
+6 DO EN^ORB3(90,ORDFN,"",.ORDUZ,.ORMSG,"")
+7 NEW ORXQAID
SET ORXQAID="OR,"_ORDFN_",90;"_$PIECE($GET(^OR(100.97,ORID,0)),U,4)_";"_$$NOW^XLFDT()
+8 KILL ORFDART,ORMSGRT
+9 SET ORFDART(100.97,ORID_",",4)=ORXQAID
+10 SET ORFDART(100.97,ORID_",",7)=$$NOW^XLFDT()
+11 DO FILE^DIE("","ORFDART","ORMSGRT")
+12 QUIT ORXQAID
+13 ;
SCHALRT(ORDATA) ;Schedule a long text alert
+1 ;ORDATA fields
+2 ; PATIENT - File 2 IEN - for the patient this alert is for
+3 ; WHEN - date/time of when this alert will be generated
+4 ; WHO - File 200 IEN of who will receive this alert
+5 ; TITLE - Free Text title of alert
+6 ; BODY(D0) - Word Processing body of the alert for long text
+7 NEW DIC,DIE,DR,DA,ORFDART,ORIENRT,ORMSGRT
+8 SET ORFDART(100.97,"+1,",.01)=ORDATA("PATIENT")
+9 DO UPDATE^DIE("","ORFDART","ORIENRT","ORMSGRT")
+10 IF $DATA(ORIENRT(1))
SET DA=ORIENRT(1)
+11 SET DIC="^OR(100.97,"
SET DIC(0)="F"
SET DIE=DIC
+12 SET DR="1////"_$$NOW^XLFDT()_";2////"_ORDATA("WHEN")_";3////"_ORDATA("WHO")_";5////"_ORDATA("TITLE")_";4////0"_";8////"_$GET(ORDATA("IFN"))
+13 DO ^DIE
+14 DO WP^DIE(100.97,DA_",",6,,"ORDATA(""BODY"")","ERROR")
+15 QUIT
+16 ;
DEFER(ORY,ORPROV,ORALERT,ORDT) ;defer an alert
+1 ;ORALERT - alert to defer
+2 ;ORPROV - provider to defer the alert for
+3 ;ORDT - date/time to defer the alert until
+4 NEW ORROOT
+5 SET ORY=1
+6 ;CALL KERNEL API FOR DEFERRAL
+7 DO DEFALERT^XQALDATA("ORROOT",ORPROV,ORDT,ORALERT)
+8 NEW ORRES
SET ORRES=$GET(ORROOT(1),1)
+9 IF $PIECE(ORRES,U)<0
SET ORY=ORRES
+10 QUIT
NOTIFPG(ORY,ORPAT,ORFROM,ORTO) ;page through a patients alerts
+1 ;ORPAT - patient DFN
+2 ;ORPG - page to get
+3 ;ORPGSZ - page size (defaults to 25)
+4 NEW URGLIST,REMLIST,NONORLST,ORY2,I,ORTOTU,ORTOT
+5 NEW ALRT,ALRTDFN,ALRTDT,ALRTI,ALRTLOC,ALRTMSG,ALRTPT,ALRTXQA,FWDBY,J,NONOR,ORHAS,ORN,ORN0,ORURG,PRE,REM,URG
+6 DO INDNOT(.ORY2)
+7 KILL ORY
+8 KILL ^TMP("ORB2",$JOB),^TMP("ORBG",$JOB)
+9 DO GETPAT3^XQALDATA("^TMP(""ORB2"",$J)",ORPAT,ORFROM,ORTO)
+10 DO URGLIST^ORQORB(.URGLIST)
+11 DO REMLIST^ORQORB(.REMLIST)
+12 DO REMNONOR^ORQORB(.NONORLST)
+13 SET (I,J)=0
+14 FOR
SET I=$ORDER(^TMP("ORB2",$JOB,I))
if 'I
QUIT
Begin DoDot:1
+15 ; ajb
NEW ORPROV
+16 SET ALRTDFN=""
+17 SET ALRT=^TMP("ORB2",$JOB,I)
+18 SET PRE=$EXTRACT(ALRT,1,1)
+19 ;XQAID
SET ALRTXQA=$PIECE(ALRT,U,2)
+20 SET NONOR=""
FOR
SET NONOR=$ORDER(NONORLST(NONOR))
if NONOR=""
QUIT
Begin DoDot:2
+21 ;allow this type of alert to be Removed
IF ALRTXQA[NONOR
SET REM=1
End DoDot:2
+22 SET ALRTMSG=$PIECE($PIECE(ALRT,U),PRE_" ",2)
+23 ;not forwarded alert info/comment
IF $EXTRACT(ALRT,4,8)'="-----"
Begin DoDot:2
+24 SET ORURG="n/a"
+25 SET ALRTI=$PIECE(ALRT," ")
+26 SET ALRTPT=""
+27 SET ALRTLOC=""
+28 IF $EXTRACT($PIECE(ALRTXQA,";"),1,3)="TIU"
SET ORURG="Moderate"
+29 IF $PIECE(ALRTXQA,",")="OR"
Begin DoDot:3
+30 ; ajb
+31 Begin DoDot:4
+32 NEW XQALERTD
DO ALERTDAT^XQALBUTL(ALRTXQA)
+33 SET ORPROV=$$GET1^DIQ(100,+XQALERTD("2"),1)
End DoDot:4
+34 ; ajb
+35 SET ORN=$PIECE($PIECE(ALRTXQA,";"),",",3)
+36 SET URG=$GET(URGLIST(ORN))
+37 SET ORURG=$SELECT(URG=1:"HIGH",URG=2:"Moderate",1:"low")
+38 SET REM=$GET(REMLIST(ORN))
+39 SET ORN0=$GET(^ORD(100.9,+ORN,0))
+40 SET ALRTI=$SELECT(ORN=90:"L",$PIECE(ORN0,U,6)="INFODEL":"I",1:"")
+41 SET ALRTDFN=$PIECE(ALRTXQA,",",2)
+42 SET ALRTLOC=$GET(^DPT(+$GET(ALRTDFN),.1))
End DoDot:3
+43 SET ALRTI=$SELECT(ALRTI="I":"I",ALRTI="L":"L",1:"")
+44 ;WAT
IF (ALRT["): ")!($GET(ORN)=27&(ALRT[") CV"))
Begin DoDot:3
+45 SET ALRTPT=$PIECE(ALRT,": ")
+46 SET ALRTPT=$EXTRACT(ALRTPT,4,$LENGTH(ALRTPT))
+47 ;WAT
IF $GET(ORN)=27&(ALRT[") CV")
SET ALRTMSG=$PIECE($PIECE(ALRT,U),": ",2)
+48 ;WAT
IF '$TEST
SET ALRTMSG=$PIECE($PIECE(ALRT,U),"): ",2)
+49 IF $EXTRACT(ALRTMSG,1,1)="["
Begin DoDot:4
+50 if '$LENGTH(ALRTLOC)
SET ALRTLOC=$PIECE($PIECE(ALRTMSG,"]"),"[",2)
+51 SET ALRTMSG=$PIECE(ALRTMSG,"] ",2)
End DoDot:4
End DoDot:3
+52 IF '$LENGTH($GET(ALRTPT))
SET ALRTPT="no patient"
+53 SET ALRTDT=$PIECE(ALRTXQA,";",3)
+54 SET ALRTDT=$PIECE(ALRTDT,".")_"."_$EXTRACT($PIECE(ALRTDT,".",2)_"0000",1,4)
+55 SET ALRTDT=$EXTRACT(ALRTDT,4,5)_"/"_$EXTRACT(ALRTDT,6,7)_"/"_($EXTRACT(ALRTDT,1,3)+1700)_"@"_$EXTRACT($PIECE(ALRTDT,".",2),1,2)_":"_$EXTRACT($PIECE(ALRTDT,".",2),3,4)
+56 ;S ALRTDT=($E(ALRTDT,1,3)+1700)_"/"_$E(ALRTDT,4,5)_"/"_$E(ALRTDT,6,7)_"@"_$E($P(ALRTDT,".",2),1,2)_":"_$E($P(ALRTDT,".",2),3,4)
+57 SET J=J+1
SET ^TMP("ORBG",$JOB,J)=ALRTI_U_ALRTPT_U_ALRTLOC_U_ORURG_U_ALRTDT_U
+58 SET ^TMP("ORBG",$JOB,J)=^TMP("ORBG",$JOB,J)_ALRTMSG_U_U_ALRTXQA_U_$GET(REM)_U
End DoDot:2
+59 ;
+60 ;if alert forward info/comment:
+61 IF $EXTRACT(ALRTMSG,1,5)="-----"
Begin DoDot:2
+62 SET ALRTMSG=$PIECE(ALRTMSG,"-----",2)
+63 IF $EXTRACT(ALRTMSG,1,14)=FWDBY
Begin DoDot:3
+64 SET J=J+1
SET ^TMP("ORBG",$JOB,J)=FWDBY_U_$PIECE($PIECE(ALRTMSG,FWDBY,2),"Generated: ")_$PIECE($PIECE(ALRTMSG,FWDBY,2),"Generated: ",2)
End DoDot:3
+65 IF '$TEST
SET ^TMP("ORBG",$JOB,J)=^TMP("ORBG",$JOB,J)_U_""""_ALRTMSG_""""
End DoDot:2
+66 SET ORHAS=$SELECT($DATA(ORY2(ALRTXQA)):1,1:0)
+67 SET ^TMP("ORBG",$JOB,J)=^TMP("ORBG",$JOB,J)_U_ORHAS
+68 ; ajb
IF $GET(ORPROV)'=""
SET ^TMP("ORBG",$JOB,J)=^TMP("ORBG",$JOB,J)_U_ORPROV
End DoDot:1
+69 ;S ^TMP("ORBG",$J)=""
+70 SET ^TMP("ORBG",$JOB,0)=^TMP("ORB2",$JOB,0)
+71 SET ORY=$NAME(^TMP("ORBG",$JOB))
+72 QUIT
+73 ;
INDNOT(ORY) ;index the user's alerts by the xqaldata, include deferred alerts
+1 NEW ORY2
DO FASTUSER^ORWORB(.ORY2,0)
+2 NEW ORI
SET ORI=0
FOR
SET ORI=$ORDER(@ORY2@(ORI))
if 'ORI
QUIT
Begin DoDot:1
+3 IF $LENGTH($PIECE(@ORY2@(ORI),U,8))>0
SET ORY($PIECE(@ORY2@(ORI),U,8))=@ORY2@(ORI)
End DoDot:1
+4 QUIT
+5 ;
GETNOTIF(RETURN,ALERT) ; Return a notification structure to the SMART Dialog System
+1 SET RETURN=$NAME(^TMP($JOB))
KILL @RETURN
+2 NEW ORTMP,X,IEN,IENS,DFN
+3
*** ERROR ***
SET DFN=+$Piece(ALERT,",",2)
+4
*** ERROR ***
SET IEN=+$Piece(ALERT,",",3)
SET IENS=IEN_","
+5 SET @RETURN@(0)="PROCESS AS SMART NOTIFICATION="_+$$GET1^DIQ(100.9,IENS,6.1,"I")
+6 ; Flag not set for SMART processing