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