DGOPATM ;GLRISC/REL - Patient Movements ;11/4/89 11:05 ;
;;5.3;Registration;**93,162**;Aug 13, 1993
S (DAT,DGU)=0 D HDR
P1 S %DT="AEXT",%DT("A")="START with DATE@TIME: " W ! D ^%DT G:Y<1 KIL S DAT=Y
I DAT>NOW W " [ Date cannot be in Future ]" G P1
S X1=DT,X2=-5 D C^%DTC I DAT<X W " [ DATE MORE THAN 5 DAYS IN PAST ]" G P1
P2 S DGVAR="DAT^DGU",DGPGM="F0^DGOPATM" W ! D ZIS^DGUTQ I 'POP U IO G F0^DGOPATM
KIL K %,%DT,%ZIS,ADM,DAT,DFN,DTP,DGVAR,DGPGM,DGU,DGX,FHA1,FW,FR,H1,I2,KK,LL,LST,NOD,NOW,NX,POP,RM,T1,TRN,TW,TR,X,X1,X2,Y,VA("BID"),VA("PID"),VAIP,VAERR,VADAT,VADATE D CLOSE^DGUTQ Q
F0 D HDR1
S DGX="--- A D M I S S I O N S ---" W !!?26,DGX,! S NOD="AMV1" D FND G KIL:DGU
S DGX="--- D I S C H A R G E S ---" W !!?26,DGX,! S NOD="AMV3" D FND G KIL:DGU
S DGX="--- T R A N S F E R S ---" W !!?26,DGX,! S NOD="AMV2" D FND W ! G KIL:DGU
G KIL
DTP S DTP=$E(DTP,1,12) S DTP=$$FMTE^XLFDT(DTP,"1P") Q
HDR S H1="" I DAT S DTP=DAT D DTP S H1=DTP_" to "
W @IOF,!!?23,"P A T I E N T M O V E M E N T S"
D NOW^%DTC S (DTP,NOW)=%,DT=NOW\1 D DTP S H1=H1_DTP W !!?(80-$L(H1)\2),H1 Q
FND S NX=$P(DAT,".",1)-.0001
FN1 S NX=$O(^DGPM(NOD,NX)) I NX=""!(NX[".")!(NX>(DAT\1)) G FN2
F DFN=0:0 S DFN=$O(^DGPM(NOD,NX,DFN)) Q:'DFN D PRT Q:DGU
FN2 S LST=DT+1,NX=DAT+$S(DAT[".":-.0001,1:.0000001)
FN3 S NX=$O(^DGPM(NOD,NX)) Q:NX=""!(NX'<LST)!(DGU)
F DFN=0:0 S DFN=$O(^DGPM(NOD,NX,DFN)) G:'DFN FN3 D PRT Q:DGU
Q:DGU
PRT S ADM=$O(^DGPM(NOD,NX,DFN,0)) Q:'ADM D P0
Q
P0 Q:'$D(^DPT(DFN,0)) S Y(0)=^(0) Q:'$D(^DGPM(ADM,0))
I NOD="AMV1" S X1=$P(^DGPM(ADM,0),"^",18) Q:X1=40
I NOD="AMV3" S X1=$P(^DGPM(ADM,0),"^",18) I X1=41!(X1=42)!(X1=46)!(X1=47) Q
I $Y+6>IOSL D RT Q:DGU
D PID^VADPT6 W !,$E($P(Y(0),"^",1),1,22),?24,VA("BID")
W ?32,$J(+$E(NX,6,7),2),"-",$P("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"," ",+$E(NX,4,5))
I NX#1 S I2=+$E(NX_"0",9,10) W $J($S(I2>12:I2-12,1:I2),3),":",$E(NX_"000",11,12),$S(I2>11:"pm",1:"am")
D GET W ?48,FW,?65,TW Q
GET S (FW,TW,FR,TR)=""
S X1=^DGPM(ADM,0) I NOD="AMV1" S TW=$P(X1,"^",6),TR=$P(X1,"^",7) G G1
S FW=$P(X1,"^",6),FR=$P(X1,"^",7) G:NOD="AMV2" G0
S VAIP("E")=ADM D IN5^VADPT I VAIP(15)]"" S T1=^DGPM(VAIP(15),0) S:T1<NX FW=$P(T1,"^",6) S:$P(T1,"^",7) FR=$P(T1,"^",7) I +T1'<NX S TW=$P(T1,"^",6) S:$P(T1,"^",7) TR=$P(T1,"^",7)
S:TW'="" FW=TW,TW="",FR=TR,TR="" G G1
G0 S X2="",VAIP("E")=ADM D IN5^VADPT
I VAIP(15)]"" S X1=^DGPM(VAIP(15),0) I X1<NX S FW=$P(X1,"^",6),FR=$P(X1,"^",7),X2=$P(X1,"^",18)
S X1=^DGPM(ADM,0),TW=$P(X1,"^",6),TR=$P(X1,"^",7)
S X1=$P(X1,"^",18)
I "^1^2^3^25^43^45^"[("^"_X1_"^") S TW=$S(X1=2:"AUTH LEAVE",X1=3!(X1=25):"UA LEAVE",X1=1:"ON PASS",X1=44:"ASIH",X1=43!(X1=45):"ASIH OTHER",1:TW),TR=""
I "^14^22^23^24^44^45^"[("^"_X1_"^") S FW=$S(X1=24:"AUTH LEAVE",X1=22:"UA LEAVE",X1=23:"FROM PASS",X2=43!(X1=45)!(X1=44):"ASIH OTHER",1:FW) I X1'=14,(X2'=13) S FR="" ; keep room if returning from asih in same hosp
G1 S:FW FW=$P(^DIC(42,FW,0),"^",1) S:TW TW=$P(^DIC(42,TW,0),"^",1)
S:FR FR=$P(^DG(405.4,FR,0),"^",1) S:TR TR=$P(^DG(405.4,TR,0),"^",1)
S FW=$E(FW,1,14-$L(FR))_" "_FR,TW=$E(TW,1,14-$L(TR))_" "_TR Q
RT F X=$Y:1:(IOSL-2) W !
I (IOST?1"C-".E) R ?22,"Enter <RET> to continue or '^' to QUIT ",X:DTIME S:X["^"!('$T) DGU=1 Q:DGU
D HDR1 W !!?26,DGX,! Q
HDR1 D HDR W !!?5,"Name",?24,"PT ID",?35,"Date/Time",?49,"FROM Ward-Bed",?67,"TO Ward-Bed"
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGOPATM 3373 printed Dec 13, 2024@02:46:41 Page 2
DGOPATM ;GLRISC/REL - Patient Movements ;11/4/89 11:05 ;
+1 ;;5.3;Registration;**93,162**;Aug 13, 1993
+2 SET (DAT,DGU)=0
DO HDR
P1 SET %DT="AEXT"
SET %DT("A")="START with DATE@TIME: "
WRITE !
DO ^%DT
if Y<1
GOTO KIL
SET DAT=Y
+1 IF DAT>NOW
WRITE " [ Date cannot be in Future ]"
GOTO P1
+2 SET X1=DT
SET X2=-5
DO C^%DTC
IF DAT<X
WRITE " [ DATE MORE THAN 5 DAYS IN PAST ]"
GOTO P1
P2 SET DGVAR="DAT^DGU"
SET DGPGM="F0^DGOPATM"
WRITE !
DO ZIS^DGUTQ
IF 'POP
USE IO
GOTO F0^DGOPATM
KIL KILL %,%DT,%ZIS,ADM,DAT,DFN,DTP,DGVAR,DGPGM,DGU,DGX,FHA1,FW,FR,H1,I2,KK,LL,LST,NOD,NOW,NX,POP,RM,T1,TRN,TW,TR,X,X1,X2,Y,VA("BID"),VA("PID"),VAIP,VAERR,VADAT,VADATE
DO CLOSE^DGUTQ
QUIT
F0 DO HDR1
+1 SET DGX="--- A D M I S S I O N S ---"
WRITE !!?26,DGX,!
SET NOD="AMV1"
DO FND
if DGU
GOTO KIL
+2 SET DGX="--- D I S C H A R G E S ---"
WRITE !!?26,DGX,!
SET NOD="AMV3"
DO FND
if DGU
GOTO KIL
+3 SET DGX="--- T R A N S F E R S ---"
WRITE !!?26,DGX,!
SET NOD="AMV2"
DO FND
WRITE !
if DGU
GOTO KIL
+4 GOTO KIL
DTP SET DTP=$EXTRACT(DTP,1,12)
SET DTP=$$FMTE^XLFDT(DTP,"1P")
QUIT
HDR SET H1=""
IF DAT
SET DTP=DAT
DO DTP
SET H1=DTP_" to "
+1 WRITE @IOF,!!?23,"P A T I E N T M O V E M E N T S"
+2 DO NOW^%DTC
SET (DTP,NOW)=%
SET DT=NOW\1
DO DTP
SET H1=H1_DTP
WRITE !!?(80-$LENGTH(H1)\2),H1
QUIT
FND SET NX=$PIECE(DAT,".",1)-.0001
FN1 SET NX=$ORDER(^DGPM(NOD,NX))
IF NX=""!(NX[".")!(NX>(DAT\1))
GOTO FN2
+1 FOR DFN=0:0
SET DFN=$ORDER(^DGPM(NOD,NX,DFN))
if 'DFN
QUIT
DO PRT
if DGU
QUIT
FN2 SET LST=DT+1
SET NX=DAT+$SELECT(DAT[".":-.0001,1:.0000001)
FN3 SET NX=$ORDER(^DGPM(NOD,NX))
if NX=""!(NX'<LST)!(DGU)
QUIT
+1 FOR DFN=0:0
SET DFN=$ORDER(^DGPM(NOD,NX,DFN))
if 'DFN
GOTO FN3
DO PRT
if DGU
QUIT
+2 if DGU
QUIT
PRT SET ADM=$ORDER(^DGPM(NOD,NX,DFN,0))
if 'ADM
QUIT
DO P0
+1 QUIT
P0 if '$DATA(^DPT(DFN,0))
QUIT
SET Y(0)=^(0)
if '$DATA(^DGPM(ADM,0))
QUIT
+1 IF NOD="AMV1"
SET X1=$PIECE(^DGPM(ADM,0),"^",18)
if X1=40
QUIT
+2 IF NOD="AMV3"
SET X1=$PIECE(^DGPM(ADM,0),"^",18)
IF X1=41!(X1=42)!(X1=46)!(X1=47)
QUIT
+3 IF $Y+6>IOSL
DO RT
if DGU
QUIT
+4 DO PID^VADPT6
WRITE !,$EXTRACT($PIECE(Y(0),"^",1),1,22),?24,VA("BID")
+5 WRITE ?32,$JUSTIFY(+$EXTRACT(NX,6,7),2),"-",$PIECE("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"," ",+$EXTRACT(NX,4,5))
+6 IF NX#1
SET I2=+$EXTRACT(NX_"0",9,10)
WRITE $JUSTIFY($SELECT(I2>12:I2-12,1:I2),3),":",$EXTRACT(NX_"000",11,12),$SELECT(I2>11:"pm",1:"am")
+7 DO GET
WRITE ?48,FW,?65,TW
QUIT
GET SET (FW,TW,FR,TR)=""
+1 SET X1=^DGPM(ADM,0)
IF NOD="AMV1"
SET TW=$PIECE(X1,"^",6)
SET TR=$PIECE(X1,"^",7)
GOTO G1
+2 SET FW=$PIECE(X1,"^",6)
SET FR=$PIECE(X1,"^",7)
if NOD="AMV2"
GOTO G0
+3 SET VAIP("E")=ADM
DO IN5^VADPT
IF VAIP(15)]""
SET T1=^DGPM(VAIP(15),0)
if T1<NX
SET FW=$PIECE(T1,"^",6)
if $PIECE(T1,"^",7)
SET FR=$PIECE(T1,"^",7)
IF +T1'<NX
SET TW=$PIECE(T1,"^",6)
if $PIECE(T1,"^",7)
SET TR=$PIECE(T1,"^",7)
+4 if TW'=""
SET FW=TW
SET TW=""
SET FR=TR
SET TR=""
GOTO G1
G0 SET X2=""
SET VAIP("E")=ADM
DO IN5^VADPT
+1 IF VAIP(15)]""
SET X1=^DGPM(VAIP(15),0)
IF X1<NX
SET FW=$PIECE(X1,"^",6)
SET FR=$PIECE(X1,"^",7)
SET X2=$PIECE(X1,"^",18)
+2 SET X1=^DGPM(ADM,0)
SET TW=$PIECE(X1,"^",6)
SET TR=$PIECE(X1,"^",7)
+3 SET X1=$PIECE(X1,"^",18)
+4 IF "^1^2^3^25^43^45^"[("^"_X1_"^")
SET TW=$SELECT(X1=2:"AUTH LEAVE",X1=3!(X1=25):"UA LEAVE",X1=1:"ON PASS",X1=44:"ASIH",X1=43!(X1=45):"ASIH OTHER",1:TW)
SET TR=""
+5 ; keep room if returning from asih in same hosp
IF "^14^22^23^24^44^45^"[("^"_X1_"^")
SET FW=$SELECT(X1=24:"AUTH LEAVE",X1=22:"UA LEAVE",X1=23:"FROM PASS",X2=43!(X1=45)!(X1=44):"ASIH OTHER",1:FW)
IF X1'=14
IF (X2'=13)
SET FR=""
G1 if FW
SET FW=$PIECE(^DIC(42,FW,0),"^",1)
if TW
SET TW=$PIECE(^DIC(42,TW,0),"^",1)
+1 if FR
SET FR=$PIECE(^DG(405.4,FR,0),"^",1)
if TR
SET TR=$PIECE(^DG(405.4,TR,0),"^",1)
+2 SET FW=$EXTRACT(FW,1,14-$LENGTH(FR))_" "_FR
SET TW=$EXTRACT(TW,1,14-$LENGTH(TR))_" "_TR
QUIT
RT FOR X=$Y:1:(IOSL-2)
WRITE !
+1 IF (IOST?1"C-".E)
READ ?22,"Enter <RET> to continue or '^' to QUIT ",X:DTIME
if X["^"!('$TEST)
SET DGU=1
if DGU
QUIT
+2 DO HDR1
WRITE !!?26,DGX,!
QUIT
HDR1 DO HDR
WRITE !!?5,"Name",?24,"PT ID",?35,"Date/Time",?49,"FROM Ward-Bed",?67,"TO Ward-Bed"