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