APCM11EH ;IHS/CMI/LAB - IHS MU;
;;1.0;IHS MU PERFORMANCE REPORTS;**1,4,5,6**;MAR 26, 2012;Build 65
;
;
S APCMHPG=0,APCMQUIT=""
D HDR
D ENDTIME
D W(" ",0,1,APCMPTYP)
S APCMNODE=$S(APCMRPTT=1:13,1:16)
S APCMX=0 F S APCMX=$O(^APCMMUCN(APCMRPTC,APCMNODE,APCMX)) Q:APCMX'=+APCMX!(APCMQUIT) D
.I APCMPTYP="P",$Y>(APCMIOSL-2) D HDR Q:APCMQUIT
.D W(^APCMMUCN(APCMRPTC,APCMNODE,APCMX,0),0,1,APCMPTYP)
D W(" ",0,1,APCMPTYP)
K APCMX,APCMQUIT,APCMHPG
Q
HDR ;
G:APCMPTYP'="P" HDR1
G:'APCMHPG HDR1
K DIR I $E(IOST)="C",IO=IO(0),'$D(ZTQUEUED) W ! S DIR(0)="EO" D ^DIR K DIR I Y=0!(Y="^")!($D(DTOUT)) S APCMQUIT=1 Q
;
HDR1 ;
I APCMHPG W:$D(IOF) @IOF
S APCMHPG=APCMHPG+1
D W("Cover Page",1,$S(APCMPTYP="P":0,1:1),APCMPTYP)
D W("Date Report Run: "_$$FMTE^XLFDT(DT),1,1,APCMPTYP)
D W("Indian Health Service RPMS Suite (BCER) v1.0",1,2,APCMPTYP)
I APCMRPTT=1 D W("*** IHS 2011 Stage 1 Meaningful Use Performance Measure Report for EPs ***",1,1,APCMPTYP)
I APCMRPTT=2 D W("** IHS 2011 Stage 1 MU Performance Report for Eligible Hospitals/CAHs **",1,1,APCMPTYP)
D W("Report Generated by: "_$$USR,1,1,APCMPTYP)
D W("Facility Name: "_$P(^DIC(4,$S(APCMRPTT=2:APCMFAC,1:DUZ(2)),0),U),1,1,APCMPTYP)
S X="Report Period: "_$$FMTE^XLFDT(APCMBD)_" to "_$$FMTE^XLFDT(APCMED) D W(X,1,1,APCMPTYP)
I $G(APCMWPP) S X="Previous Period: "_$$FMTE^XLFDT(APCMPBD)_" to "_$$FMTE^XLFDT(APCMPED) D W(X,1,1,APCMPTYP)
I APCMHPG'=1 D W^APCM11EH(" ",0,2,APCMPTYP) Q
Q:APCMRPTT=2
S X="Report for:" D W(X,0,2,APCMPTYP)
;S X=0 F S X=$O(APCMPRV(X)) Q:X'=+X D W($P(^VA(200,X,0),U,1),0,1,APCMPTYP,,5)
K K S X=0 F S X=$O(APCMPRV(X)) Q:X'=+X S K($P(^VA(200,X,0),U,1))=""
S C=0,T=3,X="",Y=""
F S X=$O(K(X)) Q:X="" D
.I Y="" S $E(Y,3)=$$SN(X) Q
.I Y]"" S $E(Y,40)=$$SN(X) D W^APCM11EH(Y,0,1,APCMPTYP) S Y=""
I Y]"" D W^APCM11EH(Y,0,1,APCMPTYP)
Q
SN(N) ;EP
Q $P(N,",",1)_", "_$P(N,",",2)
ENDTIME ;
I $D(APCMET) S APCMTS=(86400*($P(APCMET,",")-$P(APCMBT,",")))+($P(APCMET,",",2)-$P(APCMBT,",",2)),APCMHR=$P(APCMTS/3600,".") S:APCMHR="" APCMHR=0 D
.S APCMTS=APCMTS-(APCMHR*3600),APCMM=$P(APCMTS/60,".") S:APCMM="" APCMM=0 S APCMTS=APCMTS-(APCMM*60),APCMS=APCMTS D W("RUN TIME (H.M.S): "_APCMHR_"."_APCMM_"."_APCMS,0,2,APCMPTYP)
Q
CTR(X,Y) ;EP - Center X in a field Y wide.
Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
;----------
EOP ;EP - End of page.
Q:$E(IOST)'="C"
Q:$D(ZTQUEUED)!'(IOT["TRM")!$D(IO("S"))
NEW DIR
K DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
S DIR(0)="E",DIR("A")="Press enter to continue" D ^DIR
Q
;----------
USR() ;EP - Return name of current user from ^VA(200.
Q $S($G(DUZ):$S($D(^VA(200,DUZ,0)):$P($P(^(0),U),",",1)_", "_$P($P(^(0),U,1),",",2),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
;----------
;;
W(V,C,F,M,P,T) ;EP
NEW X
I $G(F)="" S F=1
I $G(C)="" S C=0
I $G(P)="" S P=1
I $G(T)="" S T=0
I M="P" D Q
.;I $Y>(APCMIOSL-2) D HDR Q:APCMQUIT W:$D(IOF) @IOF
.NEW X
.F X=1:1:F W !
.I C W $$CTR(V,80)
.I 'C W ?T,V
;set up array
I '$G(F) S F=0
NEW %,Z
S Z=""
S %=$P(^TMP($J,"APCMDEL",0),U)
F Z=1:1:F S %=%+1 S ^TMP($J,"APCMDEL",%)=""
S $P(^TMP($J,"APCMDEL",0),U)=%
I '$D(^TMP($J,"APCMDEL",%)) S ^TMP($J,"APCMDEL",%)=""
S $P(^TMP($J,"APCMDEL",%),U,P)=V
Q
APCM11EH ;IHS/CMI/LAB - IHS MU;
+1 ;;1.0;IHS MU PERFORMANCE REPORTS;**1,4,5,6**;MAR 26, 2012;Build 65
+2 ;
+3 ;
+4 SET APCMHPG=0
SET APCMQUIT=""
+5 DO HDR
+6 DO ENDTIME
+7 DO W(" ",0,1,APCMPTYP)
+8 SET APCMNODE=$SELECT(APCMRPTT=1:13,1:16)
+9 SET APCMX=0
FOR
SET APCMX=$ORDER(^APCMMUCN(APCMRPTC,APCMNODE,APCMX))
IF APCMX'=+APCMX!(APCMQUIT)
QUIT
Begin DoDot:1
+10 IF APCMPTYP="P"
IF $Y>(APCMIOSL-2)
DO HDR
IF APCMQUIT
QUIT
+11 DO W(^APCMMUCN(APCMRPTC,APCMNODE,APCMX,0),0,1,APCMPTYP)
End DoDot:1
+12 DO W(" ",0,1,APCMPTYP)
+13 KILL APCMX,APCMQUIT,APCMHPG
+14 QUIT
HDR ;
+1 IF APCMPTYP'="P"
GOTO HDR1
+2 IF 'APCMHPG
GOTO HDR1
+3 KILL DIR
IF $EXTRACT(IOST)="C"
IF IO=IO(0)
IF '$DATA(ZTQUEUED)
WRITE !
SET DIR(0)="EO"
DO ^DIR
KILL DIR
IF Y=0!(Y="^")!($DATA(DTOUT))
SET APCMQUIT=1
QUIT
+4 ;
HDR1 ;
+1 IF APCMHPG
IF $DATA(IOF)
WRITE @IOF
+2 SET APCMHPG=APCMHPG+1
+3 DO W("Cover Page",1,$SELECT(APCMPTYP="P":0,1:1),APCMPTYP)
+4 DO W("Date Report Run: "_$$FMTE^XLFDT(DT),1,1,APCMPTYP)
+5 DO W("Indian Health Service RPMS Suite (BCER) v1.0",1,2,APCMPTYP)
+6 IF APCMRPTT=1
DO W("*** IHS 2011 Stage 1 Meaningful Use Performance Measure Report for EPs ***",1,1,APCMPTYP)
+7 IF APCMRPTT=2
DO W("** IHS 2011 Stage 1 MU Performance Report for Eligible Hospitals/CAHs **",1,1,APCMPTYP)
+8 DO W("Report Generated by: "_$$USR,1,1,APCMPTYP)
+9 DO W("Facility Name: "_$PIECE(^DIC(4,$SELECT(APCMRPTT=2:APCMFAC,1:DUZ(2)),0),U),1,1,APCMPTYP)
+10 SET X="Report Period: "_$$FMTE^XLFDT(APCMBD)_" to "_$$FMTE^XLFDT(APCMED)
DO W(X,1,1,APCMPTYP)
+11 IF $GET(APCMWPP)
SET X="Previous Period: "_$$FMTE^XLFDT(APCMPBD)_" to "_$$FMTE^XLFDT(APCMPED)
DO W(X,1,1,APCMPTYP)
+12 IF APCMHPG'=1
DO W^APCM11EH(" ",0,2,APCMPTYP)
QUIT
+13 IF APCMRPTT=2
QUIT
+14 SET X="Report for:"
DO W(X,0,2,APCMPTYP)
+15 ;S X=0 F S X=$O(APCMPRV(X)) Q:X'=+X D W($P(^VA(200,X,0),U,1),0,1,APCMPTYP,,5)
+16 KILL K
SET X=0
FOR
SET X=$ORDER(APCMPRV(X))
IF X'=+X
QUIT
SET K($PIECE(^VA(200,X,0),U,1))=""
+17 SET C=0
SET T=3
SET X=""
SET Y=""
+18 FOR
SET X=$ORDER(K(X))
IF X=""
QUIT
Begin DoDot:1
+19 IF Y=""
SET $EXTRACT(Y,3)=$$SN(X)
QUIT
+20 IF Y]""
SET $EXTRACT(Y,40)=$$SN(X)
DO W^APCM11EH(Y,0,1,APCMPTYP)
SET Y=""
End DoDot:1
+21 IF Y]""
DO W^APCM11EH(Y,0,1,APCMPTYP)
+22 QUIT
SN(N) ;EP
+1 QUIT $PIECE(N,",",1)_", "_$PIECE(N,",",2)
ENDTIME ;
+1 IF $DATA(APCMET)
SET APCMTS=(86400*($PIECE(APCMET,",")-$PIECE(APCMBT,",")))+($PIECE(APCMET,",",2)-$PIECE(APCMBT,",",2))
SET APCMHR=$PIECE(APCMTS/3600,".")
IF APCMHR=""
SET APCMHR=0
Begin DoDot:1
+2 SET APCMTS=APCMTS-(APCMHR*3600)
SET APCMM=$PIECE(APCMTS/60,".")
IF APCMM=""
SET APCMM=0
SET APCMTS=APCMTS-(APCMM*60)
SET APCMS=APCMTS
DO W("RUN TIME (H.M.S): "_APCMHR_"."_APCMM_"."_APCMS,0,2,APCMPTYP)
End DoDot:1
+3 QUIT
CTR(X,Y) ;EP - Center X in a field Y wide.
+1 QUIT $JUSTIFY("",$SELECT($DATA(Y):Y,1:IOM)-$LENGTH(X)\2)_X
+2 ;----------
EOP ;EP - End of page.
+1 IF $EXTRACT(IOST)'="C"
QUIT
+2 IF $DATA(ZTQUEUED)!'(IOT["TRM")!$DATA(IO("S"))
QUIT
+3 NEW DIR
+4 KILL DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
+5 SET DIR(0)="E"
SET DIR("A")="Press enter to continue"
DO ^DIR
+6 QUIT
+7 ;----------
USR() ;EP - Return name of current user from ^VA(200.
+1 QUIT $SELECT($GET(DUZ):$SELECT($DATA(^VA(200,DUZ,0)):$PIECE($PIECE(^(0),U),",",1)_", "_$PIECE($PIECE(^(0),U,1),",",2),1:"UNKNOWN"),1:"DUZ UNDEFINED OR 0")
+2 ;----------
+3 ;;
W(V,C,F,M,P,T) ;EP
+1 NEW X
+2 IF $GET(F)=""
SET F=1
+3 IF $GET(C)=""
SET C=0
+4 IF $GET(P)=""
SET P=1
+5 IF $GET(T)=""
SET T=0
+6 IF M="P"
Begin DoDot:1
+7 ;I $Y>(APCMIOSL-2) D HDR Q:APCMQUIT W:$D(IOF) @IOF
+8 NEW X
+9 FOR X=1:1:F
WRITE !
+10 IF C
WRITE $$CTR(V,80)
+11 IF 'C
WRITE ?T,V
End DoDot:1
QUIT
+12 ;set up array
+13 IF '$GET(F)
SET F=0
+14 NEW %,Z
+15 SET Z=""
+16 SET %=$PIECE(^TMP($JOB,"APCMDEL",0),U)
+17 FOR Z=1:1:F
SET %=%+1
SET ^TMP($JOB,"APCMDEL",%)=""
+18 SET $PIECE(^TMP($JOB,"APCMDEL",0),U)=%
+19 IF '$DATA(^TMP($JOB,"APCMDEL",%))
SET ^TMP($JOB,"APCMDEL",%)=""
+20 SET $PIECE(^TMP($JOB,"APCMDEL",%),U,P)=V
+21 QUIT