- APCDFQA ; IHS/CMI/LAB - QA AUDIT ON ICD CODING ;
- ;;2.0;IHS PCC SUITE;**11**;MAY 14, 2009;Build 58
- ;
- START ;
- S APCDSITE="" S:$D(DUZ(2)) APCDSITE=DUZ(2)
- I '$D(DUZ(2)) W $C(7),$C(7),!!,"SITE NOT SET IN DUZ(2) - NOTIFY SITE MANAGER!!",!! K APCDSITE Q
- I 'DUZ(2) W $C(7),$C(7),!!,"SITE NOT SET IN DUZ(2) - NOTIFY SITE MANAGER",!! K APCDSITE Q
- W:$D(IOF) @IOF
- S APCDLHDR="ICD DIAGNOSIS CODING AUDIT"
- W !?((80-$L(APCDLHDR))/2),APCDLHDR
- W !!,"This report will list visits (by POSTING date with an option of random",!,"samples) for a selected data entry operator. Purpose of Visit ",!,"ICD DIAGNOSIS Code and Provider Narrative will also be listed.",!!
- W "NOTE: This report is based on forms tracking which would assign the coding"
- W !,"to the first operator who accessd the visit. There is a new report:"
- W !,"DXV - DX Coding Audit for Selected Set of Visits which may better"
- W !,"reflect the user who coded the Purpose of Visit. It uses the"
- W !,"user who last marked the visit as reviewed/complete and the user last"
- W !,"modified field for the Purpose of Visit.",!
- S APCDJOB=$J,APCDBT=$H
- K ^XTMP("APCDFQA",APCDJOB,APCDBT)
- GETDATES ;
- BD ;get beginning date
- W ! S DIR(0)="D^:DT:EP",DIR("A")="Enter Beginning POSTING Date" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
- I $D(DIRUT) G XIT
- S APCDBD=Y
- ED ;get ending date
- W ! S DIR(0)="DA^"_APCDBD_":DT:EP",DIR("A")="Enter Ending POSTING Date: " S Y=APCDBD D DD^%DT S DIR("B")=Y,Y="" D ^DIR K DIR S:$D(DUOUT) DIRUT=1
- I $D(DIRUT) G BD
- S APCDED=Y
- S X1=APCDBD,X2=-1 D C^%DTC S APCDSD=X
- ;
- PROV S DIC="^VA(200,",DIC(0)="AEQM",DIC("A")="Enter DATA ENTRY OPERATOR: " D ^DIC K DIC
- I $D(DTOUT)!(Y=-1) G BD
- S APCDPROV=+Y
- SC ;
- K APCDSCT
- K APCDSC,APCDSCT W ! S DIR(0)="YO",DIR("A")="Include ALL Visit Service Categories",DIR("B")="Yes"
- S DIR("?")="If you wish to include all visit service categories (Ambulatory,Hospitalization,etc) answer Yes. If you wish to list visits for only one service category enter NO." D ^DIR K DIR
- G:$D(DIRUT) BD
- I Y=1 G CLN
- SC1 ;enter sc
- S X="SERVICE CATEGORY",DIC="^AMQQ(5,",DIC(0)="FM",DIC("S")="I $P(^(0),U,14)" D ^DIC K DIC,DA I Y=-1 W "OOPS - QMAN NOT CURRENT - QUITTING" G XIT
- D PEP^AMQQGTX0(+Y,"APCDSCT(")
- I '$D(APCDSCT) G SC
- I $D(APCDSCT("*")) K APCDSCT
- CLN S APCDCLN="",DIR(0)="YO",DIR("A")="Want to limit search by CLINIC TYPE",DIR("B")="NO",DIR("?")="" D ^DIR K DIR
- I $E(X)=U!($D(DTOUT)) G PROV
- I $E(X)="N" G ICD
- S DIC="^DIC(40.7,",DIC(0)="AEQM",DIC("A")="Clinic: "
- D ^DIC K DIC,DA
- G:Y=-1 CLN
- S APCDCLN=+Y
- ;
- ICD ;
- K ^XTMP("APCDFQA",APCDJOB,APCDBT,"DEPOV"),DA,DIR,DTOUT,DIRUT,Y,X,DIC
- S DIR(0)="Y",DIR("A")="Do you wish to include only a subset of ICD Diagnoses",DIR("B")="NO",DIR("?")="If you wish to limit the search of POV's to a subset of ICD Codes, enter Y" D ^DIR K DIR
- G:$D(DIRUT) CLN
- I Y=0 S ^XTMP("APCDFQA",APCDJOB,APCDBT,"DEPOV","ALL")="" G RAND
- K APCDTABL D ^APCDFQA3
- I '$D(APCDTABL) G ICD
- RAND ;
- S APCDMAX="",DIR(0)="Y",DIR("A")="Do you want ALL Visits Selected",DIR("B")="N",DIR("?")="If you want ALL Visits in this date range displayed Answer Y, if you want a random sample answer NO." D ^DIR K DIR
- I $D(DTOUT)!(X="^") G ICD
- I Y=1 S APCDRSM=0 G ZIS
- S DIR(0)="N^1:100:",DIR("A")="How many randomized visits do you want" D ^DIR K DIR
- I $D(DIRUT) G RAND
- S APCDMAX=Y,APCDRSM=1
- ZIS W !! S %ZIS="PQM" D ^%ZIS
- I POP G XIT
- I $D(IO("Q")) G TSKMN
- DRIVER ; entry point for taskman
- ZTSK ;
- D ^APCDFQA1
- S APCDDT=$$FMTE^XLFDT(DT)
- U IO
- D ^APCDFQAP
- I $D(ZTQUEUED) S ZTREQ="@"
- K ^XTMP("APCDFQA",APCDJOB,APCDBT)
- D XIT
- Q
- ERR W $C(7),$C(7),!,"Must be a valid date and be Today or earlier. Time not allowed!" Q
- TSKMN ;
- S ZTIO=""
- S ZTIO=$S($D(ION):ION,1:IO) I $D(IOST)#2,IOST]"" S ZTIO=ZTIO_";"_IOST
- I $G(IO("DOC"))]"" S ZTIO=ZTIO_";"_$G(IO("DOC"))
- I $D(IOM)#2,IOM S ZTIO=ZTIO_";"_IOM I $D(IOSL)#2,IOSL S ZTIO=ZTIO_";"_IOSL
- K ZTSAVE F %="APCDMAX","APCDBD","APCDED","APCDSD","APCDPROV","APCDCLN","APCDJOB","APCDBT","APCDLHDR","^XTMP(""APCDFQA"",APCDJOB,APCDBT," S ZTSAVE(%)=""
- S ZTCPU=$G(IOCPU),ZTRTN="DRIVER^APCDFQA",ZTDTH="",ZTDESC="PCC DE QA" D ^%ZTLOAD D XIT Q
- ;
- ;
- XIT ;
- D ^%ZISC
- I '$D(ZTSK) S IOP="HOME" D ^%ZIS U IO(0)
- K DIC,%DT,IO("Q"),X,Y,POP,DIRUT,ZTSK,ZTIO
- K APCD1,APCD2,APCD80D,APCDBD,APCDBDD,APCDBT,APCDCLN,APCDDATE,APCDDT,APCDED,APCDEDD,APCDHRN,APCDLENG,APCDMAX,APCDNQ,APCDQUIT,APCDC,APCDDFN,APCDSLCT,APCDIRNG,APCD1SV,APCD1,APCDI,APCDDLT,APCD2,APCD11,APCDQ,APCDMSG,APCDDSP,APCDICDD
- K APCDODAT,APCDPAT,APCDPG,APCDPOV,APCDPOVA,APCDPOVC,APCDPOVD,APCDPOVN,APCDPROV,APCDSD,APCDSITE,APCDVCNT,APCDVDFN,APCDVREC,APCDGOT,APCDX,APCDJOB,APCDBT,APCDICDP,APCDTABL,APCDRSM,APCDLHDR
- Q
- ;
- ;
- APCDFQA ; IHS/CMI/LAB - QA AUDIT ON ICD CODING ;
- +1 ;;2.0;IHS PCC SUITE;**11**;MAY 14, 2009;Build 58
- +2 ;
- START ;
- +1 SET APCDSITE=""
- IF $DATA(DUZ(2))
- SET APCDSITE=DUZ(2)
- +2 IF '$DATA(DUZ(2))
- WRITE $CHAR(7),$CHAR(7),!!,"SITE NOT SET IN DUZ(2) - NOTIFY SITE MANAGER!!",!!
- KILL APCDSITE
- QUIT
- +3 IF 'DUZ(2)
- WRITE $CHAR(7),$CHAR(7),!!,"SITE NOT SET IN DUZ(2) - NOTIFY SITE MANAGER",!!
- KILL APCDSITE
- QUIT
- +4 IF $DATA(IOF)
- WRITE @IOF
- +5 SET APCDLHDR="ICD DIAGNOSIS CODING AUDIT"
- +6 WRITE !?((80-$LENGTH(APCDLHDR))/2),APCDLHDR
- +7 WRITE !!,"This report will list visits (by POSTING date with an option of random",!,"samples) for a selected data entry operator. Purpose of Visit ",!,"ICD DIAGNOSIS Code and Provider Narrative will also be listed.",!!
- +8 WRITE "NOTE: This report is based on forms tracking which would assign the coding"
- +9 WRITE !,"to the first operator who accessd the visit. There is a new report:"
- +10 WRITE !,"DXV - DX Coding Audit for Selected Set of Visits which may better"
- +11 WRITE !,"reflect the user who coded the Purpose of Visit. It uses the"
- +12 WRITE !,"user who last marked the visit as reviewed/complete and the user last"
- +13 WRITE !,"modified field for the Purpose of Visit.",!
- +14 SET APCDJOB=$JOB
- SET APCDBT=$HOROLOG
- +15 KILL ^XTMP("APCDFQA",APCDJOB,APCDBT)
- GETDATES ;
- BD ;get beginning date
- +1 WRITE !
- SET DIR(0)="D^:DT:EP"
- SET DIR("A")="Enter Beginning POSTING Date"
- DO ^DIR
- KILL DIR
- IF $DATA(DUOUT)
- SET DIRUT=1
- +2 IF $DATA(DIRUT)
- GOTO XIT
- +3 SET APCDBD=Y
- ED ;get ending date
- +1 WRITE !
- SET DIR(0)="DA^"_APCDBD_":DT:EP"
- SET DIR("A")="Enter Ending POSTING Date: "
- SET Y=APCDBD
- DO DD^%DT
- SET DIR("B")=Y
- SET Y=""
- DO ^DIR
- KILL DIR
- IF $DATA(DUOUT)
- SET DIRUT=1
- +2 IF $DATA(DIRUT)
- GOTO BD
- +3 SET APCDED=Y
- +4 SET X1=APCDBD
- SET X2=-1
- DO C^%DTC
- SET APCDSD=X
- +5 ;
- PROV SET DIC="^VA(200,"
- SET DIC(0)="AEQM"
- SET DIC("A")="Enter DATA ENTRY OPERATOR: "
- DO ^DIC
- KILL DIC
- +1 IF $DATA(DTOUT)!(Y=-1)
- GOTO BD
- +2 SET APCDPROV=+Y
- SC ;
- +1 KILL APCDSCT
- +2 KILL APCDSC,APCDSCT
- WRITE !
- SET DIR(0)="YO"
- SET DIR("A")="Include ALL Visit Service Categories"
- SET DIR("B")="Yes"
- +3 SET DIR("?")="If you wish to include all visit service categories (Ambulatory,Hospitalization,etc) answer Yes. If you wish to list visits for only one service category enter NO."
- DO ^DIR
- KILL DIR
- +4 IF $DATA(DIRUT)
- GOTO BD
- +5 IF Y=1
- GOTO CLN
- SC1 ;enter sc
- +1 SET X="SERVICE CATEGORY"
- SET DIC="^AMQQ(5,"
- SET DIC(0)="FM"
- SET DIC("S")="I $P(^(0),U,14)"
- DO ^DIC
- KILL DIC,DA
- IF Y=-1
- WRITE "OOPS - QMAN NOT CURRENT - QUITTING"
- GOTO XIT
- +2 DO PEP^AMQQGTX0(+Y,"APCDSCT(")
- +3 IF '$DATA(APCDSCT)
- GOTO SC
- +4 IF $DATA(APCDSCT("*"))
- KILL APCDSCT
- CLN SET APCDCLN=""
- SET DIR(0)="YO"
- SET DIR("A")="Want to limit search by CLINIC TYPE"
- SET DIR("B")="NO"
- SET DIR("?")=""
- DO ^DIR
- KILL DIR
- +1 IF $EXTRACT(X)=U!($DATA(DTOUT))
- GOTO PROV
- +2 IF $EXTRACT(X)="N"
- GOTO ICD
- +3 SET DIC="^DIC(40.7,"
- SET DIC(0)="AEQM"
- SET DIC("A")="Clinic: "
- +4 DO ^DIC
- KILL DIC,DA
- +5 IF Y=-1
- GOTO CLN
- +6 SET APCDCLN=+Y
- +7 ;
- ICD ;
- +1 KILL ^XTMP("APCDFQA",APCDJOB,APCDBT,"DEPOV"),DA,DIR,DTOUT,DIRUT,Y,X,DIC
- +2 SET DIR(0)="Y"
- SET DIR("A")="Do you wish to include only a subset of ICD Diagnoses"
- SET DIR("B")="NO"
- SET DIR("?")="If you wish to limit the search of POV's to a subset of ICD Codes, enter Y"
- DO ^DIR
- KILL DIR
- +3 IF $DATA(DIRUT)
- GOTO CLN
- +4 IF Y=0
- SET ^XTMP("APCDFQA",APCDJOB,APCDBT,"DEPOV","ALL")=""
- GOTO RAND
- +5 KILL APCDTABL
- DO ^APCDFQA3
- +6 IF '$DATA(APCDTABL)
- GOTO ICD
- RAND ;
- +1 SET APCDMAX=""
- SET DIR(0)="Y"
- SET DIR("A")="Do you want ALL Visits Selected"
- SET DIR("B")="N"
- SET DIR("?")="If you want ALL Visits in this date range displayed Answer Y, if you want a random sample answer NO."
- DO ^DIR
- KILL DIR
- +2 IF $DATA(DTOUT)!(X="^")
- GOTO ICD
- +3 IF Y=1
- SET APCDRSM=0
- GOTO ZIS
- +4 SET DIR(0)="N^1:100:"
- SET DIR("A")="How many randomized visits do you want"
- DO ^DIR
- KILL DIR
- +5 IF $DATA(DIRUT)
- GOTO RAND
- +6 SET APCDMAX=Y
- SET APCDRSM=1
- ZIS WRITE !!
- SET %ZIS="PQM"
- DO ^%ZIS
- +1 IF POP
- GOTO XIT
- +2 IF $DATA(IO("Q"))
- GOTO TSKMN
- DRIVER ; entry point for taskman
- ZTSK ;
- +1 DO ^APCDFQA1
- +2 SET APCDDT=$$FMTE^XLFDT(DT)
- +3 USE IO
- +4 DO ^APCDFQAP
- +5 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +6 KILL ^XTMP("APCDFQA",APCDJOB,APCDBT)
- +7 DO XIT
- +8 QUIT
- ERR WRITE $CHAR(7),$CHAR(7),!,"Must be a valid date and be Today or earlier. Time not allowed!"
- QUIT
- TSKMN ;
- +1 SET ZTIO=""
- +2 SET ZTIO=$SELECT($DATA(ION):ION,1:IO)
- IF $DATA(IOST)#2
- IF IOST]""
- SET ZTIO=ZTIO_";"_IOST
- +3 IF $GET(IO("DOC"))]""
- SET ZTIO=ZTIO_";"_$GET(IO("DOC"))
- +4 IF $DATA(IOM)#2
- IF IOM
- SET ZTIO=ZTIO_";"_IOM
- IF $DATA(IOSL)#2
- IF IOSL
- SET ZTIO=ZTIO_";"_IOSL
- +5 KILL ZTSAVE
- FOR %="APCDMAX","APCDBD","APCDED","APCDSD","APCDPROV","APCDCLN","APCDJOB","APCDBT","APCDLHDR","^XTMP(""APCDFQA"",APCDJOB,APCDBT,"
- SET ZTSAVE(%)=""
- +6 SET ZTCPU=$GET(IOCPU)
- SET ZTRTN="DRIVER^APCDFQA"
- SET ZTDTH=""
- SET ZTDESC="PCC DE QA"
- DO ^%ZTLOAD
- DO XIT
- QUIT
- +7 ;
- +8 ;
- XIT ;
- +1 DO ^%ZISC
- +2 IF '$DATA(ZTSK)
- SET IOP="HOME"
- DO ^%ZIS
- USE IO(0)
- +3 KILL DIC,%DT,IO("Q"),X,Y,POP,DIRUT,ZTSK,ZTIO
- +4 KILL APCD1,APCD2,APCD80D,APCDBD,APCDBDD,APCDBT,APCDCLN,APCDDATE,APCDDT,APCDED,APCDEDD,APCDHRN,APCDLENG,APCDMAX,APCDNQ,APCDQUIT,APCDC,APCDDFN,APCDSLCT,APCDIRNG,APCD1SV,APCD1,APCDI,APCDDLT,APCD2,APCD11,APCDQ,APCDMSG,APCDDSP,APCDICDD
- +5 KILL APCDODAT,APCDPAT,APCDPG,APCDPOV,APCDPOVA,APCDPOVC,APCDPOVD,APCDPOVN,APCDPROV,APCDSD,APCDSITE,APCDVCNT,APCDVDFN,APCDVREC,APCDGOT,APCDX,APCDJOB,APCDBT,APCDICDP,APCDTABL,APCDRSM,APCDLHDR
- +6 QUIT
- +7 ;
- +8 ;