| [613] | 1 | IBCICMS ;DSI/ESG - IBCI CLAIMSMANAGER STATUS REPORT ;2-APR-2001 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**161**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | NEW STOP,IBCIRTN,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT,POP,RPTSPECS | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | S STOP=0 | 
|---|
|  | 8 | S IBCIRTN="IBCICMS" | 
|---|
|  | 9 | W @IOF | 
|---|
|  | 10 | W !?10,"ClaimsManager Status Report",! | 
|---|
|  | 11 | A10 D DATE I STOP G EXIT | 
|---|
|  | 12 | A20 D DTRANGE I STOP G:$$STOP EXIT G A10 | 
|---|
|  | 13 | A30 D STATUS I STOP G:$$STOP EXIT G A20 | 
|---|
|  | 14 | A40 D TYPE I STOP G:$$STOP EXIT G A30 | 
|---|
|  | 15 | A50 D SELASN I STOP G:$$STOP EXIT G A40 | 
|---|
|  | 16 | A60 D ASSIGN I STOP G:$$STOP EXIT G A50 | 
|---|
|  | 17 | A70 D SORTBY I STOP G:$$STOP EXIT G A60 | 
|---|
|  | 18 | A75 D COMMENTS I STOP G:$$STOP EXIT G A70 | 
|---|
|  | 19 | A80 D DEVICE(IBCIRTN) I STOP G:$$STOP EXIT G:RPTSPECS("TYPE")="S" A40 G A75 | 
|---|
|  | 20 | ; | 
|---|
|  | 21 | EXIT ; | 
|---|
|  | 22 | QUIT                              ; quit from routine | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | COMPILE ; This entry point is called from EN^XUTMDEVQ in either | 
|---|
|  | 25 | ; direct mode or queued mode. | 
|---|
|  | 26 | NEW IBCISCNT | 
|---|
|  | 27 | D BUILD                           ; compile report | 
|---|
|  | 28 | I '$G(ZTSTOP) D EN^IBCICMSP       ; print report | 
|---|
|  | 29 | D ^%ZISC                          ; close the device | 
|---|
|  | 30 | KILL ^TMP($J,IBCIRTN)             ; kill scratch global | 
|---|
|  | 31 | I $D(ZTQUEUED) S ZTREQ="@"        ; purge the task record | 
|---|
|  | 32 | COMPX ; | 
|---|
|  | 33 | QUIT                              ; quit from routine | 
|---|
|  | 34 | ; | 
|---|
|  | 35 | ; | 
|---|
|  | 36 | STOP() ; See if the user wants to exit out of the whole option | 
|---|
|  | 37 | W ! | 
|---|
|  | 38 | S DIR(0)="Y" | 
|---|
|  | 39 | S DIR("A")="Do you want to exit out of this option entirely" | 
|---|
|  | 40 | S DIR("B")="YES" | 
|---|
|  | 41 | S DIR("?",1)="  Enter YES to immediately exit out of this option." | 
|---|
|  | 42 | S DIR("?")="  Enter NO to return to the previous question." | 
|---|
|  | 43 | D ^DIR K DIR | 
|---|
|  | 44 | I $D(DIRUT) S (STOP,Y)=1 G STOPX | 
|---|
|  | 45 | I 'Y S STOP=0 | 
|---|
|  | 46 | STOPX ; | 
|---|
|  | 47 | Q Y | 
|---|
|  | 48 | ; | 
|---|
|  | 49 | DATE ; | 
|---|
|  | 50 | W ! | 
|---|
|  | 51 | S DIR(0)="SO^1:Event Date    (Date of Service);2:Entered Date  (Date of Entry into VistA)" | 
|---|
|  | 52 | S DIR("A")="Select Date Range by" | 
|---|
|  | 53 | S DIR("B")="Event Date" | 
|---|
|  | 54 | S DIR("?",1)="  Please enter the type of date on which you would like to report." | 
|---|
|  | 55 | S DIR("?",2)="  The Event Date is the date on which the services were performed." | 
|---|
|  | 56 | S DIR("?")="  The Entered Date is the date on which the bill was Entered into VistA." | 
|---|
|  | 57 | D ^DIR K DIR | 
|---|
|  | 58 | I $D(DIRUT) S STOP=1 G DATEX | 
|---|
|  | 59 | S RPTSPECS("DATYP")=Y | 
|---|
|  | 60 | S RPTSPECS("DATYP1")=$S(Y=1:"Event",1:"Entered") | 
|---|
|  | 61 | DATEX ; | 
|---|
|  | 62 | Q | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | DTRANGE ; | 
|---|
|  | 65 | NEW X,Y,%DT | 
|---|
|  | 66 | W ! | 
|---|
|  | 67 | S %DT="AEX" | 
|---|
|  | 68 | S %DT("A")="Enter the beginning "_RPTSPECS("DATYP1")_" Date: " | 
|---|
|  | 69 | S %DT(0)="-NOW" | 
|---|
|  | 70 | D ^%DT | 
|---|
|  | 71 | I Y=-1!$D(DTOUT) S STOP=1 G DTRNGX | 
|---|
|  | 72 | S RPTSPECS("BEGDATE")=Y | 
|---|
|  | 73 | W ! | 
|---|
|  | 74 | S %DT="AEX" | 
|---|
|  | 75 | S %DT("A")="   Enter the ending "_RPTSPECS("DATYP1")_" Date: " | 
|---|
|  | 76 | S %DT(0)=RPTSPECS("BEGDATE") | 
|---|
|  | 77 | D ^%DT | 
|---|
|  | 78 | I Y=-1!$D(DTOUT) S STOP=1 G DTRNGX | 
|---|
|  | 79 | S RPTSPECS("ENDDATE")=Y | 
|---|
|  | 80 | DTRNGX ; | 
|---|
|  | 81 | Q | 
|---|
|  | 82 | ; | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | STATUS ; | 
|---|
|  | 85 | NEW CH,IEN,TXT | 
|---|
|  | 86 | W ! | 
|---|
|  | 87 | S CH="1:All ClaimsManager Statuses;" | 
|---|
|  | 88 | S CH=CH_"2:One Specific ClaimsManager Status;" | 
|---|
|  | 89 | S CH=CH_"3:Any ClaimsManager Status (Bill is still Editable)" | 
|---|
|  | 90 | S DIR(0)="SO^"_CH | 
|---|
|  | 91 | S DIR("A")="Select the ClaimsManager Status Option" | 
|---|
|  | 92 | S DIR("B")=3 | 
|---|
|  | 93 | S DIR("?",1)="  Option 1 - All ClaimsManager Statuses - indicates that all bills" | 
|---|
|  | 94 | S DIR("?",2)="    will be included on the report regardless of ClaimsManager" | 
|---|
|  | 95 | S DIR("?",3)="    status." | 
|---|
|  | 96 | S DIR("?",4)="  " | 
|---|
|  | 97 | S DIR("?",5)="  Option 2 - One Specific ClaimsManager Status - will allow you to" | 
|---|
|  | 98 | S DIR("?",6)="    choose a ClaimsManager status and only bills with this specific" | 
|---|
|  | 99 | S DIR("?",7)="    status will be included on the report." | 
|---|
|  | 100 | S DIR("?",8)="  " | 
|---|
|  | 101 | S DIR("?",9)="  Option 3 - Any ClaimsManager Status (Bill is still Editable) -" | 
|---|
|  | 102 | S DIR("?",10)="    will only select those bills that are still open for editing in" | 
|---|
|  | 103 | S DIR("?")="    the IB Enter/Edit Billing Information option." | 
|---|
|  | 104 | D ^DIR K DIR | 
|---|
|  | 105 | I $D(DIRUT) S STOP=1 G STATX | 
|---|
|  | 106 | S RPTSPECS("STATYP")=Y,RPTSPECS("IBCISTAT")="" | 
|---|
|  | 107 | I RPTSPECS("STATYP")'=2 G STATX | 
|---|
|  | 108 | ; | 
|---|
|  | 109 | ; Ask the user which status they want to report on | 
|---|
|  | 110 | W ! | 
|---|
|  | 111 | S IEN=0,CH="" | 
|---|
|  | 112 | F  S IEN=$O(^IBA(351.91,IEN)) Q:'IEN  D | 
|---|
|  | 113 | . S TXT=$P($G(^IBA(351.91,IEN,0)),U,2) | 
|---|
|  | 114 | . I CH="" S CH=IEN_":"_TXT | 
|---|
|  | 115 | . E  S CH=CH_";"_IEN_":"_TXT | 
|---|
|  | 116 | . Q | 
|---|
|  | 117 | S DIR(0)="SO^"_CH | 
|---|
|  | 118 | S DIR("A")="Please choose a ClaimsManager Status" | 
|---|
|  | 119 | D ^DIR K DIR | 
|---|
|  | 120 | I $D(DIRUT) S STOP=1 G STATX | 
|---|
|  | 121 | S RPTSPECS("IBCISTAT")=Y | 
|---|
|  | 122 | STATX ; | 
|---|
|  | 123 | Q | 
|---|
|  | 124 | ; | 
|---|
|  | 125 | ; | 
|---|
|  | 126 | COMMENTS ; | 
|---|
|  | 127 | S RPTSPECS("IBCICOMM")=1           ; default | 
|---|
|  | 128 | I RPTSPECS("TYPE")="S" G COMMX     ; don't ask if summary | 
|---|
|  | 129 | W ! | 
|---|
|  | 130 | S DIR(0)="Y" | 
|---|
|  | 131 | S DIR("A")="Do you want to see ClaimsManager comments associated with these bills" | 
|---|
|  | 132 | S DIR("B")="YES" | 
|---|
|  | 133 | S DIR("?",1)="  Enter YES if you would like to see the comments which are stored in the" | 
|---|
|  | 134 | S DIR("?",2)="    ClaimsManager file (#351.9) for each bill on this report." | 
|---|
|  | 135 | S DIR("?",3)="" | 
|---|
|  | 136 | S DIR("?")="  Enter NO if you do not want to see these comments." | 
|---|
|  | 137 | D ^DIR K DIR | 
|---|
|  | 138 | I $D(DIRUT) S STOP=1 G COMMX | 
|---|
|  | 139 | S RPTSPECS("IBCICOMM")=+Y | 
|---|
|  | 140 | COMMX ; | 
|---|
|  | 141 | Q | 
|---|
|  | 142 | ; | 
|---|
|  | 143 | ; | 
|---|
|  | 144 | SELASN ; | 
|---|
|  | 145 | W ! | 
|---|
|  | 146 | S DIR(0)="F^1:1" | 
|---|
|  | 147 | S DIR("A",1)="Do you want to include one specific Assigned to person or All?" | 
|---|
|  | 148 | S DIR("A")="Please enter 1 or A" | 
|---|
|  | 149 | S DIR("B")="A" | 
|---|
|  | 150 | S DIR("?",1)="  Enter '1' to indicate that you only want to include one specific" | 
|---|
|  | 151 | S DIR("?",2)="    Assigned to person on this report.  You will then be asked" | 
|---|
|  | 152 | S DIR("?",3)="    to select this person." | 
|---|
|  | 153 | S DIR("?",4)="" | 
|---|
|  | 154 | S DIR("?",5)="  Enter 'A' to indicate that you want to include all Assigned to" | 
|---|
|  | 155 | S DIR("?",6)="    people on this report.  You will then be asked if you want" | 
|---|
|  | 156 | S DIR("?")="    to sort by the Assigned to person." | 
|---|
|  | 157 | D ^DIR K DIR | 
|---|
|  | 158 | I $D(DIRUT) S STOP=1 G SELASNX | 
|---|
|  | 159 | I '$F(".1.A.","."_Y_".") W *7,"  Invalid response ... Please enter '1' or 'A'" G SELASN | 
|---|
|  | 160 | S RPTSPECS("SELASN")=Y | 
|---|
|  | 161 | SELASNX ; | 
|---|
|  | 162 | Q | 
|---|
|  | 163 | ; | 
|---|
|  | 164 | ; | 
|---|
|  | 165 | ASSIGN ; | 
|---|
|  | 166 | NEW DIC,X,Y | 
|---|
|  | 167 | W ! | 
|---|
|  | 168 | S RPTSPECS("ASNSORT")=0 | 
|---|
|  | 169 | S RPTSPECS("ASNDUZ")=0 | 
|---|
|  | 170 | I RPTSPECS("SELASN")="A" D  G ASSIGNX | 
|---|
|  | 171 | . I RPTSPECS("TYPE")="S" Q     ; don't ask this if summary | 
|---|
|  | 172 | . S DIR(0)="Y" | 
|---|
|  | 173 | . S DIR("A")="Do you want the primary sort by the Assigned To person" | 
|---|
|  | 174 | . S DIR("B")="YES" | 
|---|
|  | 175 | . S DIR("?",1)="  Enter YES if you would like the bills on this report primarily" | 
|---|
|  | 176 | . S DIR("?",2)="    sorted by the Assigned To person.  If a bill is not assigned" | 
|---|
|  | 177 | . S DIR("?",3)="    to anyone, then the word ""UNASSIGNED"" will be used." | 
|---|
|  | 178 | . S DIR("?",4)="" | 
|---|
|  | 179 | . S DIR("?")="  Enter NO if you would like to choose a different primary sort." | 
|---|
|  | 180 | . D ^DIR K DIR | 
|---|
|  | 181 | . I $D(DIRUT) S STOP=1 Q | 
|---|
|  | 182 | . S RPTSPECS("ASNSORT")=+Y | 
|---|
|  | 183 | . Q | 
|---|
|  | 184 | ; | 
|---|
|  | 185 | ; At this point, we know that the user wants to include only one | 
|---|
|  | 186 | ; assigned to person.  We need to select this person here. | 
|---|
|  | 187 | ; | 
|---|
|  | 188 | S DIC="^VA(200," | 
|---|
|  | 189 | S DIC(0)="AEMQO" | 
|---|
|  | 190 | S DIC("A")="Enter the Assigned to person to include: " | 
|---|
|  | 191 | S DIC("S")="I $D(^IBA(351.9,""ASN"",+Y))" | 
|---|
|  | 192 | I $D(^IBA(351.9,"ASN",DUZ)) S DIC("B")=DUZ | 
|---|
|  | 193 | D ^DIC | 
|---|
|  | 194 | I Y<0 S STOP=1 G ASSIGNX | 
|---|
|  | 195 | S RPTSPECS("ASNDUZ")=+Y | 
|---|
|  | 196 | ASSIGNX ; | 
|---|
|  | 197 | Q | 
|---|
|  | 198 | ; | 
|---|
|  | 199 | ; | 
|---|
|  | 200 | SORTBY ; | 
|---|
|  | 201 | S RPTSPECS("SORTBY")=3               ; default | 
|---|
|  | 202 | I RPTSPECS("TYPE")="S" G SORTBYX     ; don't ask if summary | 
|---|
|  | 203 | NEW CH,PS | 
|---|
|  | 204 | W ! | 
|---|
|  | 205 | S CH="1:Terminal Digit;" | 
|---|
|  | 206 | S CH=CH_"2:Insurance Company Name;" | 
|---|
|  | 207 | S CH=CH_"3:Patient Last Name;" | 
|---|
|  | 208 | S CH=CH_"4:Total Charges;" | 
|---|
|  | 209 | S CH=CH_"5:Bill Number" | 
|---|
|  | 210 | S DIR(0)="SO^"_CH | 
|---|
|  | 211 | S PS=$S(RPTSPECS("ASNSORT"):"secondary",1:"primary") | 
|---|
|  | 212 | S DIR("A")="Please enter the "_PS_" sort criteria" | 
|---|
|  | 213 | S DIR("B")="Patient Last Name" | 
|---|
|  | 214 | D ^DIR K DIR | 
|---|
|  | 215 | I $D(DIRUT) S STOP=1 G SORTBYX | 
|---|
|  | 216 | S RPTSPECS("SORTBY")=Y | 
|---|
|  | 217 | SORTBYX ; | 
|---|
|  | 218 | Q | 
|---|
|  | 219 | ; | 
|---|
|  | 220 | TYPE ; | 
|---|
|  | 221 | W ! | 
|---|
|  | 222 | S DIR(0)="S^D:Detailed;S:Summary" | 
|---|
|  | 223 | S DIR("A")="Please enter the report type" | 
|---|
|  | 224 | S DIR("B")="Detailed" | 
|---|
|  | 225 | S DIR("?",1)="  The Detailed report will show the breakout of bills &" | 
|---|
|  | 226 | S DIR("?",2)="  a summary based on the criteria that you selected." | 
|---|
|  | 227 | S DIR("?",3)="" | 
|---|
|  | 228 | S DIR("?",4)="  The Summary report will show the total amount of bills" | 
|---|
|  | 229 | S DIR("?")="  based on the criteria that you selected." | 
|---|
|  | 230 | D ^DIR K DIR | 
|---|
|  | 231 | I $D(DIRUT) S STOP=1 G TYPEX | 
|---|
|  | 232 | S RPTSPECS("TYPE")=Y | 
|---|
|  | 233 | TYPEX ; | 
|---|
|  | 234 | Q | 
|---|
|  | 235 | ; | 
|---|
|  | 236 | DEVICE(IBCIRTN) ; Device Handler and possible TaskManager calls | 
|---|
|  | 237 | NEW ZTRTN,ZTDESC,ZTSAVE,POP | 
|---|
|  | 238 | W !!!,"*** This report is 132 characters wide ***",! | 
|---|
|  | 239 | S ZTRTN="COMPILE^"_IBCIRTN | 
|---|
|  | 240 | S ZTDESC="IBCI ClaimsManager Status Report" | 
|---|
|  | 241 | I IBCIRTN="IBCICME" S ZTDESC="IBCI ClaimsManager Error Report" | 
|---|
|  | 242 | S ZTSAVE("RPTSPECS(")="" | 
|---|
|  | 243 | S ZTSAVE("IBCIRTN")="" | 
|---|
|  | 244 | D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE) | 
|---|
|  | 245 | I POP S STOP=1 | 
|---|
|  | 246 | DEVICEX ; | 
|---|
|  | 247 | Q | 
|---|
|  | 248 | ; | 
|---|
|  | 249 | ; | 
|---|
|  | 250 | BUILD ; Build the scratch global based on the selection and sort criteria | 
|---|
|  | 251 | ; | 
|---|
|  | 252 | NEW SUBSCRPT,RDT,IBIFN,CMDATA,IBDATA,CMSTATUS,BILLID,PATDATA | 
|---|
|  | 253 | NEW NAME,SSN,BILLER,CODER,OIFLG,ASSIGNED,CHARGES,ERR,ERRCODES | 
|---|
|  | 254 | NEW SORT1,SORT2,SORT3,SORT4,SORT5,RPTDATA,COUNT,ASNSUB,NAMESUB | 
|---|
|  | 255 | NEW INSNAME | 
|---|
|  | 256 | ; | 
|---|
|  | 257 | KILL ^TMP($J,IBCIRTN) | 
|---|
|  | 258 | ; | 
|---|
|  | 259 | S SUBSCRPT="D"                           ; for event date looping | 
|---|
|  | 260 | I RPTSPECS("DATYP")=2 S SUBSCRPT="APD"   ; for entry date looping | 
|---|
|  | 261 | ; | 
|---|
|  | 262 | ; Get the starting date for looping purposes | 
|---|
|  | 263 | S RDT=$O(^DGCR(399,SUBSCRPT,RPTSPECS("BEGDATE")),-1) | 
|---|
|  | 264 | ; | 
|---|
|  | 265 | S COUNT=0 | 
|---|
|  | 266 | ; Main loop....stop when we get to a date after the report end date | 
|---|
|  | 267 | F  S RDT=$O(^DGCR(399,SUBSCRPT,RDT)) Q:'RDT!($P(RDT,".",1)>RPTSPECS("ENDDATE"))!$G(ZTSTOP)  D | 
|---|
|  | 268 | . S IBIFN=0 | 
|---|
|  | 269 | . F  S IBIFN=$O(^DGCR(399,SUBSCRPT,RDT,IBIFN)) Q:'IBIFN!$G(ZTSTOP)  D | 
|---|
|  | 270 | .. S COUNT=COUNT+1 | 
|---|
|  | 271 | .. I $D(ZTQUEUED),COUNT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q | 
|---|
|  | 272 | .. S CMDATA=$G(^IBA(351.9,IBIFN,0)) | 
|---|
|  | 273 | .. I CMDATA="" Q | 
|---|
|  | 274 | .. S IBDATA=$G(^DGCR(399,IBIFN,0)) | 
|---|
|  | 275 | .. I IBDATA="" Q | 
|---|
|  | 276 | .. ; | 
|---|
|  | 277 | .. ; If the user chose a specific ClaimsManager status to report | 
|---|
|  | 278 | .. ; on, then make sure this bill has the status they want. | 
|---|
|  | 279 | .. S CMSTATUS=$P(CMDATA,U,2) | 
|---|
|  | 280 | .. I RPTSPECS("STATYP")=2,CMSTATUS'=RPTSPECS("IBCISTAT") Q | 
|---|
|  | 281 | .. ; | 
|---|
|  | 282 | .. ; If the user wants to see bills that are still open for editing | 
|---|
|  | 283 | .. I RPTSPECS("STATYP")=3,'$F(".1.","."_$P(IBDATA,U,13)_".") Q  ;DSI/DJW 3/21/02 | 
|---|
|  | 284 | .. ; | 
|---|
|  | 285 | .. ; If the user wants to include a specific assigned to person, | 
|---|
|  | 286 | .. ; then make sure the assigned to person is the one they want. | 
|---|
|  | 287 | .. I RPTSPECS("ASNDUZ"),RPTSPECS("ASNDUZ")'=$P(CMDATA,U,12) Q | 
|---|
|  | 288 | .. ; | 
|---|
|  | 289 | .. ; At this point, we know we want to include this bill. | 
|---|
|  | 290 | .. D GETDATA^IBCICME1 | 
|---|
|  | 291 | .. S ^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN)=RPTDATA | 
|---|
|  | 292 | .. Q | 
|---|
|  | 293 | . Q | 
|---|
|  | 294 | ; | 
|---|
|  | 295 | BUILDX ; | 
|---|
|  | 296 | Q | 
|---|
|  | 297 | ; | 
|---|
|  | 298 | ; | 
|---|