PRSNRAS0 ;WOIFO/DAM - Group Activity - Summary and Detailed;9/10/2009
;;4.0;PAID;**126**;Sep 21, 1995;Build 59
;;Per VHA Directive 2004-038, this routine should not be modified.
DEP ; Entry point for Data Entry Personnel
N GROUP
D ACCESS^PRSNUT02(.GROUP,"E",DT,1)
; quit if any error during group selection
I $P($G(GROUP(0)),U,2)="E" D Q
.W !,$P(GROUP(0),U,3)
D MAIN
Q
;
DAP ; Entry point for Data Approval Personnel
N GROUP
D ACCESS^PRSNUT02(.GROUP,"A",DT,1)
; quit if any error during group selection
I $P($G(GROUP(0)),U,2)="E" D Q
.W !,$P(GROUP(0),U,3)
D MAIN
Q
;
COORD ;Entry point for VANOD Coordinator
; Coordinator has no access limits so let them pick any group
N GROUP
D PIKGROUP^PRSNUT04(.GROUP,"",1)
; quit if any error during group selection
I $P($G(GROUP(0)),U,2)="E" D Q
.W !,$P(GROUP(0),U,3)
D MAIN
;
Q
;
MAIN ;
N RANGE,BEG,END,EXTBEG,EXTEND,STOP
N DAYBEG,DAYEND
N TYPE,BEG,END
S STOP=0
D TYPE
Q:STOP
D DATE
Q:STOP
D QUE
Q
;
REPORT ;for group of location or t&l
;
N PRSIEN,PRSNGLB,PRSNG,PICK,PRSNGA,PRSNGB,PG,STOP
N PRSNARY,PRSNAME,PRSNTL
K ^TMP($J,"PRSNR")
U IO
S (PICK,STOP)=0
F S PICK=$O(GROUP(PICK)) Q:PICK=""!STOP D
. S PRSNG=GROUP(0)_"^"_PICK_"^"_GROUP(PICK)
. S PRSNGLB=$S($P(PRSNG,U,2)="N":$NA(^NURSF(211.8,"D",$P(PRSNG,U,7))),1:$NA(^PRSPC("ATL"_$P(PRSNG,U,3))))
. S PRSNGA=""
. F S PRSNGA=$O(@PRSNGLB@(PRSNGA)) QUIT:PRSNGA=""!STOP D
.. S PRSNGB=0
.. F S PRSNGB=$O(@PRSNGLB@(PRSNGA,PRSNGB)) QUIT:'PRSNGB!STOP D
... I $P(PRSNG,U,2)="N",+$P(PRSNG,U,4)'=+$$PRIMLOC^PRSNUT03(PRSNGB) Q
... S PRSIEN=$S($P(PRSNG,U,2)="N":+$G(^VA(200,PRSNGB,450)),1:PRSNGB)
... Q:'+$$ISNURSE^PRSNUT01(PRSIEN)
... S PRSNARY=$G(^PRSPC(PRSIEN,0))
... S PRSNAME=$P(PRSNARY,U) ;Nurse Name
... S PRSNTL=$P(PRSNARY,U,8) ;Nurse T&L
... S ^TMP($J,"PRSNR",PICK,PRSNAME,PRSIEN)=""
;
S PG=0,TODAY=$E(DT,4,5)_"/"_$E(DT,6,7)_"/"_$E(DT,2,3)
I TYPE="S" D HDR^PRSNRAS1(EXTBEG,EXTEND)
I TYPE="D" D HDR^PRSNRAD0
S PICK=""
F S PICK=$O(^TMP($J,"PRSNR",PICK)) Q:PICK=""!STOP D
. S GHD="Location: "_PICK
. S TAB=IOM-$L(GHD)/2-5
. W !!,?TAB,GHD,!
. W ?TAB F I=1:1:$L(GHD) W "-"
. S PRSNAME=""
. Q:STOP
. F S PRSNAME=$O(^TMP($J,"PRSNR",PICK,PRSNAME)) Q:PRSNAME=""!STOP D
.. S PRSIEN=""
.. F S PRSIEN=$O(^TMP($J,"PRSNR",PICK,PRSNAME,PRSIEN)) Q:PRSIEN=""!STOP D
... I TYPE="S" D
.... ;summary report
.... D DSPLY^PRSNRAS1(PRSIEN,BEG,END,EXTBEG,EXTEND,.STOP)
... I TYPE="D" D
.... ;detailed report
.... D DSPLY^PRSNRAD0(PRSIEN,BEG,END,.STOP)
W !!,"End of Report"
D ^%ZISC
K ^TMP($J,"PRSNR")
Q
;
TYPE ;Choose summary or detailed group activity report
;
N DIR,DIRUT,X,Y
S DIR(0)="S^S:Summary Report;D:Detailed Report"
S DIR("A")="Enter Selection"
S DIR("?")="Enter whether you want to select a Summary or Detailed Group Activity Report"
D ^DIR
I $D(DIRUT) S STOP=1 Q
S TYPE=Y
Q
;
DATE ; User is prompted for a date range
;
S RANGE=$$POCRANGE^PRSNUT01()
; QUIT HERE IF RANGE=0
I +$G(RANGE)'>0 S STOP=1
;
S BEG=$P(RANGE,U)
S END=$P(RANGE,U,2)
S EXTBEG=$P(RANGE,U,3)
S EXTEND=$P(RANGE,U,4)
;
Q
;
QUE ;call to generate and display report for individual activity
N %ZIS,POP,IOP
S %ZIS="MQ"
D ^%ZIS
Q:POP
I $D(IO("Q")) D
. K IO("Q")
. N ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTUCI,ZTCPU,ZTPRI,ZTKIL,ZTSYNC
. S ZTDESC="GROUP ACTIVITY "_TYPE_" REPORT"
. S ZTRTN="REPORT^PRSNRAS0"
. S ZTSAVE("GROUP")=""
. S ZTSAVE("GROUP(")=""
. S ZTSAVE("TYPE")=""
. S ZTSAVE("BEG")=""
. S ZTSAVE("END")=""
. S ZTSAVE("EXTBEG")=""
. S ZTSAVE("EXTEND")=""
. D ^%ZTLOAD
. I $D(ZTSK) S ZTREQ="@" W !,"Request "_ZTSK_" queued."
E D
. D REPORT
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPRSNRAS0 3792 printed Nov 22, 2024@17:37:20 Page 2
PRSNRAS0 ;WOIFO/DAM - Group Activity - Summary and Detailed;9/10/2009
+1 ;;4.0;PAID;**126**;Sep 21, 1995;Build 59
+2 ;;Per VHA Directive 2004-038, this routine should not be modified.
DEP ; Entry point for Data Entry Personnel
+1 NEW GROUP
+2 DO ACCESS^PRSNUT02(.GROUP,"E",DT,1)
+3 ; quit if any error during group selection
+4 IF $PIECE($GET(GROUP(0)),U,2)="E"
Begin DoDot:1
+5 WRITE !,$PIECE(GROUP(0),U,3)
End DoDot:1
QUIT
+6 DO MAIN
+7 QUIT
+8 ;
DAP ; Entry point for Data Approval Personnel
+1 NEW GROUP
+2 DO ACCESS^PRSNUT02(.GROUP,"A",DT,1)
+3 ; quit if any error during group selection
+4 IF $PIECE($GET(GROUP(0)),U,2)="E"
Begin DoDot:1
+5 WRITE !,$PIECE(GROUP(0),U,3)
End DoDot:1
QUIT
+6 DO MAIN
+7 QUIT
+8 ;
COORD ;Entry point for VANOD Coordinator
+1 ; Coordinator has no access limits so let them pick any group
+2 NEW GROUP
+3 DO PIKGROUP^PRSNUT04(.GROUP,"",1)
+4 ; quit if any error during group selection
+5 IF $PIECE($GET(GROUP(0)),U,2)="E"
Begin DoDot:1
+6 WRITE !,$PIECE(GROUP(0),U,3)
End DoDot:1
QUIT
+7 DO MAIN
+8 ;
+9 QUIT
+10 ;
MAIN ;
+1 NEW RANGE,BEG,END,EXTBEG,EXTEND,STOP
+2 NEW DAYBEG,DAYEND
+3 NEW TYPE,BEG,END
+4 SET STOP=0
+5 DO TYPE
+6 if STOP
QUIT
+7 DO DATE
+8 if STOP
QUIT
+9 DO QUE
+10 QUIT
+11 ;
REPORT ;for group of location or t&l
+1 ;
+2 NEW PRSIEN,PRSNGLB,PRSNG,PICK,PRSNGA,PRSNGB,PG,STOP
+3 NEW PRSNARY,PRSNAME,PRSNTL
+4 KILL ^TMP($JOB,"PRSNR")
+5 USE IO
+6 SET (PICK,STOP)=0
+7 FOR
SET PICK=$ORDER(GROUP(PICK))
if PICK=""!STOP
QUIT
Begin DoDot:1
+8 SET PRSNG=GROUP(0)_"^"_PICK_"^"_GROUP(PICK)
+9 SET PRSNGLB=$SELECT($PIECE(PRSNG,U,2)="N":$NAME(^NURSF(211.8,"D",$PIECE(PRSNG,U,7))),1:$NAME(^PRSPC("ATL"_$PIECE(PRSNG,U,3))))
+10 SET PRSNGA=""
+11 FOR
SET PRSNGA=$ORDER(@PRSNGLB@(PRSNGA))
if PRSNGA=""!STOP
QUIT
Begin DoDot:2
+12 SET PRSNGB=0
+13 FOR
SET PRSNGB=$ORDER(@PRSNGLB@(PRSNGA,PRSNGB))
if 'PRSNGB!STOP
QUIT
Begin DoDot:3
+14 IF $PIECE(PRSNG,U,2)="N"
IF +$PIECE(PRSNG,U,4)'=+$$PRIMLOC^PRSNUT03(PRSNGB)
QUIT
+15 SET PRSIEN=$SELECT($PIECE(PRSNG,U,2)="N":+$GET(^VA(200,PRSNGB,450)),1:PRSNGB)
+16 if '+$$ISNURSE^PRSNUT01(PRSIEN)
QUIT
+17 SET PRSNARY=$GET(^PRSPC(PRSIEN,0))
+18 ;Nurse Name
SET PRSNAME=$PIECE(PRSNARY,U)
+19 ;Nurse T&L
SET PRSNTL=$PIECE(PRSNARY,U,8)
+20 SET ^TMP($JOB,"PRSNR",PICK,PRSNAME,PRSIEN)=""
End DoDot:3
End DoDot:2
End DoDot:1
+21 ;
+22 SET PG=0
SET TODAY=$EXTRACT(DT,4,5)_"/"_$EXTRACT(DT,6,7)_"/"_$EXTRACT(DT,2,3)
+23 IF TYPE="S"
DO HDR^PRSNRAS1(EXTBEG,EXTEND)
+24 IF TYPE="D"
DO HDR^PRSNRAD0
+25 SET PICK=""
+26 FOR
SET PICK=$ORDER(^TMP($JOB,"PRSNR",PICK))
if PICK=""!STOP
QUIT
Begin DoDot:1
+27 SET GHD="Location: "_PICK
+28 SET TAB=IOM-$LENGTH(GHD)/2-5
+29 WRITE !!,?TAB,GHD,!
+30 WRITE ?TAB
FOR I=1:1:$LENGTH(GHD)
WRITE "-"
+31 SET PRSNAME=""
+32 if STOP
QUIT
+33 FOR
SET PRSNAME=$ORDER(^TMP($JOB,"PRSNR",PICK,PRSNAME))
if PRSNAME=""!STOP
QUIT
Begin DoDot:2
+34 SET PRSIEN=""
+35 FOR
SET PRSIEN=$ORDER(^TMP($JOB,"PRSNR",PICK,PRSNAME,PRSIEN))
if PRSIEN=""!STOP
QUIT
Begin DoDot:3
+36 IF TYPE="S"
Begin DoDot:4
+37 ;summary report
+38 DO DSPLY^PRSNRAS1(PRSIEN,BEG,END,EXTBEG,EXTEND,.STOP)
End DoDot:4
+39 IF TYPE="D"
Begin DoDot:4
+40 ;detailed report
+41 DO DSPLY^PRSNRAD0(PRSIEN,BEG,END,.STOP)
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+42 WRITE !!,"End of Report"
+43 DO ^%ZISC
+44 KILL ^TMP($JOB,"PRSNR")
+45 QUIT
+46 ;
TYPE ;Choose summary or detailed group activity report
+1 ;
+2 NEW DIR,DIRUT,X,Y
+3 SET DIR(0)="S^S:Summary Report;D:Detailed Report"
+4 SET DIR("A")="Enter Selection"
+5 SET DIR("?")="Enter whether you want to select a Summary or Detailed Group Activity Report"
+6 DO ^DIR
+7 IF $DATA(DIRUT)
SET STOP=1
QUIT
+8 SET TYPE=Y
+9 QUIT
+10 ;
DATE ; User is prompted for a date range
+1 ;
+2 SET RANGE=$$POCRANGE^PRSNUT01()
+3 ; QUIT HERE IF RANGE=0
+4 IF +$GET(RANGE)'>0
SET STOP=1
+5 ;
+6 SET BEG=$PIECE(RANGE,U)
+7 SET END=$PIECE(RANGE,U,2)
+8 SET EXTBEG=$PIECE(RANGE,U,3)
+9 SET EXTEND=$PIECE(RANGE,U,4)
+10 ;
+11 QUIT
+12 ;
QUE ;call to generate and display report for individual activity
+1 NEW %ZIS,POP,IOP
+2 SET %ZIS="MQ"
+3 DO ^%ZIS
+4 if POP
QUIT
+5 IF $DATA(IO("Q"))
Begin DoDot:1
+6 KILL IO("Q")
+7 NEW ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTUCI,ZTCPU,ZTPRI,ZTKIL,ZTSYNC
+8 SET ZTDESC="GROUP ACTIVITY "_TYPE_" REPORT"
+9 SET ZTRTN="REPORT^PRSNRAS0"
+10 SET ZTSAVE("GROUP")=""
+11 SET ZTSAVE("GROUP(")=""
+12 SET ZTSAVE("TYPE")=""
+13 SET ZTSAVE("BEG")=""
+14 SET ZTSAVE("END")=""
+15 SET ZTSAVE("EXTBEG")=""
+16 SET ZTSAVE("EXTEND")=""
+17 DO ^%ZTLOAD
+18 IF $DATA(ZTSK)
SET ZTREQ="@"
WRITE !,"Request "_ZTSK_" queued."
End DoDot:1
+19 IF '$TEST
Begin DoDot:1
+20 DO REPORT
End DoDot:1
+21 QUIT