NURAAU4 ;HIRMFO/MD-DRIVER FOR ACUITY COUNTS...(count) ;2/27/98 14:21
;;4.0;NURSING SERVICE;**9**;Apr 25, 1997
HSKEEP2 ; SET VARIABLES AND CHECK FOR DISRUPTED PROCESS
S U="^",OUTSW=0 F X=1:1:4 S OUTSW(X)=0
; CHECK STATUS OF DATE NODE -- NUROUTSW='1' (stop job), '0' (run job)
S DATENODE=$G(^DIC(213.9,1,"DATE"))
I +$G(DATENODE)>DT S NUROUTSW=1 Q
I +$G(DATENODE)=DT,$P(DATENODE,U,2)=1 S OUTSW=1 ;day shift completion
I +$G(DATENODE)=DT,$P(DATENODE,U,6)=1 S OUTSW(1)=1 ;evening shift completion
I +$G(DATENODE)=DT,$P(DATENODE,U,10)=1 S OUTSW(2)=1 ;night shift completion
I +$G(DATENODE)=DT,$P(DATENODE,U,9)=1 S OUTSW(3)=1 ;separation/activation job completion
I +DATENODE=DT,OUTSW,OUTSW(1),OUTSW(2),OUTSW(3) S OUTSW(4)=1 Q ; quit if processing is up-to-date
I 'OUTSW S DFN(0)=$S($P(DATENODE,U,4)>0:$P(DATENODE,U,4)-1,1:0),NWARD(0)=$S($P(DATENODE,U,3)>0:$P(DATENODE,U,3)-1,1:0) ;get last day shift patient and ward processed
E S (NWARD(0),DFN(0))=0
I 'OUTSW(1) S DFN(1)=$S($P(DATENODE,U,8)>0:$P(DATENODE,U,8)-1,1:0),NWARD(1)=$S($P(DATENODE,U,7)>0:$P(DATENODE,U,7)-1,1:0) ; get last evening shift patient and ward processed
E S (NWARD(1),DFN(1))=0
I 'OUTSW(2) S DFN(2)=$S($P(DATENODE,U,12)>0:$P(DATENODE,U,12)-1,1:0),NWARD(2)=$S($P(DATENODE,U,11)>0:$P(DATENODE,U,11)-1,1:0) ;get last night shift patient and ward processed
E S (NWARD(2),DFN(2))=0
S $P(^DIC(213.9,1,"DATE"),U,2,12)=0_U_NWARD(0)_U_DFN(0)_U_U_0_U_NWARD(1)_U_DFN(1)_U_0_U_0_U_NWARD(2)_U_DFN(2)
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HNURAAU4 1497 printed Dec 13, 2024@02:18:50 Page 2
NURAAU4 ;HIRMFO/MD-DRIVER FOR ACUITY COUNTS...(count) ;2/27/98 14:21
+1 ;;4.0;NURSING SERVICE;**9**;Apr 25, 1997
HSKEEP2 ; SET VARIABLES AND CHECK FOR DISRUPTED PROCESS
+1 SET U="^"
SET OUTSW=0
FOR X=1:1:4
SET OUTSW(X)=0
+2 ; CHECK STATUS OF DATE NODE -- NUROUTSW='1' (stop job), '0' (run job)
+3 SET DATENODE=$GET(^DIC(213.9,1,"DATE"))
+4 IF +$GET(DATENODE)>DT
SET NUROUTSW=1
QUIT
+5 ;day shift completion
IF +$GET(DATENODE)=DT
IF $PIECE(DATENODE,U,2)=1
SET OUTSW=1
+6 ;evening shift completion
IF +$GET(DATENODE)=DT
IF $PIECE(DATENODE,U,6)=1
SET OUTSW(1)=1
+7 ;night shift completion
IF +$GET(DATENODE)=DT
IF $PIECE(DATENODE,U,10)=1
SET OUTSW(2)=1
+8 ;separation/activation job completion
IF +$GET(DATENODE)=DT
IF $PIECE(DATENODE,U,9)=1
SET OUTSW(3)=1
+9 ; quit if processing is up-to-date
IF +DATENODE=DT
IF OUTSW
IF OUTSW(1)
IF OUTSW(2)
IF OUTSW(3)
SET OUTSW(4)=1
QUIT
+10 ;get last day shift patient and ward processed
IF 'OUTSW
SET DFN(0)=$SELECT($PIECE(DATENODE,U,4)>0:$PIECE(DATENODE,U,4)-1,1:0)
SET NWARD(0)=$SELECT($PIECE(DATENODE,U,3)>0:$PIECE(DATENODE,U,3)-1,1:0)
+11 IF '$TEST
SET (NWARD(0),DFN(0))=0
+12 ; get last evening shift patient and ward processed
IF 'OUTSW(1)
SET DFN(1)=$SELECT($PIECE(DATENODE,U,8)>0:$PIECE(DATENODE,U,8)-1,1:0)
SET NWARD(1)=$SELECT($PIECE(DATENODE,U,7)>0:$PIECE(DATENODE,U,7)-1,1:0)
+13 IF '$TEST
SET (NWARD(1),DFN(1))=0
+14 ;get last night shift patient and ward processed
IF 'OUTSW(2)
SET DFN(2)=$SELECT($PIECE(DATENODE,U,12)>0:$PIECE(DATENODE,U,12)-1,1:0)
SET NWARD(2)=$SELECT($PIECE(DATENODE,U,11)>0:$PIECE(DATENODE,U,11)-1,1:0)
+15 IF '$TEST
SET (NWARD(2),DFN(2))=0
+16 SET $PIECE(^DIC(213.9,1,"DATE"),U,2,12)=0_U_NWARD(0)_U_DFN(0)_U_U_0_U_NWARD(1)_U_DFN(1)_U_0_U_0_U_NWARD(2)_U_DFN(2)
+17 QUIT