APCM25EM ;IHS/CMI/LAB - IHS MU AVG CENSUS;
;;1.0;MU PERFORMANCE REPORTS;**7**;MAR 26, 2012;Build 15
;
;
AVC(APCMBD,APCMED,F) ;EP - GET # H VISITS IN PREVIOUS CALENDAR YEAR AND DIVIDE BY 365
NEW BD,ED,X,Y,T,D
S X=$E(APCMBD,1,3)-1
S BD=X_"0101"
S ED=X_"1231"
S Y=1700+X
S D=$S($$LEAP^%DTC(Y):366,1:365)
S SD=$$FMADD^XLFDT(BD,-1)_".9999"
S T=0
F S SD=$O(^AUPNVSIT("B",SD)) Q:SD'=+SD!($P(SD,".")>ED) D
.S X=0 F S X=$O(^AUPNVSIT("B",SD,X)) Q:X'=+X D
..Q:'$D(^AUPNVSIT(X,0))
..Q:$P(^AUPNVSIT(X,0),U,7)'="H"
..Q:$P(^AUPNVSIT(X,0),U,6)'=F
..Q:$P(^AUPNVSIT(X,0),U,11) ;deleted
..S T=T+1
Q T/D
AVCADT(APCMBD,APCMED) ; -- have user select report by ward or by service
NEW APCMFRM,APCMIA
S APCMFRM=1
S APCMIA=1
;
;
INIT ; -- init variables and list array
NEW APCMDAYS,APCMADC
K APCMADC
S APCMDAYS=$$FMDIFF^XLFDT(APCMED,APCMBD)+1 ;# of days in date range
;
D 1 ;gather ward or service stats for date range
;
I '$D(APCMADC) Q 0
;
Q APCMADC
;
1 ; step thru ADT Census-Ward file for date range
NEW WARD,WRDNM,DATE,APCMA,X,LINE,TOTAL
S WARD=0
F S WARD=$O(^BDGCWD(WARD)) Q:'WARD D
. I APCMIA=0,'$D(^BDGWD(WARD)) Q ;old ward, no longer used
. I APCMIA=0,$$GET1^DIQ(9009016.5,WARD,.03)="INACTIVE" Q
. S WRDNM=$$GET1^DIQ(42,WARD,.01) ;ward name
. ;
. S DATE=APCMBD-.001
. F S DATE=$O(^BDGCWD(WARD,1,DATE)) Q:DATE>APCMED Q:'DATE D
.. ; count patients remaining and one day patients
.. S X=$P($G(^BDGCWD(WARD,1,DATE,0)),U,2)+$P($G(^(0)),U,8)
.. ; increment array for total inpatient days
.. S APCMA(WRDNM)=$G(APCMA(WRDNM))+X
;
; put sorted data into display array
S WARD=0 F S WARD=$O(APCMA(WARD)) Q:WARD="" D
. ; increment totals
. S TOTAL=$G(TOTAL)+APCMA(WARD)
;
; put totals line into display array
I $G(TOTAL) D
. S APCMADC=TOTAL/APCMDAYS
Q
APCM25EM ;IHS/CMI/LAB - IHS MU AVG CENSUS;
+1 ;;1.0;MU PERFORMANCE REPORTS;**7**;MAR 26, 2012;Build 15
+2 ;
+3 ;
AVC(APCMBD,APCMED,F) ;EP - GET # H VISITS IN PREVIOUS CALENDAR YEAR AND DIVIDE BY 365
+1 NEW BD,ED,X,Y,T,D
+2 SET X=$EXTRACT(APCMBD,1,3)-1
+3 SET BD=X_"0101"
+4 SET ED=X_"1231"
+5 SET Y=1700+X
+6 SET D=$SELECT($$LEAP^%DTC(Y):366,1:365)
+7 SET SD=$$FMADD^XLFDT(BD,-1)_".9999"
+8 SET T=0
+9 FOR
SET SD=$ORDER(^AUPNVSIT("B",SD))
IF SD'=+SD!($PIECE(SD,".")>ED)
QUIT
Begin DoDot:1
+10 SET X=0
FOR
SET X=$ORDER(^AUPNVSIT("B",SD,X))
IF X'=+X
QUIT
Begin DoDot:2
+11 IF '$DATA(^AUPNVSIT(X,0))
QUIT
+12 IF $PIECE(^AUPNVSIT(X,0),U,7)'="H"
QUIT
+13 IF $PIECE(^AUPNVSIT(X,0),U,6)'=F
QUIT
+14 ;deleted
IF $PIECE(^AUPNVSIT(X,0),U,11)
QUIT
+15 SET T=T+1
End DoDot:2
End DoDot:1
+16 QUIT T/D
AVCADT(APCMBD,APCMED) ; -- have user select report by ward or by service
+1 NEW APCMFRM,APCMIA
+2 SET APCMFRM=1
+3 SET APCMIA=1
+4 ;
+5 ;
INIT ; -- init variables and list array
+1 NEW APCMDAYS,APCMADC
+2 KILL APCMADC
+3 ;# of days in date range
SET APCMDAYS=$$FMDIFF^XLFDT(APCMED,APCMBD)+1
+4 ;
+5 ;gather ward or service stats for date range
DO 1
+6 ;
+7 IF '$DATA(APCMADC)
QUIT 0
+8 ;
+9 QUIT APCMADC
+10 ;
1 ; step thru ADT Census-Ward file for date range
+1 NEW WARD,WRDNM,DATE,APCMA,X,LINE,TOTAL
+2 SET WARD=0
+3 FOR
SET WARD=$ORDER(^BDGCWD(WARD))
IF 'WARD
QUIT
Begin DoDot:1
+4 ;old ward, no longer used
IF APCMIA=0
IF '$DATA(^BDGWD(WARD))
QUIT
+5 IF APCMIA=0
IF $$GET1^DIQ(9009016.5,WARD,.03)="INACTIVE"
QUIT
+6 ;ward name
SET WRDNM=$$GET1^DIQ(42,WARD,.01)
+7 ;
+8 SET DATE=APCMBD-.001
+9 FOR
SET DATE=$ORDER(^BDGCWD(WARD,1,DATE))
IF DATE>APCMED
QUIT
IF 'DATE
QUIT
Begin DoDot:2
+10 ; count patients remaining and one day patients
+11 SET X=$PIECE($GET(^BDGCWD(WARD,1,DATE,0)),U,2)+$PIECE($GET(^(0)),U,8)
+12 ; increment array for total inpatient days
+13 SET APCMA(WRDNM)=$GET(APCMA(WRDNM))+X
End DoDot:2
End DoDot:1
+14 ;
+15 ; put sorted data into display array
+16 SET WARD=0
FOR
SET WARD=$ORDER(APCMA(WARD))
IF WARD=""
QUIT
Begin DoDot:1
+17 ; increment totals
+18 SET TOTAL=$GET(TOTAL)+APCMA(WARD)
End DoDot:1
+19 ;
+20 ; put totals line into display array
+21 IF $GET(TOTAL)
Begin DoDot:1
+22 SET APCMADC=TOTAL/APCMDAYS
End DoDot:1
+23 QUIT