| 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 |  ;
 | 
|---|