Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ANSQSS

ANSQSS.m

Go to the documentation of this file.
  1. ANSQSS ;IHS/OIRM/DSD/CSC - CALCULATE NURSE STAFFING STATS; [ 02/25/98 10:32 AM ]
  1. ;;3.0;NURSING PATIENT ACUITY;;APR 01, 1996
  1. ;;CALCULATE NURSE STAFFING STATS
  1. EN ;CHECK THROUGH ALL NUSRING RECORDS BY DATE OF RECORD
  1. K ^TMP("ANS",$J)
  1. D LEVELS
  1. D FACTORS
  1. S ANSD=ANSBDT-1
  1. F S ANSD=$O(^ANSR("B",ANSD)) Q:'ANSD!(ANSD>ANSEDT) D EN1 ;CSC 12-97
  1. D B1
  1. Q
  1. EN1 ;CHECK THROUGH EACH RECORD FOR SPECIFIED DATE
  1. ;IF THE RECORD MATCHES THE UNIT FOR WHICH THE REPORT IS REQUESTED
  1. ;EVALUATE THE RECORD
  1. ;ANSD = DATE
  1. ;ANSN = IEN OF THE NURSING RECORD
  1. ;ANSUNIT = NURSING UNIT FOR THE REQUESTED REPORT
  1. S ANSN=0
  1. F S ANSN=$O(^ANSR("B",ANSD,ANSN)) Q:ANSN="" D
  1. .Q:$P($G(^ANSR(ANSN,0)),U,3)'=ANSUNIT
  1. .S X=^ANSR(ANSN,0),ANSSH=$P(X,U,2),ANSTY=$P(X,U,5)
  1. .I ANSTY'="O" D DC:ANSTY="D",ADM:ANSTY="A" Q
  1. .D SBCL
  1. .I ANSCL S P=ANSCL,S="O",A=1 D SBADD
  1. Q
  1. ADM ;SET INFO FOR EACH ADMISSION
  1. S ANSCL=1,L=0,M=99,D=$O(^ANSR(ANSN,"AT",0))
  1. I D F S N=$O(^ANSR(ANSN,"AT",D,N)) Q:N<1 D
  1. .I $D(^ANSR(N,0)),$P(^(0),U,5)="O" S S=$P(^(0),U,2) I S,S<M S M=S,L=N
  1. I L S ANSX=ANSN,ANSN=L D SBCL S ANSN=ANSX
  1. S P=ANSCL,S="A",A=1
  1. S:'P P=1
  1. D SBADD
  1. Q
  1. DC ;SET INFO FOR EACH DISCHARGE
  1. S P=7,S="O",A=1
  1. D SBADD
  1. Q
  1. B1 ;CALCULATE THE TOTAL NURSING HOURS AVAILABLE AND TOTALS FOR EACH DAY
  1. S ANSD=ANSBDT-1
  1. F S ANSD=$O(^ANS("AU",ANSD)) Q:ANSD=""!(ANSD>ANSEDT) D B3
  1. D ^ANSQSS1
  1. Q
  1. B3 ;CALCULATE NURSING HOURS AVAILABLE
  1. S ANSSH=""
  1. F S ANSSH=$O(^ANS("AU",ANSD,ANSUNIT,ANSSH)) Q:ANSSH="" D
  1. .S ANSN=""
  1. .F S ANSN=$O(^ANS("AU",ANSD,ANSUNIT,ANSSH,ANSN)) Q:ANSN="" D
  1. ..Q:'$D(^ANS(ANSN,0)) S A=$P(^(0),U,4)+$P(^(0),U,5),P=1,S="H"
  1. ..D SBADD
  1. ..S L=0,N=0
  1. ..F I=1:1 S N=$O(^ANS(ANSN,"N",N)) Q:N<1 I $D(^(N,0)) S L=L+$P(^(0),U,2)
  1. ..S A=L,P=2,S="H" D SBADD
  1. Q
  1. SBADD ;SET TEMP GLOBAL WITH INFO FOR REPORT
  1. ;S = "A" FOR ADMISSION, "O" FOR OBSERVATION, "H" HOURS AVAILABLE
  1. ;P = PIECE AT WHICH DATA IS TO BE STORED
  1. ;A = VALUE TO BE ADDED TO THE GLOBAL NODE
  1. S $P(^TMP("ANS",$J,ANSD,ANSSH,S),U,P)=$P($G(^TMP("ANS",$J,ANSD,ANSSH,S)),U,P)+A
  1. Q
  1. SBCL ;CALCULATE THE LEVEL OF CARE FOR THE NURSING RECORD
  1. ;ANSCL = CARE LEVEL
  1. ;N = LEVEL & NUMBER OF POINTS FOR EACH OF THE 10 CRITERION
  1. ;L = TOTAL NUMBER OF POINTS
  1. S (L,ANSCL)=0
  1. F I=1:1:10 I $D(^ANSR(ANSN,"L",I,0)) S N=$P(^(0),U,2) D:N
  1. .S X=$G(^ANSD(59,N,0))
  1. .I N>4,$P(X,U,N) S N=$P(X,U,N)
  1. .S L=L+N
  1. S N=0
  1. F S N=$O(^ANSR(ANSN,"F",N)) Q:N<1 I $D(ANSF(+N)) S F=ANSF(+N) S:F="+" L=L+4 S:F="-" L=L-4
  1. S L=$O(ANSL(L-1))
  1. I L S ANSCL=ANSL(L)
  1. Q
  1. LEVELS ;SET ARRAYS OF CARE LEVEL INFORMATION
  1. ;L = NUMBER OF POINTS PER LEVEL
  1. ;ANSL(L) = ARRAY OF LEVELS BY NUMBER OF POINTS PER LEVEL
  1. ;ANSH(L) = ARRAY OF LEVELS BY LEVEL NUMBER (1-6)
  1. ;ANSA(L) = ARRAY OF LEVELS BY HOURS REQUIRED FOR ADMISSION
  1. S N=0
  1. F S N=$O(^ANSD(51.1,1,"K",N)) Q:N<1 D
  1. .S X=$G(^ANSD(51.1,1,"K",N,0))
  1. .S:X]"" L=$P(X,U,5),ANSL(N)=L,ANSH(L)=$P(X,U,4),ANSA(L)=$P(X,U,6)
  1. Q
  1. FACTORS ;SETS ARRAY OF ADJUSTMENT FACTORS
  1. ;N = IEN OF THE ADJUSTMENT FACTOR
  1. ;S = WHETHER THE FACTOR ADDS '+' OR DECREASES '-' NURSING TIME REQUIRED
  1. S N=0
  1. F S N=$O(^ANSD(59.3,N)) Q:N<1 S S=$P($G(^(N,0)),U,3) S:S]"" ANSF(N)=S
  1. Q