APCLCP91 ; IHS/CMI/LAB - APC report - process ;
;;2.0;IHS PCC SUITE;;MAY 14, 2009
START ; EP - process report
S APCLBT=$H,APCLJOB=$J
K ^XTMP("APCLCP9",APCLJOB,APCLBT)
D XTMP^APCLOSUT("APCLCP9","PCC ACTIVITY REPORT")
I $P(^APCLACTG(APCLACTG,0),U,2)]"",$P(^(0),U,3)]"",$P(^(0),U,4)]"" D I 1
.S APCLRRTN=$S($P($P(^APCLACTG(APCLACTG,0),U,2),"~",2)]"":$P($P(^APCLACTG(APCLACTG,0),U,2),"~")_"^"_$P($P(^APCLACTG(APCLACTG,0),U,2),"~",2),1:$P(^APCLACTG(APCLACTG,0),U,2)),APCLPIEC=$P(^(0),U,4),APCLGLOB="^"_$P(^(0),U,3)_"("
.S X=APCLRRTN X ^%ZOSF("TEST") I '$T S APCLRRTN="",APCLGLOB="^ICD9(",APCLPIEC=3 Q
E S APCLGLOB="^ICD9(",APCLRRTN="",APCLPIEC=3
I APCLRRTN]"" S APCLRRTN="^"_APCLRRTN
V ; Run by visit date
S APCLODAT=$O(^AUPNVSIT("B",APCLSD)) I APCLODAT="" S APCLET=$H Q
S APCLODAT=APCLSD_".9999" F S APCLODAT=$O(^AUPNVSIT("B",APCLODAT)) Q:APCLODAT=""!((APCLODAT\1)>APCLED) D V1
D SET
S APCLET=$H
Q
V1 ;
S APCLVDFN=0 F S APCLVDFN=$O(^AUPNVSIT("B",APCLODAT,APCLVDFN)) Q:APCLVDFN'=+APCLVDFN I $D(^AUPNVSIT(APCLVDFN,0)) S APCLVREC=^(0) I $P(APCLVREC,U,9),'$P(APCLVREC,U,11),$D(^AUPNVPOV("AD",APCLVDFN)),$D(^AUPNVPRV("AD",APCLVDFN)) D PROC
Q
PROC ;
K APCLSKIP
Q:$$DEMO^APCLUTL($P(APCLVREC,U,5),$G(APCLDEMO))
Q:"DXECH"[$P(APCLVREC,U,7)
Q:$D(^APCLCNTL(4,11,"AC",$P(APCLVREC,U,3)))
I $D(APCLCLN) Q:$P(APCLVREC,U,8)="" I '$D(APCLCLN($P(APCLVREC,U,8))) Q
S (APCL1,APCL2)=0 F S APCL2=$O(^AUPNVPRV("AD",APCLVDFN,APCL2)) Q:APCL2="" I $P(^AUPNVPRV(APCL2,0),U,4)="P" S APCL1=APCL1+1
I APCL1=0 Q
I APCL1>1 Q
S APCLVLOC=$P(APCLVREC,U,6)
S APCLSU=$P(^AUTTLOC(APCLVLOC,0),U,5)
Q:APCLSU'=APCLSUF
S APCLFOUN=0 D PROC2
Q:'APCLFOUN
D SETCODE
Q
EOJ K APCLVLOC,APCLVREC,APCLSKIP,APCL1,APCL2,APCLX,APCLY,APCLPRIM,APCLSU,APCLDISC,APCLCODE,APCLVTM,APCLVTT
Q
;
;
PROC2 ;
S APCLX=0 F S APCLX=$O(^AUPNVPRV("AD",APCLVDFN,APCLX)) Q:APCLX'=+APCLX!(APCLFOUN) S APCLCHN=APCLX D
. S APCLAP=$P(^AUPNVPRV(APCLX,0),U)
. I $P(^DD(9000010.06,.01,0),U,2)[200 S APCLDISC=$$PROVCLSC^XBFUNC1(APCLAP) Q:'$D(^APCLACTG(APCLACTG,11,"AC",APCLDISC)) S APCLFOUN=1 Q
. S APCLY=$P(^DIC(6,APCLAP,0),U,4)
. I APCLY="" Q
. I '$D(^DIC(7,APCLY,9999999)) Q
. Q:'$D(^APCLACTG(APCLACTG,11,"AC",$P(^DIC(7,APCLY,9999999),U)))
. S APCLFOUN=1
. Q
Q
SETCODE ;
S APCLCODE="" D GETCODE
Q:'APCLCODE
S ^("TOTAL")=$S($D(^XTMP("APCLCP9",APCLJOB,APCLBT,APCLSU,APCLCODE,"TOTAL")):^("TOTAL")+1,1:1)
Q
GETCODE ;
D GETPPOV
S APCLIPTR=$P(^AUPNVPOV(APCL1,0),U)
I $G(APCLRRTN)]"" D @APCLRRTN Q
S APCLCODE=APCLIPTR
Q
GETPPOV ;
I $P(APCLVREC,U,7)'="H" S APCL1=$O(^AUPNVPOV("AD",APCLVDFN,"")) Q
S (APCL1,APCL2)=0 F S APCL2=$O(^AUPNVPOV("AD",APCLVDFN,APCL2)) Q:APCL2'=+APCL2!(APCL1) I $P(^AUPNVPOV(APCL2,0),U,12)="P" S APCL1=APCL2
Q
SET ;
S X=0 F S X=$O(^XTMP("APCLCP9",APCLJOB,APCLBT,APCLSUF,X)) Q:X'=+X S Y=^XTMP("APCLCP9",APCLJOB,APCLBT,APCLSUF,X,"TOTAL"),^XTMP("APCLCP9",APCLJOB,APCLBT,APCLSUF,"TOP TEN",9999999-Y,X)=Y
Q
APCLCP91 ; IHS/CMI/LAB - APC report - process ;
+1 ;;2.0;IHS PCC SUITE;;MAY 14, 2009
START ; EP - process report
+1 SET APCLBT=$HOROLOG
SET APCLJOB=$JOB
+2 KILL ^XTMP("APCLCP9",APCLJOB,APCLBT)
+3 DO XTMP^APCLOSUT("APCLCP9","PCC ACTIVITY REPORT")
+4 IF $PIECE(^APCLACTG(APCLACTG,0),U,2)]""
IF $PIECE(^(0),U,3)]""
IF $PIECE(^(0),U,4)]""
Begin DoDot:1
+5 SET APCLRRTN=$SELECT($PIECE($PIECE(^APCLACTG(APCLACTG,0),U,2),"~",2)]"":$PIECE($PIECE(^APCLACTG(APCLACTG,0),U,2),"~")_"^"_$PIECE($PIECE(^APCLACTG(APCLACTG,0),U,2),"~",2),1:$PIECE(^APCLACTG(APCLACTG,0),U,2))
SET APCLPIEC=$PIECE(^(0),U,4)
SET APCLGLOB="^"_$PIECE(^(0),U,3)_"("
+6 SET X=APCLRRTN
XECUTE ^%ZOSF("TEST")
IF '$TEST
SET APCLRRTN=""
SET APCLGLOB="^ICD9("
SET APCLPIEC=3
QUIT
End DoDot:1
IF 1
+7 IF '$TEST
SET APCLGLOB="^ICD9("
SET APCLRRTN=""
SET APCLPIEC=3
+8 IF APCLRRTN]""
SET APCLRRTN="^"_APCLRRTN
V ; Run by visit date
+1 SET APCLODAT=$ORDER(^AUPNVSIT("B",APCLSD))
IF APCLODAT=""
SET APCLET=$HOROLOG
QUIT
+2 SET APCLODAT=APCLSD_".9999"
FOR
SET APCLODAT=$ORDER(^AUPNVSIT("B",APCLODAT))
IF APCLODAT=""!((APCLODAT\1)>APCLED)
QUIT
DO V1
+3 DO SET
+4 SET APCLET=$HOROLOG
+5 QUIT
V1 ;
+1 SET APCLVDFN=0
FOR
SET APCLVDFN=$ORDER(^AUPNVSIT("B",APCLODAT,APCLVDFN))
IF APCLVDFN'=+APCLVDFN
QUIT
IF $DATA(^AUPNVSIT(APCLVDFN,0))
SET APCLVREC=^(0)
IF $PIECE(APCLVREC,U,9)
IF '$PIECE(APCLVREC,U,11)
IF $DATA(^AUPNVPOV("AD",APCLVDFN))
IF $DATA(^AUPNVPRV("AD",APCLVDFN))
DO PROC
+2 QUIT
PROC ;
+1 KILL APCLSKIP
+2 IF $$DEMO^APCLUTL($PIECE(APCLVREC,U,5),$GET(APCLDEMO))
QUIT
+3 IF "DXECH"[$PIECE(APCLVREC,U,7)
QUIT
+4 IF $DATA(^APCLCNTL(4,11,"AC",$PIECE(APCLVREC,U,3)))
QUIT
+5 IF $DATA(APCLCLN)
IF $PIECE(APCLVREC,U,8)=""
QUIT
IF '$DATA(APCLCLN($PIECE(APCLVREC,U,8)))
QUIT
+6 SET (APCL1,APCL2)=0
FOR
SET APCL2=$ORDER(^AUPNVPRV("AD",APCLVDFN,APCL2))
IF APCL2=""
QUIT
IF $PIECE(^AUPNVPRV(APCL2,0),U,4)="P"
SET APCL1=APCL1+1
+7 IF APCL1=0
QUIT
+8 IF APCL1>1
QUIT
+9 SET APCLVLOC=$PIECE(APCLVREC,U,6)
+10 SET APCLSU=$PIECE(^AUTTLOC(APCLVLOC,0),U,5)
+11 IF APCLSU'=APCLSUF
QUIT
+12 SET APCLFOUN=0
DO PROC2
+13 IF 'APCLFOUN
QUIT
+14 DO SETCODE
+15 QUIT
EOJ KILL APCLVLOC,APCLVREC,APCLSKIP,APCL1,APCL2,APCLX,APCLY,APCLPRIM,APCLSU,APCLDISC,APCLCODE,APCLVTM,APCLVTT
+1 QUIT
+2 ;
+3 ;
PROC2 ;
+1 SET APCLX=0
FOR
SET APCLX=$ORDER(^AUPNVPRV("AD",APCLVDFN,APCLX))
IF APCLX'=+APCLX!(APCLFOUN)
QUIT
SET APCLCHN=APCLX
Begin DoDot:1
+2 SET APCLAP=$PIECE(^AUPNVPRV(APCLX,0),U)
+3 IF $PIECE(^DD(9000010.06,.01,0),U,2)[200
SET APCLDISC=$$PROVCLSC^XBFUNC1(APCLAP)
IF '$DATA(^APCLACTG(APCLACTG,11,"AC",APCLDISC))
QUIT
SET APCLFOUN=1
QUIT
+4 SET APCLY=$PIECE(^DIC(6,APCLAP,0),U,4)
+5 IF APCLY=""
QUIT
+6 IF '$DATA(^DIC(7,APCLY,9999999))
QUIT
+7 IF '$DATA(^APCLACTG(APCLACTG,11,"AC",$PIECE(^DIC(7,APCLY,9999999),U)))
QUIT
+8 SET APCLFOUN=1
+9 QUIT
End DoDot:1
+10 QUIT
SETCODE ;
+1 SET APCLCODE=""
DO GETCODE
+2 IF 'APCLCODE
QUIT
+3 SET ^("TOTAL")=$SELECT($DATA(^XTMP("APCLCP9",APCLJOB,APCLBT,APCLSU,APCLCODE,"TOTAL")):^("TOTAL")+1,1:1)
+4 QUIT
GETCODE ;
+1 DO GETPPOV
+2 SET APCLIPTR=$PIECE(^AUPNVPOV(APCL1,0),U)
+3 IF $GET(APCLRRTN)]""
DO @APCLRRTN
QUIT
+4 SET APCLCODE=APCLIPTR
+5 QUIT
GETPPOV ;
+1 IF $PIECE(APCLVREC,U,7)'="H"
SET APCL1=$ORDER(^AUPNVPOV("AD",APCLVDFN,""))
QUIT
+2 SET (APCL1,APCL2)=0
FOR
SET APCL2=$ORDER(^AUPNVPOV("AD",APCLVDFN,APCL2))
IF APCL2'=+APCL2!(APCL1)
QUIT
IF $PIECE(^AUPNVPOV(APCL2,0),U,12)="P"
SET APCL1=APCL2
+3 QUIT
SET ;
+1 SET X=0
FOR
SET X=$ORDER(^XTMP("APCLCP9",APCLJOB,APCLBT,APCLSUF,X))
IF X'=+X
QUIT
SET Y=^XTMP("APCLCP9",APCLJOB,APCLBT,APCLSUF,X,"TOTAL")
SET ^XTMP("APCLCP9",APCLJOB,APCLBT,APCLSUF,"TOP TEN",9999999-Y,X)=Y
+2 QUIT