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