| 1 | IBCEDP  ;ALB/ESG - EDI CLAIM STATUS REPORT PRINT ;13-DEC-2007 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**377**;21-MAR-94;Build 23 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | Q | 
|---|
| 6 | ; | 
|---|
| 7 | PRINT   ; entry point to print the report | 
|---|
| 8 | NEW CRT,IBPAGE,IBSTOP,IBCT,SV1,SV2,SV3,IEN,DATA,NEWHDR | 
|---|
| 9 | NEW DIR,X,Y,DTOUT,DUOUT,DIROUT,DIRUT | 
|---|
| 10 | I IOST["C-" S CRT=1 | 
|---|
| 11 | E  S CRT=0 | 
|---|
| 12 | ; | 
|---|
| 13 | S IBPAGE=0,IBSTOP=0,IBCT=0,NEWHDR=0 | 
|---|
| 14 | ; | 
|---|
| 15 | I '$D(^TMP($J,"IBCEDC")) D HDR W !!?5,"No data found for this report." G PX | 
|---|
| 16 | I $G(ZTSTOP) D HDR W !!?5,"This report was halted during compilation by TaskManager Request." G PX | 
|---|
| 17 | ; | 
|---|
| 18 | D HDR   ; initial header display | 
|---|
| 19 | S SV1="" | 
|---|
| 20 | F  S SV1=$O(^TMP($J,"IBCEDC",SV1)) Q:SV1=""!IBSTOP  D SD(SV1) D  Q:IBSTOP | 
|---|
| 21 | . S SV2="" | 
|---|
| 22 | . F  S SV2=$O(^TMP($J,"IBCEDC",SV1,SV2)) Q:SV2=""!IBSTOP  D  Q:IBSTOP | 
|---|
| 23 | .. S SV3="" | 
|---|
| 24 | .. F  S SV3=$O(^TMP($J,"IBCEDC",SV1,SV2,SV3)) Q:SV3=""!IBSTOP  D  Q:IBSTOP | 
|---|
| 25 | ... S IEN=0 | 
|---|
| 26 | ... F  S IEN=$O(^TMP($J,"IBCEDC",SV1,SV2,SV3,IEN)) Q:'IEN!IBSTOP  D  Q:IBSTOP | 
|---|
| 27 | .... S DATA=$G(^TMP($J,"IBCEDC",SV1,SV2,SV3,IEN)) | 
|---|
| 28 | .... D PRT(DATA) | 
|---|
| 29 | .... Q | 
|---|
| 30 | ... Q | 
|---|
| 31 | .. Q | 
|---|
| 32 | . Q | 
|---|
| 33 | ; | 
|---|
| 34 | I IBSTOP G PRINTX | 
|---|
| 35 | D:$Y>(IOSL-4) HDR G:IBSTOP PRINTX | 
|---|
| 36 | W !!?5,"Total number of EDI Claims:  ",IBCT | 
|---|
| 37 | D:$Y>(IOSL-4) HDR G:IBSTOP PRINTX | 
|---|
| 38 | W !!,"*** End of Report ***" | 
|---|
| 39 | ; | 
|---|
| 40 | PX      ; | 
|---|
| 41 | I CRT,'$D(ZTQUEUED) S DIR(0)="E" D ^DIR K DIR | 
|---|
| 42 | PRINTX  ; | 
|---|
| 43 | Q | 
|---|
| 44 | ; | 
|---|
| 45 | PRT(Z)  ; print a line on the report | 
|---|
| 46 | ; Z - data from the scratch global node | 
|---|
| 47 | N DIV,PAY,ADDR1 | 
|---|
| 48 | D:$Y>(IOSL-3) HDR G:IBSTOP PRTX | 
|---|
| 49 | S IBCT=IBCT+1 | 
|---|
| 50 | S DIV=$P($G(^DG(40.8,+$P(Z,U,10),0)),U,2)      ; division abbr | 
|---|
| 51 | S PAY=$P($G(^DIC(36,+$P(Z,U,12),0)),U,1)       ; payer name | 
|---|
| 52 | S ADDR1=$P($G(^DIC(36,+$P(Z,U,12),.11)),U,1)   ; payer address line 1 | 
|---|
| 53 | ; | 
|---|
| 54 | W !,$P(Z,U,1)                                            ; claim# | 
|---|
| 55 | W ?9,$S($P(Z,U,2)=2:1500,1:"UB04")                       ; form type | 
|---|
| 56 | W ?14,$S($P(Z,U,3):"INPT",1:"OUTPT")                     ; inpat/outpat | 
|---|
| 57 | W ?21,$P(Z,U,4)                                          ; payer sequence | 
|---|
| 58 | W ?25,$P(Z,U,5)                                          ; EDI status code | 
|---|
| 59 | W ?29,$E($P(Z,U,13),1,9)                                 ; IB status abbr | 
|---|
| 60 | W ?39,$E($P(Z,U,11),1,2)                                 ; ar status abbr | 
|---|
| 61 | W ?44,$$FMTE^XLFDT($P(Z,U,6)\1,"2Z")                     ; last transmit date | 
|---|
| 62 | W ?55,$J($P(Z,U,7),4)                                    ; age in days | 
|---|
| 63 | W ?62,$P(Z,U,8)                                          ; batch# | 
|---|
| 64 | W ?69,$J($FN($P(Z,U,9),"",2),9)                          ; balance due | 
|---|
| 65 | W ?81,DIV                                                ; division | 
|---|
| 66 | W ?89,$E(PAY,1,23)                                       ; payer name | 
|---|
| 67 | W ?114,$E(ADDR1,1,18)                                    ; payer address line 1 | 
|---|
| 68 | ; | 
|---|
| 69 | S NEWHDR=0  ; toggle new header flag | 
|---|
| 70 | PRTX    ; | 
|---|
| 71 | Q | 
|---|
| 72 | ; | 
|---|
| 73 | HDR     ; report header | 
|---|
| 74 | ; | 
|---|
| 75 | ; if screen output and page# already exists, do a page break at the bottom of the screen | 
|---|
| 76 | I IBPAGE,CRT D  I IBSTOP G HDRX | 
|---|
| 77 | . S DIR(0)="E" D ^DIR K DIR | 
|---|
| 78 | . I 'Y S IBSTOP=1 | 
|---|
| 79 | . Q | 
|---|
| 80 | ; | 
|---|
| 81 | ; if screen output OR page# already exists, do a form feed | 
|---|
| 82 | I IBPAGE!CRT W @IOF | 
|---|
| 83 | I 'IBPAGE,'CRT W $C(13)   ; first printer page - left margin set | 
|---|
| 84 | ; | 
|---|
| 85 | S IBPAGE=IBPAGE+1 | 
|---|
| 86 | ; | 
|---|
| 87 | W "EDI Claim Status Report",?96,$$FMTE^XLFDT($$NOW^XLFDT),"   Page: ",IBPAGE | 
|---|
| 88 | W !,"** A claim may appear multiple times if transmitted more than once. **" | 
|---|
| 89 | W !?3,"Sorted by ",$$SD^IBCEDS1($G(IBSORT1)) | 
|---|
| 90 | I $G(IBSORT2)'="" W ", then by ",$$SD^IBCEDS1(IBSORT2) | 
|---|
| 91 | I $G(IBSORT3)'="" W ", then by ",$$SD^IBCEDS1(IBSORT3) | 
|---|
| 92 | ; | 
|---|
| 93 | ; display column headers | 
|---|
| 94 | W !?25,"*-- Statuses --*" | 
|---|
| 95 | W !,"Claim",?9,"Form",?14,"Type",?20,"Seq",?25,"EDI",?31,"IB",?39,"AR",?44,"Trans Dt",?56,"Age",?62,"Batch#",?71,"Bal Due" | 
|---|
| 96 | W ?81,"Div",?89,"Payer" | 
|---|
| 97 | ; | 
|---|
| 98 | N Z S Z="",$P(Z,"-",133)="" W !,Z | 
|---|
| 99 | ; | 
|---|
| 100 | S NEWHDR=1    ; flag indicating a new page header was just printed | 
|---|
| 101 | ; | 
|---|
| 102 | ; check for a TaskManager stop request | 
|---|
| 103 | I $D(ZTQUEUED),$$S^%ZTLOAD() D  G HDRX | 
|---|
| 104 | . S (ZTSTOP,IBSTOP)=1 | 
|---|
| 105 | . W !!!?5,"*** Report Halted by TaskManager Request ***" | 
|---|
| 106 | . Q | 
|---|
| 107 | ; | 
|---|
| 108 | HDRX    ; | 
|---|
| 109 | Q | 
|---|
| 110 | ; | 
|---|
| 111 | SD(SV)  ; primary sort value display break.  This procedure is to display a break whenever the primary sort value changes | 
|---|
| 112 | ; SV - subscript value of the primary sort | 
|---|
| 113 | I IBSORT1=4!(IBSORT1=6) G SDX  ; don't display a break for current balance or for claim# primary sorts | 
|---|
| 114 | ; | 
|---|
| 115 | D:$Y>(IOSL-4) HDR G:IBSTOP SDX | 
|---|
| 116 | I 'NEWHDR W !     ; an extra line break if a page header was not just printed | 
|---|
| 117 | I $E(SV)="-",$D(IBSORTOR(IBSORT1)) S SV=$E(SV,2,999)    ; remove leading "-" on descending numerical sorts | 
|---|
| 118 | ; | 
|---|
| 119 | I IBSORT1=1 S SV=$$FMTE^XLFDT(SV,"5Z")   ; last transmitted date/time | 
|---|
| 120 | I IBSORT1=2 D                            ; payer name and address | 
|---|
| 121 | . N INS,ADDR | 
|---|
| 122 | . S INS=+$P(SV,U,2)                      ; ins co ien 2nd piece of subscript | 
|---|
| 123 | . S ADDR=$$INSADD^IBCNSC02(INS)          ; address fields | 
|---|
| 124 | . S SV=$P(SV,U,1)_"   "_$P(ADDR,U,2)_" "_$P(ADDR,U,6)_" "_$P(ADDR,U,5) | 
|---|
| 125 | . Q | 
|---|
| 126 | I IBSORT1=3 S SV=SV_" - "_$$EXTERNAL^DILFD(364,.03,,SV)   ; edi claim status and description | 
|---|
| 127 | I IBSORT1=5 D                                             ; division | 
|---|
| 128 | . N DZ,DIVNM | 
|---|
| 129 | . S DZ=+$O(^DG(40.8,"C",SV,""))                           ; division ien | 
|---|
| 130 | . S DIVNM=$P($G(^DG(40.8,DZ,0)),U,1)                      ; division name | 
|---|
| 131 | . S SV=SV_" - "_DIVNM | 
|---|
| 132 | . Q | 
|---|
| 133 | I IBSORT1=7 D                                             ; AR status | 
|---|
| 134 | . N AZ,ANM | 
|---|
| 135 | . S AZ=+$O(^PRCA(430.3,"C",SV,""))                        ; AR status ien | 
|---|
| 136 | . S ANM=$P($G(^PRCA(430.3,AZ,0)),U,1)                     ; AR status description | 
|---|
| 137 | . S SV=SV_" - "_ANM | 
|---|
| 138 | . Q | 
|---|
| 139 | I IBSORT1=8 S SV=SV_" Days" | 
|---|
| 140 | ; | 
|---|
| 141 | S SV=$$SD^IBCEDS1(IBSORT1)_": "_SV | 
|---|
| 142 | W !,SV | 
|---|
| 143 | SDX     ; | 
|---|
| 144 | Q | 
|---|
| 145 | ; | 
|---|