Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IBAMTS2

IBAMTS2.m

Go to the documentation of this file.
IBAMTS2 ;ALB/CPM - PROCESS UPDATED OUTPATIENT ENCOUNTERS ; 25-AUG-93
 ;;2.0;INTEGRATED BILLING;**52,91,117,132,153,156,167,247,339,795**;21-MAR-94;Build 4
 ;;Per VHA Directive 2004-038, this routine should not be modified.
 ;
UPD ; Perform encounter update actions.
 N IBBIL,IBCBK,IBFILTER,IBVAL  ; IB*2.0*795
 ;
 ; - was check out deleted?
 I IBAST'=2,IBBST=2 S IBCRES=$S(IBAST=8:5,1:1)
 ;
 I IBAST=2,IBBST=2 D  ; IB*2.0*795
 .S IBACT=$S($$GETSA^IBAMTS1(IBOE)[1:1,1:2) ; 1 - charge needs to be cancelled, 2 - appt needs to be billed
 .S IBBIL=0  ; is there a billed charge for this OE?
 .I $$LINK(IBOE,$S(IBEVT:IBEVT,1:IBEV0),IBBILLED),"^BILLED^HOLD - RATE^HOLD - REVIEW^INCOMPLETE^ON HOLD^"[(U_$$GET1^DIQ(350,IBBILLED,.05)_U) S IBBIL=1
 .I IBACT=1,IBBIL S IBCRES=2 Q  ; there's a charge to be cancelled
 .I IBACT=2,'IBBIL N IBCLSF D NEW^IBAMTS1
 .Q
 ;
 ; - cancel charge if there is a cancellation reason, and the billed
 ; - charge was for the appointment that is no longer billable
 I '$G(IBCRES) G UPDQ
 I '$$LINK(IBOE,$S(IBEVT:IBEVT,1:IBEV0),IBBILLED) G UPDQ
 D CANC G:IBY<0 UPDQ
 ;
 ; - look for other billable visits if Means Test billable
 I '$$BIL^DGMTUB(DFN,IBDT) G UPDQ
 S IBBILLED=0
 ;
 S IBVAL("DFN")=DFN,IBVAL("BDT")=IBDAT-.1,IBVAL("EDT")=IBDAT_.99
 S IBFILTER=""
 ; Skip encounter just cancelled,
 ;  consider only parent encounters, appts checked out
 S IBCBK="I Y'=IBOE,'$P(Y0,U,6),$P(Y0,U,12)=2 D BEDIT^IBAMTS2(Y,Y0) S:IBBILLED SDSTOP=1"
 D SCAN^IBSDU("PATIENT/DATE",.IBVAL,IBFILTER,IBCBK,1) K ^TMP("DIERR",$J)
 ;
UPDQ K IBCLSF,IBACT,IBC,IBOEN,IBEVT
 Q
 ;
BEDIT(IBOEN,IBEVT) ; - perform batch edit
 I $P(IBEVT,U,10)=1 S UNBILLED=1 Q  ; C&P exam -- stop looking
 S IBORG=+$P(IBEVT,U,8),IBAPTY=+$P(IBEVT,U,10)
 I IBORG=3 S IBDISP=+$$DISND^IBSDU(IBOEN,IBEVT,7) Q:'IBDISP
 Q:'$$CHKS^IBAMTS1
 ;
 ; - check classifications
 S IBCLSF=$$GETSA^IBAMTS1(IBOEN) I IBCLSF[1 Q  ; care was related to ao/ir/swa/sc/mst/hnc/cv/shad  IB*2.0*795
 S IBSL="409.68:"_IBOEN ; set softlink
 ;
 ; - ready to bill another encounter
 D BLD^IBAMTS1 S IBBILLED=1
 Q
 ;
CRES ; List of cancellation reasons
 ;;CHECK OUT DELETED
 ;;CLASSIFICATION CHANGED
 ;;MT OP APPT NO-SHOW
 ;;MT OP APPT CANCELLED
 ;;RECD INPATIENT CARE
 ;;BILLED AT HIGHER TIER RATE
 ;
 ;  Input:     IBOE  --  Pointer to outpatient encounter in file #409.68
 ;            IBEVT  --  Zeroth node of encounter in file #409.68
 ;              IBN  --  Pointer to charge in file #350
 ;  Output:       0  --  Charge was not for current appointment
 ;                1  --  Charge was for current appointment
 N IBSL,Y
 I '$G(IBOE)!'$G(IBEVT)!'$G(IBN) G LINKQ
 S IBSL=$P($G(^IB(IBN,0)),"^",4)
 I +IBSL=44 S Y=$P(IBSL,";",1,2)=("44:"_$P(IBEVT,"^",4)_";S:"_+IBEVT) G LINKQ
 I +IBSL=409.68 S Y=IBSL=("409.68:"_IBOE)
LINKQ Q +$G(Y)
 ;
CANC ; Determine cancellation reason and cancel charge
 ;  Input variables:   IBCRES  --  Code for reason to be determined
 ;                   IBBILLED  --  Charge to be cancelled
 S IBCRES=$P($T(CRES+IBCRES),";;",2),IBCRES=+$O(^IBE(350.3,"B",IBCRES,0))
 D CANCH^IBECEAU4(IBBILLED,IBCRES)
 Q
 ;
ENCL(IBOE) ; Return classification results for an encounter.
 ;  Input:    IBOE  --  Pointer to outpatient encounter in file #409.68
 ;  Output:   ao^ir^sc^swa^mst^hnc^cv^shad, where, for each piece,
 ;                      1 - care was related to condition, and
 ;                      0 (or null) - care not related to condition
 N CL,CLD,X,Y S Y=""
 S CL=0 F  S CL=$O(^SDD(409.42,"OE",+$G(IBOE),CL)) Q:'CL  S CLD=$G(^SDD(409.42,CL,0)) I CLD S $P(Y,U,+CLD)=+$P(CLD,U,3)
 Q Y