| [613] | 1 | IBAGMR1 ;WOIFO/AAT-GMT SINGLE PATIENT REPORT;12-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 | ;   IBDFN - Patient IEN | 
|---|
|  | 10 | ;   IBBDT - Beginning date | 
|---|
|  | 11 | ;   IBEDT - Ending date | 
|---|
|  | 12 | ; Output: | 
|---|
|  | 13 | ;   IBQUIT = 1, if user entered "^" (Devices starting with "C-" only) | 
|---|
|  | 14 | REPORT ; | 
|---|
|  | 15 | N IBDT,IBDTE,IBDTH,IBCR,IBDA,IBAT,IBTMP,IBZ,IBCL,IBDTBF,IBDTBT | 
|---|
|  | 16 | S IBQUIT=0 | 
|---|
|  | 17 | S IBTMP=$NA(^TMP($J,"IBAGMR")) ; The node of TMP array | 
|---|
|  | 18 | K @IBTMP | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | ; Marking beginning and ending of each clock within the range. | 
|---|
|  | 21 | S IBDT="" F  D  Q:'IBDT  Q:(-IBDT)<IBBDT | 
|---|
|  | 22 | . S IBDT=$O(^IBE(351,"AIVDT",IBDFN,IBDT)) Q:'IBDT | 
|---|
|  | 23 | . S IBCL=0 F  D  Q:'IBCL | 
|---|
|  | 24 | .. S IBCL=$O(^IBE(351,"AIVDT",IBDFN,IBDT,IBCL)) Q:'IBCL | 
|---|
|  | 25 | .. S IBZ=$G(^IBE(351,IBCL,0)) Q:IBZ="" | 
|---|
|  | 26 | .. I $P(IBZ,U,4)=3 Q  ; Status - CANCELLED | 
|---|
|  | 27 | .. I (-IBDT)'<IBBDT,(-IBDT)'>IBEDT S @IBTMP@(-IBDT,"C")=IBCL ; Mark the beginning of the clock | 
|---|
|  | 28 | .. ;S IBDTE=$P(+$P(IBZ,U,10),".") ;Expiration date | 
|---|
|  | 29 | .. ;I IBDTE,IBDTE'<IBBDT,IBDTE'>IBEDT S @IBTMP@(IBDTE,"E")=IBCL ; Mark the ending of the clock | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | ; Get the charges from file #350. | 
|---|
|  | 32 | ; IBDT here - Parent Event Date | 
|---|
|  | 33 | S IBDT=-(IBEDT+.00001) F  S IBDT=$O(^IB("AFDT",IBDFN,IBDT)) Q:'IBDT  D | 
|---|
|  | 34 | . S IBCR=0 F  S IBCR=$O(^IB("AFDT",IBDFN,IBDT,IBCR)) Q:'IBCR  D | 
|---|
|  | 35 | .. S IBDA=0 F  S IBDA=$O(^IB("AF",IBCR,IBDA)) Q:'IBDA  D | 
|---|
|  | 36 | ... S IBZ=$G(^IB(IBDA,0)) I 'IBZ Q | 
|---|
|  | 37 | ... Q:$P(IBZ,U,8)["ADMISSION" | 
|---|
|  | 38 | ... ; Bill 'To' and 'From' dates | 
|---|
|  | 39 | ... S IBDTBF=$P(IBZ,U,14),IBDTBT=$P(IBZ,U,15) S:IBDTBT="" IBDTBT=IBDTBF | 
|---|
|  | 40 | ... I IBDTBT<IBBDT Q | 
|---|
|  | 41 | ... I IBDTBF>IBEDT Q | 
|---|
|  | 42 | ... S IBAT=$P(IBZ,U,3) Q:'IBAT  ; Action type is really required | 
|---|
|  | 43 | ... I $$ACTNM^IBOUTL(IBAT)["LTC " Q  ; Exclude LTC action type | 
|---|
|  | 44 | ... S @IBTMP@(+$P(IBZ,U,14),"I"_IBDA)=IBZ | 
|---|
|  | 45 | ; | 
|---|
|  | 46 | D PRINT | 
|---|
|  | 47 | K @IBTMP ; Kill the temporary global node | 
|---|
|  | 48 | S:$D(ZTQUEUED) ZTREQ="@" ; for Taskman | 
|---|
|  | 49 | Q | 
|---|
|  | 50 | ; | 
|---|
|  | 51 | PRINT ; Print report from the temp. global | 
|---|
|  | 52 | N IBLINE,IBPAG,IBTOT,IBTOTS,IBPT,IBH,IBD,IBTY,IBDA,IBZ,IBCHG,IBSAV,IBSEQ,IBGMT,X,X2,X3,Y,%,IBCIS | 
|---|
|  | 53 | D NOW^%DTC S IBDTH=$$FMTE^XLFDT($E(%,1,12)) | 
|---|
|  | 54 | S IBLINE="",$P(IBLINE,"=",IOM+1)="",(IBPAG,IBTOT,IBTOTS,IBQUIT,IBCHG)=0 | 
|---|
|  | 55 | S IBPT=$$PT^IBEFUNC(IBDFN) | 
|---|
|  | 56 | S IBCIS=0 | 
|---|
|  | 57 | S IBH="GMT Single Patient Report for "_$P(IBPT,U)_"  "_$P(IBPT,U,2) D HDR | 
|---|
|  | 58 | I '$D(@IBTMP) W !!,"The patient has no MT/GMT bills within the specified period" D PAUSE(1) Q | 
|---|
|  | 59 | ; - first, print detail lines | 
|---|
|  | 60 | S IBD="" F  S IBD=$O(@IBTMP@(IBD)) Q:'IBD  D  Q:IBQUIT | 
|---|
|  | 61 | . S IBTY="" F  S IBTY=$O(@IBTMP@(IBD,IBTY)) Q:IBTY=""  D  Q:IBQUIT | 
|---|
|  | 62 | ..  D CHKSTOP Q:IBQUIT | 
|---|
|  | 63 | ..  I IBTY="C" W !,$$DAT(IBD),?10,"Begin Means Test Billing Clock" K @IBTMP@(IBD,"E") Q | 
|---|
|  | 64 | ..  I IBTY="E" W !,$$DAT(IBD),?10,"Expire Means Test Billing Clock" Q | 
|---|
|  | 65 | ..  W !,$$DAT(IBD) | 
|---|
|  | 66 | ..  S IBDA=+$E(IBTY,2,99),IBZ=$G(^IB(IBDA,0)),IBSEQ=0 | 
|---|
|  | 67 | ..  S IBAT=+$P(IBZ,U,3) | 
|---|
|  | 68 | ..  I $P(IBZ,U,14)'=$P(IBZ,U,15) W ?10,$$DAT($P(IBZ,U,15)) | 
|---|
|  | 69 | ..  S IBSEQ=$P($G(^IBE(350.1,+$P(IBZ,U,3),0)),U,5) | 
|---|
|  | 70 | ..  W ?20,$E($$ACTNM^IBOUTL(+$P(IBZ,U,3)),1,25) | 
|---|
|  | 71 | ..  W ?46,$$STAT() | 
|---|
|  | 72 | ..  S IBCHG=+$P(IBZ,U,7) | 
|---|
|  | 73 | ..  S IBGMT=$P(IBZ,U,21) | 
|---|
|  | 74 | ..  I IBSEQ=2 S IBCHG=-IBCHG I 'IBGMT S IBGMT=$P($G(^IB(+$P(IBZ,U,9),0)),U,21) | 
|---|
|  | 75 | ..  ; The Charge provide GMT Savings if it has GMT RELATED field set to "1" | 
|---|
|  | 76 | ..  S IBSAV=$S(IBGMT:IBCHG*4,1:0) ;GMT Savings | 
|---|
|  | 77 | ..  I $P(IBZ,U,11)="",$P($G(^IBE(350.21,+$P(IBZ,U,5),0)),U,5) S (IBCHG,IBSAV)=0 | 
|---|
|  | 78 | ..  W ?56,$$FORMAT(IBCHG,10) W:IBSAV ?68,$$FORMAT(IBSAV,10) | 
|---|
|  | 79 | ..  S IBTOT=IBTOT+IBCHG ; Total | 
|---|
|  | 80 | ..  S IBTOTS=IBTOTS+IBSAV ; Savings total | 
|---|
|  | 81 | ..  I IBSEQ=2!($P(IBZ,U,11)=""&($P($G(^IBE(350.21,+$P(IBZ,U,5),0)),U,5))) W !?5,"Charge Removal Reason: ",$S($D(^IBE(350.3,+$P(IBZ,U,10),0)):$P(^(0),U),1:"UNKNOWN") | 
|---|
|  | 82 | Q:IBQUIT | 
|---|
|  | 83 | I IBTOT D TOTALS | 
|---|
|  | 84 | D PAUSE(1) | 
|---|
|  | 85 | Q | 
|---|
|  | 86 | ;Number format | 
|---|
|  | 87 | FORMAT(IBNUM,IBDIG,IBFRM) ; | 
|---|
|  | 88 | N X,X1,X2,X3 | 
|---|
|  | 89 | S X=IBNUM,X2=$G(IBFRM,"2$"),X3=IBDIG | 
|---|
|  | 90 | D COMMA^%DTC | 
|---|
|  | 91 | Q X | 
|---|
|  | 92 | ; | 
|---|
|  | 93 | CHKSTOP I $Y>(IOSL-5) D PAUSE(0) Q:IBQUIT  D HDR | 
|---|
|  | 94 | Q | 
|---|
|  | 95 | ; | 
|---|
|  | 96 | ; | 
|---|
|  | 97 | HDR ; Print header. | 
|---|
|  | 98 | N IBI | 
|---|
|  | 99 | I $E(IOST,1,2)["C-"!(IBPAG) W @IOF,*13 | 
|---|
|  | 100 | S IBPAG=IBPAG+1 W ?(80-$L(IBH)\2),IBH | 
|---|
|  | 101 | W !,"From ",$$DAT(IBBDT)," through ",$$DAT(IBEDT) | 
|---|
|  | 102 | W ?IOM-36,IBDTH,?IOM-9,"Page: ",IBPAG | 
|---|
|  | 103 | W !,"BILL FROM  BILL TO    BILL TYPE",?46,"BILL #    TOT CHRG   TOT GMT DIFF" | 
|---|
|  | 104 | W ! F IBI=1:1:80 W "-" | 
|---|
|  | 105 | Q | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | TOTALS N IBI,X | 
|---|
|  | 108 | W !,?56 F IBI=1:1:22 W "-" | 
|---|
|  | 109 | W !,?54,$$FORMAT(IBTOT,12),?66,$$FORMAT(IBTOTS,12) | 
|---|
|  | 110 | Q | 
|---|
|  | 111 | ; | 
|---|
|  | 112 | STAT() ; Display bill number or status | 
|---|
|  | 113 | N IBSTAT S IBSTAT=$G(^IBE(350.21,+$P(IBZ,U,5),0)) | 
|---|
|  | 114 | 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") | 
|---|
|  | 115 | ; | 
|---|
|  | 116 | HLD(STAT) ; Return an 'on hold' status string | 
|---|
|  | 117 | Q "Hold "_$S(STAT=20:"Rate",STAT=21:"Rev",1:"Ins") | 
|---|
|  | 118 | ; | 
|---|
|  | 119 | PAUSE(IBEND) ; | 
|---|
|  | 120 | Q:$E(IOST,1,2)'["C-" | 
|---|
|  | 121 | N IBJ,DIR,DIRUT,DTOUT,DUOUT,DIROUT,Y | 
|---|
|  | 122 | W !! ;F IBJ=$Y:1:(IOSL-4) W ! | 
|---|
|  | 123 | S DIR(0)="E" | 
|---|
|  | 124 | I $G(IBEND) S DIR("A")="End of the report. Enter RETURN to continue or '^' to exit" | 
|---|
|  | 125 | D ^DIR K DIR I $G(DUOUT) S IBQUIT=1 W @IOF Q | 
|---|
|  | 126 | I $G(IBEND) W @IOF | 
|---|
|  | 127 | Q | 
|---|
|  | 128 | ; | 
|---|
|  | 129 | DAT(IBDT) ; Convert FM date to (mm/dd/yy) format. | 
|---|
|  | 130 | Q $$FMTE^XLFDT(IBDT,"2MZ") | 
|---|
|  | 131 | ; | 
|---|
|  | 132 | ; Action Billing Group | 
|---|
|  | 133 | BILGR(IBACT) ; Input pointer to Action Type File #350.1 | 
|---|
|  | 134 | ; Output - Billing Group | 
|---|
|  | 135 | N IBNEW | 
|---|
|  | 136 | S IBNEW=$P($G(^IBE(350.1,+IBACT,0)),U,9) ;New action type | 
|---|
|  | 137 | Q +$S($P($G(^IBE(350.1,+IBNEW,0)),U,11):$P(^(0),U,11),1:$P($G(^IBE(350.1,+IBACT,0)),U,11)) | 
|---|