| 1 | IBAGMM1 ;WOIFO/AAT-GMT MONTHLY TOTALS REPORT;30-JUL-02 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**183**;21-MAR-94 | 
|---|
| 3 | ;; Per VHA Directive 10-93-142, this routine should not be modified | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | ; Prints report to the current device | 
|---|
| 7 | ; | 
|---|
| 8 | ; Input: | 
|---|
| 9 | ;   IBBDT - Beginning date | 
|---|
| 10 | ;   IBEDT - Ending date | 
|---|
| 11 | ; Output: | 
|---|
| 12 | ;   IBQUIT = 1, if user entered "^" (Devices starting with "C-" only) | 
|---|
| 13 | REPORT ; | 
|---|
| 14 | N IBDT,IBDTE,IBDTH,IBCR,IBDA,IBAT,IBBG,IBTMP,IBZ,IBCL | 
|---|
| 15 | S IBQUIT=0 | 
|---|
| 16 | S IBTMP=$NA(^TMP($J,"IBAGMM")) ; The node of TMP array | 
|---|
| 17 | K @IBTMP | 
|---|
| 18 | ; | 
|---|
| 19 | ; Scan charges, created in the date range IBBDT-31 .. IBEDT | 
|---|
| 20 | ; a charge cannot be for period longer than 30 days. | 
|---|
| 21 | ; Index - | 
|---|
| 22 | ; | 
|---|
| 23 | ; Get the charges from file #350 to the temporary global | 
|---|
| 24 | ; IBDT here - Parent Event Date | 
|---|
| 25 | S IBDT=$$PLUS(IBBDT,-31) F  S IBDT=$O(^IB("D",IBDT)) Q:'IBDT  Q:$P(IBDT,".")>IBEDT  D | 
|---|
| 26 | . S IBCR=0 F  S IBCR=$O(^IB("D",IBDT,IBCR)) Q:'IBCR  D PROC(IBCR) | 
|---|
| 27 | ; | 
|---|
| 28 | D PRINT | 
|---|
| 29 | K @IBTMP ; Kill the temporary global node | 
|---|
| 30 | S:$D(ZTQUEUED) ZTREQ="@" ; for Taskman | 
|---|
| 31 | Q | 
|---|
| 32 | ; | 
|---|
| 33 | PRINT ; Print report from the temp. global | 
|---|
| 34 | N IBLINE,IBPAG,IBTOT,IBTOTS,IBTOTI,IBD,IBTY,IBDA,IBY,IBCHG,IBSAV,IBSEQ,IBMON,X,X2,X3,Y,% | 
|---|
| 35 | D NOW^%DTC S IBDTH=$$FMTE^XLFDT($E(%,1,12)) | 
|---|
| 36 | S IBLINE="",$P(IBLINE,"=",IOM+1)="",(IBPAG,IBTOT,IBTOTS,IBTOTI,IBQUIT,IBCHG)=0 | 
|---|
| 37 | D HDR | 
|---|
| 38 | I '$D(@IBTMP@("M")) W !!,"No GMT charges found within the specified period" D PAUSE(1) Q | 
|---|
| 39 | ; - first, print detail lines | 
|---|
| 40 | F IBMON=$E(IBBDT,1,5):1:$E(IBEDT,1,5)  D  Q:IBQUIT | 
|---|
| 41 | . D CHKSTOP Q:IBQUIT | 
|---|
| 42 | . S IBY=$G(@IBTMP@("M",IBMON)) | 
|---|
| 43 | . W !,$$MON($E(IBMON,4,5)),?10,1700+$E(IBMON,1,3) | 
|---|
| 44 | . ;W ?16,$J($P(IBY,U,1),4) ;Number of charges not required | 
|---|
| 45 | . W ?22,$J($P(IBY,U,2),3) | 
|---|
| 46 | . W ?31,$$FORMAT($P(IBY,U,3),12,2),?46,$$FORMAT($P(IBY,U,4),12,2) | 
|---|
| 47 | . I $P(IBY,U,5) W ?61,$$FORMAT($P(IBY,U,5),12,2) | 
|---|
| 48 | . S IBTOT=IBTOT+$P(IBY,U,3),IBTOTS=IBTOTS+$P(IBY,U,4),IBTOTI=IBTOTI+$P(IBY,U,5) | 
|---|
| 49 | Q:IBQUIT | 
|---|
| 50 | I (IBTOT!IBTOTI) D TOTALS | 
|---|
| 51 | D PAUSE(1) | 
|---|
| 52 | Q | 
|---|
| 53 | ;Number format | 
|---|
| 54 | FORMAT(IBNUM,IBDIG,IBFRM) N X,X1,X2,X3 | 
|---|
| 55 | S X=IBNUM,X2=$G(IBFRM,"2$"),X3=IBDIG | 
|---|
| 56 | D COMMA^%DTC | 
|---|
| 57 | Q X | 
|---|
| 58 | ; | 
|---|
| 59 | CHKSTOP I $Y>(IOSL-5) D PAUSE(0) Q:IBQUIT  D HDR | 
|---|
| 60 | Q | 
|---|
| 61 | ; | 
|---|
| 62 | ; | 
|---|
| 63 | HDR ; Print header. | 
|---|
| 64 | N IBI | 
|---|
| 65 | I $E(IOST,1,2)["C-"!(IBPAG) W @IOF,*13 | 
|---|
| 66 | S IBH="GMT MONTHLY TOTALS REPORT" | 
|---|
| 67 | S IBPAG=IBPAG+1 W ?(70-$L(IBH)\2),IBH | 
|---|
| 68 | W !,"From ",$$DAT(IBBDT)," through ",$$DAT(IBEDT) | 
|---|
| 69 | W ?IOM-36,IBDTH,?IOM-9,"Page: ",IBPAG | 
|---|
| 70 | W !!," MONTH",?10,"YEAR",?16,"# GMT PATIENTS ",?32,"GMT BILLED",?48,"GMT DIFF",?65,"PENDING" | 
|---|
| 71 | W ! F IBI=1:1:80 W "-" | 
|---|
| 72 | Q | 
|---|
| 73 | ; | 
|---|
| 74 | TOTALS N IBI,X | 
|---|
| 75 | W !,?30 F IBI=1:1:45 W "-" | 
|---|
| 76 | W !,?29,$$FORMAT(IBTOT,14),?44,$$FORMAT(IBTOTS,14),?59,$$FORMAT(IBTOTI,14) | 
|---|
| 77 | Q | 
|---|
| 78 | ; | 
|---|
| 79 | STAT() ; Display bill number or status | 
|---|
| 80 | N IBSTAT S IBSTAT=$G(^IBE(350.21,+$P(IBZ,U,5),0)) | 
|---|
| 81 | Q $S($P(IBSTAT,U,6):$$HLD(+$P(IBZ,U,5)),$P(IBZ,U,5)=99:"Converted",$P(IBZ,U,11)]"":$P($P(IBZ,U,11),"-",2),$P(IBSTAT,U,5):"Cancelled",1:"Pending") | 
|---|
| 82 | ; | 
|---|
| 83 | HLD(STAT) ; Return an 'on hold' status string | 
|---|
| 84 | Q "Hold "_$S(STAT=20:"Rate",STAT=21:"Rev",1:"Ins") | 
|---|
| 85 | ; | 
|---|
| 86 | PAUSE(IBEND) ; | 
|---|
| 87 | Q:$E(IOST,1,2)'["C-" | 
|---|
| 88 | N IBJ,DIR,DIRUT,DTOUT,DUOUT,DIROUT,Y | 
|---|
| 89 | W !! ;F IBJ=$Y:1:(IOSL-4) W ! | 
|---|
| 90 | S DIR(0)="E" | 
|---|
| 91 | I $G(IBEND) S DIR("A")="End of the report. Enter RETURN to continue or '^' to exit" | 
|---|
| 92 | D ^DIR K DIR I $G(DUOUT) S IBQUIT=1 W @IOF Q | 
|---|
| 93 | I $G(IBEND) W @IOF | 
|---|
| 94 | Q | 
|---|
| 95 | ; | 
|---|
| 96 | DAT(IBDT) ; Convert FM date to (mm/dd/yy) format. | 
|---|
| 97 | Q $$FMTE^XLFDT(IBDT,"2MZ") | 
|---|
| 98 | ; | 
|---|
| 99 | PLUS(IBDT,IBDAYS) N X,X1,X2 | 
|---|
| 100 | S X1=IBDT,X2=IBDAYS | 
|---|
| 101 | D C^%DTC | 
|---|
| 102 | Q X | 
|---|
| 103 | ; | 
|---|
| 104 | ;Add the data to tmp global, if needed. | 
|---|
| 105 | PROC(IBDA) N IBDTBT,IBMON,IBZ,IBY,IBDFN,IBSTA,IBCRG,IBSEQ,IBGMT | 
|---|
| 106 | S IBZ=$G(^IB(IBDA,0)) I 'IBZ Q | 
|---|
| 107 | S IBSTA=$P(IBZ,U,5) I IBSTA=9 Q  ; ERROR charges will not be considered | 
|---|
| 108 | S IBCRG=$P(IBZ,U,7) I 'IBCRG Q  ;Zero amount | 
|---|
| 109 | Q:$P(IBZ,U,8)["ADMISSION" | 
|---|
| 110 | S IBDTBT=$P(IBZ,U,15) S:IBDTBT="" IBDTBT=$P(IBZ,U,14) | 
|---|
| 111 | S IBDTBT=$P(IBDTBT,".") | 
|---|
| 112 | Q:IBDTBT<IBBDT  Q:IBDTBT>IBEDT  ;"BILLED TO" date must be within the date range | 
|---|
| 113 | ; Do not include cancelled charges with no bill No. | 
|---|
| 114 | I $P(IBZ,U,11)="",$P($G(^IBE(350.21,+$P(IBZ,U,5),0)),U,5) Q | 
|---|
| 115 | S IBGMT=$P(IBZ,U,21) | 
|---|
| 116 | S IBSEQ=$P($G(^IBE(350.1,+$P(IBZ,U,3),0)),U,5) | 
|---|
| 117 | I IBSEQ=2,'IBGMT,$P(IBZ,U,9) S IBGMT=$P($G(^IB(+$P(IBZ,U,9),0)),U,21) ; Maybe the parent charge is GMT RELATED? | 
|---|
| 118 | Q:'IBGMT  ; The charge is not GMT RELATED. | 
|---|
| 119 | I IBSEQ=2 S IBCRG=-IBCRG | 
|---|
| 120 | S IBMON=$E(IBDTBT,1,5) ;Month | 
|---|
| 121 | S IBDFN=$P(IBZ,U,2) | 
|---|
| 122 | S IBY=$G(@IBTMP@("M",IBMON)) ;Monthly statistics node | 
|---|
| 123 | S $P(IBY,U,1)=$P(IBY,U,1)+1 ; Charge Counter | 
|---|
| 124 | I '$D(@IBTMP@("P",IBDFN,IBMON)) S $P(IBY,U,2)=$P(IBY,U,2)+1,@IBTMP@("P",IBDFN,IBMON)="" ; Patient Counter | 
|---|
| 125 | I IBSTA'=1 S $P(IBY,U,3)=$P(IBY,U,3)+IBCRG ; GMT Charges Monthly Total | 
|---|
| 126 | I IBSTA'=1 S $P(IBY,U,4)=$P(IBY,U,4)+(IBCRG*4) ; GMT Charges Monthly Difference | 
|---|
| 127 | I IBSTA=1 S $P(IBY,U,5)=$P(IBY,U,5)+IBCRG ; GMT Incompleted Charges Monthly Total | 
|---|
| 128 | S @IBTMP@("M",IBMON)=IBY | 
|---|
| 129 | Q | 
|---|
| 130 | MON(IBMON) I (IBMON<1)!(IBMON>12) Q "" | 
|---|
| 131 | Q $P("JANUARY FEBRUARY MARCH APRIL MAY JUNE JULY AUGUST SEPTEMBER OCTOBER NOVEMBER DECEMBER"," ",IBMON) | 
|---|
| 132 | ; | 
|---|