| 1 | IBATEO ;ALB/BGA - TRANSFER PRICING OUTPATIENT TRACKER ; 19-MAR-99
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**115**;21-MAR-94
|
---|
| 3 | ;;Per VHA DIRECTIVE 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ; Comment- This routine is invoked via the appointment driver ^IBAMTS
|
---|
| 6 | ; This program checks for check outs and determines if
|
---|
| 7 | ; the person checking out is a Transfer Pricing Patient
|
---|
| 8 | ; if TP the routine prices the procedures and files the
|
---|
| 9 | ; transaction in 351.61
|
---|
| 10 | ;
|
---|
| 11 | ; Determine if this encounter has a status of checked out
|
---|
| 12 | N IBORG,IBOE,IBEVT,IBEV0,IBERR,IB,IBI,IBDATE,IBRATE,IBPREF,IBPROC
|
---|
| 13 | N IBERR,IBQTY,IBATFILE,IBSDHDL,IBPROC,IBSOURCE,IBATIEN,IBOIEN,IBERR2
|
---|
| 14 | I '$P($G(^IBE(350.9,1,10)),"^",3) Q ; transfer pricing turned off
|
---|
| 15 | S IBSDHDL=0,U="^" F S IBSDHDL=$O(^TMP("SDEVT",$J,IBSDHDL)) Q:'IBSDHDL D
|
---|
| 16 | . S IBORG=0 F S IBORG=$O(^TMP("SDEVT",$J,IBSDHDL,IBORG)) Q:'IBORG D
|
---|
| 17 | . . S IBOE=0 F S IBOE=$O(^TMP("SDEVT",$J,IBSDHDL,IBORG,"SDOE",IBOE)) Q:'IBOE S IBEVT=$G(^(IBOE,0,"AFTER")),IBEV0=$G(^("BEFORE")) D
|
---|
| 18 | . . . Q:$P(IBEVT,U,6) ; do not evaluate sibling encounters
|
---|
| 19 | . . . Q:$P(IBEVT,U,12)=8 ; do not evaluate inpatient encounters
|
---|
| 20 | . . . ; Check encounter is checked out and is not being tracked in 351.61
|
---|
| 21 | . . . ; === NEW Entry
|
---|
| 22 | . . . I IBEVT]" ",('$D(^IBAT(351.61,"AD",(IBOE_";SCE(")))),$P(IBEVT,U,12)=2,$$TPP^IBATUTL($P(IBEVT,U,2)) D Q
|
---|
| 23 | . . . . K IBPROC,IBERR D IBPRICE(IBOE,IBEVT,.IBPROC,.IBERR)
|
---|
| 24 | . . . . Q:$P(IBERR,U)
|
---|
| 25 | . . . . ; Pass in (dfn,event date,facility,ibsource,procedure array)
|
---|
| 26 | . . . . S IBATFILE=$$OUT^IBATFILE($P(IBEVT,U,2),IBDATE,IBPREF,IBSOURCE,.IBPROC)
|
---|
| 27 | . . . . ; Encounter has status of checked out and has an entry in 351.61
|
---|
| 28 | . . . . ; and the Encounter has been updated.
|
---|
| 29 | . . . I IBEVT]" ",$D(^IBAT(351.61,"AD",(IBOE_";SCE("))),$P(IBEVT,U,12)=2 D Q
|
---|
| 30 | . . . . S IBSOURCE=IBOE_";SCE("
|
---|
| 31 | . . . . S IBATIEN=$O(^IBAT(351.61,"AD",IBSOURCE,""))
|
---|
| 32 | . . . . K IBPROC,IBERR D IBPRICE(IBOE,IBEVT,.IBPROC,.IBERR)
|
---|
| 33 | . . . . Q:$P(IBERR,U)
|
---|
| 34 | . . . . S IBATFILE=$$UPDATE^IBATFILE(IBATIEN,.IBPROC)
|
---|
| 35 | . . . I IBEVT]" ",$D(^IBAT(351.61,"AD",(IBOE_";SCE("))),$P(IBEVT,U,12)'=2 D Q
|
---|
| 36 | . . . . I $P(IBEV0,U,12)=2 D Q
|
---|
| 37 | . . . . . ; This is the case where I have a check out that has been deleted
|
---|
| 38 | . . . . . ; "BEFORE" has a status of checked out the "AFTER" has a status
|
---|
| 39 | . . . . . ; of not check out and shows no date for check out process date
|
---|
| 40 | . . . . . S IBSOURCE=IBOE_";SCE("
|
---|
| 41 | . . . . . S IBATIEN=$O(^IBAT(351.61,"AD",IBSOURCE,""))
|
---|
| 42 | . . . . . D CANC^IBATFILE(IBATIEN)
|
---|
| 43 | Q
|
---|
| 44 | IBPRICE(IBOIEN,IBEVT,IBPROC,IBERR) ;
|
---|
| 45 | S IBERR=0
|
---|
| 46 | I $G(IBOIEN)<1!($G(IBEVT)<1) S IBERR=1 Q
|
---|
| 47 | I '$$TPP^IBATUTL($P(IBEVT,U,2)) S IBERR="1^Not currently a TP patient" Q ; determine if transfer pricing patient
|
---|
| 48 | S IBPREF=$$PPF^IBATUTL($P(IBEVT,U,2)) I 'IBPREF S IBERR="1^No pref. facility found" Q
|
---|
| 49 | K IB,IBERR2 D GETCPT^SDOE(IBOE,"IB","IBERR2")
|
---|
| 50 | I $D(IBERR2) S IBERR="1^No procedures could be found for IBOE="_IBOIEN Q
|
---|
| 51 | S IBDATE=$P($P(IBEVT,U),".") I 'IBDATE S IBERR="1^No event date found for IBOE="_IBOIEN Q
|
---|
| 52 | S IBSOURCE=IBOE_";SCE("
|
---|
| 53 | K IBPROC S IBI=0 F S IBI=$O(IB(IBI)) Q:'IBI D
|
---|
| 54 | . S IBRATE=$$OPT^IBATCM($P(IB(IBI),U),IBDATE,IBPREF)
|
---|
| 55 | . I '$P(IBRATE,U)!($P(IBRATE,U,4)<1) Q ; could not price the procedure
|
---|
| 56 | . S IBRATE=$P(IBRATE,U,4),IBQTY=$P(IB(IBI),U,16)
|
---|
| 57 | . S IBPROC($P(IB(IBI),U))=IBQTY_U_IBRATE
|
---|
| 58 | I '$D(IBPROC) S IBERR="1^Could not find any procedures for IBOE="_IBOIEN
|
---|
| 59 | Q
|
---|