| [613] | 1 | IBJDIPR ;ALB/HMC - PERCENTAGE OF PATIENTS PREREGISTERED REPORT ;10-MAY-2004 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**272,305**;21-MAR-1994 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | EN ; - Option entry point. | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | D ENQ1 | 
|---|
|  | 7 | W !!,"This report provides number of patients treated, the number of" | 
|---|
|  | 8 | W !,"patients pre-registered, % of patients pre-registered, number of" | 
|---|
|  | 9 | W !,"patients pre-registered past the pre-registration time frame," | 
|---|
|  | 10 | W !,"number of patients never pre-registered, the clinic exclusions," | 
|---|
|  | 11 | W !,"and the eligibility exclusions.",!! | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | DATE D DATE^IBOUTL I IBBDT=""!(IBEDT="") G ENQ | 
|---|
|  | 14 | ; | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | TIME ;Pre-Registration time frame, default is 180 days | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | S DIR(0)="N^^I X'>0 K X" | 
|---|
|  | 19 | S DIR("A")="Pre-Registration time frame (days)" W ! | 
|---|
|  | 20 | S DIR("B")=180 | 
|---|
|  | 21 | S DIR("?")="^D THLP^IBJDIPR" | 
|---|
|  | 22 | D ^DIR | 
|---|
|  | 23 | S IBPRF=Y | 
|---|
|  | 24 | I $D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) G ENQ | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | K DIR,DIROUT,DTOUT,DUOUT,DIRUT | 
|---|
|  | 27 | S DIR(0)="Y",DIR("B")="NO",DIR("?")="^D EHLP^IBJDIPR" | 
|---|
|  | 28 | S DIR("A")="Detailed list of Exclusions (Y/N)" | 
|---|
|  | 29 | D ^DIR | 
|---|
|  | 30 | S IBEXC=+Y | 
|---|
|  | 31 | I $D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) G ENQ | 
|---|
|  | 32 | K DIR,DIROUT,DTOUT,DUOUT,DIRUT | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | W !!,"This report only requires an 80 column printer." | 
|---|
|  | 35 | W !!,"Note: This report may take a while to run." | 
|---|
|  | 36 | W !!,"You should queue this report to run after normal business hours.",! | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | ; - Select a device. | 
|---|
|  | 39 | S %ZIS="QM" D ^%ZIS G:POP ENQ | 
|---|
|  | 40 | I $D(IO("Q")) D  G ENQ | 
|---|
|  | 41 | .S ZTRTN="DQ^IBJDIPR",ZTDESC="IB - PERCENTAGE OF PATIENTS PREREGISTERED" | 
|---|
|  | 42 | .S ZTSAVE("IB*")="" | 
|---|
|  | 43 | .D ^%ZTLOAD | 
|---|
|  | 44 | .W !!,$S($D(ZTSK):"This job has been queued. The task number is "_ZTSK_".",1:"Unable to queue this job.") | 
|---|
|  | 45 | .K ZTSK,IO("Q") D HOME^%ZIS | 
|---|
|  | 46 | ; | 
|---|
|  | 47 | U IO | 
|---|
|  | 48 | ; | 
|---|
|  | 49 | DQ ; - Tasked entry point. | 
|---|
|  | 50 | ; | 
|---|
|  | 51 | N IBQUERY,IBQUERY1,DGNAM | 
|---|
|  | 52 | K IB,^TMP("IBJDIPR",$J),^TMP("IBJDIPR1",$J) | 
|---|
|  | 53 | ; | 
|---|
|  | 54 | ;Temporary global IBJDIPR contains outpatients found for date range in the outpatient encounter file" | 
|---|
|  | 55 | ;Temporary global IBJDIPR1 contains the clinic exclusions found in the MAS parameter file" | 
|---|
|  | 56 | ; | 
|---|
|  | 57 | S (IBQ,DGPREC,DGPREE)=0 | 
|---|
|  | 58 | F I="TOT","PRE","PAST","NEVR" S IB(I)=0 | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | ;Build exclusion temporary file from MAS parameter file, | 
|---|
|  | 61 | ; ^DG(43 - dbia 4242 | 
|---|
|  | 62 | ; | 
|---|
|  | 63 | ;Get clinic exclusions and clinic name from ^SC (Hospital location file) | 
|---|
|  | 64 | ;dbia 401 | 
|---|
|  | 65 | S X="" F  S X=$O(^DG(43,1,"DGPREC","B",X)) Q:X=""  D | 
|---|
|  | 66 | . S DGNAM=$P($G(^SC(X,0)),U,1) I DGNAM="" Q | 
|---|
|  | 67 | . S ^TMP("IBJDIPR1",$J,"DGPREC",X)="" | 
|---|
|  | 68 | . S ^TMP("IBJDIPR1",$J,"DGPRECA",DGNAM_U_X)=X ;index sorted by name | 
|---|
|  | 69 | . S DGPREC=DGPREC+1 | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | ;Get eligibility exclusions and eligibility name from ^DIC(8 dbia 427 | 
|---|
|  | 72 | ; | 
|---|
|  | 73 | S X="" F  S X=$O(^DG(43,1,"DGPREE","B",X)) Q:X=""  D | 
|---|
|  | 74 | . S DGNAM=$P($G(^DIC(8,X,0)),U,1) I DGNAM="" Q | 
|---|
|  | 75 | . S ^TMP("IBJDIPR1",$J,"DGPREE",X)="" | 
|---|
|  | 76 | . S ^TMP("IBJDIPR1",$J,"DGPREEA",DGNAM_U_X)=X ;index sorted by name | 
|---|
|  | 77 | . S DGPREE=DGPREE+1 | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | ; - Find outpatients treated within the user-specified date range. | 
|---|
|  | 80 | D OUTPT("",IBBDT,IBEDT,"S:IBQ SDSTOP=1 I 'IBQ,$$ENCHK^IBJDI5(Y0) D ENC^IBJDIPR(Y0)","Percentage of Patients Pre-registered",.IBQ,"IBJDIPR",.IBQUERY) | 
|---|
|  | 81 | D CLOSE^IBSDU(.IBQUERY),CLOSE^IBSDU(.IBQUERY1) I IBQ G ENQ | 
|---|
|  | 82 | ; | 
|---|
|  | 83 | ;Find pre-registered patients | 
|---|
|  | 84 | ;Use file 41.41 (^DGS), Pre-registration audit file | 
|---|
|  | 85 | ;dbia 4425 | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | S DFN="" | 
|---|
|  | 88 | F  S DFN=$O(^TMP("IBJDIPR",$J,DFN)) Q:DFN=""  D | 
|---|
|  | 89 | . S TRDAT=^TMP("IBJDIPR",$J,DFN) ;Get treatment date | 
|---|
|  | 90 | . S IB("TOT")=IB("TOT")+1 ;Total unique patients treated | 
|---|
|  | 91 | . S PRDAT=TRDAT+.0000001 | 
|---|
|  | 92 | . S PRDAT=$O(^DGS(41.41,"ADC",DFN,PRDAT),-1) ;Most recent pre-reg date | 
|---|
|  | 93 | . I PRDAT="" S IB("NEVR")=IB("NEVR")+1 Q  ;never pre-registered | 
|---|
|  | 94 | . I PRDAT<$$FMADD^XLFDT(TRDAT,-IBPRF) S IB("PAST")=IB("PAST")+1 Q  ;past time frame | 
|---|
|  | 95 | . S IB("PRE")=IB("PRE")+1 ;pre-registered | 
|---|
|  | 96 | ; | 
|---|
|  | 97 | ; - Print the reports. | 
|---|
|  | 98 | ; QUIT if this is a electronic transmission to the ARC -IB patch 305 | 
|---|
|  | 99 | Q:$G(IBARFLAG) | 
|---|
|  | 100 | S (IBQ,IBPAG)=0 D NOW^%DTC S IBRUN=$$DAT2^IBOUTL(%) | 
|---|
|  | 101 | I 'IBQ D SUM,PAUSE | 
|---|
|  | 102 | ENQ K ^TMP("IBJDIPR",$J),^TMP("IBJDIPR1",$J) | 
|---|
|  | 103 | I $D(ZTQUEUED) S ZTREQ="@" G ENQ1 | 
|---|
|  | 104 | ; | 
|---|
|  | 105 | D ^%ZISC | 
|---|
|  | 106 | ENQ1 K IB,IBQ,IBBDT,IBEDT,IBD,IBPAG,IBRUN,IBOED,IBPRF | 
|---|
|  | 107 | K DFN,POP,I,X,X1,X2,Y,%,%ZIS,ZTDESC,ZTRTN,ZTSAVE,ZTREQ,ZTQUEUED | 
|---|
|  | 108 | K DIR,DIROUT,DTOUT,DUOUT,DIRUT | 
|---|
|  | 109 | K DGPREC,DGPREE,PRDAT,TRDAT,IBEXC,DGEE,DGEC,PCENT,TAB,DGNAM | 
|---|
|  | 110 | Q | 
|---|
|  | 111 | ; | 
|---|
|  | 112 | OUTPT(DFN,IBBDT,IBEDT,IBCBK,IBMSG,IBQ,IBSUBSCR,IBQUERY,IBDIR) ; | 
|---|
|  | 113 | ; Input:   DFN = IEN of patient if using PATIENT/DATE index, otherwise, | 
|---|
|  | 114 | ;                if null or 0, DATE/TIME index will be used | 
|---|
|  | 115 | ;        IBCBK = The MUMPS code to execute when valid enctr found | 
|---|
|  | 116 | ;        IBBDT/IBEDT = The start/end dates | 
|---|
|  | 117 | ;        IBMSG = The text to send to STOP PROCESSING CALL (if null, no | 
|---|
|  | 118 | ;                call made) | 
|---|
|  | 119 | ;          IBQ = Flag that says whether or not the process was stopped | 
|---|
|  | 120 | ;                by user | 
|---|
|  | 121 | ;      IBQUERY = The # of the QUERY OBJECT to be used to extract outpt | 
|---|
|  | 122 | ;                visits | 
|---|
|  | 123 | ;        IBDIR = Null to look forward, 'B' to look backward thru file | 
|---|
|  | 124 | ; | 
|---|
|  | 125 | N IBVAL,IBFILTER | 
|---|
|  | 126 | S IBVAL("BDT")=IBBDT,IBVAL("EDT")=IBEDT_".99" S:$G(DFN) IBVAL("DFN")=DFN | 
|---|
|  | 127 | ; | 
|---|
|  | 128 | ; - Look at parent encounters, completely checked out, check user | 
|---|
|  | 129 | ;   requested to quit, process each pt only once if IBSUBSCR'=null | 
|---|
|  | 130 | S IBFILTER="" | 
|---|
|  | 131 | S IBCBK="I '$P(Y0,U,6),$P(Y0,U,7),$S((Y#100)'=0:1,$G(IBMSG)="""":1,1:'$$STOP^IBJDI21(.IBQ,IBMSG))"_" "_IBCBK | 
|---|
|  | 132 | S IBDIR=$S($G(IBDIR)="":"",1:"BACKWARD") | 
|---|
|  | 133 | ; | 
|---|
|  | 134 | ;ibsdu will use ^SD(409.1), Standard encounter query, to process | 
|---|
|  | 135 | ;file 409.68 (^SCE) - dbia402 for outpatient encounter data. | 
|---|
|  | 136 | ; | 
|---|
|  | 137 | D SCAN^IBSDU($S($G(DFN):"PATIENT/DATE",1:"DATE/TIME"),.IBVAL,IBFILTER,IBCBK,0,.IBQUERY,IBDIR) K ^TMP("DIERR",$J) | 
|---|
|  | 138 | Q | 
|---|
|  | 139 | ; | 
|---|
|  | 140 | ENC(IBOED) ; - Encounter extract. | 
|---|
|  | 141 | ; Input:    IBOED = Data from outpatient encounter file, ^SCE. | 
|---|
|  | 142 | ; | 
|---|
|  | 143 | S DFN=+$P(IBOED,U,2) I 'DFN Q | 
|---|
|  | 144 | ;Check exclusions | 
|---|
|  | 145 | I $P(IBOED,U,4)]"",$D(^TMP("IBJDIPR1",$J,"DGPREC",$P(IBOED,U,4))) Q  ;Clinic exclusion | 
|---|
|  | 146 | I $P(IBOED,U,13)]"",$D(^TMP("IBJDIPR1",$J,"DGPREE",$P(IBOED,U,13))) Q  ;Eligibility exclusion | 
|---|
|  | 147 | D PROC(DFN,IBOED) ; Process patient. | 
|---|
|  | 148 | Q | 
|---|
|  | 149 | ; | 
|---|
|  | 150 | PROC(DFN,IBOED) ; - Process each specific patient. | 
|---|
|  | 151 | ; Input:     DFN = Pointer to the patient in file #2 | 
|---|
|  | 152 | ;          IBOED = Data from outpatient encounter file, ^SCE. | 
|---|
|  | 153 | ; | 
|---|
|  | 154 | ; Pre-set variables IB array, IBBDT, IBEDT are required. | 
|---|
|  | 155 | ; | 
|---|
|  | 156 | I $$TESTP^IBJDI1(DFN) Q  ;     Test patient. | 
|---|
|  | 157 | D ELIG^VADPT G:'VAEL(4) PRCQ ; Patient is not a vet. | 
|---|
|  | 158 | ; | 
|---|
|  | 159 | ; - Set patient index | 
|---|
|  | 160 | S ^TMP("IBJDIPR",$J,DFN)=$P(IBOED,U,1) | 
|---|
|  | 161 | ; | 
|---|
|  | 162 | PRCQ K VA,VAERR,VAEL | 
|---|
|  | 163 | Q | 
|---|
|  | 164 | ; | 
|---|
|  | 165 | SUM ; - Print the summary report. | 
|---|
|  | 166 | D HEAD Q:IBQ | 
|---|
|  | 167 | W !!?15,"Patients pre-registered from ",$$DAT1^IBOUTL(IBBDT)," - ",$$DAT1^IBOUTL(IBEDT) | 
|---|
|  | 168 | W !!?17,"Pre-registration time frame: ",$J(IBPRF,5)," days" | 
|---|
|  | 169 | W !!?24,"Run Date: ",IBRUN,!?10,$$DASH(55),!! | 
|---|
|  | 170 | ; | 
|---|
|  | 171 | W ?35,"*Number of Unique Patients Treated: ",$J(IB("TOT"),5) | 
|---|
|  | 172 | W !?1,"Unique Outpatients Pre-registered within pre-registration time frame: ",$J(IB("PRE"),5) | 
|---|
|  | 173 | S PCENT=0 I IB("TOT") S PCENT=(IB("PRE")/IB("TOT"))*100 | 
|---|
|  | 174 | W !?47,"Percent Pre-registered: ",$J(PCENT,5,2),"%" | 
|---|
|  | 175 | W !!?3,"Unique Outpatients Pre-registered past pre-registration time frame: ",$J(IB("PAST"),5) | 
|---|
|  | 176 | W !?30,"Unique Outpatients never Pre-registered: ",$J(IB("NEVR"),5) | 
|---|
|  | 177 | W !!?8,"*Counts may not include all patients because of exclusions." | 
|---|
|  | 178 | W !!?37,"Number of Eligibility Exclusions: ",$J(DGPREE,5) | 
|---|
|  | 179 | W !!?42,"Number of Clinic Exclusions: ",$J(DGPREC,5) | 
|---|
|  | 180 | I 'IBEXC Q | 
|---|
|  | 181 | I DGPREE D | 
|---|
|  | 182 | .S DGEE=1 | 
|---|
|  | 183 | .D PAUSE Q:IBQ  D HEAD Q:IBQ | 
|---|
|  | 184 | .S X="" F I=1:1 S X=$O(^TMP("IBJDIPR1",$J,"DGPREEA",X)) Q:X=""  D  Q:IBQ | 
|---|
|  | 185 | ..I $Y>(IOSL-4) D PAUSE Q:IBQ  D HEAD Q:IBQ | 
|---|
|  | 186 | ..S TAB=$S((I#2):10,1:45) | 
|---|
|  | 187 | ..W ?TAB,$E($P(X,U,1),1,30) W:'(I#2) ! | 
|---|
|  | 188 | I DGPREC D | 
|---|
|  | 189 | .S DGEC=1,DGEE=0 | 
|---|
|  | 190 | .S X="" F I=1:1 S X=$O(^TMP("IBJDIPR1",$J,"DGPRECA",X)) Q:X=""  D  Q:IBQ | 
|---|
|  | 191 | ..I I=1 D  Q:IBQ | 
|---|
|  | 192 | ...I ($Y+4)>(IOSL-4) D PAUSE Q:IBQ  D HEAD Q | 
|---|
|  | 193 | ...W !!?10,"Clinic Exclusions",!?9,$$DASH(19),! | 
|---|
|  | 194 | ..I $Y>(IOSL-4) D PAUSE Q:IBQ  D HEAD Q:IBQ | 
|---|
|  | 195 | ..S TAB=$S((I#2):10,1:45) | 
|---|
|  | 196 | ..W ?TAB,$E($P(X,U,1),1,30) W:'(I#2) ! | 
|---|
|  | 197 | Q | 
|---|
|  | 198 | ; | 
|---|
|  | 199 | HEAD ; - Report Header | 
|---|
|  | 200 | ; | 
|---|
|  | 201 | I $E(IOST,1,2)="C-"!(IBPAG) W @IOF,*13 | 
|---|
|  | 202 | S IBPAG=IBPAG+1 | 
|---|
|  | 203 | W !?21,"PERCENTAGE OF PATIENTS PRE-REGISTERED",?71,"Page: ",IBPAG | 
|---|
|  | 204 | I IBPAG=1 W !!?33,"SUMMARY REPORT" Q | 
|---|
|  | 205 | W !!?24,"Run Date: ",IBRUN,!?10,$$DASH(55),!! | 
|---|
|  | 206 | W !?10,"Listing of all Exclusions: ",! | 
|---|
|  | 207 | I $G(DGEE) W !!?10,"Eligibility Exclusions",!?9,$$DASH(24),! | 
|---|
|  | 208 | I $G(DGEC) W !!?10,"Clinic Exclusions",!?9,$$DASH(19),! | 
|---|
|  | 209 | S IBQ=$$STOP^IBOUTL("Percentage of Patients Pre-registered") | 
|---|
|  | 210 | Q | 
|---|
|  | 211 | ; | 
|---|
|  | 212 | DASH(X) ; - Return a dashed line. | 
|---|
|  | 213 | Q $TR($J("",X)," ","=") | 
|---|
|  | 214 | ; | 
|---|
|  | 215 | PAUSE ; - Page break. | 
|---|
|  | 216 | I $E(IOST,1,2)'="C-" Q | 
|---|
|  | 217 | N DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y | 
|---|
|  | 218 | S DIR(0)="E" D ^DIR I $D(DIRUT)!($D(DUOUT)) S IBQ=1 | 
|---|
|  | 219 | Q | 
|---|
|  | 220 | ; | 
|---|
|  | 221 | THLP ; - 'Pre-Registration time frame (days)' prompt | 
|---|
|  | 222 | ; | 
|---|
|  | 223 | W !!,"Number of days to search for pre-registered patients." | 
|---|
|  | 224 | W !,"Number of days must be greater that zero." | 
|---|
|  | 225 | W !,"Select '<CR>' to accept the default 180 days." | 
|---|
|  | 226 | W !?11,"'^' to quit." | 
|---|
|  | 227 | Q | 
|---|
|  | 228 | ; | 
|---|
|  | 229 | EHLP ; - 'Detailed list of Exclusions' prompt | 
|---|
|  | 230 | ; | 
|---|
|  | 231 | W !!,"Select '<CR>' to print only the number of eligibility and clinic exclusions." | 
|---|
|  | 232 | W !!?11,"'Y' to print list of all eligibility and clinic exclusions." | 
|---|
|  | 233 | W !?11,"'^' to quit." | 
|---|
|  | 234 | Q | 
|---|
|  | 235 | IBAR(IBBDT,IBEDT) ;Entry point for Vista IB AR data to ARC | 
|---|
|  | 236 | ;patch 305 - called by IBRFN4 | 
|---|
|  | 237 | N IBPRF,IBEXC,IBARFLAG,IB,IBPERC,IBARDATA | 
|---|
|  | 238 | S IBPRF=180,IBEXC=0,IBARFLAG=1 | 
|---|
|  | 239 | D DQ | 
|---|
|  | 240 | I 'IB("TOT") S IBPERC=0 G IBARD | 
|---|
|  | 241 | S IBPERC=IB("PRE")/IB("TOT")*100,IBPERC=$FN(IBPERC,"",2) | 
|---|
|  | 242 | IBARD S IBARDATA=IB("TOT")_U_IB("PRE")_U_IBPERC_U_IB("PAST")_U_IB("NEVR") | 
|---|
|  | 243 | Q IBARDATA | 
|---|