PRSNRLS0 ;WOIFO/KJS - All Activity at a Nursing Location - Summary and Detailed;12-8-2011
;;4.0;PAID;**126**;Sep 21, 1995;Build 59
;;Per VHA Directive 2004-038, this routine should not be modified.
;
Q
;
COORD ;Entry point for VANOD Coordinator
; Coordinator has no access limits so let them pick any group
N GROUP
D PIKGROUP^PRSNUT04(.GROUP,"N",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
;
N PRSIEN,PRSNG,PICK,PG,LOCIEN,PRSNVER,PRSNTS,PRSNDAY,PPIEN,ENDPP,ENDDAY,BEGPP,BEGDAY,TODAY,PG,TIMEREC
N PRSNAME,PRSNSSN,PRSNTL,SKILMIX,PRSL,PRSNDAYS,PRSNDATE
N PRSNST,PRSNSP,PRSNTT,PRSNWIEN,HOURS,PRSNTIEN
N PRSNTW,PRSNTWD,PRSNM,PRSNRE,PRSNREC,PRSNRIEN,MEAL
N PRSNLNG,IEN200,PRIMLOC,PRSNARY,LOCNAM,GHD,PRSD
K ^TMP($J,"PRSNR")
U IO
S PG=0,TODAY=$E(DT,4,5)_"/"_$E(DT,6,7)_"/"_$E(DT,2,3)
S BEGPP=$G(^PRST(458,"AD",BEG)),BEGDAY=$P(BEGPP,U,2),BEGPP=+BEGPP
S ENDPP=$G(^PRST(458,"AD",END)),ENDDAY=$P(ENDPP,U,2),ENDPP=+ENDPP
I TYPE="S" D HDRSUM
I TYPE="D" D HDRDET
S (PICK,STOP)=0
F S PICK=$O(GROUP(PICK)) Q:PICK=""!STOP D
. S PRSNG=GROUP(0)_"^"_PICK_"^"_GROUP(PICK)
. S LOCIEN=+GROUP(PICK)
. S LOCNAM=$P($$ISACTIVE^PRSNUT01(DT,LOCIEN),U,2)
. S GHD="Location: "_LOCNAM
. S TAB=IOM-$L(GHD)/2-5
. W !!,?TAB,GHD,!
. W ?TAB F I=1:1:$L(GHD) W "-"
. ;SORT BY NAME FOR THIS LOCATION
. K ^TMP($J,"PRSNR")
. S PRSIEN=0
. F S PRSIEN=$O(^PRSN(451,"ALN",LOCIEN,PRSIEN)) Q:'PRSIEN S PRSNA=$P($G(^PRSPC(PRSIEN,0)),U),^TMP($J,"PRSNR",PRSNA,PRSIEN)=""
. S PRSNA=""
. F S PRSNA=$O(^TMP($J,"PRSNR",PRSNA)) Q:PRSNA=""!STOP D
.. S PRSIEN=0
.. F S PRSIEN=$O(^TMP($J,"PRSNR",PRSNA,PRSIEN)) Q:PRSIEN=""!STOP D
... N WKTOT
... D INFO
... S PPIEN=BEGPP-1
... F S PPIEN=$O(^PRSN(451,"ALN",LOCIEN,PRSIEN,PPIEN)) Q:'PPIEN!STOP!(PPIEN>ENDPP) D
.... S PRSNDAYS=$G(^PRST(458,PPIEN,1))
.... S PRSNDAY=$S(PPIEN=BEGPP:BEGDAY-1,1:0)
.... F S PRSNDAY=$O(^PRSN(451,"ALN",LOCIEN,PRSIEN,PPIEN,PRSNDAY)) Q:'PRSNDAY!STOP!(PPIEN=ENDPP&(PRSNDAY>ENDDAY)) D
..... S PRSNDATE=$P(PRSNDAYS,U,PRSNDAY),PRSNDATE=$E(PRSNDATE,4,5)_"/"_$E(PRSNDATE,6,7)_"/"_$E(PRSNDATE,2,3)
..... S PRSNVER=$O(^PRSN(451,"ALN",LOCIEN,PRSIEN,PPIEN,PRSNDAY,""),-1)
..... S PRSNTS=0,PRSD=1
..... F S PRSNTS=$O(^PRSN(451,"ALN",LOCIEN,PRSIEN,PPIEN,PRSNDAY,PRSNVER,PRSNTS)) Q:'PRSNTS!STOP D
...... S TIMEREC=$G(^PRSN(451,PPIEN,"E",PRSIEN,"D",PRSNDAY,"V",PRSNVER,"T",PRSNTS,0))
...... D DATA
...... I TYPE="S" D TOTTIME
...... I TYPE="D" D PRTDET
...Q:STOP
... I TYPE="S" D PRTSUM
W !!,"End of Report"
D ^%ZISC
K ^TMP($J,"PRSNR")
Q
;
INFO ;Find nurse information to display in report
;
S PRSL=1
S PRSNARY=$G(^PRSPC(PRSIEN,0))
S PRSNAME=$P(PRSNARY,U) ;Nurse Name
S PRSNSSN=$P(PRSNARY,U,9) ;Nurse SSN
S PRSNTL=$P(PRSNARY,U,8) ;Nurse T&L
S SKILMIX=$P($$ISNURSE^PRSNUT01(PRSIEN),U,2) ; Nurse skillmix
I SKILMIX["ADMINISTRATIVE" S SKILMIX="ADMIN RN"
S IEN200=$G(^PRSPC(PRSIEN,200))
S PRIMLOC=$S(IEN200="":"",1:$$PRIMLOC^PRSNUT03(IEN200))
Q
;
DATA ;Extract display data from POCD array
;
;Start Time
S PRSNST=$P(TIMEREC,U)
;
;Stop Time
S PRSNSP=$P(TIMEREC,U,2)
;
;Meal Time
S MEAL=$P(TIMEREC,U,3)
;
;Get hours worked in a given location
S HOURS=$$AMT^PRSPSAPU(PRSNST,PRSNSP,MEAL)
;
;Type of Time code IEN
S PRSNTT=$P(TIMEREC,U,4),PRSNLNG=" "
I PRSNTT'="" D
. ;
. ;Type of Time code
. S PRSNTIEN=$O(^PRST(457.3,"B",PRSNTT,0))
. Q:PRSNTIEN=""
. ;
. ;Description for Type of Time code
. S PRSNLNG=$P(^PRST(457.3,PRSNTIEN,0),U,2)
. ;
. ;Type of Work Code IEN
S PRSNWIEN=$P(TIMEREC,U,6),PRSNTW=" ",PRSNTWD=" "
I PRSNWIEN'="" D
. ;
. ;Type of Work Code
. S PRSNTW=$P(^PRSN(451.5,PRSNWIEN,0),U)
. ;
. ;Description for Type of Work code
. S PRSNTWD=$P(^PRSN(451.5,PRSNWIEN,0),U,2)
;
;OT Mandatory/Voluntary
S PRSNM=$P(TIMEREC,U,7)
Q
;
TOTTIME ;
; save hours into work array
S WKTOT(PRSNLNG,PRSNTWD)=$G(WKTOT(PRSNLNG,PRSNTWD))+HOURS
;
Q
;
HDRSUM ;Display header for report of Individual Nurse Activity
;
W @IOF
S PG=PG+1,PRSL=1
W ?20,"All Activity at a Nurse Location Summary Report"
W !,?15,EXTBEG_" - "_EXTEND,?45,"Run Date: ",TODAY,?70,"Page: ",$J(PG,3)
W ! ;blank line
W !,"Nurse Name",?21,"Type of",?32,"Type of",?48,"Primary Location",?68,"# of",?75,"T&L"
W !,"Skill Mix",?22,"Time",?33,"Work",?68,"Hours",?75,"Unit"
W !,"--------------------------------------------------------------------------------"
;
Q
;
PRTSUM ; Loop through Totals array and print each one
;
N TT,TWD,HOURS,CNT
S TT="",CNT=0
F S TT=$O(WKTOT(TT)) Q:TT=""!STOP D
. S TWD=""
. F S TWD=$O(WKTOT(TT,TWD)) Q:TWD=""!STOP D
.. S HOURS=$G(WKTOT(TT,TWD)),CNT=CNT+1
.. D PPP
; need a blank line between nurses when there was only one record printed
I CNT=1 W !
Q
;
PPP ;
I PRSL W !,$E(PRSNAME,1,19)
W ?21,TT,?32,$E(TWD,1,14),?48,$E($P(PRIMLOC,U,3),1,18),?66,$J(HOURS,7,2),?75,PRSNTL
W !
I PRSL W " ",$E(SKILMIX,1,17)
;
S PRSL=0
I (IOSL-5)<$Y S STOP=$$ASK^PRSLIB00() I 'STOP D HDRSUM
Q
;
HDRDET ;Display header for report of Individual Nurse Activity
;
W @IOF
S PG=PG+1,(PRSL,PRSD)=1
W ?20,"All Activity at a Nurse Location Detail Report"
W !,?15,EXTBEG_" - "_EXTEND,?45,"Run Date: ",TODAY,?70,"Page: ",$J(PG,3)
W ! ;blank line
W !,"Nurse Name",?21,"Last 4",?29,"Start/",?38,"Type of",?49,"Mand",?57,"Meal",?63,"Primary Location/"
W !,"Skill Mix",?23,"SSN/",?29,"Stop",?39,"Time",?50,"OT",?57,"Time",?64,"Type of Work"
W !,"Date",?23,"T&L",?29,"Time"
W !,"--------------------------------------------------------------------------------"
;
Q
;
PRTDET ;Print report
I PRSL W !,$E(PRSNAME,1,19)
;PUT DATE ON FIRST LINE IF NAME & SKILL ARE NOT PRINTED
I 'PRSL,PRSD W !," ",PRSNDATE
W ?22,$E(PRSNSSN,6,9)
W ?29,PRSNST
W ?38,PRSNLNG
W ?51,PRSNM
W ?58,MEAL
W ?65,$E($P(PRIMLOC,U,3),1,14)
W !
I PRSL W " ",$E(SKILMIX,1,17)
W ?22,PRSNTL
W ?29,PRSNSP
W ?65,$E(PRSNTWD,1,14)
W !
;PUT DATE ON THIRD LINE IF NAME & SKILL ARE PRINTED
I PRSL,PRSD W " ",PRSNDATE,!
S (PRSL,PRSD)=0
;
I (IOSL-5)<$Y S STOP=$$ASK^PRSLIB00() I 'STOP D HDRDET
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="All Activity at a Nurse Location "_$S(TYPE="S":"Summary",1:"Detail")
. S ZTRTN="REPORT^PRSNRLS0"
. 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[HPRSNRLS0 7647 printed Oct 16, 2024@18:28:12 Page 2
PRSNRLS0 ;WOIFO/KJS - All Activity at a Nursing Location - Summary and Detailed;12-8-2011
+1 ;;4.0;PAID;**126**;Sep 21, 1995;Build 59
+2 ;;Per VHA Directive 2004-038, this routine should not be modified.
+3 ;
+4 QUIT
+5 ;
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,"N",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
+1 ;
+2 NEW PRSIEN,PRSNG,PICK,PG,LOCIEN,PRSNVER,PRSNTS,PRSNDAY,PPIEN,ENDPP,ENDDAY,BEGPP,BEGDAY,TODAY,PG,TIMEREC
+3 NEW PRSNAME,PRSNSSN,PRSNTL,SKILMIX,PRSL,PRSNDAYS,PRSNDATE
+4 NEW PRSNST,PRSNSP,PRSNTT,PRSNWIEN,HOURS,PRSNTIEN
+5 NEW PRSNTW,PRSNTWD,PRSNM,PRSNRE,PRSNREC,PRSNRIEN,MEAL
+6 NEW PRSNLNG,IEN200,PRIMLOC,PRSNARY,LOCNAM,GHD,PRSD
+7 KILL ^TMP($JOB,"PRSNR")
+8 USE IO
+9 SET PG=0
SET TODAY=$EXTRACT(DT,4,5)_"/"_$EXTRACT(DT,6,7)_"/"_$EXTRACT(DT,2,3)
+10 SET BEGPP=$GET(^PRST(458,"AD",BEG))
SET BEGDAY=$PIECE(BEGPP,U,2)
SET BEGPP=+BEGPP
+11 SET ENDPP=$GET(^PRST(458,"AD",END))
SET ENDDAY=$PIECE(ENDPP,U,2)
SET ENDPP=+ENDPP
+12 IF TYPE="S"
DO HDRSUM
+13 IF TYPE="D"
DO HDRDET
+14 SET (PICK,STOP)=0
+15 FOR
SET PICK=$ORDER(GROUP(PICK))
if PICK=""!STOP
QUIT
Begin DoDot:1
+16 SET PRSNG=GROUP(0)_"^"_PICK_"^"_GROUP(PICK)
+17 SET LOCIEN=+GROUP(PICK)
+18 SET LOCNAM=$PIECE($$ISACTIVE^PRSNUT01(DT,LOCIEN),U,2)
+19 SET GHD="Location: "_LOCNAM
+20 SET TAB=IOM-$LENGTH(GHD)/2-5
+21 WRITE !!,?TAB,GHD,!
+22 WRITE ?TAB
FOR I=1:1:$LENGTH(GHD)
WRITE "-"
+23 ;SORT BY NAME FOR THIS LOCATION
+24 KILL ^TMP($JOB,"PRSNR")
+25 SET PRSIEN=0
+26 FOR
SET PRSIEN=$ORDER(^PRSN(451,"ALN",LOCIEN,PRSIEN))
if 'PRSIEN
QUIT
SET PRSNA=$PIECE($GET(^PRSPC(PRSIEN,0)),U)
SET ^TMP($JOB,"PRSNR",PRSNA,PRSIEN)=""
+27 SET PRSNA=""
+28 FOR
SET PRSNA=$ORDER(^TMP($JOB,"PRSNR",PRSNA))
if PRSNA=""!STOP
QUIT
Begin DoDot:2
+29 SET PRSIEN=0
+30 FOR
SET PRSIEN=$ORDER(^TMP($JOB,"PRSNR",PRSNA,PRSIEN))
if PRSIEN=""!STOP
QUIT
Begin DoDot:3
+31 NEW WKTOT
+32 DO INFO
+33 SET PPIEN=BEGPP-1
+34 FOR
SET PPIEN=$ORDER(^PRSN(451,"ALN",LOCIEN,PRSIEN,PPIEN))
if 'PPIEN!STOP!(PPIEN>ENDPP)
QUIT
Begin DoDot:4
+35 SET PRSNDAYS=$GET(^PRST(458,PPIEN,1))
+36 SET PRSNDAY=$SELECT(PPIEN=BEGPP:BEGDAY-1,1:0)
+37 FOR
SET PRSNDAY=$ORDER(^PRSN(451,"ALN",LOCIEN,PRSIEN,PPIEN,PRSNDAY))
if 'PRSNDAY!STOP!(PPIEN=ENDPP&(PRSNDAY>ENDDAY))
QUIT
Begin DoDot:5
+38 SET PRSNDATE=$PIECE(PRSNDAYS,U,PRSNDAY)
SET PRSNDATE=$EXTRACT(PRSNDATE,4,5)_"/"_$EXTRACT(PRSNDATE,6,7)_"/"_$EXTRACT(PRSNDATE,2,3)
+39 SET PRSNVER=$ORDER(^PRSN(451,"ALN",LOCIEN,PRSIEN,PPIEN,PRSNDAY,""),-1)
+40 SET PRSNTS=0
SET PRSD=1
+41 FOR
SET PRSNTS=$ORDER(^PRSN(451,"ALN",LOCIEN,PRSIEN,PPIEN,PRSNDAY,PRSNVER,PRSNTS))
if 'PRSNTS!STOP
QUIT
Begin DoDot:6
+42 SET TIMEREC=$GET(^PRSN(451,PPIEN,"E",PRSIEN,"D",PRSNDAY,"V",PRSNVER,"T",PRSNTS,0))
+43 DO DATA
+44 IF TYPE="S"
DO TOTTIME
+45 IF TYPE="D"
DO PRTDET
End DoDot:6
End DoDot:5
End DoDot:4
+46 if STOP
QUIT
+47 IF TYPE="S"
DO PRTSUM
End DoDot:3
End DoDot:2
End DoDot:1
+48 WRITE !!,"End of Report"
+49 DO ^%ZISC
+50 KILL ^TMP($JOB,"PRSNR")
+51 QUIT
+52 ;
INFO ;Find nurse information to display in report
+1 ;
+2 SET PRSL=1
+3 SET PRSNARY=$GET(^PRSPC(PRSIEN,0))
+4 ;Nurse Name
SET PRSNAME=$PIECE(PRSNARY,U)
+5 ;Nurse SSN
SET PRSNSSN=$PIECE(PRSNARY,U,9)
+6 ;Nurse T&L
SET PRSNTL=$PIECE(PRSNARY,U,8)
+7 ; Nurse skillmix
SET SKILMIX=$PIECE($$ISNURSE^PRSNUT01(PRSIEN),U,2)
+8 IF SKILMIX["ADMINISTRATIVE"
SET SKILMIX="ADMIN RN"
+9 SET IEN200=$GET(^PRSPC(PRSIEN,200))
+10 SET PRIMLOC=$SELECT(IEN200="":"",1:$$PRIMLOC^PRSNUT03(IEN200))
+11 QUIT
+12 ;
DATA ;Extract display data from POCD array
+1 ;
+2 ;Start Time
+3 SET PRSNST=$PIECE(TIMEREC,U)
+4 ;
+5 ;Stop Time
+6 SET PRSNSP=$PIECE(TIMEREC,U,2)
+7 ;
+8 ;Meal Time
+9 SET MEAL=$PIECE(TIMEREC,U,3)
+10 ;
+11 ;Get hours worked in a given location
+12 SET HOURS=$$AMT^PRSPSAPU(PRSNST,PRSNSP,MEAL)
+13 ;
+14 ;Type of Time code IEN
+15 SET PRSNTT=$PIECE(TIMEREC,U,4)
SET PRSNLNG=" "
+16 IF PRSNTT'=""
Begin DoDot:1
+17 ;
+18 ;Type of Time code
+19 SET PRSNTIEN=$ORDER(^PRST(457.3,"B",PRSNTT,0))
+20 if PRSNTIEN=""
QUIT
+21 ;
+22 ;Description for Type of Time code
+23 SET PRSNLNG=$PIECE(^PRST(457.3,PRSNTIEN,0),U,2)
+24 ;
+25 ;Type of Work Code IEN
End DoDot:1
+26 SET PRSNWIEN=$PIECE(TIMEREC,U,6)
SET PRSNTW=" "
SET PRSNTWD=" "
+27 IF PRSNWIEN'=""
Begin DoDot:1
+28 ;
+29 ;Type of Work Code
+30 SET PRSNTW=$PIECE(^PRSN(451.5,PRSNWIEN,0),U)
+31 ;
+32 ;Description for Type of Work code
+33 SET PRSNTWD=$PIECE(^PRSN(451.5,PRSNWIEN,0),U,2)
End DoDot:1
+34 ;
+35 ;OT Mandatory/Voluntary
+36 SET PRSNM=$PIECE(TIMEREC,U,7)
+37 QUIT
+38 ;
TOTTIME ;
+1 ; save hours into work array
+2 SET WKTOT(PRSNLNG,PRSNTWD)=$GET(WKTOT(PRSNLNG,PRSNTWD))+HOURS
+3 ;
+4 QUIT
+5 ;
HDRSUM ;Display header for report of Individual Nurse Activity
+1 ;
+2 WRITE @IOF
+3 SET PG=PG+1
SET PRSL=1
+4 WRITE ?20,"All Activity at a Nurse Location Summary Report"
+5 WRITE !,?15,EXTBEG_" - "_EXTEND,?45,"Run Date: ",TODAY,?70,"Page: ",$JUSTIFY(PG,3)
+6 ;blank line
WRITE !
+7 WRITE !,"Nurse Name",?21,"Type of",?32,"Type of",?48,"Primary Location",?68,"# of",?75,"T&L"
+8 WRITE !,"Skill Mix",?22,"Time",?33,"Work",?68,"Hours",?75,"Unit"
+9 WRITE !,"--------------------------------------------------------------------------------"
+10 ;
+11 QUIT
+12 ;
PRTSUM ; Loop through Totals array and print each one
+1 ;
+2 NEW TT,TWD,HOURS,CNT
+3 SET TT=""
SET CNT=0
+4 FOR
SET TT=$ORDER(WKTOT(TT))
if TT=""!STOP
QUIT
Begin DoDot:1
+5 SET TWD=""
+6 FOR
SET TWD=$ORDER(WKTOT(TT,TWD))
if TWD=""!STOP
QUIT
Begin DoDot:2
+7 SET HOURS=$GET(WKTOT(TT,TWD))
SET CNT=CNT+1
+8 DO PPP
End DoDot:2
End DoDot:1
+9 ; need a blank line between nurses when there was only one record printed
+10 IF CNT=1
WRITE !
+11 QUIT
+12 ;
PPP ;
+1 IF PRSL
WRITE !,$EXTRACT(PRSNAME,1,19)
+2 WRITE ?21,TT,?32,$EXTRACT(TWD,1,14),?48,$EXTRACT($PIECE(PRIMLOC,U,3),1,18),?66,$JUSTIFY(HOURS,7,2),?75,PRSNTL
+3 WRITE !
+4 IF PRSL
WRITE " ",$EXTRACT(SKILMIX,1,17)
+5 ;
+6 SET PRSL=0
+7 IF (IOSL-5)<$Y
SET STOP=$$ASK^PRSLIB00()
IF 'STOP
DO HDRSUM
+8 QUIT
+9 ;
HDRDET ;Display header for report of Individual Nurse Activity
+1 ;
+2 WRITE @IOF
+3 SET PG=PG+1
SET (PRSL,PRSD)=1
+4 WRITE ?20,"All Activity at a Nurse Location Detail Report"
+5 WRITE !,?15,EXTBEG_" - "_EXTEND,?45,"Run Date: ",TODAY,?70,"Page: ",$JUSTIFY(PG,3)
+6 ;blank line
WRITE !
+7 WRITE !,"Nurse Name",?21,"Last 4",?29,"Start/",?38,"Type of",?49,"Mand",?57,"Meal",?63,"Primary Location/"
+8 WRITE !,"Skill Mix",?23,"SSN/",?29,"Stop",?39,"Time",?50,"OT",?57,"Time",?64,"Type of Work"
+9 WRITE !,"Date",?23,"T&L",?29,"Time"
+10 WRITE !,"--------------------------------------------------------------------------------"
+11 ;
+12 QUIT
+13 ;
PRTDET ;Print report
+1 IF PRSL
WRITE !,$EXTRACT(PRSNAME,1,19)
+2 ;PUT DATE ON FIRST LINE IF NAME & SKILL ARE NOT PRINTED
+3 IF 'PRSL
IF PRSD
WRITE !," ",PRSNDATE
+4 WRITE ?22,$EXTRACT(PRSNSSN,6,9)
+5 WRITE ?29,PRSNST
+6 WRITE ?38,PRSNLNG
+7 WRITE ?51,PRSNM
+8 WRITE ?58,MEAL
+9 WRITE ?65,$EXTRACT($PIECE(PRIMLOC,U,3),1,14)
+10 WRITE !
+11 IF PRSL
WRITE " ",$EXTRACT(SKILMIX,1,17)
+12 WRITE ?22,PRSNTL
+13 WRITE ?29,PRSNSP
+14 WRITE ?65,$EXTRACT(PRSNTWD,1,14)
+15 WRITE !
+16 ;PUT DATE ON THIRD LINE IF NAME & SKILL ARE PRINTED
+17 IF PRSL
IF PRSD
WRITE " ",PRSNDATE,!
+18 SET (PRSL,PRSD)=0
+19 ;
+20 IF (IOSL-5)<$Y
SET STOP=$$ASK^PRSLIB00()
IF 'STOP
DO HDRDET
+21 QUIT
+22 ;
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="All Activity at a Nurse Location "_$SELECT(TYPE="S":"Summary",1:"Detail")
+9 SET ZTRTN="REPORT^PRSNRLS0"
+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