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

GMRCT.m

Go to the documentation of this file.
GMRCT ; SLC/DLT\JFR - Get DUZ's of users for notification to service ; 11/25/2000
 ;;3.0;CONSULT/REQUEST TRACKING;**1,5,11,18,46**;Dec 27, 1997;Build 23
EN(GMRCSRV,USER,TEST) ;Get who is to be notified for alert action
 ; return them in array GMRCADUZ(DUZ)=""
 N GMRCLIS,GMRCHKD,GMRCNT,GMRCLP,GMRCQUIT
 D RECIP(GMRCSRV,$G(TEST)) I $D(TEST),$G(USER),$D(GMRCADUZ(USER)) Q
 I '$P(^GMR(123.5,+GMRCSRV,0),U,8) Q  ; don't check parents
 S GMRCHKD(GMRCSRV)="",GMRCNT=1
 D FINDPAR^GMRCAU(GMRCSRV,.GMRCNT) I '$D(GMRCLIS) Q
 S GMRCLP=0
 F  S GMRCLP=$O(GMRCLIS(GMRCLP)) Q:'GMRCLP  D  I $D(GMRCQUIT) Q
 . I +$P(GMRCLIS(GMRCLP),U,2) K GMRCLIS(GMRCLP) Q  ;been checked
 . I '$D(GMRCHKD(+GMRCLIS(GMRCLP))) D
 .. ; check parent 
 .. D RECIP(+GMRCLIS(GMRCLP),$G(TEST)) I $G(USER),$D(GMRCADUZ(USER)) D  Q
 ... S GMRCQUIT=1
 .. S GMRCHKD(+GMRCLIS(GMRCLP))=""
 . S $P(GMRCLIS(GMRCLP),U,2)=1
 . I $P(^GMR(123.5,+GMRCLIS(GMRCLP),0),U,8) D  ;check parents, fld .08 =1
 .. D FINDPAR^GMRCAU(+GMRCLIS(GMRCLP),.GMRCNT)
 . S GMRCLP=0 ;start back at top and don't miss any
 Q
RECIP(GMRCSS,NOTNULL) ;gather recipients for GMRCSS
 N GMRCTM,GMRCTMI,GMRCLST,GMRCER,GMRCHL,GMRCSSI,GMRCU,GMRCWL
 ;I $D(^GMR(123.5,GMRCSS,123)),$P(^GMR(123.5,GMRCSS,123),"^",8),(('$G(NOTNULL))&($P(^GMR(123.5,GMRCSS,123),"^",8)'=DUZ)!($G(NOTNULL))) S GMRCADUZ($P(^(123),"^",8))=$S($G(NOTNULL):$$NOTSERV($P(^(123),"^",8)),1:"")
 I $D(^GMR(123.5,GMRCSS,123)),$P(^GMR(123.5,GMRCSS,123),"^",8),($P(^GMR(123.5,GMRCSS,123),"^",8)'=DUZ)!$G(NOTNULL) S GMRCADUZ($P(^(123),"^",8))=$S($G(NOTNULL):$$NOTSERV($P(^(123),"^",8)),1:"")
 I $D(^GMR(123.5,GMRCSS,123.1)) D TEAM
 I $D(^GMR(123.5,GMRCSS,123.2)),+$G(GMRCO) D LOC
 I $D(^GMR(123.5,GMRCSS,123.33)) D ADMU
 I $D(^GMR(123.5,GMRCSS,123.34)) D ADMT
 Q
LOC ;Find the patients location and match to location assignments
 S GMRCWL="",GMRCHL=""
 I +$G(GMRCO) S GMRCHL=$P(^GMR(123,+GMRCO,0),"^",4) I GMRCHL S GMRCWL=$G(^SC(GMRCHL,42)) S:GMRCWL GMRCWL=GMRCWL_";DIC(42," S GMRCHL=GMRCHL_";SC("
 E  S:+$G(GMRCWLI) GMRCWL=GMRCWLI_";DIC(42," S:+$G(GMRCHLI) GMRCHL=GMRCHLI_";SC("
 I +GMRCWL S GMRCSSI=$O(^GMR(123.5,GMRCSS,123.2,"B",GMRCWL,"")) I GMRCSSI D LOC1
 I +GMRCHL S GMRCSSI=$O(^GMR(123.5,GMRCSS,123.2,"B",GMRCHL,"")) I GMRCSSI D LOC1
 Q
LOC1 ;Get user and/or team assigned to location
 N GMRCUSER
 S GMRCUSER=$P($G(^GMR(123.5,GMRCSS,123.2,GMRCSSI,0)),"^",2)
 ;I GMRCUSER,(('$G(NOTNULL))&(GMRCUSER'=DUZ)!($G(NOTNULL))) S GMRCADUZ(GMRCUSER)=$S($G(NOTNULL):$$NOTSERV(GMRCUSER),1:"") ;If not user taking action, then add to notification list
 I GMRCUSER,(GMRCUSER'=DUZ)!($G(NOTNULL)) S GMRCADUZ(GMRCUSER)=$S($G(NOTNULL):$$NOTSERV(GMRCUSER),1:"") ;If not user taking action, then add to notification list
 I $P(^GMR(123.5,GMRCSS,123.2,GMRCSSI,0),"^",3) S GMRCTMI=$P(^(0),"^",3) D TEAM1
 Q
ADMU ;Get notification recips from admin users field (123.33)
 ;Loop "AC" x-ref to get those admin users marked as notif recipients
 N RECIP
 S RECIP=0
 F  S RECIP=$O(^GMR(123.5,GMRCSS,123.33,"AC",1,RECIP)) Q:'RECIP  D
 . I '$G(NOTNULL),RECIP=DUZ Q  ;Don't notify user taking action
 . S GMRCADUZ(RECIP)=$S($G(NOTNULL):$$NOTSERV(RECIP),1:"")
 Q
ADMT ;Get notification recips from admin teams field (123.34)
 ;Loop "AC" x-ref to get those admin teams marked as notif recipients
 ;call TEAM1 to get list of users and add to recip list
 N GMRCTMI S GMRCTMI=0
 F  S GMRCTMI=$O(^GMR(123.5,GMRCSS,123.34,"AC",1,GMRCTMI)) Q:'GMRCTMI  D
 . D TEAM1
TEAM ;Loop through Teams to send all users notifications
 S GMRCTM=0 F  S GMRCTM=$O(^GMR(123.5,GMRCSS,123.1,GMRCTM)) Q:'+GMRCTM  S GMRCTMI=$P($G(^GMR(123.5,GMRCSS,123.1,GMRCTM,0)),"^") I GMRCTMI D TEAM1
 Q
TEAM1 ;Get user DUZ's from Team pointed to in File
 S GMRCLST="" D TEAMPROV^ORQPTQ1(.GMRCLST,GMRCTMI)
 Q:$S('$O(GMRCLST(0)):1,$P(GMRCLST(1),"^",2)="No providers found.":1,1:0)
 S GMRCU=0 F  S GMRCU=$O(GMRCLST(GMRCU)) Q:GMRCU=""  D
 . I $P($G(GMRCLST(GMRCU)),"^",1)=DUZ Q  ;Don't notify user taking action
 . I '$G(NOTNULL),$P($G(GMRCLST(GMRCU)),"^",1)'=DUZ D  Q
 .. S GMRCADUZ($P(GMRCLST(GMRCU),"^",1)_U_GMRCTMI)=""
 . S GMRCADUZ($P(GMRCLST(GMRCU),"^",1))=$S($G(NOTNULL):$$NOTSERV(GMRCU),1:"")
 K GMRCLST
 Q
NOTSERV(RECIP) ;set GMRCADUZ(RECIP)=all services they receive for
 I '$D(GMRCADUZ(RECIP)) Q $P(^GMR(123.5,+GMRCSS,0),U)
 Q GMRCADUZ(RECIP)_"~"_$P(^GMR(123.5,+GMRCSS,0),U)
TEST ; called from GMRC NOTIF RECIPIENTS
 N GMRCSRV,GMRCUSR,GMRCADUZ
 N DIR,DIROUT,DIRUT,DUOUT,DTOUT,X,Y
 S DIR(0)="PO^123.5:EM",DIR("A")="Select Consult Service"
 S DIR("?")="Choose the consult service to check update status of user"
 S DIR("??")="^D TESTHELP^GMRCAU(""ALL SERVICES"")" D ^DIR
 I $D(DIRUT) Q
 S GMRCSRV=+Y
 N DIR
 S DIR(0)="PO^200:EM",DIR("A")="Choose notification recipient"
 D ^DIR I $D(DIRUT) Q
 S GMRCUSR=+Y
 D EN(GMRCSRV,GMRCUSR,1)
 I $D(GMRCADUZ(GMRCUSR)) D
 . W !!,"This user is a notification recipients for "_GMRCADUZ(GMRCUSR),!
 . I GMRCADUZ(GMRCUSR)'=$P(^GMR(123.5,GMRCSRV,0),U) D
 .. D HIER(GMRCADUZ(GMRCUSR))
 . W !!
 I '$D(GMRCADUZ(GMRCUSR)) W !!,"This user is not a notification recipient.",!!
 G TEST
HIER(SERV) ;ask to see the hierarchy
 N DIR,DIRUT,DUOUT,DTOUT
 S DIR(0)="Y"
 S DIR("A")="View hierarchy from this service to the selected service"
 S DIR("B")="NO"
 D ^DIR
 I Y>0 D TESTHELP^GMRCAU(SERV)
 Q
TSTINTRO ; entry action for GMRC USER NOTIFICATION
 W !,"This option will list how a given user became a notification recipient"
 W !,"for a selected consult service. If the PROCESS PARENTS FOR NOTIFS field is"
 W !,"set to YES, all the parents of the service will also be processed to"
 W !,"determine if the user is a recipient via that service.",!!
 Q