[613] | 1 | IBCNERP9 ;DAOU/BHS - IIV STATISTICAL REPORT PRINT ;12-JUN-2002
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**184,271**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; IIV - Insurance Identification and Verification Interface
|
---|
| 6 | ;
|
---|
| 7 | ; Input variables from IBCNERP7:
|
---|
| 8 | ; IBCNERTN = "IBCNERP7"
|
---|
| 9 | ; **IBCNESPC array ONLY passed by reference
|
---|
| 10 | ; IBCNESPC("BEGDTM") = Start Date/Time for date/time report range
|
---|
| 11 | ; IBCNESPC("ENDDTM") = End Date/Time for date/time report range
|
---|
| 12 | ; IBCNESPC("SECTS") = 1 - All, includes all sections OR
|
---|
| 13 | ; list of one or more of the following:
|
---|
| 14 | ; 2 - Outgoing Data, Inquiry Transmission data,
|
---|
| 15 | ; 3 - Incoming Data, Inquiry Response data,
|
---|
| 16 | ; 4 - General Data, Insurance Buffer data,
|
---|
| 17 | ; Communication Failures, Outstanding Inquiries
|
---|
| 18 | ; IBCNESPC("MM") = "", do not generate MailMan message OR
|
---|
| 19 | ; MAILGROUP, mailgroup to send MailMan message to
|
---|
| 20 | ; based on IB site parameter
|
---|
| 21 | ; Assumes report data exists in ^TMP($J,IBCNERTN,...)
|
---|
| 22 | ; Based on IBCNESPC("SECTS") parameter the following scratch globals
|
---|
| 23 | ; will be built
|
---|
| 24 | ; 1 OR contains 2 -->
|
---|
| 25 | ; ^TMP($J,RTN,"OUT")=TotInq^InsBufExtSubtotal^PreRegExtSubtotal^...
|
---|
| 26 | ; NonVerifInsExtSubtotal^NoActInsExtSubtotal
|
---|
| 27 | ; 1 OR contains 3 -->
|
---|
| 28 | ; ^TMP($J,RTN,"IN")=TotResp^InsBufExtSubtotal^PreRegExtSubtotal^...
|
---|
| 29 | ; NonVerifInsExtSubtotal^NoActInsExtSubtotal
|
---|
| 30 | ; 1 OR contains 4 -->
|
---|
| 31 | ; ^TMP($J,RTN,"CUR")=TotOutstandingInq^TotInqRetries^...
|
---|
| 32 | ; TotInqCommFailure^TotInsBufVerified^...
|
---|
| 33 | ; ManVerifedSubtotal^IIVProcessedSubtotal...
|
---|
| 34 | ; TotInsBufUnverified^! InsBufSubtotal^...
|
---|
| 35 | ; ? InsBufSubtotal^- InsBufSubtotal^...
|
---|
| 36 | ; Other InsBufSubtotal^TQReadyToTransmit^...
|
---|
| 37 | ; TQHold^TQRetry
|
---|
| 38 | ; and ^TMP($J,RTN","PYR",PAYER NAME,IEN of file 365.12)=""
|
---|
| 39 | ;
|
---|
| 40 | ; Must call at EN
|
---|
| 41 | Q
|
---|
| 42 | ;
|
---|
| 43 | EN(IBCNERTN,IBCNESPC) ; Entry pt
|
---|
| 44 | ;
|
---|
| 45 | ; Init vars
|
---|
| 46 | N CRT,MAXCNT,IBPXT,IBPGC,IBBDT,IBEDT,IBSCT,IBMM,RETRY,OUTINQ,ATTEMPT
|
---|
| 47 | N X,Y,DIR,DTOUT,DUOUT,LIN
|
---|
| 48 | ;
|
---|
| 49 | S IBBDT=$G(IBCNESPC("BEGDTM")),IBEDT=$G(IBCNESPC("ENDDTM"))
|
---|
| 50 | S IBSCT=$G(IBCNESPC("SECTS")),IBMM=$G(IBCNESPC("MM"))
|
---|
| 51 | ;
|
---|
| 52 | S (IBPXT,IBPGC,CRT,MAXCNT)=0
|
---|
| 53 | ;
|
---|
| 54 | ; Determine IO parameters if output device is NOT MailMan message
|
---|
| 55 | I IBMM="" D
|
---|
| 56 | . I IOST["C-" S MAXCNT=IOSL-3,CRT=1 Q
|
---|
| 57 | . S MAXCNT=IOSL-6,CRT=0
|
---|
| 58 | ;
|
---|
| 59 | D PRINT(IBCNERTN,IBBDT,IBEDT,IBSCT,IBMM,.IBPGC,.IBPXT,MAXCNT,CRT)
|
---|
| 60 | I $G(ZTSTOP)!IBPXT G EXIT
|
---|
| 61 | I CRT,IBPGC>0,'$D(ZTQUEUED) D G EXIT
|
---|
| 62 | . I MAXCNT<51 F LIN=1:1:(MAXCNT-$Y) W !
|
---|
| 63 | . S DIR(0)="E" D ^DIR K DIR
|
---|
| 64 | ;
|
---|
| 65 | EXIT ; Exit pt
|
---|
| 66 | Q
|
---|
| 67 | ;
|
---|
| 68 | ;
|
---|
| 69 | PRINT(RTN,BDT,EDT,SCT,MM,PGC,PXT,MAX,CRT) ; Print data
|
---|
| 70 | ; Init vars
|
---|
| 71 | N EORMSG,NONEMSG,LINECT,DISPDATA,HDRDATA,OFFSET,TMP,DTMRNG,SITE
|
---|
| 72 | ;
|
---|
| 73 | S LINECT=0
|
---|
| 74 | ;
|
---|
| 75 | ; Build End-Of-Report Message for display
|
---|
| 76 | S EORMSG="*** END OF REPORT ***"
|
---|
| 77 | S OFFSET=80-$L(EORMSG)\2
|
---|
| 78 | S EORMSG=$$FO^IBCNEUT1(EORMSG,OFFSET+$L(EORMSG),"R")
|
---|
| 79 | ; Build No-Data-Found Message for display
|
---|
| 80 | S NONEMSG="* * * N O D A T A F O U N D * * *"
|
---|
| 81 | S OFFSET=80-$L(NONEMSG)\2
|
---|
| 82 | S NONEMSG=$$FO^IBCNEUT1(NONEMSG,OFFSET+$L(NONEMSG),"R")
|
---|
| 83 | ; Build Site for display
|
---|
| 84 | S SITE=$P($$SITE^VASITE,U,2)
|
---|
| 85 | ; Build Date/Time Range for display
|
---|
| 86 | ; Build Date/Time display for Starting date/time
|
---|
| 87 | S TMP=$$FMTE^XLFDT(BDT,"5Z")
|
---|
| 88 | S DTMRNG=$P(TMP,"@")_" "_$P(TMP,"@",2)
|
---|
| 89 | ; Calculate Date/Time display for Ending date/time
|
---|
| 90 | S TMP=$$FMTE^XLFDT(EDT,"5Z")
|
---|
| 91 | S DTMRNG=DTMRNG_" - "_$P(TMP,"@")_" "_$P(TMP,"@",2)
|
---|
| 92 | ;
|
---|
| 93 | ; Print header to DISPDATA for MailMan message ONLY
|
---|
| 94 | D HEADER^IBCNERP0(.HDRDATA,.PGC,.PXT,MAX,CRT,SITE,DTMRNG,MM)
|
---|
| 95 | I MM'="" M DISPDATA=HDRDATA S LINECT=+$O(DISPDATA(""),-1)
|
---|
| 96 | I MM="" KILL HDRDATA
|
---|
| 97 | ;
|
---|
| 98 | ; If global does not exist - display No Data message
|
---|
| 99 | I '$D(^TMP($J,RTN)) S LINECT=LINECT+1,DISPDATA(LINECT)=NONEMSG G PRINT2
|
---|
| 100 | ;
|
---|
| 101 | ; Display Outgoing Data - if selected
|
---|
| 102 | I SCT=1!(SCT[2) D I PXT!$G(ZTSTOP) G PRINTX
|
---|
| 103 | . ; Build lines of data to display
|
---|
| 104 | . D DATA(.DISPDATA,.LINECT,RTN,"OUT",MM)
|
---|
| 105 | ;
|
---|
| 106 | ; Display Incoming Data - if selected
|
---|
| 107 | I SCT=1!(SCT[3) D I PXT!$G(ZTSTOP) G PRINTX
|
---|
| 108 | . ; Build lines of data to display
|
---|
| 109 | . D DATA(.DISPDATA,.LINECT,RTN,"IN",MM)
|
---|
| 110 | ;
|
---|
| 111 | ; Display General Data - if selected
|
---|
| 112 | I SCT=1!(SCT[4) D I PXT!$G(ZTSTOP) G PRINTX
|
---|
| 113 | . ; Build lines of data to display
|
---|
| 114 | . D DATA(.DISPDATA,.LINECT,RTN,"CUR",MM)
|
---|
| 115 | . D DATA(.DISPDATA,.LINECT,RTN,"PYR",MM)
|
---|
| 116 | ;
|
---|
| 117 | PRINT2 S LINECT=LINECT+1
|
---|
| 118 | S DISPDATA(LINECT)=EORMSG
|
---|
| 119 | ;
|
---|
| 120 | I MM="" D LINE(.DISPDATA,.PGC,.PXT,MAX,CRT,SITE,DTMRNG,MM)
|
---|
| 121 | ; Generate MailMan message, if flag is set
|
---|
| 122 | I MM'="" D MSG^IBCNEUT5(MM,"** IIV Statistical Rpt **","DISPDATA(")
|
---|
| 123 | ;
|
---|
| 124 | PRINTX ; PRINT exit pt
|
---|
| 125 | Q
|
---|
| 126 | ;
|
---|
| 127 | LINE(DISPDATA,PGC,PXT,MAX,CRT,SITE,DTMRNG,MM) ; Print line of data
|
---|
| 128 | ; Init vars
|
---|
| 129 | N CT,II,ARRAY,NWPG
|
---|
| 130 | ;
|
---|
| 131 | S NWPG=0
|
---|
| 132 | S CT=+$O(DISPDATA(""),-1)
|
---|
| 133 | I $Y+1+CT>MAX,PGC>1 D HEADER^IBCNERP0(.ARRAY,.PGC,.PXT,MAX,CRT,SITE,DTMRNG,MM) S NWPG=1 I PXT!$G(ZTSTOP) G LINEX
|
---|
| 134 | F II=1:1:CT D Q:PXT!$G(ZTSTOP)
|
---|
| 135 | . I $Y+1>MAX!('PGC) D HEADER^IBCNERP0(.ARRAY,.PGC,.PXT,MAX,CRT,SITE,DTMRNG,MM) S NWPG=1 I PXT!$G(ZTSTOP) Q
|
---|
| 136 | . I 'NWPG!(NWPG&(DISPDATA(II)'="")) W !,?1,DISPDATA(II)
|
---|
| 137 | . I NWPG S NWPG=0
|
---|
| 138 | ;
|
---|
| 139 | LINEX ; LINE exit pt
|
---|
| 140 | Q
|
---|
| 141 | ;
|
---|
| 142 | DATA(DISPDATA,LINECT,RTN,TYPE,MM) ; Format lines of data to be printed
|
---|
| 143 | ; Init vars
|
---|
| 144 | N DASHES,DASHES2,PEND,RPTDATA,CT,DEFINQ,INSCOS,PAYERS,QUEINQ,TXT
|
---|
| 145 | ;
|
---|
| 146 | S $P(DASHES,"=",15)=""
|
---|
| 147 | I LINECT>0,MM="" S LINECT=LINECT+1,DISPDATA(LINECT)=""
|
---|
| 148 | S LINECT=LINECT+1
|
---|
| 149 | S DISPDATA(LINECT)=$S(TYPE="OUT":"Outgoing Data",TYPE="IN":"Incoming Data",1:"Current Status")
|
---|
| 150 | S LINECT=LINECT+1
|
---|
| 151 | S DISPDATA(LINECT)=DASHES
|
---|
| 152 | ; Copy report data to local variable
|
---|
| 153 | S RPTDATA=$G(^TMP($J,RTN,TYPE)) ; does not work for "PYR"
|
---|
| 154 | ; Outgoing and Incoming Totals
|
---|
| 155 | I TYPE="OUT"!(TYPE="IN") D G DATAX
|
---|
| 156 | . S LINECT=LINECT+1
|
---|
| 157 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1($S(TYPE="OUT":"Inquiries Sent:",1:"Responses Received:"),36)_$$FO^IBCNEUT1(+$P(RPTDATA,U,1),9,"R")
|
---|
| 158 | . F CT=1:1:4 D
|
---|
| 159 | . . S TYPE=" "_$S(CT=1:"Insurance Buffer",CT=2:"Appointment",CT=3:"Non-verified Insurance",1:"No Active Insurance")
|
---|
| 160 | . . S LINECT=LINECT+1
|
---|
| 161 | . . S DISPDATA(LINECT)=$$FO^IBCNEUT1(TYPE,46)_$$FO^IBCNEUT1(+$P(RPTDATA,U,CT+1),9,"R")
|
---|
| 162 | ;
|
---|
| 163 | ; General Data
|
---|
| 164 | I TYPE="CUR" D G DATAX
|
---|
| 165 | . ; Responses Pending
|
---|
| 166 | . S PEND=+$P(RPTDATA,U,1)
|
---|
| 167 | . S LINECT=LINECT+1
|
---|
| 168 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Responses Pending:",36)_$$FO^IBCNEUT1(PEND,9,"R")
|
---|
| 169 | . ; Queued Inqs
|
---|
| 170 | . S QUEINQ=+$P(RPTDATA,U,2)
|
---|
| 171 | . S LINECT=LINECT+1
|
---|
| 172 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Queued Inquiries:",36)_$$FO^IBCNEUT1(QUEINQ,9,"R")
|
---|
| 173 | . ; Deferred Inqs
|
---|
| 174 | . S DEFINQ=+$P(RPTDATA,U,3)
|
---|
| 175 | . S LINECT=LINECT+1
|
---|
| 176 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Deferred Inquiries:",36)_$$FO^IBCNEUT1(DEFINQ,9,"R")
|
---|
| 177 | . ; Ins Cos w/o Nat ID
|
---|
| 178 | . S INSCOS=+$P(RPTDATA,U,4)
|
---|
| 179 | . S LINECT=LINECT+1
|
---|
| 180 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Insurance Companies w/o National ID:",36)_$$FO^IBCNEUT1(INSCOS,9,"R")
|
---|
| 181 | . ; Payers disabled locally
|
---|
| 182 | . S PAYERS=+$P(RPTDATA,U,5)
|
---|
| 183 | . S LINECT=LINECT+1
|
---|
| 184 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1("eIIV Payers Disabled Locally:",36)_$$FO^IBCNEUT1(PAYERS,9,"R")
|
---|
| 185 | . S LINECT=LINECT+1
|
---|
| 186 | . S DISPDATA(LINECT)=""
|
---|
| 187 | . ; Insurance Buffer statistics
|
---|
| 188 | . S LINECT=LINECT+1
|
---|
| 189 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1("Insurance Buffer Entries: ",36)_$$FO^IBCNEUT1(($P(RPTDATA,U,6)+$P(RPTDATA,U,9)),9,"R")
|
---|
| 190 | . ; *,+,#,! or - symbol entries - User action required
|
---|
| 191 | . S LINECT=LINECT+1
|
---|
| 192 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1(" User Action Required: ",46)_$$FO^IBCNEUT1(+$P(RPTDATA,U,6),9,"R")
|
---|
| 193 | . F CT=7,8,13,10,11 D
|
---|
| 194 | . . S LINECT=LINECT+1
|
---|
| 195 | . . ; Added # to report
|
---|
| 196 | . . S TYPE=" # of "
|
---|
| 197 | . . I CT=7 S TXT="* entries (User Verified policy)"
|
---|
| 198 | . . I CT=8 S TXT="+ entries (Payer indicated Active policy)"
|
---|
| 199 | . . I CT=10 S TXT="# entries (Policy status undetermined)"
|
---|
| 200 | . . I CT=11 S TXT="! entries (IIV needs user assistance for entry)"
|
---|
| 201 | . . I CT=13 S TXT="- entries (Payer indicated Inactive policy)"
|
---|
| 202 | . . S TYPE=TYPE_TXT
|
---|
| 203 | . . S DISPDATA(LINECT)=$$FO^IBCNEUT1(TYPE,56)_$$FO^IBCNEUT1(+$P(RPTDATA,U,CT),9,"R")
|
---|
| 204 | . ;
|
---|
| 205 | . S LINECT=LINECT+1
|
---|
| 206 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1(" Entries Awaiting Processing: ",46)_$$FO^IBCNEUT1(+$P(RPTDATA,U,9),9,"R")
|
---|
| 207 | . ; Subtotal of ? entries (IIV is waiting for a response)
|
---|
| 208 | . S LINECT=LINECT+1
|
---|
| 209 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1(" # of ? entries (IIV is waiting for a response)",56)_$$FO^IBCNEUT1(+$P(RPTDATA,U,12),9,"R")
|
---|
| 210 | . ; Subtotal of blank entries (yet to be processed or accepted)
|
---|
| 211 | . S LINECT=LINECT+1
|
---|
| 212 | . S DISPDATA(LINECT)=$$FO^IBCNEUT1(" # of blank entries (yet to be processed or accepted)",56)_$$FO^IBCNEUT1(+$P(RPTDATA,U,14),9,"R")
|
---|
| 213 | ;
|
---|
| 214 | ; New Payers added to File 365.12
|
---|
| 215 | I TYPE="PYR" D G DATAX
|
---|
| 216 | . ; Payers added to file 365.12
|
---|
| 217 | . D DATAX
|
---|
| 218 | . S LINECT=LINECT+1
|
---|
| 219 | . S DISPDATA(LINECT)="New eIIV Payers received during report date range:"
|
---|
| 220 | . S LINECT=LINECT+1
|
---|
| 221 | . I '$D(^TMP($J,RTN,TYPE)) S DISPDATA(LINECT)=" No new Payers added" Q
|
---|
| 222 | . S DISPDATA(LINECT)=" Please link the associated active insurance companies to these payers at your"
|
---|
| 223 | . S LINECT=LINECT+1,DISPDATA(LINECT)=" earliest convenience. Locally activate the payers after you link insurance"
|
---|
| 224 | . S LINECT=LINECT+1,DISPDATA(LINECT)=" companies to them. For further details regarding this process, please refer"
|
---|
| 225 | . S LINECT=LINECT+1,DISPDATA(LINECT)=" to the Integrated Billing IIV Interface User Guide."
|
---|
| 226 | . N PYR,PIEN
|
---|
| 227 | . S PYR="",PIEN="" F S PYR=$O(^TMP($J,RTN,TYPE,PYR)) Q:PYR="" D
|
---|
| 228 | . . F S PIEN=$O(^TMP($J,RTN,TYPE,PYR,PIEN)) Q:'PIEN S LINECT=LINECT+1,DISPDATA(LINECT)=" "_PYR
|
---|
| 229 | ;
|
---|
| 230 | DATAX ; DATA exit pt
|
---|
| 231 | S LINECT=LINECT+1
|
---|
| 232 | S DISPDATA(LINECT)=""
|
---|
| 233 | Q
|
---|
| 234 | ;
|
---|
| 235 | ;
|
---|