1 | IBAMTD ;ALB/CPM - MOVEMENT EVENT DRIVER INTERFACE ;21-OCT-91
|
---|
2 | V ;;2.0;INTEGRATED BILLING;**45,52,93,115,132,153,164,156,234,312,339**;21-MAR-94;Build 2
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | I $G(DGPMA)="",$G(DGPMP)="" Q
|
---|
6 | ;
|
---|
7 | EN ; Process events from the Movement Event Driver.
|
---|
8 | ;
|
---|
9 | ;S XRTL=$ZU(0),XRTN="IBAMTD-1" D T0^%ZOSV ;start rt clock
|
---|
10 | ;
|
---|
11 | Q:+$$SWSTAT^IBBAPI() ;IB*2.0*312
|
---|
12 | ;
|
---|
13 | ; -- add admissions to claims tracking
|
---|
14 | D INP^IBTRKR
|
---|
15 | ;
|
---|
16 | ; -- update Transfer Pricing
|
---|
17 | D ^IBATEI
|
---|
18 | ;
|
---|
19 | ; -- check for Long Term Care
|
---|
20 | N IBALTC D EN^IBAECI Q:IBALTC
|
---|
21 | ;
|
---|
22 | ; - process billing for CHAMPVA patients
|
---|
23 | I $$CVA^IBAUTL5(DFN) D PROC^IBACVA G END
|
---|
24 | ;
|
---|
25 | ; - unflag continuous patients
|
---|
26 | S IBASIH=$$ASIH^IBAUTL5(DGPMA)
|
---|
27 | I DGPMP="",($P(DGPMA,"^",2)=3!(IBASIH)),$O(^IBE(351.1,"B",DFN,0)),$D(^IBE(351.1,+$O(^(0)),0)),'$P(^(0),"^",2) D UNFLAG^IBAMTD1
|
---|
28 | ;
|
---|
29 | ; - update case record on discharge for special inpatient episodes
|
---|
30 | S IBA=$P($S(DGPMA="":DGPMP,1:DGPMA),"^",14)
|
---|
31 | I $O(^IBE(351.2,"AC",IBA,0)),DGPMP="",($P(DGPMA,"^",2)=3!(IBASIH)) D DIS^IBAMTI(IBA) G END
|
---|
32 | ;
|
---|
33 | ; - quit if patient was last Means Test copay patient before adm. date
|
---|
34 | S IBLC=$$BILST^DGMTUB(DFN) G:'IBLC END I DGPMA="",$P(DGPMP,"^",2)=1,IBLC<$P(+DGPMP,".") G END
|
---|
35 | D ORIG^IBAMTC I IBLC<$P(IBADMDT,".") G END
|
---|
36 | ;
|
---|
37 | ; - if editing or deleting a movement, send bulletin; delete
|
---|
38 | ; case record in #351.2 for deleted admissions
|
---|
39 | I DGPMP]"" S IBJOB=3 D G END
|
---|
40 | .D ^IBAMTBU
|
---|
41 | .I DGPMA="",$P(DGPMP,"^",2)=1,$O(^IBE(351.2,"AC",IBA,0)) S DA=$O(^(0)),DIK="^IBE(351.2," D ^DIK K DA,DIK
|
---|
42 | ;
|
---|
43 | ; - add a case record for admission of special (ao/ir/swa/mst/hnc/shad/cv) inpatients
|
---|
44 | I $P(DGPMA,"^",2)=1 D G END
|
---|
45 | .N IBCLSF D CL^IBACV(DFN,IBADMDT,"",.IBCLSF)
|
---|
46 | .S IBCLSF=$O(IBCLSF(0)) I IBCLSF,(IBCLSF<5) D ADM^IBAMTI(DFN,IBA,IBCLSF) Q
|
---|
47 | .I $P($$GETSTAT^DGMSTAPI(DFN,IBADMDT),U,2)="Y" S IBCLSF=5,IBCLSF(5)="" D ADM^IBAMTI(DFN,IBA,IBCLSF) Q
|
---|
48 | .I IBCLSF=6 D ADM^IBAMTI(DFN,IBA,IBCLSF) ; hnc
|
---|
49 | .I IBCLSF=8 D ADM^IBAMTI(DFN,IBA,IBCLSF) ; shad
|
---|
50 | .I IBCLSF=7 D ADM^IBAMTI(DFN,IBA,IBCLSF) ; CV has the lowest priority
|
---|
51 | ;
|
---|
52 | ; - if adding a retro-active transfer or spec. transfer, send bulletin
|
---|
53 | I ($P(DGPMA,"^",2)=2!($P(DGPMA,"^",2)=6)),+DGPMA<DT S IBJOB=6 D ^IBAMTBU
|
---|
54 | ;
|
---|
55 | ; - process discharges and ASIH movements only
|
---|
56 | I $P(DGPMA,"^",2)'=3,'IBASIH G END
|
---|
57 | ;
|
---|
58 | W:'$G(DGQUIET) !,"Billing Means Test charges...."
|
---|
59 | S (IBY,Y)=1,IBEVOLD=0,IBJOB=2,IBWHER=1,IBDISDT=+DGPMA\1,IBAFY=$$FY^IBOUTL(DT)
|
---|
60 | D SITE^IBAUTL I Y<1 S IBY=Y G END1
|
---|
61 | D SERV^IBAUTL2 G:IBY<1 END1
|
---|
62 | S IBWHER=24 D CLOCK^IBAUTL3 G:IBY<1 END1
|
---|
63 | ;
|
---|
64 | ; - Create an Outpat Copay for discharge with Observation Speciality
|
---|
65 | I $$MVT^DGPMOBS(IBA) D OBS^IBECEAU5 G:IBY<1 END1 G END
|
---|
66 | ;
|
---|
67 | ; - handle the variations on the basis of the event record
|
---|
68 | D EVFIND^IBAUTL3 ; sets IBEVDA to IEN of event record, or to 0 if none
|
---|
69 | S IBWHER=25 D @$S(IBEVDA:"EVT",1:"NOEVT")
|
---|
70 | ;
|
---|
71 | ; - kill variables and close
|
---|
72 | END1 I IBY<1 S IBDUZ=DUZ D ^IBAERR1 K IBDUZ
|
---|
73 | W:'$G(DGQUIET) "completed."
|
---|
74 | END D KILL1^IBAMTC
|
---|
75 | ;
|
---|
76 | ;I $D(XRT0) S:'$D(XRTN) XRTN="IBAMTD" D T1^%ZOSV ;stop rt clock
|
---|
77 | ;
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | EVT ; Billable admission event on record.
|
---|
81 | ; I +$$MVT^DGPMOBS(IBA) S IBDT=IBDISDT D OE^IBAMTBU1,CLOSE1 G EVTQ
|
---|
82 | I IBEVCAL'<IBDISDT S IBY="-1^IB033" G EVTQ
|
---|
83 | I IBEVCAL S X1=IBEVCAL,X2=1 D C^%DTC S IBBDT=%H I X=IBDISDT S IBDT=IBEVCAL D PASS^IBAUTL5,CLOSE1:IBY>0 G EVTQ
|
---|
84 | I 'IBEVCAL S X=IBEVDT D H^%DTC S IBBDT=%H
|
---|
85 | S X=IBDISDT D H^%DTC S IBEDT=%H-1
|
---|
86 | I IBCLDA S %H=IBBDT D YMD^%DTC S IBDT=X D COUNT
|
---|
87 | D ^IBAUTL4,CLOSE:IBY>0
|
---|
88 | EVTQ Q
|
---|
89 | ;
|
---|
90 | NOEVT ; No billable event on record since admission date.
|
---|
91 | ; I +$$MVT^DGPMOBS(IBA) W:'$G(DGQUIET) " patient not billed (adm. for O&E)... " G NOEVTQ ; admitted for Observation & Examination
|
---|
92 | S (IBCUR,VAIP("D"))=+$G(^DGPM(IBA,0)) D IN5^VADPT S IBBS=$$SECT^IBAUTL5(+VAIP(8))
|
---|
93 | I 'IBASIH,'IBBS G NOEVTQ ; not in billable bedsection
|
---|
94 | I 'IBASIH,IBCUR\1=IBDISDT S IBDT=IBDISDT D:IBBS ^IBAMTD1 G NOEVTQ
|
---|
95 | S X=IBADMDT\1 D H^%DTC S IBBDT=%H
|
---|
96 | I IBASIH S VAIP("D")=IBADMDT,IBSAVBS=IBBS D IN5^VADPT S IBBS=$$SECT^IBAUTL5(+VAIP(8)) I 'IBBS S X=IBCUR D H^%DTC S IBBDT=%H I IBCUR\1=IBDISDT S IBDT=IBDISDT,IBBS=IBSAVBS D:IBBS ^IBAMTD1 G NOEVTQ
|
---|
97 | D LAST^IBAUTL5
|
---|
98 | S X=IBDISDT D H^%DTC S IBEDT=%H-1
|
---|
99 | I IBCLDA S %H=IBBDT D YMD^%DTC S IBDT=X D COUNT
|
---|
100 | D ^IBAUTL4,CLOSE:IBY>0
|
---|
101 | NOEVTQ Q
|
---|
102 | ;
|
---|
103 | COUNT ; Find number of days on clock. Input: IBDT
|
---|
104 | S X1=IBDT,X2=IBCLDT D ^%DTC S IBCLCT=X Q
|
---|
105 | ;
|
---|
106 | CLOSE ; Close out charges, events; update clocks (at discharge: tag CLOSE1)
|
---|
107 | I $G(IBCHPDA) S IBNOS=IBCHPDA D FILER^IBAUTL5 G:IBY<1 CLOSEQ
|
---|
108 | I $G(IBCHCDA) S IBNOS=IBCHCDA D FILER^IBAUTL5 G:IBY<1 CLOSEQ
|
---|
109 | I IBCLDA D CLUPD^IBAUTL3
|
---|
110 | CLOSE1 I IBEVDA,$D(IBDT) S IBEVCLD=IBDT D EVCLOSE^IBAUTL3
|
---|
111 | CLOSEQ Q
|
---|