[613] | 1 | GMRCACMT ;SLC/DLT,DCM,MA,JFR - Comment Action and alerting ;8/19/03 07:27
|
---|
| 2 | ;;3.0;CONSULT/REQUEST TRACKING;**4,14,18,20,22,29,35,47,55**;DEC 27, 1997;Build 4
|
---|
| 3 | ; This routine invokes IA #10060
|
---|
| 4 | ;
|
---|
| 5 | COMMENT(GMRCO) ;Add a comment without changing the status
|
---|
| 6 | K GMRCQIT,GMRCQUT N GMRCA
|
---|
| 7 | I $D(IOTM),$D(IOBM),$D(IOSTBM) D FULL^VALM1
|
---|
| 8 | S GMRCNOW=$$NOW^XLFDT,GMRCAD=GMRCNOW
|
---|
| 9 | S GMRCOM=1,GMRCA=20,GMRCPROV=$P(^GMR(123,GMRCO,0),"^",14) D AUDIT^GMRCP
|
---|
| 10 | ; GMRCOM=1 defined the variable and tells AUDIT^GMRCP that the
|
---|
| 11 | ; word-processing logic should be executed. If an actual comment is
|
---|
| 12 | ; added, $P(GMRCOM,"^",2)=1 (send alert), if not GMRCOM=1 and no '^'
|
---|
| 13 | ; exists (do not send alert)
|
---|
| 14 | I $G(GMRCERR)=1 S GMRCMSG=GMRCERMS D EXAC^GMRCADC(GMRCMSG),END Q
|
---|
| 15 | ;continue if no lock problems occurred
|
---|
| 16 | I $P(GMRCOM,"^",2) D
|
---|
| 17 | . I $P($G(^GMR(123,GMRCO,12)),U,5)="F" D
|
---|
| 18 | .. W !!,"The ordering provider for this inter-facility consult will"
|
---|
| 19 | .. W " automatically be ",!,"notified.",!
|
---|
| 20 | . D PROCALRT("",1,20,GMRCO)
|
---|
| 21 | . ;update LAST ACTION field even though no status change
|
---|
| 22 | . N GMRCDR,GMRCSTS
|
---|
| 23 | . S GMRCSTS="",GMRCDR="9////20"
|
---|
| 24 | . D STATUS^GMRCP
|
---|
| 25 | D END
|
---|
| 26 | Q
|
---|
| 27 | ;
|
---|
| 28 | PROCALRT(GMRCORTX,GMRCDELR,ACTION,GMRCO) ;Process alert for comments
|
---|
| 29 | ;If GMRCDELR=1, the ordering provider can be deleted from the list.
|
---|
| 30 | N GMRCADUZ,GMRCANS,NOTIF,GMRCQIT,GMRCTM
|
---|
| 31 | ;S GMRCANS=$$READ("Y","Do You Wish To Send An Alert With This Comment","N","Enter Y to continue with recipient prompts. Otherwise, enter N.",1)
|
---|
| 32 | ;I (GMRCANS[U)!(GMRCANS=0) D END Q
|
---|
| 33 | ;
|
---|
| 34 | D WHOTO
|
---|
| 35 | ;I $G(GMRCQIT) D END Q ;User "^" at requesting provider.
|
---|
| 36 | ;
|
---|
| 37 | N GMRCALT
|
---|
| 38 | S NOTIF=$S(ACTION=20:63,ACTION=8:63,1:23)
|
---|
| 39 | ;
|
---|
| 40 | D SENDMSG(NOTIF,+GMRCO,$G(GMRCTM))
|
---|
| 41 | Q
|
---|
| 42 | ;
|
---|
| 43 | SENDMSG(NOTIF,GMRCO,GMRCATM) ;Send the alert
|
---|
| 44 | N GMRCDFN
|
---|
| 45 | I '$D(GMRCADUZ) S GMRCADUZ=""
|
---|
| 46 | W !,"Processing Alerts..."
|
---|
| 47 | S GMRCDFN=$P($G(^GMR(123,+GMRCO,0)),"^",2)
|
---|
| 48 | I '$L(GMRCORTX) D
|
---|
| 49 | . N TXT
|
---|
| 50 | . S TXT="Comment Added to "
|
---|
| 51 | . I $P($G(^GMR(123,GMRCO,12)),U,5)'="P" S GMRCORTX=TXT_"consult " Q
|
---|
| 52 | . S GMRCORTX=TXT_"remote consult "
|
---|
| 53 | S GMRCORTX=GMRCORTX_$$ORTX^GMRCAU(+GMRCO)
|
---|
| 54 | D MSG^GMRCP(GMRCDFN,GMRCORTX,+GMRCO,NOTIF,.GMRCADUZ,$G(GMRCATM))
|
---|
| 55 | Q
|
---|
| 56 | ;
|
---|
| 57 | END ;kill off variables and exit
|
---|
| 58 | K GMRC,GMRCA,GMRCMSG,GMRCOM,GMRCO,GMRCORTX,GMRCERR,GMRCERMS,GMRCQUT,GMRCUT
|
---|
| 59 | I $D(DTOUT)!$D(DIROUT) S GMRCQIT=""
|
---|
| 60 | K DTOUT,DIROUT,DUOUT,DIRUT
|
---|
| 61 | S:$D(^TMP("GMRC",$J,"CURRENT","MENU")) XQORM("HIJACK")=^("MENU")
|
---|
| 62 | Q
|
---|
| 63 | ;
|
---|
| 64 | WHOTO ;Get the users who should receive an alert
|
---|
| 65 | ;Asks about requesting provider first, then prompts for additional users
|
---|
| 66 | ;Returns GMRCADUZ array of users to send an alert to and GMRCQIT if "^"
|
---|
| 67 | N GMRCRP,GMRCANS,GMRCUPD
|
---|
| 68 | S GMRCRP=+$P($G(^GMR(123,+GMRCO,0)),U,14) ;requesting provider entry
|
---|
| 69 | S GMRCUPD=$$VALID^GMRCAU($P(^GMR(123,+GMRCO,0),U,5),GMRCO,DUZ)
|
---|
| 70 | I GMRCRP=DUZ D ;alert team if ord. prov. takes the action
|
---|
| 71 | . S GMRCTM=1
|
---|
| 72 | . W !,"Service update users will be notified.",!
|
---|
| 73 | I +GMRCUPD>1,GMRCRP'=DUZ D ; alert ord. prov if update users takes action
|
---|
| 74 | . S GMRCADUZ(GMRCRP)=""
|
---|
| 75 | . W !,"Requesting provider will be notified.",!
|
---|
| 76 | I '$G(GMRCTM),+GMRCUPD<2 D ;alert both if not ord. prov or update user
|
---|
| 77 | . S GMRCTM=1,GMRCADUZ(GMRCRP)=""
|
---|
| 78 | . W !,"Requesting provider and service update users will be notified.",!
|
---|
| 79 | ;
|
---|
| 80 | ;
|
---|
| 81 | ANDTO ;Ask for additional recipients
|
---|
| 82 | D NAMELIST("Additional alert recipients: ",.GMRCADUZ,GMRCDELR)
|
---|
| 83 | Q
|
---|
| 84 | ;
|
---|
| 85 | NAMELIST(GMRCP,GMRCOLD,GMRCDELR) ;manage the list of recipients
|
---|
| 86 | ;
|
---|
| 87 | ; GMRCP - Prompt
|
---|
| 88 | ; GMRCOLD - Original list with ordering provider.
|
---|
| 89 | ; GMRCDELR - 1 means the original list may have names deleted
|
---|
| 90 | ; Returns final list in GMRCOLD array
|
---|
| 91 | ;
|
---|
| 92 | N GMRCNEW,GMRCNT,GMRCDUZ,GMRCUSER,GMRCQ,GMRCADD,DIC,X,Y
|
---|
| 93 | ;
|
---|
| 94 | M GMRCNEW=GMRCOLD
|
---|
| 95 | I GMRCDELR=1 K GMRCOLD S GMRCOLD="" ;Remove mandatory users from GMRCOLD
|
---|
| 96 | S GMRCNT=0 F D Q:(GMRCUSER[U)
|
---|
| 97 | .S GMRCUSER=$$READ("FAO;3;46",$S(GMRCNT:"And ",1:"")_GMRCP,"","^D NAMEHELP^GMRCACMT")
|
---|
| 98 | .S:'$L(GMRCUSER) GMRCUSER=U Q:(GMRCUSER[U)
|
---|
| 99 | .I ($E(GMRCUSER,1)="-") S GMRCADD=0,GMRCUSER=$E(GMRCUSER,2,$L(GMRCUSER))
|
---|
| 100 | .E S GMRCADD=1
|
---|
| 101 | .;
|
---|
| 102 | .S X=GMRCUSER,DIC=200,DIC(0)="EMQ" D ^DIC
|
---|
| 103 | .;
|
---|
| 104 | .I (Y>0) D I 1
|
---|
| 105 | ..;W $E($P(Y,U,2),$L(GMRCUSER)+1,$L($P(Y,U,2)))
|
---|
| 106 | ..;
|
---|
| 107 | ..I GMRCADD D
|
---|
| 108 | ...I $D(GMRCNEW(+Y)) W " already in the list." Q
|
---|
| 109 | ...S GMRCNEW(+Y)="" W " added to the list." S GMRCNT=GMRCNT+1
|
---|
| 110 | ..;
|
---|
| 111 | ..I 'GMRCADD D
|
---|
| 112 | ...I $D(GMRCOLD(+Y)) W " can't delete this name from the list." Q
|
---|
| 113 | ...I '$D(GMRCNEW(+Y)) W " not currently in the list." Q
|
---|
| 114 | ...K GMRCNEW(+Y) S GMRCNT=GMRCNT-1 W " deleted from the list."
|
---|
| 115 | .;
|
---|
| 116 | .E I $L(GMRCUSER) W " Name not found."
|
---|
| 117 | ;
|
---|
| 118 | M GMRCOLD=GMRCNEW
|
---|
| 119 | Q
|
---|
| 120 | ;
|
---|
| 121 | READ(GMRC0,GMRCA,GMRCB,GMRCH,GMRCL) ;read logic
|
---|
| 122 | ;
|
---|
| 123 | ; GMRC0 -> DIR(0) --- Type of read
|
---|
| 124 | ; GMRCA -> DIR("A") - Prompt
|
---|
| 125 | ; GMRCB -> DIR("B") - Default Answer
|
---|
| 126 | ; GMRCH -> DIR("?") - Help text or ^Execute code
|
---|
| 127 | ; GMRCL -> Number of blank lines to put before Prompt
|
---|
| 128 | ;
|
---|
| 129 | ; Returns "^" or answer
|
---|
| 130 | ;
|
---|
| 131 | N GMRCLINE,DIR,DTOUT,DUOUT,DIRUT,DIROUT
|
---|
| 132 | Q:'$L($G(GMRC0)) U
|
---|
| 133 | S DIR(0)=GMRC0
|
---|
| 134 | S:$L($G(GMRCA)) DIR("A")=GMRCA
|
---|
| 135 | S:$L($G(GMRCB)) DIR("B")=GMRCB
|
---|
| 136 | S:$L($G(GMRCH)) DIR("?")=GMRCH
|
---|
| 137 | F GMRCLINE=1:1:($G(GMRCL)-1) W !
|
---|
| 138 | D ^DIR
|
---|
| 139 | I $D(DTOUT)!$D(DUOUT)!$D(DIRUT)!$D(DIROUT) Q U
|
---|
| 140 | Q Y
|
---|
| 141 | ;
|
---|
| 142 | ;
|
---|
| 143 | NAMEHELP ;Help for the recipient list logic
|
---|
| 144 | N GMRCDUZ
|
---|
| 145 | W !,"Enter the name of the user to send the alert to,"
|
---|
| 146 | W !," or put a '-' in front of a name to delete from the list."
|
---|
| 147 | W !
|
---|
| 148 | W !," Example:"
|
---|
| 149 | W !," SMITH,FRED -> to add Fred to the list."
|
---|
| 150 | W !," -SMITH,FRED -> to delete Fred from the list."
|
---|
| 151 | W !,"Already selected: "
|
---|
| 152 | W !
|
---|
| 153 | S GMRCDUZ=0 F S GMRCDUZ=$O(GMRCNEW(GMRCDUZ)) Q:'GMRCDUZ D
|
---|
| 154 | .W !,?5,$P(^VA(200,GMRCDUZ,0),U,1)
|
---|
| 155 | .W:$D(GMRCOLD(GMRCDUZ)) " <mandatory>"
|
---|
| 156 | W !
|
---|
| 157 | Q
|
---|
| 158 | ;
|
---|