APCDCAFS ; IHS/CMI/LAB - MENTAL HLTH ROUTINE 16-AUG-1994 ;
;;2.0;IHS PCC SUITE;**2,5,8,11**;MAY 14, 2009;Build 58
;; ;
;
PROCESS ;EP
S APCDJ=$J,APCDH=$H
S ^XTMP("APCDCAFR",0)=$$FMADD^XLFDT(DT,14)_"^"_DT_"^"_"PCC UNREVIEWED REPORT"
S APCDODAT=$P(APCDBD,".")-1,APCDODAT=APCDODAT_".9999"
S (APCDRCNT,APCDVIEN)=0 F S APCDODAT=$O(^AUPNVSIT("B",APCDODAT)) Q:APCDODAT=""!($P(APCDODAT,".")>$P(APCDED,".")) D
.S APCDVIEN=0 F S APCDVIEN=$O(^AUPNVSIT("B",APCDODAT,APCDVIEN)) Q:APCDVIEN'=+APCDVIEN D
..S APCDV0=$G(^AUPNVSIT(APCDVIEN,0))
..Q:APCDV0=""
..;Q:"AOSTCR"'[$P(APCDV0,U,7) ;SERV CAT - NO I's per Dorene
..I $P(APCDV0,U,7)="I",'$D(^APCDSITE(DUZ(2),13,"B","I")) G N
..;Q:"AOSTCR"'[$P(APCDV0,U,7)
..Q:'$$SCW^APCDCAF($P(APCDV0,U,7))
N ..;
..Q:'$P(APCDV0,U,9) ;NO DEP ENTRIES
..Q:$P(APCDV0,U,11) ;DELETED
..Q:$P(APCDV0,U,3)="C" ;CONTRACT
..;Q:'$D(^AUPNVPOV("AD",APCDVIEN)) ;no pov PER CAROLYN JOHNSON, INCLUDE THEM
..;Q:'$D(^AUPNVPRV("AD",APCDVIEN)) ;no provider
..S APCDVPP=$$PRIMPROV^APCLV(APCDVIEN,"I")
..;Q:'APCDVPP ;no primary provider
..S APCDVLOC=$P(APCDV0,U,6)
..Q:APCDVLOC="" ;no location of encounter
..I $D(APCDLOCS),'$D(APCDLOCS(APCDVLOC)) Q ;not a location we want
..S X=$P(APCDV0,U,7)
..Q:X="" ;no sc
..I $D(APCDSCS),'$D(APCDSCS(X)) Q ;not a sc we want
..S APCDVCLN=$P(APCDV0,U,8)
..I APCDVCLN="",$D(APCDCLNS) Q ;clinic blank and want certain clinics
..I $D(APCDCLNS),'$D(APCDCLNS(APCDVCLN)) Q ;not a CLINIC we want
..S APCDVHL=$P(APCDV0,U,22)
..I APCDVHL="",$D(APCDHLS) Q ;HOSP LOC blank and want certain HOSP LOCS
..I $D(APCDHLS),'$D(APCDHLS(APCDVHL)) Q ;not a HOSP LOC we want
..I APCDVPP="",$D(APCDPRVS) Q ;PRIM PROV blank and want certain PRIM PROVS
..I $D(APCDPRVS),'$D(APCDPRVS(APCDVPP)) Q ;not a PRIM PROV we want
..S APCDVCAS=$P($G(^AUPNVSIT(APCDVIEN,11)),U,11)
..I APCDVCAS="R" Q ;DON'T DISPLAY REVIEWED VISITS
..;I $D(APCDCASS),'$D(APCDCASS(APCDVCAS)) Q
..K APCDVCDR D GETVCDR(APCDVIEN,"APCDVCDR") ;GET ALL PENDING REASONS
..;S APCDVCDR=$$LASTCDR(APCDVIEN) ;last chart deficiency reason
..I '$D(APCDVCDR),$D(APCDCDRS) Q ;
..S G=0 I $D(APCDCDRS) D
...S X=0 F S X=$O(APCDVCDR(X)) Q:X'=+X I $D(APCDCDRS(X)) S G=1
..I $D(APCDCDRS),'G Q
..S ^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS",$$SORT(APCDVIEN,APCDSORT),APCDVIEN)=""
..Q
.Q
Q
GETVCDR(V,R) ;EP - are there any pending deficiencies
I '$G(V) Q ""
NEW IEN,I
S IEN=0
F S IEN=$O(^AUPNCANT(V,12,IEN)) Q:IEN'=+IEN D
. S IENS=IEN_","_V
. Q:$$GET1^DIQ(9000095.12,IENS,.03)]"" ;RESOLVED
. Q:$$GET1^DIQ(9000095.12,IENS,.08)]"" ;DELETED
. S I=$$GET1^DIQ(9000095.12,IENS,.02,"I")
. Q:I=""
. S @R@(I)=""
;NOW GET ANY OLD ONES
S IEN=0 F S IEN=$O(^AUPNVCA("AD",V,IEN)) Q:IEN'=+IEN D
.S I=$P($G(^AUPNVCA(IEN,0)),U,6)
.Q:I=""
.S @R@(I)=""
Q
;
DATE(D) ;
NEW X,Y
S X=$P(D,".")
S X=$E(D,4,5)_"/"_$E(D,6,7)_"/"_$E(D,2,3)
S Y=$$FMTE^XLFDT(D,"2S"),Y=$P(Y,"@",2),Y=$P(Y,":",1,2)
Q X_"@"_Y
;
ERRORCHK ;
;check for no pov, .9999 or multiple primary providers
S APCDERR=""
I '$D(^AUPNVPOV("AD",APCDV)) S APCDERR="NO POV"
S X=0 F S X=$O(^AUPNVPOV("AD",APCDV,X)) Q:X'=+X D
.I $$VAL^XBDIQ1(9000010.07,X,.01)=".9999" S APCDERR=".9999 POV " Q
.I $$VAL^XBDIQ1(9000010.07,X,.01)="ZZZ.999" S APCDERR="ZZZ.999 POV "
S X=0,C=0 F S X=$O(^AUPNVPRV("AD",APCDV,X)) Q:X'=+X D
.I $P(^AUPNVPRV(X,0),U,4)="P" S C=C+1
I C>1 S APCDERR=APCDERR_"MULT PRIM PROV"
Q
RBLK(V,L) ;left blank fill
NEW %,I
S %=$L(V),Z=L-% F I=1:1:Z S V=V_" "
Q V
LBLK(V,L) ;left blank fill
NEW %,I
S %=$L(V),Z=L-% F I=1:1:Z S V=" "_V
Q V
;
LASTCDR(V,F) ;EP - get last chart deficiency reason
I $G(F)="" S F="I" ;default to ien
;I '$D(^AUPNVCA(V)) Q ""
NEW X,A,D,L
S X=0 F S X=$O(^AUPNVCA("AD",V,X)) Q:X'=+X D
.Q:'$D(^AUPNVCA(X,0))
.Q:$P(^AUPNVCA(X,0),U,6)=""
.S D=$P(^AUPNVCA(X,0),U)
.S A((9999999-$P(D,".")))=X
S L=$O(A(0)) I L="" Q ""
S X=A(L)
Q $S(F="I":$P(^AUPNVCA(X,0),U,6),1:$$VAL^XBDIQ1(9000010.45,X,.06))
;
SORT(V,S) ;
NEW R
S R=""
D @(S_"SORT")
I R="" S R="--"
Q R
;
DSORT ;
I 'V Q ""
I '$D(^AUPNVSIT(V,0)) Q ""
S R=$P(^AUPNVSIT(V,0),U)
Q
;
SSORT ;
I 'V Q ""
I '$D(^AUPNVSIT(V,0)) Q ""
S R=$$VAL^XBDIQ1(9000010,V,.07)
Q
;
LSORT ;
I 'V Q ""
I '$D(^AUPNVSIT(V,0)) Q ""
S R=$$VAL^XBDIQ1(9000010,V,.06)
Q
;
CSORT ;
I 'V Q ""
I '$D(^AUPNVSIT(V,0)) Q ""
S R=$$VAL^XBDIQ1(9000010,V,.08)
Q
;
OSORT ;
I 'V Q ""
I '$D(^AUPNVSIT(V,0)) Q ""
S R=$$VAL^XBDIQ1(9000010,V,.22)
Q
;
PSORT ;
S R=$$PRIMPROV^APCLV(V,"N")
Q
;
ASORT ;
I 'V Q ""
I '$D(^AUPNVSIT(V,0)) Q ""
S R=$$VAL^XBDIQ1(9000010,V,1111)
I R="" S R="INCOMPLETE"
Q
;
RSORT ;
S R=$$LASTCDR(V,"E")
Q
;
NSORT ;
S R=$$VAL^XBDIQ1(9000010,V,.05)
Q
;
HSORT ;
S R=$$HRN^AUPNPAT($P(^AUPNVSIT(V,0),U,5),DUZ(2))
Q
;
TSORT ;
I V="" Q
I '$D(^AUPNVSIT(V,0)) Q ""
NEW D
S D=$P(^AUPNVSIT(V,0),U,5)
I D="" Q
S R=$$HRN^AUPNPAT(D,DUZ(2))
S R=R+10000000,R=$E(R,7,8)_$E(R,1,6)
Q
;
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("A")="Press Enter to Continue",DIR(0)="E" D ^DIR
Q
;----------
PRINT ;EP - called from xbdbque
S APCD80S="-------------------------------------------------------------------------------"
S Y=APCDBD D DD^%DT S APCDBDD=Y S Y=APCDED D DD^%DT S APCDEDD=Y
S APCDPG=0
K APCDQUIT
D COVPAGE
D PRINT1
DONE ;
I $D(APCDQUIT) G XIT
I $D(APCDET) S APCDDVTS=(86400*($P(APCDET,",")-$P(APCDBT,",")))+($P(APCDET,",",2)-$P(APCDBT,",",2)),APCDDVH=$P(APCDDVTS/3600,".") S:APCDDVH="" APCDDVH=0
S APCDDVTS=APCDDVTS-(APCDDVH*3600),APCDDVM=$P(APCDDVTS/60,".") S:APCDDVM="" APCDDVM=0 S APCDDVTS=APCDDVTS-(APCDDVM*60),APCDDVS=APCDDVTS W !!,"RUN TIME (H.M.S): ",APCDDVH,".",APCDDVM,".",APCDDVS
I $E(IOST)="C",IO=IO(0) S DIR(0)="E" D ^DIR K DIR
W:$D(IOF) @IOF
XIT ; Clean up and exit
K ^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS")
D EN^XBVK("APCD")
Q
PRINT1 ; Print report 2
K APCDQUIT
D HEAD
I '$D(^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS")) W !!,"There are no visits that are not already reviewed." Q
S APCDS="" F S APCDS=$O(^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS",APCDS)) Q:APCDS=""!($D(APCDQUIT)) D
.S APCDV="" F S APCDV=$O(^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS",APCDS,APCDV)) Q:APCDV=""!($D(APCDQUIT)) D
..I $Y>(IOSL-5) D HEAD Q:$D(APCDQUIT)
..D PRN1
..D DE
..D ER
Q
ER ; CHECK FOR VARIOUS ERRORS
;no pov, no prov, .9999, multi prim prov,
Q
DE ;EP;FIND DEP ENTRIES
W !?10,"This visit has: "
S APCDVFLE=9000010 F S APCDVFLE=$O(^DIC(APCDVFLE)) Q:APCDVFLE>9000010.99!(APCDVFLE'=+APCDVFLE) D DE2
Q
;
DE2 ;
Q:APCDVFLE=9000010.45 ;DON'T DISPLAY CHART AUDIT V FILE
S APCDVDG=^DIC(APCDVFLE,0,"GL"),APCDVIGR=APCDVDG_"""AD"",APCDV,APCDVDFN)"
S APCDVDFN="" I $O(@APCDVIGR)]"" W ?27,$P($P(^DIC(APCDVFLE,0),U),"V ",2),"'s",!
K APCDAPOV,APCDAPRV
F APCDVI=1:1 S APCDVDFN=$O(@APCDVIGR) Q:APCDVDFN="" D
.S APCDK12N=APCDVDG_APCDVDFN_",12)",APCDK12D=""
.I $D(@(APCDK12N)) S APCDK12D=@(APCDK12N)
.S APCDK16N="",APCDK16D="" I APCDVFLE=9000010.09 S APCDK16N=APCDVDG_APCDVDFN_",16)" I $D(@(APCDK16N)) S APCDK16D=@(APCDK16N)
.I $P(APCDK16D,U)]"" S APCDAPOV($P(APCDK16D,U))=""
.I $P(APCDK12D,U,13)]"" S APCDAPOV($P(APCDK12D,U,13))=""
.I $P(APCDK12D,U,2)]"" S APCDAPRV($P(^DIC(APCDVFLE,0),U)_" - "_$P($G(^VA(200,$P(APCDK12D,U,2),0)),U))=""
.I $P(APCDK12D,U,4)]"" S APCDAPRV($P(^DIC(APCDVFLE,0),U)_" - "_$P($G(^VA(200,$P(APCDK12D,U,4),0)),U))=""
Q
;
PRN1 ;EP
S APCDVR=^AUPNVSIT(APCDV,0) S:'$P(APCDVR,U,6) $P(APCDVR,U,6)=0
S DFN=$P(APCDVR,U,5)
S APCDHRN="" S APCDHRN=$$HRN^AUPNPAT(DFN,$P(APCDVR,U,6),2)
I APCDHRN="" S APCDHRN=$$HRN^AUPNPAT(DFN,DUZ(2))
W !,$$FMTE^XLFDT($P(APCDVR,U)),?19,APCDHRN,?31,$E($P(^DPT(DFN,0),U),1,17),?50,$E($P(^DIC(4,$P(APCDVR,U,6),0),U),1,10),?61,$P(APCDVR,U,7)
W ?64,$$CLINIC^APCLV(APCDV,"C"),?67,$E($$VAL^XBDIQ1(9000010,APCDV,.22),1,11),?78,$P(APCDVR,U,9)
W:$$PRIMPROV^APCLV(APCDV,"N")]"" !," PRIMARY PROVIDER: ",$$PRIMPROV^APCLV(APCDV,"N")
I $P($G(^AUPNVSIT(APCDV,12)),U,11)]"" W !," Ext Acct #: ",$P($G(^AUPNVSIT(APCDV,12)),U,11) ;IHS/CMI/LAB - added acct # display
;
Q
PAGEHEAD ;
HEAD ;EP;HEADER
G:$D(APCDDEM)!($D(APCDDEMM)) HEAD2
I 'APCDPG G HEAD1
HEAD2 I $E(IOST)="C",IO=IO(0) W ! S DIR(0)="EO" D ^DIR K DIR I Y=0!(Y="^")!($D(DTOUT)) S APCDQUIT="" Q
HEAD1 ;
W:$D(IOF) @IOF S APCDPG=APCDPG+1
W !,$$FMTE^XLFDT(DT),?70,"Page: ",APCDPG
W !?29,"PCC Data Entry Module"
W !,$$CTR("******************************************************************",80)
W !,$$CTR("* LIST OF VISITS WITH CHART AUDIT STATUS OF INCOMPLETE/BLANK *",80)
W !,$$CTR("******************************************************************",80)
S X="VISIT Date Range: "_APCDBDD_" through "_APCDEDD W !,$$CTR(X,80)
;S X=$S(APCDLOCT="A":"ALL Locations Included",APCDLOCT="O":"Location of Encounter: "_$P(^DIC(4,APCDLOCT("ONE"),0),U),APCDLOCT="S":"LOCATIONs Included: ALL Within the "_$P(^AUTTSU(APCDLOCT("SU"),0),U)_" Service Unit",1:"")
;W !?(80-$L(X)/2),X
W !!,"VISIT DATE",?19,"HRN",?31,"PATIENT NAME",?50,"LOCATION",?61,"SC",?64,"CL",?67,"HOSP LOC",?77,"DEC"
W !,APCD80S
Q
CTR(X,Y) ;EP - Center X in a field Y wide.
Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
;----------
COVPAGE ;
W !,$$FMTE^XLFDT(DT),?70,"Page: ",APCDPG
W !?29,"PCC Data Entry Module"
W !,$$CTR("******************************************************************",80)
W !,$$CTR("* LIST OF VISITS WITH CHART AUDIT STATUS OF INCOMPLETE/BLANK *",80)
W !,$$CTR("******************************************************************",80)
W !!,$$CTR("VISIT LIST CRITERIA",80)
W !!,"VISIT DATES: ",$$FMTE^XLFDT(APCDBD)," to ",$$FMTE^XLFDT(APCDED)
W !,"VISIT TYPE: NOT Contract"
W !!,"LOCATION OF ENCOUNTER: " D
.I '$D(APCDLOCS) W "All" Q
.S Y=0,C=0 F S Y=$O(APCDLOCS(Y)) Q:Y'=+Y S C=C+1 W:C>1 ";" W ?24,$E($P(^DIC(4,Y,0),U),1,15)
W !!,"CLINICS: " D
.I '$D(APCDCLNS) W "All" Q
.S Y=0,C=0 F S Y=$O(APCDCLNS(Y)) Q:Y'=+Y S C=C+1 W:C>1 ";" W ?24,$E($P(^DIC(40.7,Y,0),U),1,15)
W !!,"SERVICE CATEGORIES: " D
.I '$D(APCDSCS) W "All" Q
.S Y=0,C=0 F S Y=$O(APCDSCS(Y)) Q:Y'=+Y S C=C+1 W:C>1 ";" W ?24,$$EXTSET^XBFUNC(9000010,.07,Y)
W !!,"HOSPITAL LOCATIONS: " D
.I '$D(APCDHLS) W "All" Q
.S Y=0,C=0 F S Y=$O(APCDHLS(Y)) Q:Y'=+Y S C=C+1 W:C>1 ";" W ?24,$E($P(^SC(Y,0),U),1,15)
W !!,"PRIMARY PROVIDER ON VISIT: " D
.I '$D(APCDPRV) W "All" Q
.S Y=0,C=0 F S Y=$O(APCDPRVS(Y)) Q:Y'=+Y S C=C+1 W:C>1 ";" W ?24,$E($P(^VA(200,Y,0),U),1,15)
;W !!,"CHART AUDIT STATUS: " D
;.I '$D(APCDCASS) W "All" Q
;.S Y=0,C=0 F S Y=$O(APCDCASS(Y)) Q:Y'=+Y S C=C+1 W:C>1 ";" W ?24,$$EXTSET^XBFUNC(9000010.45,Y,.04)
W !!,"CHART DEFICIENCY REASONS: " D
.I '$D(APCDCDRS) W "All (includes visits with no chart deficiency reason entered" Q
.S Y=0,C=0 F S Y=$O(APCDCDRS(Y)) Q:Y'=+Y S C=C+1 W:C>1 ";" W ?24,$E($P(^AUTTCDR(Y,0),U),1,15)
Q
APCDCAFS ; IHS/CMI/LAB - MENTAL HLTH ROUTINE 16-AUG-1994 ;
+1 ;;2.0;IHS PCC SUITE;**2,5,8,11**;MAY 14, 2009;Build 58
+2 ;; ;
+3 ;
PROCESS ;EP
+1 SET APCDJ=$JOB
SET APCDH=$HOROLOG
+2 SET ^XTMP("APCDCAFR",0)=$$FMADD^XLFDT(DT,14)_"^"_DT_"^"_"PCC UNREVIEWED REPORT"
+3 SET APCDODAT=$PIECE(APCDBD,".")-1
SET APCDODAT=APCDODAT_".9999"
+4 SET (APCDRCNT,APCDVIEN)=0
FOR
SET APCDODAT=$ORDER(^AUPNVSIT("B",APCDODAT))
IF APCDODAT=""!($PIECE(APCDODAT,".")>$PIECE(APCDED,"."))
QUIT
Begin DoDot:1
+5 SET APCDVIEN=0
FOR
SET APCDVIEN=$ORDER(^AUPNVSIT("B",APCDODAT,APCDVIEN))
IF APCDVIEN'=+APCDVIEN
QUIT
Begin DoDot:2
+6 SET APCDV0=$GET(^AUPNVSIT(APCDVIEN,0))
+7 IF APCDV0=""
QUIT
+8 ;Q:"AOSTCR"'[$P(APCDV0,U,7) ;SERV CAT - NO I's per Dorene
+9 IF $PIECE(APCDV0,U,7)="I"
IF '$DATA(^APCDSITE(DUZ(2),13,"B","I"))
GOTO N
+10 ;Q:"AOSTCR"'[$P(APCDV0,U,7)
+11 IF '$$SCW^APCDCAF($PIECE(APCDV0,U,7))
QUIT
N ;
+1 ;NO DEP ENTRIES
IF '$PIECE(APCDV0,U,9)
QUIT
+2 ;DELETED
IF $PIECE(APCDV0,U,11)
QUIT
+3 ;CONTRACT
IF $PIECE(APCDV0,U,3)="C"
QUIT
+4 ;Q:'$D(^AUPNVPOV("AD",APCDVIEN)) ;no pov PER CAROLYN JOHNSON, INCLUDE THEM
+5 ;Q:'$D(^AUPNVPRV("AD",APCDVIEN)) ;no provider
+6 SET APCDVPP=$$PRIMPROV^APCLV(APCDVIEN,"I")
+7 ;Q:'APCDVPP ;no primary provider
+8 SET APCDVLOC=$PIECE(APCDV0,U,6)
+9 ;no location of encounter
IF APCDVLOC=""
QUIT
+10 ;not a location we want
IF $DATA(APCDLOCS)
IF '$DATA(APCDLOCS(APCDVLOC))
QUIT
+11 SET X=$PIECE(APCDV0,U,7)
+12 ;no sc
IF X=""
QUIT
+13 ;not a sc we want
IF $DATA(APCDSCS)
IF '$DATA(APCDSCS(X))
QUIT
+14 SET APCDVCLN=$PIECE(APCDV0,U,8)
+15 ;clinic blank and want certain clinics
IF APCDVCLN=""
IF $DATA(APCDCLNS)
QUIT
+16 ;not a CLINIC we want
IF $DATA(APCDCLNS)
IF '$DATA(APCDCLNS(APCDVCLN))
QUIT
+17 SET APCDVHL=$PIECE(APCDV0,U,22)
+18 ;HOSP LOC blank and want certain HOSP LOCS
IF APCDVHL=""
IF $DATA(APCDHLS)
QUIT
+19 ;not a HOSP LOC we want
IF $DATA(APCDHLS)
IF '$DATA(APCDHLS(APCDVHL))
QUIT
+20 ;PRIM PROV blank and want certain PRIM PROVS
IF APCDVPP=""
IF $DATA(APCDPRVS)
QUIT
+21 ;not a PRIM PROV we want
IF $DATA(APCDPRVS)
IF '$DATA(APCDPRVS(APCDVPP))
QUIT
+22 SET APCDVCAS=$PIECE($GET(^AUPNVSIT(APCDVIEN,11)),U,11)
+23 ;DON'T DISPLAY REVIEWED VISITS
IF APCDVCAS="R"
QUIT
+24 ;I $D(APCDCASS),'$D(APCDCASS(APCDVCAS)) Q
+25 ;GET ALL PENDING REASONS
KILL APCDVCDR
DO GETVCDR(APCDVIEN,"APCDVCDR")
+26 ;S APCDVCDR=$$LASTCDR(APCDVIEN) ;last chart deficiency reason
+27 ;
IF '$DATA(APCDVCDR)
IF $DATA(APCDCDRS)
QUIT
+28 SET G=0
IF $DATA(APCDCDRS)
Begin DoDot:3
+29 SET X=0
FOR
SET X=$ORDER(APCDVCDR(X))
IF X'=+X
QUIT
IF $DATA(APCDCDRS(X))
SET G=1
End DoDot:3
+30 IF $DATA(APCDCDRS)
IF 'G
QUIT
+31 SET ^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS",$$SORT(APCDVIEN,APCDSORT),APCDVIEN)=""
+32 QUIT
End DoDot:2
+33 QUIT
End DoDot:1
+34 QUIT
GETVCDR(V,R) ;EP - are there any pending deficiencies
+1 IF '$GET(V)
QUIT ""
+2 NEW IEN,I
+3 SET IEN=0
+4 FOR
SET IEN=$ORDER(^AUPNCANT(V,12,IEN))
IF IEN'=+IEN
QUIT
Begin DoDot:1
+5 SET IENS=IEN_","_V
+6 ;RESOLVED
IF $$GET1^DIQ(9000095.12,IENS,.03)]""
QUIT
+7 ;DELETED
IF $$GET1^DIQ(9000095.12,IENS,.08)]""
QUIT
+8 SET I=$$GET1^DIQ(9000095.12,IENS,.02,"I")
+9 IF I=""
QUIT
+10 SET @R@(I)=""
End DoDot:1
+11 ;NOW GET ANY OLD ONES
+12 SET IEN=0
FOR
SET IEN=$ORDER(^AUPNVCA("AD",V,IEN))
IF IEN'=+IEN
QUIT
Begin DoDot:1
+13 SET I=$PIECE($GET(^AUPNVCA(IEN,0)),U,6)
+14 IF I=""
QUIT
+15 SET @R@(I)=""
End DoDot:1
+16 QUIT
+17 ;
DATE(D) ;
+1 NEW X,Y
+2 SET X=$PIECE(D,".")
+3 SET X=$EXTRACT(D,4,5)_"/"_$EXTRACT(D,6,7)_"/"_$EXTRACT(D,2,3)
+4 SET Y=$$FMTE^XLFDT(D,"2S")
SET Y=$PIECE(Y,"@",2)
SET Y=$PIECE(Y,":",1,2)
+5 QUIT X_"@"_Y
+6 ;
ERRORCHK ;
+1 ;check for no pov, .9999 or multiple primary providers
+2 SET APCDERR=""
+3 IF '$DATA(^AUPNVPOV("AD",APCDV))
SET APCDERR="NO POV"
+4 SET X=0
FOR
SET X=$ORDER(^AUPNVPOV("AD",APCDV,X))
IF X'=+X
QUIT
Begin DoDot:1
+5 IF $$VAL^XBDIQ1(9000010.07,X,.01)=".9999"
SET APCDERR=".9999 POV "
QUIT
+6 IF $$VAL^XBDIQ1(9000010.07,X,.01)="ZZZ.999"
SET APCDERR="ZZZ.999 POV "
End DoDot:1
+7 SET X=0
SET C=0
FOR
SET X=$ORDER(^AUPNVPRV("AD",APCDV,X))
IF X'=+X
QUIT
Begin DoDot:1
+8 IF $PIECE(^AUPNVPRV(X,0),U,4)="P"
SET C=C+1
End DoDot:1
+9 IF C>1
SET APCDERR=APCDERR_"MULT PRIM PROV"
+10 QUIT
RBLK(V,L) ;left blank fill
+1 NEW %,I
+2 SET %=$LENGTH(V)
SET Z=L-%
FOR I=1:1:Z
SET V=V_" "
+3 QUIT V
LBLK(V,L) ;left blank fill
+1 NEW %,I
+2 SET %=$LENGTH(V)
SET Z=L-%
FOR I=1:1:Z
SET V=" "_V
+3 QUIT V
+4 ;
LASTCDR(V,F) ;EP - get last chart deficiency reason
+1 ;default to ien
IF $GET(F)=""
SET F="I"
+2 ;I '$D(^AUPNVCA(V)) Q ""
+3 NEW X,A,D,L
+4 SET X=0
FOR
SET X=$ORDER(^AUPNVCA("AD",V,X))
IF X'=+X
QUIT
Begin DoDot:1
+5 IF '$DATA(^AUPNVCA(X,0))
QUIT
+6 IF $PIECE(^AUPNVCA(X,0),U,6)=""
QUIT
+7 SET D=$PIECE(^AUPNVCA(X,0),U)
+8 SET A((9999999-$PIECE(D,".")))=X
End DoDot:1
+9 SET L=$ORDER(A(0))
IF L=""
QUIT ""
+10 SET X=A(L)
+11 QUIT $SELECT(F="I":$PIECE(^AUPNVCA(X,0),U,6),1:$$VAL^XBDIQ1(9000010.45,X,.06))
+12 ;
SORT(V,S) ;
+1 NEW R
+2 SET R=""
+3 DO @(S_"SORT")
+4 IF R=""
SET R="--"
+5 QUIT R
+6 ;
DSORT ;
+1 IF 'V
QUIT ""
+2 IF '$DATA(^AUPNVSIT(V,0))
QUIT ""
+3 SET R=$PIECE(^AUPNVSIT(V,0),U)
+4 QUIT
+5 ;
SSORT ;
+1 IF 'V
QUIT ""
+2 IF '$DATA(^AUPNVSIT(V,0))
QUIT ""
+3 SET R=$$VAL^XBDIQ1(9000010,V,.07)
+4 QUIT
+5 ;
LSORT ;
+1 IF 'V
QUIT ""
+2 IF '$DATA(^AUPNVSIT(V,0))
QUIT ""
+3 SET R=$$VAL^XBDIQ1(9000010,V,.06)
+4 QUIT
+5 ;
CSORT ;
+1 IF 'V
QUIT ""
+2 IF '$DATA(^AUPNVSIT(V,0))
QUIT ""
+3 SET R=$$VAL^XBDIQ1(9000010,V,.08)
+4 QUIT
+5 ;
OSORT ;
+1 IF 'V
QUIT ""
+2 IF '$DATA(^AUPNVSIT(V,0))
QUIT ""
+3 SET R=$$VAL^XBDIQ1(9000010,V,.22)
+4 QUIT
+5 ;
PSORT ;
+1 SET R=$$PRIMPROV^APCLV(V,"N")
+2 QUIT
+3 ;
ASORT ;
+1 IF 'V
QUIT ""
+2 IF '$DATA(^AUPNVSIT(V,0))
QUIT ""
+3 SET R=$$VAL^XBDIQ1(9000010,V,1111)
+4 IF R=""
SET R="INCOMPLETE"
+5 QUIT
+6 ;
RSORT ;
+1 SET R=$$LASTCDR(V,"E")
+2 QUIT
+3 ;
NSORT ;
+1 SET R=$$VAL^XBDIQ1(9000010,V,.05)
+2 QUIT
+3 ;
HSORT ;
+1 SET R=$$HRN^AUPNPAT($PIECE(^AUPNVSIT(V,0),U,5),DUZ(2))
+2 QUIT
+3 ;
TSORT ;
+1 IF V=""
QUIT
+2 IF '$DATA(^AUPNVSIT(V,0))
QUIT ""
+3 NEW D
+4 SET D=$PIECE(^AUPNVSIT(V,0),U,5)
+5 IF D=""
QUIT
+6 SET R=$$HRN^AUPNPAT(D,DUZ(2))
+7 SET R=R+10000000
SET R=$EXTRACT(R,7,8)_$EXTRACT(R,1,6)
+8 QUIT
+9 ;
EOP ;EP - End of page.
+1 IF $EXTRACT(IOST)'="C"
QUIT
+2 ;Q:$D(ZTQUEUED)!'(IOT="TRM")!$D(IO("S"))
+3 NEW DIR
+4 KILL DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
+5 SET DIR("A")="Press Enter to Continue"
SET DIR(0)="E"
DO ^DIR
+6 QUIT
+7 ;----------
PRINT ;EP - called from xbdbque
+1 SET APCD80S="-------------------------------------------------------------------------------"
+2 SET Y=APCDBD
DO DD^%DT
SET APCDBDD=Y
SET Y=APCDED
DO DD^%DT
SET APCDEDD=Y
+3 SET APCDPG=0
+4 KILL APCDQUIT
+5 DO COVPAGE
+6 DO PRINT1
DONE ;
+1 IF $DATA(APCDQUIT)
GOTO XIT
+2 IF $DATA(APCDET)
SET APCDDVTS=(86400*($PIECE(APCDET,",")-$PIECE(APCDBT,",")))+($PIECE(APCDET,",",2)-$PIECE(APCDBT,",",2))
SET APCDDVH=$PIECE(APCDDVTS/3600,".")
IF APCDDVH=""
SET APCDDVH=0
+3 SET APCDDVTS=APCDDVTS-(APCDDVH*3600)
SET APCDDVM=$PIECE(APCDDVTS/60,".")
IF APCDDVM=""
SET APCDDVM=0
SET APCDDVTS=APCDDVTS-(APCDDVM*60)
SET APCDDVS=APCDDVTS
WRITE !!,"RUN TIME (H.M.S): ",APCDDVH,".",APCDDVM,".",APCDDVS
+4 IF $EXTRACT(IOST)="C"
IF IO=IO(0)
SET DIR(0)="E"
DO ^DIR
KILL DIR
+5 IF $DATA(IOF)
WRITE @IOF
XIT ; Clean up and exit
+1 KILL ^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS")
+2 DO EN^XBVK("APCD")
+3 QUIT
PRINT1 ; Print report 2
+1 KILL APCDQUIT
+2 DO HEAD
+3 IF '$DATA(^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS"))
WRITE !!,"There are no visits that are not already reviewed."
QUIT
+4 SET APCDS=""
FOR
SET APCDS=$ORDER(^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS",APCDS))
IF APCDS=""!($DATA(APCDQUIT))
QUIT
Begin DoDot:1
+5 SET APCDV=""
FOR
SET APCDV=$ORDER(^XTMP("APCDCAFR",APCDJ,APCDH,"VISITS",APCDS,APCDV))
IF APCDV=""!($DATA(APCDQUIT))
QUIT
Begin DoDot:2
+6 IF $Y>(IOSL-5)
DO HEAD
IF $DATA(APCDQUIT)
QUIT
+7 DO PRN1
+8 DO DE
+9 DO ER
End DoDot:2
End DoDot:1
+10 QUIT
ER ; CHECK FOR VARIOUS ERRORS
+1 ;no pov, no prov, .9999, multi prim prov,
+2 QUIT
DE ;EP;FIND DEP ENTRIES
+1 WRITE !?10,"This visit has: "
+2 SET APCDVFLE=9000010
FOR
SET APCDVFLE=$ORDER(^DIC(APCDVFLE))
IF APCDVFLE>9000010.99!(APCDVFLE'=+APCDVFLE)
QUIT
DO DE2
+3 QUIT
+4 ;
DE2 ;
+1 ;DON'T DISPLAY CHART AUDIT V FILE
IF APCDVFLE=9000010.45
QUIT
+2 SET APCDVDG=^DIC(APCDVFLE,0,"GL")
SET APCDVIGR=APCDVDG_"""AD"",APCDV,APCDVDFN)"
+3 SET APCDVDFN=""
IF $ORDER(@APCDVIGR)]""
WRITE ?27,$PIECE($PIECE(^DIC(APCDVFLE,0),U),"V ",2),"'s",!
+4 KILL APCDAPOV,APCDAPRV
+5 FOR APCDVI=1:1
SET APCDVDFN=$ORDER(@APCDVIGR)
IF APCDVDFN=""
QUIT
Begin DoDot:1
+6 SET APCDK12N=APCDVDG_APCDVDFN_",12)"
SET APCDK12D=""
+7 IF $DATA(@(APCDK12N))
SET APCDK12D=@(APCDK12N)
+8 SET APCDK16N=""
SET APCDK16D=""
IF APCDVFLE=9000010.09
SET APCDK16N=APCDVDG_APCDVDFN_",16)"
IF $DATA(@(APCDK16N))
SET APCDK16D=@(APCDK16N)
+9 IF $PIECE(APCDK16D,U)]""
SET APCDAPOV($PIECE(APCDK16D,U))=""
+10 IF $PIECE(APCDK12D,U,13)]""
SET APCDAPOV($PIECE(APCDK12D,U,13))=""
+11 IF $PIECE(APCDK12D,U,2)]""
SET APCDAPRV($PIECE(^DIC(APCDVFLE,0),U)_" - "_$PIECE($GET(^VA(200,$PIECE(APCDK12D,U,2),0)),U))=""
+12 IF $PIECE(APCDK12D,U,4)]""
SET APCDAPRV($PIECE(^DIC(APCDVFLE,0),U)_" - "_$PIECE($GET(^VA(200,$PIECE(APCDK12D,U,4),0)),U))=""
End DoDot:1
+13 QUIT
+14 ;
PRN1 ;EP
+1 SET APCDVR=^AUPNVSIT(APCDV,0)
IF '$PIECE(APCDVR,U,6)
SET $PIECE(APCDVR,U,6)=0
+2 SET DFN=$PIECE(APCDVR,U,5)
+3 SET APCDHRN=""
SET APCDHRN=$$HRN^AUPNPAT(DFN,$PIECE(APCDVR,U,6),2)
+4 IF APCDHRN=""
SET APCDHRN=$$HRN^AUPNPAT(DFN,DUZ(2))
+5 WRITE !,$$FMTE^XLFDT($PIECE(APCDVR,U)),?19,APCDHRN,?31,$EXTRACT($PIECE(^DPT(DFN,0),U),1,17),?50,$EXTRACT($PIECE(^DIC(4,$PIECE(APCDVR,U,6),0),U),1,10),?61,$PIECE(APCDVR,U,7)
+6 WRITE ?64,$$CLINIC^APCLV(APCDV,"C"),?67,$EXTRACT($$VAL^XBDIQ1(9000010,APCDV,.22),1,11),?78,$PIECE(APCDVR,U,9)
+7 IF $$PRIMPROV^APCLV(APCDV,"N")]""
WRITE !," PRIMARY PROVIDER: ",$$PRIMPROV^APCLV(APCDV,"N")
+8 ;IHS/CMI/LAB - added acct # display
IF $PIECE($GET(^AUPNVSIT(APCDV,12)),U,11)]""
WRITE !," Ext Acct #: ",$PIECE($GET(^AUPNVSIT(APCDV,12)),U,11)
+9 ;
+10 QUIT
PAGEHEAD ;
HEAD ;EP;HEADER
+1 IF $DATA(APCDDEM)!($DATA(APCDDEMM))
GOTO HEAD2
+2 IF 'APCDPG
GOTO HEAD1
HEAD2 IF $EXTRACT(IOST)="C"
IF IO=IO(0)
WRITE !
SET DIR(0)="EO"
DO ^DIR
KILL DIR
IF Y=0!(Y="^")!($DATA(DTOUT))
SET APCDQUIT=""
QUIT
HEAD1 ;
+1 IF $DATA(IOF)
WRITE @IOF
SET APCDPG=APCDPG+1
+2 WRITE !,$$FMTE^XLFDT(DT),?70,"Page: ",APCDPG
+3 WRITE !?29,"PCC Data Entry Module"
+4 WRITE !,$$CTR("******************************************************************",80)
+5 WRITE !,$$CTR("* LIST OF VISITS WITH CHART AUDIT STATUS OF INCOMPLETE/BLANK *",80)
+6 WRITE !,$$CTR("******************************************************************",80)
+7 SET X="VISIT Date Range: "_APCDBDD_" through "_APCDEDD
WRITE !,$$CTR(X,80)
+8 ;S X=$S(APCDLOCT="A":"ALL Locations Included",APCDLOCT="O":"Location of Encounter: "_$P(^DIC(4,APCDLOCT("ONE"),0),U),APCDLOCT="S":"LOCATIONs Included: ALL Within the "_$P(^AUTTSU(APCDLOCT("SU"),0),U)_" Service Unit",1:"")
+9 ;W !?(80-$L(X)/2),X
+10 WRITE !!,"VISIT DATE",?19,"HRN",?31,"PATIENT NAME",?50,"LOCATION",?61,"SC",?64,"CL",?67,"HOSP LOC",?77,"DEC"
+11 WRITE !,APCD80S
+12 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 ;----------
COVPAGE ;
+1 WRITE !,$$FMTE^XLFDT(DT),?70,"Page: ",APCDPG
+2 WRITE !?29,"PCC Data Entry Module"
+3 WRITE !,$$CTR("******************************************************************",80)
+4 WRITE !,$$CTR("* LIST OF VISITS WITH CHART AUDIT STATUS OF INCOMPLETE/BLANK *",80)
+5 WRITE !,$$CTR("******************************************************************",80)
+6 WRITE !!,$$CTR("VISIT LIST CRITERIA",80)
+7 WRITE !!,"VISIT DATES: ",$$FMTE^XLFDT(APCDBD)," to ",$$FMTE^XLFDT(APCDED)
+8 WRITE !,"VISIT TYPE: NOT Contract"
+9 WRITE !!,"LOCATION OF ENCOUNTER: "
Begin DoDot:1
+10 IF '$DATA(APCDLOCS)
WRITE "All"
QUIT
+11 SET Y=0
SET C=0
FOR
SET Y=$ORDER(APCDLOCS(Y))
IF Y'=+Y
QUIT
SET C=C+1
IF C>1
WRITE ";"
WRITE ?24,$EXTRACT($PIECE(^DIC(4,Y,0),U),1,15)
End DoDot:1
+12 WRITE !!,"CLINICS: "
Begin DoDot:1
+13 IF '$DATA(APCDCLNS)
WRITE "All"
QUIT
+14 SET Y=0
SET C=0
FOR
SET Y=$ORDER(APCDCLNS(Y))
IF Y'=+Y
QUIT
SET C=C+1
IF C>1
WRITE ";"
WRITE ?24,$EXTRACT($PIECE(^DIC(40.7,Y,0),U),1,15)
End DoDot:1
+15 WRITE !!,"SERVICE CATEGORIES: "
Begin DoDot:1
+16 IF '$DATA(APCDSCS)
WRITE "All"
QUIT
+17 SET Y=0
SET C=0
FOR
SET Y=$ORDER(APCDSCS(Y))
IF Y'=+Y
QUIT
SET C=C+1
IF C>1
WRITE ";"
WRITE ?24,$$EXTSET^XBFUNC(9000010,.07,Y)
End DoDot:1
+18 WRITE !!,"HOSPITAL LOCATIONS: "
Begin DoDot:1
+19 IF '$DATA(APCDHLS)
WRITE "All"
QUIT
+20 SET Y=0
SET C=0
FOR
SET Y=$ORDER(APCDHLS(Y))
IF Y'=+Y
QUIT
SET C=C+1
IF C>1
WRITE ";"
WRITE ?24,$EXTRACT($PIECE(^SC(Y,0),U),1,15)
End DoDot:1
+21 WRITE !!,"PRIMARY PROVIDER ON VISIT: "
Begin DoDot:1
+22 IF '$DATA(APCDPRV)
WRITE "All"
QUIT
+23 SET Y=0
SET C=0
FOR
SET Y=$ORDER(APCDPRVS(Y))
IF Y'=+Y
QUIT
SET C=C+1
IF C>1
WRITE ";"
WRITE ?24,$EXTRACT($PIECE(^VA(200,Y,0),U),1,15)
End DoDot:1
+24 ;W !!,"CHART AUDIT STATUS: " D
+25 ;.I '$D(APCDCASS) W "All" Q
+26 ;.S Y=0,C=0 F S Y=$O(APCDCASS(Y)) Q:Y'=+Y S C=C+1 W:C>1 ";" W ?24,$$EXTSET^XBFUNC(9000010.45,Y,.04)
+27 WRITE !!,"CHART DEFICIENCY REASONS: "
Begin DoDot:1
+28 IF '$DATA(APCDCDRS)
WRITE "All (includes visits with no chart deficiency reason entered"
QUIT
+29 SET Y=0
SET C=0
FOR
SET Y=$ORDER(APCDCDRS(Y))
IF Y'=+Y
QUIT
SET C=C+1
IF C>1
WRITE ";"
WRITE ?24,$EXTRACT($PIECE(^AUTTCDR(Y,0),U),1,15)
End DoDot:1
+30 QUIT