NURAAU1 ;HIRMFO/RM/MD-DRIVER FOR ACUITY COUNTS...(cont.) ;2/27/98 14:20
;;4.0;NURSING SERVICE;**1,7,9,14**;Apr 25, 1997
EN1 ; ENTRY TO CALCULATE PATIENT ACUITY FOR NURSING WARD NWARD.
I OUTSW G MID
S NURTYPE=0 F NWARD=NWARD(0):0 S NWARD=$O(^TMP($J,"NURCEN",NWARD)) Q:NWARD'>0 F DFN=DFN(0):0 S DFN=$O(^TMP($J,"NURCEN",NWARD,DFN)) Q:DFN'>0 W:'$D(ZTQUEUED) "." S $P(^DIC(213.9,1,"DATE"),U,3,4)=NWARD_U_DFN D AGAIN
S SHIFT="D" D HEMCOUNT^NURAAU3,RECOUNT^NURAAU3 S $P(^DIC(213.9,1,"DATE"),U,2)=1,$P(^("DATE"),U,3)=0,$P(^("DATE"),U,4)=0
MID Q:OUTSW(1) S NURTYPE=1,(NURCUTDT,NURCENDT)=RPTDATE_".2400" D ^NURSACEN ; Calculate hospital census at evening shift cutoff time (Midnight Acuity).
F NWARD=NWARD(1):0 S NWARD=$O(^TMP($J,"NURCEN",NWARD)) Q:NWARD'>0 F DFN=+DFN(1):0 S DFN=$O(^TMP($J,"NURCEN",NWARD,DFN)) Q:DFN'>0 W:'$D(ZTQUEUED) "." S $P(^DIC(213.9,1,"DATE"),U,7,8)=NWARD_U_DFN D AGAIN
S SHIFT="E" D HEMCOUNT^NURAAU3,RECOUNT^NURAAU3 S $P(^DIC(213.9,1,"DATE"),U,6)=1,$P(^("DATE"),U,7)=0,$P(^("DATE"),U,8)=0
Q
AGAIN ; CHECK PATIENT RECORD IS TO SEE IF VALID
K CLASDT,NCWARD
S BEDSECT=+$O(^NURSF(213.3,"B","DOMICILIARY",""))
I $D(^NURSF(211.4,"ABS",BEDSECT,NWARD)) S SHIFT=$S(NURTYPE=0:"D",1:"E"),NBEDSECT=$E("00"_BEDSECT,1+$L(BEDSECT),2+$L(BEDSECT)),NCWARD=NWARD D DOMRECNT^NURAAU2 Q
S CHGSW=0 D EN6^NURSCUTL S NURSCLAS("CL")=0 D EN2^NURSCUTL S NURSADM=$S(VAIN(1)="":"",1:$P(VAIN(7),U))
I NURSADM="" S NURSADM=$P($G(^NURSF(214,DFN,0)),U,5) I NURSADM="" S NMESS="NOT ADMITTED",CLSDATE="" S:'NURTYPE NERR=NMESS S:NURTYPE NERR(1)=NMESS G WRITE
B1 I NURSCLAS="" S NMESS="NOT CLASSIFIED",CLSDATE="" S:'NURTYPE NERR=NMESS S:NURTYPE NERR(1)=NMESS G WRITE
S CLASDT=9999999-$P(^NURSA(214.6,NURSCLAS,0),U) I NURTYPE,(((9999999-CLASDT)'<RPTDATE)&((9999999-CLASDT)'>(.24+RPTDATE))) G B2
I 'NURTYPE,(((9999999-CLASDT)'<RPTDATE)&((9999999-CLASDT)'>(.15+RPTDATE))) G B2
I NURSADM>$P(^NURSA(214.6,NURSCLAS,0),U) S NMESS="NOT CLASSIFIED",CLSDATE="" S:'NURTYPE NERR=NMESS S:NURTYPE NERR(1)=NMESS G WRITE
I (9999999-CLASDT)<RPTDATE S NMESS="CLASS. NOT CURRENT",CLSDATE=9999999-CLASDT S:'NURTYPE NERR=NMESS S:NURTYPE NERR(1)=NMESS G WRITE
S CHGSW=1,NURSLCS=9999999-CLASDT
B S CLASDT=$O(^NURSA(214.6,"AA",DFN,CLASDT)) G B0:CLASDT="",B:((9999999-CLASDT)>(.15+RPTDATE))
B0 I CLASDT'>0!((9999999-CLASDT)<RPTDATE) S:'NURTYPE NERR="NOT CLASS. BY 3 PM" S:NURTYPE NERR(1)="" S CLSDATE=NURSLCS G WRITE
S NURSCLAS=$O(^NURSA(214.6,"AA",DFN,CLASDT,0)) I '($P($G(^NURSA(214.6,+NURSCLAS,0)),U,8)=NWARD) S:'NURTYPE NERR="NO CLASS./NEW WARD" S:NURTYPE NERR(1)="" S CLSDATE=NURSLCS G WRITE
B2 S NURSCLAS=$O(^NURSA(214.6,"AA",DFN,CLASDT,0)) F CHKVAR=0:0 S CHKVAR=$O(^(NURSCLAS)) Q:CHKVAR'>0 S X=$D(^NURSA(214.6,CHKVAR,0)) S:X NURSCLAS=CHKVAR I 'X K ^NURSA(214.6,"AA",DFN,CLASDT,CHKVAR)
I NURSCLAS,'$D(^NURSA(214.6,NURSCLAS,0)) K ^NURSA(214.6,"AA",DFN,CLASDT,NURSCLAS) G B
I NURSCLAS="" S NMESS="BAD CLASS. XREF",CLSDATE=9999999-CLASDT S:'NURTYPE NERR=NMESS S:NURTYPE NERR(1)=NMESS G WRITE
ANYCLASS ; CHECK TO SEE PATIENT HAS BEEN CLASSIFIED THAT DAY
S DATECL=$G(^NURSA(214.6,NURSCLAS,0))
S CLSDATE=$P(DATECL,U)
S NCWARD=$P(DATECL,U,8) G:NCWARD="" A
I NCWARD'=NWARD S NMESS="NO CLASS./NEW WARD" S NURSCLAS("CL")=2,NURSCLAS("WARD")=NWARD,NURSCLAS("DATE")=RPTDATE D EN2^NURSCUTL S:NURTYPE NERR(1)=NMESS S:'NURSCLAS NERR=NMESS G:NURSCLAS B1 G:NURSCLAS="" WRITE
S CLASS=$P(DATECL,U,3),BEDSECT=$P(DATECL,U,9)
A I (CLASS="")!(BEDSECT="")!(NCWARD="") S NMESS="BAD DATA" S:'NURTYPE NERR=NMESS S:NURTYPE NERR(1)=NMESS G WRITE
NOCLASS ; ADD PATIENT CLASSIFICATION TO ACUITY COUNTS
I $L(BEDSECT)=1 S BEDSECT="0"_BEDSECT
S NCWARD=NWARD,SHIFT=$S(NURTYPE=0:"D",1:"E") F I=1:1:5 S NCLASS(I)=0
S NCLASS(CLASS)=1
I $P($G(^NURSF(211.4,NCWARD,1)),U)="A" D FINALLY^NURAAU0
Q
;
WRITE ; WRITE EXCEPTION LINE
D ^NURSAPCH,EXCP^NURAAU3
K NMESS,NERR
Q
NURAAU1 ;HIRMFO/RM/MD-DRIVER FOR ACUITY COUNTS...(cont.) ;2/27/98 14:20
+1 ;;4.0;NURSING SERVICE;**1,7,9,14**;Apr 25, 1997
EN1 ; ENTRY TO CALCULATE PATIENT ACUITY FOR NURSING WARD NWARD.
+1 IF OUTSW
GOTO MID
+2 SET NURTYPE=0
FOR NWARD=NWARD(0):0
SET NWARD=$ORDER(^TMP($JOB,"NURCEN",NWARD))
IF NWARD'>0
QUIT
FOR DFN=DFN(0):0
SET DFN=$ORDER(^TMP($JOB,"NURCEN",NWARD,DFN))
IF DFN'>0
QUIT
IF '$DATA(ZTQUEUED)
WRITE "."
SET $PIECE(^DIC(213.9,1,"DATE"),U,3,4)=NWARD_U_DFN
DO AGAIN
+3 SET SHIFT="D"
DO HEMCOUNT^NURAAU3
DO RECOUNT^NURAAU3
SET $PIECE(^DIC(213.9,1,"DATE"),U,2)=1
SET $PIECE(^("DATE"),U,3)=0
SET $PIECE(^("DATE"),U,4)=0
MID ; Calculate hospital census at evening shift cutoff time (Midnight Acuity).
IF OUTSW(1)
QUIT
SET NURTYPE=1
SET (NURCUTDT,NURCENDT)=RPTDATE_".2400"
DO ^NURSACEN
+1 FOR NWARD=NWARD(1):0
SET NWARD=$ORDER(^TMP($JOB,"NURCEN",NWARD))
IF NWARD'>0
QUIT
FOR DFN=+DFN(1):0
SET DFN=$ORDER(^TMP($JOB,"NURCEN",NWARD,DFN))
IF DFN'>0
QUIT
IF '$DATA(ZTQUEUED)
WRITE "."
SET $PIECE(^DIC(213.9,1,"DATE"),U,7,8)=NWARD_U_DFN
DO AGAIN
+2 SET SHIFT="E"
DO HEMCOUNT^NURAAU3
DO RECOUNT^NURAAU3
SET $PIECE(^DIC(213.9,1,"DATE"),U,6)=1
SET $PIECE(^("DATE"),U,7)=0
SET $PIECE(^("DATE"),U,8)=0
+3 QUIT
AGAIN ; CHECK PATIENT RECORD IS TO SEE IF VALID
+1 KILL CLASDT,NCWARD
+2 SET BEDSECT=+$ORDER(^NURSF(213.3,"B","DOMICILIARY",""))
+3 IF $DATA(^NURSF(211.4,"ABS",BEDSECT,NWARD))
SET SHIFT=$SELECT(NURTYPE=0:"D",1:"E")
SET NBEDSECT=$EXTRACT("00"_BEDSECT,1+$LENGTH(BEDSECT),2+$LENGTH(BEDSECT))
SET NCWARD=NWARD
DO DOMRECNT^NURAAU2
QUIT
+4 SET CHGSW=0
DO EN6^NURSCUTL
SET NURSCLAS("CL")=0
DO EN2^NURSCUTL
SET NURSADM=$SELECT(VAIN(1)="":"",1:$PIECE(VAIN(7),U))
+5 IF NURSADM=""
SET NURSADM=$PIECE($GET(^NURSF(214,DFN,0)),U,5)
IF NURSADM=""
SET NMESS="NOT ADMITTED"
SET CLSDATE=""
IF 'NURTYPE
SET NERR=NMESS
IF NURTYPE
SET NERR(1)=NMESS
GOTO WRITE
B1 IF NURSCLAS=""
SET NMESS="NOT CLASSIFIED"
SET CLSDATE=""
IF 'NURTYPE
SET NERR=NMESS
IF NURTYPE
SET NERR(1)=NMESS
GOTO WRITE
+1 SET CLASDT=9999999-$PIECE(^NURSA(214.6,NURSCLAS,0),U)
IF NURTYPE
IF (((9999999-CLASDT)'<RPTDATE)&((9999999-CLASDT)'>(.24+RPTDATE)))
GOTO B2
+2 IF 'NURTYPE
IF (((9999999-CLASDT)'<RPTDATE)&((9999999-CLASDT)'>(.15+RPTDATE)))
GOTO B2
+3 IF NURSADM>$PIECE(^NURSA(214.6,NURSCLAS,0),U)
SET NMESS="NOT CLASSIFIED"
SET CLSDATE=""
IF 'NURTYPE
SET NERR=NMESS
IF NURTYPE
SET NERR(1)=NMESS
GOTO WRITE
+4 IF (9999999-CLASDT)<RPTDATE
SET NMESS="CLASS. NOT CURRENT"
SET CLSDATE=9999999-CLASDT
IF 'NURTYPE
SET NERR=NMESS
IF NURTYPE
SET NERR(1)=NMESS
GOTO WRITE
+5 SET CHGSW=1
SET NURSLCS=9999999-CLASDT
B SET CLASDT=$ORDER(^NURSA(214.6,"AA",DFN,CLASDT))
IF CLASDT=""
GOTO B0
IF ((9999999-CLASDT)>(.15+RPTDATE))
GOTO B
B0 IF CLASDT'>0!((9999999-CLASDT)<RPTDATE)
IF 'NURTYPE
SET NERR="NOT CLASS. BY 3 PM"
IF NURTYPE
SET NERR(1)=""
SET CLSDATE=NURSLCS
GOTO WRITE
+1 SET NURSCLAS=$ORDER(^NURSA(214.6,"AA",DFN,CLASDT,0))
IF '($PIECE($GET(^NURSA(214.6,+NURSCLAS,0)),U,8)=NWARD)
IF 'NURTYPE
SET NERR="NO CLASS./NEW WARD"
IF NURTYPE
SET NERR(1)=""
SET CLSDATE=NURSLCS
GOTO WRITE
B2 SET NURSCLAS=$ORDER(^NURSA(214.6,"AA",DFN,CLASDT,0))
FOR CHKVAR=0:0
SET CHKVAR=$ORDER(^(NURSCLAS))
IF CHKVAR'>0
QUIT
SET X=$DATA(^NURSA(214.6,CHKVAR,0))
IF X
SET NURSCLAS=CHKVAR
IF 'X
KILL ^NURSA(214.6,"AA",DFN,CLASDT,CHKVAR)
+1 IF NURSCLAS
IF '$DATA(^NURSA(214.6,NURSCLAS,0))
KILL ^NURSA(214.6,"AA",DFN,CLASDT,NURSCLAS)
GOTO B
+2 IF NURSCLAS=""
SET NMESS="BAD CLASS. XREF"
SET CLSDATE=9999999-CLASDT
IF 'NURTYPE
SET NERR=NMESS
IF NURTYPE
SET NERR(1)=NMESS
GOTO WRITE
ANYCLASS ; CHECK TO SEE PATIENT HAS BEEN CLASSIFIED THAT DAY
+1 SET DATECL=$GET(^NURSA(214.6,NURSCLAS,0))
+2 SET CLSDATE=$PIECE(DATECL,U)
+3 SET NCWARD=$PIECE(DATECL,U,8)
IF NCWARD=""
GOTO A
+4 IF NCWARD'=NWARD
SET NMESS="NO CLASS./NEW WARD"
SET NURSCLAS("CL")=2
SET NURSCLAS("WARD")=NWARD
SET NURSCLAS("DATE")=RPTDATE
DO EN2^NURSCUTL
IF NURTYPE
SET NERR(1)=NMESS
IF 'NURSCLAS
SET NERR=NMESS
IF NURSCLAS
GOTO B1
IF NURSCLAS=""
GOTO WRITE
+5 SET CLASS=$PIECE(DATECL,U,3)
SET BEDSECT=$PIECE(DATECL,U,9)
A IF (CLASS="")!(BEDSECT="")!(NCWARD="")
SET NMESS="BAD DATA"
IF 'NURTYPE
SET NERR=NMESS
IF NURTYPE
SET NERR(1)=NMESS
GOTO WRITE
NOCLASS ; ADD PATIENT CLASSIFICATION TO ACUITY COUNTS
+1 IF $LENGTH(BEDSECT)=1
SET BEDSECT="0"_BEDSECT
+2 SET NCWARD=NWARD
SET SHIFT=$SELECT(NURTYPE=0:"D",1:"E")
FOR I=1:1:5
SET NCLASS(I)=0
+3 SET NCLASS(CLASS)=1
+4 IF $PIECE($GET(^NURSF(211.4,NCWARD,1)),U)="A"
DO FINALLY^NURAAU0
+5 QUIT
+6 ;
WRITE ; WRITE EXCEPTION LINE
+1 DO ^NURSAPCH
DO EXCP^NURAAU3
+2 KILL NMESS,NERR
+3 QUIT