XUBA ; BT/BP - LIST USERS HAVE INACTIVE PERSON CLASSES; 4/27/2010
;;8.0;KERNEL;**541**; July 10, 1995;Build 6
;;Per VHA Directive 2004-038, this routine should not be modified.
Q
;
PR ; entry point of the option LIST USERS NEED TO BE ASSIGNED NEW PERSON CLASSES
N DIR,XUA541,Y S DIR("A")="Do you want to list active users only",DIR(0)="Y",DIR("B")="NO" D ^DIR
S XUA541=$G(Y) I XUA541="^" Q
W @IOF,! S %ZIS="MQ" D ^%ZIS G:POP EXIT
I $D(IO("Q")) S ZTIO=ION,ZTRTN="PRNT^XUBA",ZTSAVE("XUA541")="",ZTDESC="LIST USERS NEED PERSON CLASSES" D ^%ZTLOAD D HOME^%ZIS
I $D(ZTSK) W !,"Queued as task# ",ZTSK,!! D PAUSE G EXIT
;
PRNT ; print the report
U IO D INPSC,LIST(XUA541)
N XUI,XUC,XUPG,XUB S XUC=0,XUPG=1,XUB=0
N XUPSUP D PGBK ;set value of the page break for devices
D HDR ;Header
S XUI="" F S XUI=$O(^TMP("XUINPSCN",$J,XUI)) Q:XUI="" D
. W !,$G(XUI),?20,$G(^TMP("XUINPSCN",$J,XUI))
. S XUC=XUC+1
. X XUPSUP ;page set up and break
I XUB=1 Q
W !!!,"Number of users: ",XUC
I $E(IOST,1,2)="C-" W !! D PAUSE
D EXIT
Q
;
INPSC ;get all inactive Person Class from the PERSON CLASS FILE.
N XUI,XUY,COUNT
K ^TMP("XUINPSC",$J)
S COUNT=$P($G(^USC(8932.1,0)),"^",4)
F XUI=1:1:COUNT D
. I $$GET3^XUPCF(XUI)="Inactive" S ^TMP("XUINPSC",$J,XUI)=$$GET5^XUPCF(XUI)
Q
;
LIST(XUA541) ; get all users who need to be assigned a new Person Class.
N XUI,XUY,XUV,XUIEN,%
K ^TMP("XUINPSCN",$J)
S XUIEN=0 F S XUIEN=$O(^VA(200,XUIEN)) Q:XUIEN'>0 D
. I XUA541=1,'(+$$ACTIVE^XUSER(XUIEN)) Q
. S XUY=+$$GET^XUA4A72(XUIEN) Q:XUY'>0
. I $D(^TMP("XUINPSC",$J,XUY)) D
. . N XUNAME S XUNAME=$E($P($G(^VA(200,XUIEN,0)),"^"),1,18)
. . I XUNAME'="" S ^TMP("XUINPSCN",$J,XUNAME)=$E($P($$GET^XUA4A72(XUIEN),"^",1,2),1,60)
Q
;
CLEAN ;clean the global
K ^TMP("XUINPSC",$J)
K ^TMP("XUINPSCN",$J)
Q
;
PGBK ;page break
S XUPSUP="I $Y>(IOSL-3) S XUPG=XUPG+1 W @IOF D HDR"
I $E(IOST,1,2)="C-" S XUPSUP="I $Y>(IOSL-3) S XUPG=XUPG+1 D PAUSE I XUB'=1 W @IOF D HDR"
Q
;
HDR ;
W ?IOM-40,"Report on ",$$FMTE^XLFDT($$DT^XLFDT)," Page ",$G(XUPG),!
W !,"User name:",?20,"Currently has the inactive Person Class IEN^NAME:"
W !,"----------",?20,"-------------------------------------------------"
Q
;
PAUSE ;
W !,"Press RETURN to continue or '^' to exit: " R XUB:DTIME
I '$T S XUI="zzzzzzzzz"
I XUB["^" S XUI="zzzzzzzzz",XUB=1
Q
;
EXIT ;
D CLEAN
D ^%ZISC
K %ZIS,ZTDESC,ZTSK,ZTIO,ZTRTN,ZTSAVE
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXUBA 2475 printed Dec 13, 2024@02:09 Page 2
XUBA ; BT/BP - LIST USERS HAVE INACTIVE PERSON CLASSES; 4/27/2010
+1 ;;8.0;KERNEL;**541**; July 10, 1995;Build 6
+2 ;;Per VHA Directive 2004-038, this routine should not be modified.
+3 QUIT
+4 ;
PR ; entry point of the option LIST USERS NEED TO BE ASSIGNED NEW PERSON CLASSES
+1 NEW DIR,XUA541,Y
SET DIR("A")="Do you want to list active users only"
SET DIR(0)="Y"
SET DIR("B")="NO"
DO ^DIR
+2 SET XUA541=$GET(Y)
IF XUA541="^"
QUIT
+3 WRITE @IOF,!
SET %ZIS="MQ"
DO ^%ZIS
if POP
GOTO EXIT
+4 IF $DATA(IO("Q"))
SET ZTIO=ION
SET ZTRTN="PRNT^XUBA"
SET ZTSAVE("XUA541")=""
SET ZTDESC="LIST USERS NEED PERSON CLASSES"
DO ^%ZTLOAD
DO HOME^%ZIS
+5 IF $DATA(ZTSK)
WRITE !,"Queued as task# ",ZTSK,!!
DO PAUSE
GOTO EXIT
+6 ;
PRNT ; print the report
+1 USE IO
DO INPSC
DO LIST(XUA541)
+2 NEW XUI,XUC,XUPG,XUB
SET XUC=0
SET XUPG=1
SET XUB=0
+3 ;set value of the page break for devices
NEW XUPSUP
DO PGBK
+4 ;Header
DO HDR
+5 SET XUI=""
FOR
SET XUI=$ORDER(^TMP("XUINPSCN",$JOB,XUI))
if XUI=""
QUIT
Begin DoDot:1
+6 WRITE !,$GET(XUI),?20,$GET(^TMP("XUINPSCN",$JOB,XUI))
+7 SET XUC=XUC+1
+8 ;page set up and break
XECUTE XUPSUP
End DoDot:1
+9 IF XUB=1
QUIT
+10 WRITE !!!,"Number of users: ",XUC
+11 IF $EXTRACT(IOST,1,2)="C-"
WRITE !!
DO PAUSE
+12 DO EXIT
+13 QUIT
+14 ;
INPSC ;get all inactive Person Class from the PERSON CLASS FILE.
+1 NEW XUI,XUY,COUNT
+2 KILL ^TMP("XUINPSC",$JOB)
+3 SET COUNT=$PIECE($GET(^USC(8932.1,0)),"^",4)
+4 FOR XUI=1:1:COUNT
Begin DoDot:1
+5 IF $$GET3^XUPCF(XUI)="Inactive"
SET ^TMP("XUINPSC",$JOB,XUI)=$$GET5^XUPCF(XUI)
End DoDot:1
+6 QUIT
+7 ;
LIST(XUA541) ; get all users who need to be assigned a new Person Class.
+1 NEW XUI,XUY,XUV,XUIEN,%
+2 KILL ^TMP("XUINPSCN",$JOB)
+3 SET XUIEN=0
FOR
SET XUIEN=$ORDER(^VA(200,XUIEN))
if XUIEN'>0
QUIT
Begin DoDot:1
+4 IF XUA541=1
IF '(+$$ACTIVE^XUSER(XUIEN))
QUIT
+5 SET XUY=+$$GET^XUA4A72(XUIEN)
if XUY'>0
QUIT
+6 IF $DATA(^TMP("XUINPSC",$JOB,XUY))
Begin DoDot:2
+7 NEW XUNAME
SET XUNAME=$EXTRACT($PIECE($GET(^VA(200,XUIEN,0)),"^"),1,18)
+8 IF XUNAME'=""
SET ^TMP("XUINPSCN",$JOB,XUNAME)=$EXTRACT($PIECE($$GET^XUA4A72(XUIEN),"^",1,2),1,60)
End DoDot:2
End DoDot:1
+9 QUIT
+10 ;
CLEAN ;clean the global
+1 KILL ^TMP("XUINPSC",$JOB)
+2 KILL ^TMP("XUINPSCN",$JOB)
+3 QUIT
+4 ;
PGBK ;page break
+1 SET XUPSUP="I $Y>(IOSL-3) S XUPG=XUPG+1 W @IOF D HDR"
+2 IF $EXTRACT(IOST,1,2)="C-"
SET XUPSUP="I $Y>(IOSL-3) S XUPG=XUPG+1 D PAUSE I XUB'=1 W @IOF D HDR"
+3 QUIT
+4 ;
HDR ;
+1 WRITE ?IOM-40,"Report on ",$$FMTE^XLFDT($$DT^XLFDT)," Page ",$GET(XUPG),!
+2 WRITE !,"User name:",?20,"Currently has the inactive Person Class IEN^NAME:"
+3 WRITE !,"----------",?20,"-------------------------------------------------"
+4 QUIT
+5 ;
PAUSE ;
+1 WRITE !,"Press RETURN to continue or '^' to exit: "
READ XUB:DTIME
+2 IF '$TEST
SET XUI="zzzzzzzzz"
+3 IF XUB["^"
SET XUI="zzzzzzzzz"
SET XUB=1
+4 QUIT
+5 ;
EXIT ;
+1 DO CLEAN
+2 DO ^%ZISC
+3 KILL %ZIS,ZTDESC,ZTSK,ZTIO,ZTRTN,ZTSAVE
+4 QUIT