NURARWL3 ;HIRMFO/MD,FT-CONTINUATION OF THE (CURRENT) WORKLOAD STATISTICS ;12/11/96 10:45
;;4.0;NURSING SERVICE;**20**;Apr 25, 1997
DETAIL ;PRINT DATA LINES
S NPWARD=NURSWARD D EN6^NURSAUTL I $P(NURS213,U)="DOM"!($P(NURS213,U)="REC")!($P(NURS213,U)="HEM") S COUNTSW=1
I ($Y>(IOSL-6)!'NSW1) D HEADER Q:NURQUIT
S SECT=$P(NURS213,U) G:$G(NURSUMSW) A W !,$S(NBR:$E(NPWARD,1,10),1:""),?17,SECT S:NBR NBR=0
I '$G(COUNTSW) W ?23,$S(SECT="ATC":" N/A",1:$J($P(NREQ,U),3,1))
W ?29,$J($P(NDFTEE,U),3,1)
I '$G(COUNTSW) W ?35,$J($P(NVAR,U),4,1) W:NURSZAP'>6!(DUZ(0)="@") ?41,$J($P(NPROD,U),3,0) W ?49,$S(SECT="ATC":" N/A",1:$J($P(NREQ,U,2),3,1))
W ?55,$J($P(NDFTEE,U,2),3,1)
I '$G(COUNTSW) W ?61,$J($P(NVAR,U,2),4,1) W:NURSZAP'>6!(DUZ(0)="@") ?67,$J($P(NPROD,U,2),3,0) W ?75,$S(SECT="ATC":" N/A",1:$J($P(NREQ,U,3),4,1))
W ?81,$J($P(NDFTEE,U,3),4,1)
I '$G(COUNTSW) W ?87,$J($P(NVAR,U,3),4,1) W:NURSZAP'>6!(DUZ(0)="@") ?93,$J($P(NPROD,U,3),3,0)
W ?98,$J($P(NPC,U),3),?104,$J($P(NPC,U,2),3),?110,$J($P(NPC,U,3),3),?116,$J($P(NPC,U,4),3),?121,$J($P(NPC,U,5),3),?127,$J(NPCC,4)
A I 'COUNTSW D
.F X=1,2,3 D
..S:+$P(NREQ,U,X) $P(NWREQ,U,X)=$P(NWREQ,U,X)+$J($P(NREQ,U,X),0,1) S:+$P(NDFTEE,U,X) $P(NWFTEE,U,X)=$P(NWFTEE,U,X)+$J($P(NDFTEE,U,X),0,1)
..I NURMDSW,NHOS S $P(NFREQ,U,X)=$P(NFREQ,U,X)+$J($P(NREQ,U,X),0,1) S:+$P(NDFTEE,U,X) $P(NFFTEE,U,X)=$P(NFFTEE,U,X)+$J($P(NDFTEE,U,X),0,1)
..Q
.F Z=1:1:5 S $P(NWPC,U,Z)=$P(NWPC,U,Z)+$P(NPC,U,Z) S:NURMDSW $P(NFPC,U,Z)=$P(NFPC,U,Z)+$P(NPC,U,Z) S $P(NPC,U,Z)=0
.S NWPCC=NWPCC+NPCC S:NURMDSW NFPCC=NFPCC+NPCC
.Q
I COUNTSW D
.F X=1,2,3 S $P(MNHRS(SECT),U,X)=$P(MNHRS(SECT),U,X)+$J($P(NDFTEE,U,X),0,1) S:NURMDSW $P(MFHRS(SECT),U,X)=$P(MNHRS(SECT),U,X)+$J($P(NDFTEE,U,X),0,1)
.I NURMDSW,NHOS S FCOUNT(SECT)=FCOUNT(SECT)+NPCC,NFCNT=NFCNT+NPCC
.S COUNT(SECT)=COUNT(SECT)+NPCC,NWCNT=NWCNT+NPCC
.Q
S (COUNTSW,NPCC)=0,NSW1=1
Q
I 'NUROUT,$E(IOST)="C",NSW1 D ENDPG^NURSUT1 S:NUROUT NURQUIT=+NUROUT Q:NURQUIT
S NPCT=NPCT+1,NSW1=1
U IO W:$E(IOST)="C"!(NPCT>1) @IOF
I NURMDSW,NHOS,'$G(NURSUMSW) W ?65,$S($G(NPFAC)=" BLANK":"NO FACILITY",1:$G(NPFAC))
W ! D NOW^%DTC S Y=% D DT^DIQ W ?46,$S(NURSHFT="D":"DAY",NURSHFT="N":"NIGHT",1:"EVENING")," SHIFT "_$S($D(NRPTDAT("PWLS")):"PROJECTED",1:"CURRENT")_" WORKLOAD STATISTICS FOR ",$S('NHOS:$G(NPWARD),NHOS:"THE SERVICE",1:"")
I $D(NRPTDAT("PWLS")) W " FOR ",$$FMTE^XLFDT(NRPTDAT,"2D")
W ?124,"PAGE: ",NPCT
W !,?16,"BED",?29,"RN FTEE",?57,"LPN FTEE",?83,"NA FTEE",!,"UNIT",?16,"SECT",?22,"REQ S OD VAR" W:NURSZAP'>6!(DUZ(0)="@") ?39,"%/PRO"
W ?49,"REQ S OD VAR" W:NURSZAP'>6 ?66,"%/PRO" W ?75,"REQ S OD VAR" W:NURSZAP'>6!(DUZ(0)="@") ?91,"%/PRO" W ?99,"PC1 PC2 PC3 PC4 PC5 PTOT"
S $P(NURSZ,"-",133)="" W !,NURSZ
Q
BRK ; LOCATION TOTALS CURRENT WORKLOAD REPORTS
G:$G(NURSUMSW) B
W !,?18,$E(NURSY,1,114) F X=1,2,3 S $P(NWVAR,U,X)=$J($P(NWFTEE,U,X),1,1)-$J($P(NWREQ,U,X),1,1) I $J($P(NWFTEE,U,X),1,1),$J($P(NWREQ,U,X),1,1),NURSZAP'>6,NWPCC S $P(NWPROD,U,X)=($J($P(NWREQ,U,X),1,1)/$J($P(NWFTEE,U,X),1,1))*100
I $D(NURSPC(NPFAC,1,NURSWARD,$O(^NURSF(213.3,"B","DOMICILIARY",0))))!($D(NURSPC(NPFAC,1,NURSWARD,$O(^NURSF(213.3,"B","HEMODIALYSIS",0)))))!($D(NURSPC(NPFAC,1,NURSWARD,$O(^NURSF(213.3,"B","RECOVERY ROOM",0))))) S COUNTSW=1
W !,$E(NPLOC,1,10) W $S(COUNTSW&'(+NWPCC):" COUNT",1:" SUMMARY")
I 'COUNTSW W ?23,$J($P(NWREQ,U),3,1)
W ?29,$J($P(NWFTEE,U),3,1)
I 'COUNTSW W ?35,$J($P(NWVAR,U),4,1) W:NURSZAP'>6 ?41,$J($P(NWPROD,U),3,0) W ?49,$J($P(NWREQ,U,2),3,1)
W ?55,$J($P(NWFTEE,U,2),3,1)
I 'COUNTSW W ?61,$J($P(NWVAR,U,2),4,1) W:NURSZAP'>6 ?67,$J($P(NWPROD,U,2),3,0) W ?76,$J($P(NWREQ,U,3),3,1)
W ?82,$J($P(NWFTEE,U,3),3,1)
I 'COUNTSW W ?87,$J($P(NWVAR,U,3),4,1) W:NURSZAP'>6 ?93,$J($P(NWPROD,U,3),3,0) W ?98,$J($P(NWPC,U),3,1),?104,$J($P(NWPC,U,2),3,1),?110,$J($P(NWPC,U,3),3,1),?116,$J($P(NWPC,U,4),3,1),?121,$J($P(NWPC,U,5),3,1),?127,$J(NWPCC,4,1),!
I $G(COUNTSW) W ?98,$J($P(NWCNT,U),3,1),?104,$J($P(NWCNT,U,2),3,1),?110,$J($P(NWCNT,U,3),3,1),?116,$J($P(NWCNT,U,4),3,1),?121,$J($P(NWCNT,U,5),3,1),?127,$J(+NWCNT,4,1),!
B ; VARIABLE AND GLOBAL SET FOR STAFF VARIANCE WORKSHEET
I '$G(NURSUMSW) D
. S UNIT=$S($E(NPLOC,1,3)="ZZZ":$E(NPLOC,4,99),1:NPLOC)
. S ARN=$J($P(NWREQ,U),3,1),ALPN=$J($P(NWREQ,U,2),3,1),ANA=$J($P(NWREQ,U,3),3,1),BRN=$J($P(NWFTEE,U),3,1),BLPN=$J($P(NWFTEE,U,2),3,1),BNA=$J($P(NWFTEE,U,3),3,1),AA=$G(UNIT)_U_ARN_U_ALPN_U_ANA_U_BRN_U_BLPN_U_BNA
. I $G(UNIT)'="",$G(NPFAC)'="" S ^TMP("NURVAR",$J,NPFAC,UNIT)=AA
. Q
I $G(NURSUMSW) D
. S ARN=$J($P(NWREQ,U),3,1),ALPN=$J($P(NWREQ,U,2),3,1),ANA=$J($P(NWREQ,U,3),3,1),BRN=$J($P(NWFTEE,U),3,1),BLPN=$J($P(NWFTEE,U,2),3,1),BNA=$J($P(NWFTEE,U,3),3,1),AA=ARN_U_ALPN_U_ANA_U_BRN_U_BLPN_U_BNA
. I $G(NPFAC)'="" S:'$D(^TMP("NURVAR",$J,NPFAC)) ^(NPFAC)="" F X=1:1:6 S $P(^TMP("NURVAR",$J,NPFAC),U,X)=+$P(^(NPFAC),U,X)+$P(AA,U,X)
. Q
I '$G(COUNTSW) F X=1,2,3 D
.S $P(NHREQ,U,X)=$P(NHREQ,U,X)+$J($P(NWREQ,U,X),0,1),$P(NHFTEE,U,X)=$P(NHFTEE,U,X)+$J($P(NWFTEE,U,X),0,1)
.I NHOS S $P(NWREQ,U,X)=0,$P(NWFTEE,U,X)=0,$P(NWVAR,U,X)=0,$P(NWPROD,U,X)=0
.Q
S NHPCC=NHPCC+NWPCC
F X=1:1:5 S $P(NHPC,U,X)=$P(NHPC,U,X)+$P(NWPC,U,X),$P(NWPC,U,X)=0
S (COUNTSW,NWCNT,NWPCC)=0,NBR=1
Q
NURARWL3 ;HIRMFO/MD,FT-CONTINUATION OF THE (CURRENT) WORKLOAD STATISTICS ;12/11/96 10:45
+1 ;;4.0;NURSING SERVICE;**20**;Apr 25, 1997
DETAIL ;PRINT DATA LINES
+1 SET NPWARD=NURSWARD
DO EN6^NURSAUTL
IF $PIECE(NURS213,U)="DOM"!($PIECE(NURS213,U)="REC")!($PIECE(NURS213,U)="HEM")
SET COUNTSW=1
+2 IF ($Y>(IOSL-6)!'NSW1)
DO HEADER
IF NURQUIT
QUIT
+3 SET SECT=$PIECE(NURS213,U)
IF $GET(NURSUMSW)
GOTO A
WRITE !,$SELECT(NBR:$EXTRACT(NPWARD,1,10),1:""),?17,SECT
IF NBR
SET NBR=0
+4 IF '$GET(COUNTSW)
WRITE ?23,$SELECT(SECT="ATC":" N/A",1:$JUSTIFY($PIECE(NREQ,U),3,1))
+5 WRITE ?29,$JUSTIFY($PIECE(NDFTEE,U),3,1)
+6 IF '$GET(COUNTSW)
WRITE ?35,$JUSTIFY($PIECE(NVAR,U),4,1)
IF NURSZAP'>6!(DUZ(0)="@")
WRITE ?41,$JUSTIFY($PIECE(NPROD,U),3,0)
WRITE ?49,$SELECT(SECT="ATC":" N/A",1:$JUSTIFY($PIECE(NREQ,U,2),3,1))
+7 WRITE ?55,$JUSTIFY($PIECE(NDFTEE,U,2),3,1)
+8 IF '$GET(COUNTSW)
WRITE ?61,$JUSTIFY($PIECE(NVAR,U,2),4,1)
IF NURSZAP'>6!(DUZ(0)="@")
WRITE ?67,$JUSTIFY($PIECE(NPROD,U,2),3,0)
WRITE ?75,$SELECT(SECT="ATC":" N/A",1:$JUSTIFY($PIECE(NREQ,U,3),4,1))
+9 WRITE ?81,$JUSTIFY($PIECE(NDFTEE,U,3),4,1)
+10 IF '$GET(COUNTSW)
WRITE ?87,$JUSTIFY($PIECE(NVAR,U,3),4,1)
IF NURSZAP'>6!(DUZ(0)="@")
WRITE ?93,$JUSTIFY($PIECE(NPROD,U,3),3,0)
+11 WRITE ?98,$JUSTIFY($PIECE(NPC,U),3),?104,$JUSTIFY($PIECE(NPC,U,2),3),?110,$JUSTIFY($PIECE(NPC,U,3),3),?116,$JUSTIFY($PIECE(NPC,U,4),3),?121,$JUSTIFY($PIECE(NPC,U,5),3),?127,$JUSTIFY(NPCC,4)
A IF 'COUNTSW
Begin DoDot:1
+1 FOR X=1,2,3
Begin DoDot:2
+2 IF +$PIECE(NREQ,U,X)
SET $PIECE(NWREQ,U,X)=$PIECE(NWREQ,U,X)+$JUSTIFY($PIECE(NREQ,U,X),0,1)
IF +$PIECE(NDFTEE,U,X)
SET $PIECE(NWFTEE,U,X)=$PIECE(NWFTEE,U,X)+$JUSTIFY($PIECE(NDFTEE,U,X),0,1)
+3 IF NURMDSW
IF NHOS
SET $PIECE(NFREQ,U,X)=$PIECE(NFREQ,U,X)+$JUSTIFY($PIECE(NREQ,U,X),0,1)
IF +$PIECE(NDFTEE,U,X)
SET $PIECE(NFFTEE,U,X)=$PIECE(NFFTEE,U,X)+$JUSTIFY($PIECE(NDFTEE,U,X),0,1)
+4 QUIT
End DoDot:2
+5 FOR Z=1:1:5
SET $PIECE(NWPC,U,Z)=$PIECE(NWPC,U,Z)+$PIECE(NPC,U,Z)
IF NURMDSW
SET $PIECE(NFPC,U,Z)=$PIECE(NFPC,U,Z)+$PIECE(NPC,U,Z)
SET $PIECE(NPC,U,Z)=0
+6 SET NWPCC=NWPCC+NPCC
IF NURMDSW
SET NFPCC=NFPCC+NPCC
+7 QUIT
End DoDot:1
+8 IF COUNTSW
Begin DoDot:1
+9 FOR X=1,2,3
SET $PIECE(MNHRS(SECT),U,X)=$PIECE(MNHRS(SECT),U,X)+$JUSTIFY($PIECE(NDFTEE,U,X),0,1)
IF NURMDSW
SET $PIECE(MFHRS(SECT),U,X)=$PIECE(MNHRS(SECT),U,X)+$JUSTIFY($PIECE(NDFTEE,U,X),0,1)
+10 IF NURMDSW
IF NHOS
SET FCOUNT(SECT)=FCOUNT(SECT)+NPCC
SET NFCNT=NFCNT+NPCC
+11 SET COUNT(SECT)=COUNT(SECT)+NPCC
SET NWCNT=NWCNT+NPCC
+12 QUIT
End DoDot:1
+13 SET (COUNTSW,NPCC)=0
SET NSW1=1
+14 QUIT
+1 IF 'NUROUT
IF $EXTRACT(IOST)="C"
IF NSW1
DO ENDPG^NURSUT1
IF NUROUT
SET NURQUIT=+NUROUT
IF NURQUIT
QUIT
+2 SET NPCT=NPCT+1
SET NSW1=1
+3 USE IO
IF $EXTRACT(IOST)="C"!(NPCT>1)
WRITE @IOF
+4 IF NURMDSW
IF NHOS
IF '$GET(NURSUMSW)
WRITE ?65,$SELECT($GET(NPFAC)=" BLANK":"NO FACILITY",1:$GET(NPFAC))
+5 WRITE !
DO NOW^%DTC
SET Y=%
DO DT^DIQ
WRITE ?46,$SELECT(NURSHFT="D":"DAY",NURSHFT="N":"NIGHT",1:"EVENING")," SHIFT "_$SELECT($DATA(NRPTDAT("PWLS")):"PROJECTED",1:"CURRENT")_" WORKLOAD STATISTICS FOR ",$SELECT('NHOS:$GET(NPWARD),NHOS:"THE SERVICE",1:"")
+6 IF $DATA(NRPTDAT("PWLS"))
WRITE " FOR ",$$FMTE^XLFDT(NRPTDAT,"2D")
+7 WRITE ?124,"PAGE: ",NPCT
+8 WRITE !,?16,"BED",?29,"RN FTEE",?57,"LPN FTEE",?83,"NA FTEE",!,"UNIT",?16,"SECT",?22,"REQ S OD VAR"
IF NURSZAP'>6!(DUZ(0)="@")
WRITE ?39,"%/PRO"
+9 WRITE ?49,"REQ S OD VAR"
IF NURSZAP'>6
WRITE ?66,"%/PRO"
WRITE ?75,"REQ S OD VAR"
IF NURSZAP'>6!(DUZ(0)="@")
WRITE ?91,"%/PRO"
WRITE ?99,"PC1 PC2 PC3 PC4 PC5 PTOT"
+10 SET $PIECE(NURSZ,"-",133)=""
WRITE !,NURSZ
+11 QUIT
BRK ; LOCATION TOTALS CURRENT WORKLOAD REPORTS
+1 IF $GET(NURSUMSW)
GOTO B
+2 WRITE !,?18,$EXTRACT(NURSY,1,114)
FOR X=1,2,3
SET $PIECE(NWVAR,U,X)=$JUSTIFY($PIECE(NWFTEE,U,X),1,1)-$JUSTIFY($PIECE(NWREQ,U,X),1,1)
IF $JUSTIFY($PIECE(NWFTEE,U,X),1,1)
IF $JUSTIFY($PIECE(NWREQ,U,X),1,1)
IF NURSZAP'>6
IF NWPCC
SET $PIECE(NWPROD,U,X)=($JUSTIFY($PIECE(NWREQ,U,X),1,1)/$JUSTIFY($PIECE(NWFTEE,U,X),1,1))*100
+3 IF $DATA(NURSPC(NPFAC,1,NURSWARD,$ORDER(^NURSF(213.3,"B","DOMICILIARY",0))))!($DATA(NURSPC(NPFAC,1,NURSWARD,$ORDER(^NURSF(213.3,"B","HEMODIALYSIS",0)))))!($DATA(NURSPC(NPFAC,1,NURSWARD,$ORDER(^NURSF(213.3,"B","RECOVERY ROOM",0)))))
SET COUNTSW=1
+4 WRITE !,$EXTRACT(NPLOC,1,10)
WRITE $SELECT(COUNTSW&'(+NWPCC):" COUNT",1:" SUMMARY")
+5 IF 'COUNTSW
WRITE ?23,$JUSTIFY($PIECE(NWREQ,U),3,1)
+6 WRITE ?29,$JUSTIFY($PIECE(NWFTEE,U),3,1)
+7 IF 'COUNTSW
WRITE ?35,$JUSTIFY($PIECE(NWVAR,U),4,1)
IF NURSZAP'>6
WRITE ?41,$JUSTIFY($PIECE(NWPROD,U),3,0)
WRITE ?49,$JUSTIFY($PIECE(NWREQ,U,2),3,1)
+8 WRITE ?55,$JUSTIFY($PIECE(NWFTEE,U,2),3,1)
+9 IF 'COUNTSW
WRITE ?61,$JUSTIFY($PIECE(NWVAR,U,2),4,1)
IF NURSZAP'>6
WRITE ?67,$JUSTIFY($PIECE(NWPROD,U,2),3,0)
WRITE ?76,$JUSTIFY($PIECE(NWREQ,U,3),3,1)
+10 WRITE ?82,$JUSTIFY($PIECE(NWFTEE,U,3),3,1)
+11 IF 'COUNTSW
WRITE ?87,$JUSTIFY($PIECE(NWVAR,U,3),4,1)
IF NURSZAP'>6
WRITE ?93,$JUSTIFY($PIECE(NWPROD,U,3),3,0)
WRITE ?98,$JUSTIFY($PIECE(NWPC,U),3,1),?104,$JUSTIFY($PIECE(NWPC,U,2),3,1),?110,$JUSTIFY($PIECE(NWPC,U,3),3,1),?116,$JUSTIFY($PIECE(NWPC,U,4),3,1),?121,$JUSTIFY($PIECE(NWPC,U,5),3,1),?127,$JUSTIFY(NWPCC,4,1),!
+12 IF $GET(COUNTSW)
WRITE ?98,$JUSTIFY($PIECE(NWCNT,U),3,1),?104,$JUSTIFY($PIECE(NWCNT,U,2),3,1),?110,$JUSTIFY($PIECE(NWCNT,U,3),3,1),?116,$JUSTIFY($PIECE(NWCNT,U,4),3,1),?121,$JUSTIFY($PIECE(NWCNT,U,5),3,1),?127,$JUSTIFY(+NWCNT,4,1),!
B ; VARIABLE AND GLOBAL SET FOR STAFF VARIANCE WORKSHEET
+1 IF '$GET(NURSUMSW)
Begin DoDot:1
+2 SET UNIT=$SELECT($EXTRACT(NPLOC,1,3)="ZZZ":$EXTRACT(NPLOC,4,99),1:NPLOC)
+3 SET ARN=$JUSTIFY($PIECE(NWREQ,U),3,1)
SET ALPN=$JUSTIFY($PIECE(NWREQ,U,2),3,1)
SET ANA=$JUSTIFY($PIECE(NWREQ,U,3),3,1)
SET BRN=$JUSTIFY($PIECE(NWFTEE,U),3,1)
SET BLPN=$JUSTIFY($PIECE(NWFTEE,U,2),3,1)
SET BNA=$JUSTIFY($PIECE(NWFTEE,U,3),3,1)
SET AA=$GET(UNIT)_U_ARN_U_ALPN_U_ANA_U_BRN_U_BLPN_U_BNA
+4 IF $GET(UNIT)'=""
IF $GET(NPFAC)'=""
SET ^TMP("NURVAR",$JOB,NPFAC,UNIT)=AA
+5 QUIT
End DoDot:1
+6 IF $GET(NURSUMSW)
Begin DoDot:1
+7 SET ARN=$JUSTIFY($PIECE(NWREQ,U),3,1)
SET ALPN=$JUSTIFY($PIECE(NWREQ,U,2),3,1)
SET ANA=$JUSTIFY($PIECE(NWREQ,U,3),3,1)
SET BRN=$JUSTIFY($PIECE(NWFTEE,U),3,1)
SET BLPN=$JUSTIFY($PIECE(NWFTEE,U,2),3,1)
SET BNA=$JUSTIFY($PIECE(NWFTEE,U,3),3,1)
SET AA=ARN_U_ALPN_U_ANA_U_BRN_U_BLPN_U_BNA
+8 IF $GET(NPFAC)'=""
IF '$DATA(^TMP("NURVAR",$JOB,NPFAC))
SET ^(NPFAC)=""
FOR X=1:1:6
SET $PIECE(^TMP("NURVAR",$JOB,NPFAC),U,X)=+$PIECE(^(NPFAC),U,X)+$PIECE(AA,U,X)
+9 QUIT
End DoDot:1
+10 IF '$GET(COUNTSW)
FOR X=1,2,3
Begin DoDot:1
+11 SET $PIECE(NHREQ,U,X)=$PIECE(NHREQ,U,X)+$JUSTIFY($PIECE(NWREQ,U,X),0,1)
SET $PIECE(NHFTEE,U,X)=$PIECE(NHFTEE,U,X)+$JUSTIFY($PIECE(NWFTEE,U,X),0,1)
+12 IF NHOS
SET $PIECE(NWREQ,U,X)=0
SET $PIECE(NWFTEE,U,X)=0
SET $PIECE(NWVAR,U,X)=0
SET $PIECE(NWPROD,U,X)=0
+13 QUIT
End DoDot:1
+14 SET NHPCC=NHPCC+NWPCC
+15 FOR X=1:1:5
SET $PIECE(NHPC,U,X)=$PIECE(NHPC,U,X)+$PIECE(NWPC,U,X)
SET $PIECE(NWPC,U,X)=0
+16 SET (COUNTSW,NWCNT,NWPCC)=0
SET NBR=1
+17 QUIT