[613] | 1 | IBAMTC ;ALB/CPM-MEANS TEST NIGHTLY COMPILATION JOB ;09-OCT-91
|
---|
| 2 | V ;;2.0;INTEGRATED BILLING;**34,52,70,93,100,118,115,132,150,153,137,176,215,275,321,312**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | INIT ; Entry point - initialize variables and parameters
|
---|
| 6 | ;
|
---|
| 7 | ;***
|
---|
| 8 | ;S XRTL=$ZU(0),XRTN="IBAMTC-1" D T0^%ZOSV ;start rt clock
|
---|
| 9 | ;
|
---|
| 10 | D UPDT^IBARXEPS($$FMADD^XLFDT(DT,-30),DT,1)
|
---|
| 11 | ;
|
---|
| 12 | D NIGHTLY^IBTRKR ; claims tracking nightly update
|
---|
| 13 | ;
|
---|
| 14 | D ^IBCD ; automated biller
|
---|
| 15 | ;
|
---|
| 16 | D RELPR^IBAMTV3 ; auto-release patient charges on hold at least 60 days
|
---|
| 17 | ;
|
---|
| 18 | D EN^IBOHRL ; auto-release patient charges on hold longer than 90 days
|
---|
| 19 | ;
|
---|
| 20 | K IBDT D BJ^IBJDE ; Automated DM extract monthly background job.
|
---|
| 21 | ;
|
---|
| 22 | ; - transfer pricing background job
|
---|
| 23 | I '+$$SWSTAT^IBBAPI() D ^IBATEI1 ;IB*2.0*312
|
---|
| 24 | ;
|
---|
| 25 | D NIGHT^IBARXMA ; transmit copay cap info
|
---|
| 26 | ;
|
---|
| 27 | D NOW^%DTC S IBAFY=$$FY^IBOUTL(X),DT=X,U="^"
|
---|
| 28 | S (IBERRN,IBWHER,IBJOB,IBY,Y)=1,IBCNT=0 K ^TMP($J,"IBAMTC")
|
---|
| 29 | D SITE^IBAUTL I Y<1 S IBY=Y D ERR G CLEAN
|
---|
| 30 | D SERV^IBAUTL2 I IBY<1 D ERR G CLEAN
|
---|
| 31 | ;
|
---|
| 32 | ; Compile Means Test copay and per diem charges for all inpatients
|
---|
| 33 | ; Check PFSS Switch ;IB*2.0*312
|
---|
| 34 | I '+$$SWSTAT^IBBAPI() S (IBWARD,DFN)="" F S IBWARD=$O(^DPT("CN",IBWARD)) Q:IBWARD="" F S DFN=$O(^DPT("CN",IBWARD,DFN)) Q:'DFN W !,DFN S IBA=^(DFN),IBY=1 D PROC
|
---|
| 35 | ;
|
---|
| 36 | ;send inpatients' CV (CombatVet) expiration e-mail alert
|
---|
| 37 | D CVEXMAIL^IBACV(DT)
|
---|
| 38 | ;
|
---|
| 39 | ;check & start LTC Monthly Job LTC if necessary
|
---|
| 40 | ; This code may need to be expanded, IF we don't ;IB*2.0*312
|
---|
| 41 | ; implement on the 1st of the month, for a clean cut over ;IB*2.0*312
|
---|
| 42 | I '+$$SWSTAT^IBBAPI() D NJ^IBAECN1 ;IB*2.0*312
|
---|
| 43 | ;
|
---|
| 44 | D EN^IBCE ; Transmit electronic bills
|
---|
| 45 | ; Clean up expired Means Test billing clocks
|
---|
| 46 | CLEAN S %H=+$H-1 D YMD^%DTC S IBDT=X,(IBN,DFN)=0,IBWHER=23
|
---|
| 47 | F S DFN=$O(^IBE(351,"ACT",DFN)) Q:'DFN D
|
---|
| 48 | . F S IBN=$O(^IBE(351,"ACT",DFN,IBN)) Q:'IBN D
|
---|
| 49 | .. S IBY=1,X1=IBDT,(X2,IBCLDT)=+$P($G(^IBE(351,+IBN,0)),"^",3) D ^%DTC
|
---|
| 50 | .. I X>364 S IBCLDA=IBN D CLOCKCL^IBAUTL3,ERR:IBY<1
|
---|
| 51 | ;
|
---|
| 52 | ; Close out incomplete events where the patient has been discharged,
|
---|
| 53 | ; pass the related charges if they appear correct, and send a bulletin
|
---|
| 54 | ; - also, send bulletins on old incomplete charges where there is no
|
---|
| 55 | ; incomplete event
|
---|
| 56 | D MAIN^IBAMTC2
|
---|
| 57 | ;
|
---|
| 58 | ;D ^IBAMTC1
|
---|
| 59 | ;
|
---|
| 60 | ; Send bulletin reporting job completion
|
---|
| 61 | I '+$$SWSTAT^IBBAPI() D BULL^IBAMTC1 ;IB*2.0*312
|
---|
| 62 | ;
|
---|
| 63 | ; -- purge alerts
|
---|
| 64 | D PURGE^IBAERR3
|
---|
| 65 | ;
|
---|
| 66 | ; Monitor special inpatient billing cases
|
---|
| 67 | D BGJ^IBAMTI
|
---|
| 68 | ;
|
---|
| 69 | ; Print Pharmacy Copay Exemption Income Test Reminder Letters
|
---|
| 70 | D EN^IBARXEL
|
---|
| 71 | ;
|
---|
| 72 | ; Kill variables and quit.
|
---|
| 73 | D KILL1
|
---|
| 74 | ;
|
---|
| 75 | I $D(ZTQUEUED),$G(ZTSK) D KILL^%ZTLOAD
|
---|
| 76 | ;***
|
---|
| 77 | ;I $D(XRT0) S:'$D(XRTN) XRTN="IBAMTC" D T1^%ZOSV ;stop rt clock
|
---|
| 78 | ;
|
---|
| 79 | Q
|
---|
| 80 | ;
|
---|
| 81 | ;
|
---|
| 82 | PROC ; Process all currently admitted patients.
|
---|
| 83 | ;
|
---|
| 84 | D IFCVEXP^IBACV(DFN,DT,IBA) ;if CV has expired (see CVEXMAIL^IBACV)
|
---|
| 85 | ;--
|
---|
| 86 | ;1) checks effective date for LTC legislation.
|
---|
| 87 | ;2) determine current treating specialty (TS) for the
|
---|
| 88 | ;"original" admission.
|
---|
| 89 | ;if TS is LTC:
|
---|
| 90 | ; - creates new LTC #350 parent event entry if necessary.
|
---|
| 91 | ;NOTE: It doesn't stop MT billing for LTC. CALC^IBAUTL4 does it.
|
---|
| 92 | I $$ISLTCADM^IBAECN1(DFN,IBA)
|
---|
| 93 | ;--
|
---|
| 94 | D ORIG ; find "original" admission date
|
---|
| 95 | Q:$$BILST^DGMTUB(DFN)<IBADMDT ; pat. was last billable before admission
|
---|
| 96 | Q:IBADMDT\1=DT ; patient was admitted today - process tomorrow
|
---|
| 97 | Q:+$$MVT^DGPMOBS(IBA) ; admitted for Observation & Examination
|
---|
| 98 | Q:$O(^IBE(351.2,"AC",IBA,0)) ; skip special inpatient admissions
|
---|
| 99 | ;
|
---|
| 100 | ; - if vet is SC, create a Special Inpatient Billing Case
|
---|
| 101 | ; in file #351.2 (use code 3 for SC, as it is changed to 4 in IBAMTI)
|
---|
| 102 | D ELIG^VADPT I VAEL(3) D ADM^IBAMTI(DFN,IBA,3) Q
|
---|
| 103 | ;
|
---|
| 104 | ; - gather event information
|
---|
| 105 | D EVFIND^IBAUTL3 I 'IBEVDA D BSEC Q:'IBBS ; wasn't billable yesterday
|
---|
| 106 | S X=IBADMDT D H^%DTC S IBBDT=%H D:'IBEVDA LAST^IBAUTL5
|
---|
| 107 | I IBEVDA,IBEVCAL S X1=IBEVCAL,X2=1 D C^%DTC S IBBDT=%H
|
---|
| 108 | S IBEDT=+$H-1
|
---|
| 109 | ; - gather clock information
|
---|
| 110 | S IBWHER=24 D CLOCK^IBAUTL3 I IBY<1 D ERR G PROCQ
|
---|
| 111 | I IBCLDA S X=IBCLDT D H^%DTC S IBCLCT=IBBDT-%H
|
---|
| 112 | ; - build charges for inpatient days
|
---|
| 113 | D ^IBAUTL4 I IBY<1 D ERR G PROCQ
|
---|
| 114 | ; - pass per diem if over 30 days old, or both per diem and the copay
|
---|
| 115 | ; - if 4 days from patient's statement date; update event, clock
|
---|
| 116 | S IBWHER=22
|
---|
| 117 | I $G(IBCHPDA),$P($G(^IB(+IBCHPDA,0)),"^",6)>30!($$STD^IBAUTL5(DFN)) S IBNOS=IBCHPDA D FILER^IBAUTL5 I IBY<1 D ERR G PROCQ
|
---|
| 118 | I $G(IBCHCDA),$$STD^IBAUTL5(DFN) S IBNOS=IBCHCDA D FILER^IBAUTL5 I IBY<1 D ERR G PROCQ
|
---|
| 119 | I IBEVDA,$D(IBDT) S IBEVCLD=IBDT D EVUPD^IBAUTL3
|
---|
| 120 | I IBCLDA D CLUPD^IBAUTL3
|
---|
| 121 | PROCQ D KILL Q
|
---|
| 122 | ;
|
---|
| 123 | BSEC ; Determine patient's bedsection for the previous day.
|
---|
| 124 | S X1=DT,X2=-1 D C^%DTC
|
---|
| 125 | S VAIP("D")=X_.2359 D IN5^VADPT S IBBS=$$SECT^IBAUTL5(+VAIP(8)) Q
|
---|
| 126 | ;
|
---|
| 127 | ERR ; Error processing. Input: IBY, IBWHER, IBCNT
|
---|
| 128 | S IBDUZ=DUZ,IBCNT=IBCNT+1 D ^IBAERR1 K IBDUZ Q
|
---|
| 129 | ;S ^TMP($J,"IBAMTC","E",IBERRN)=$P(IBY,"^",2)_"^"_$S($D(DFN):DFN,1:"")_"^"_IBWHER,IBERRN=IBERRN+1 Q
|
---|
| 130 | ;
|
---|
| 131 | ORIG ; Find first admission date, considering ASIH movements
|
---|
| 132 | ; Input: IBA Output: IBADMDT
|
---|
| 133 | N X,Y,Z S Z=IBA
|
---|
| 134 | F S X=$G(^DGPM(Z,0)),Y=$P(X,"^",21) Q:Y="" S Z=+$P($G(^DGPM(Y,0)),"^",14)
|
---|
| 135 | S IBADMDT=+X Q
|
---|
| 136 | ;
|
---|
| 137 | KILL1 ; Kill all IB variables.
|
---|
| 138 | K VAERR,VAEL,VAIP,IBA,IBADMDT,IBAFY,IBATYP,IBBDT,IBBS,IBCHARG,IBCHG,IBCNT,IBCUR,IBDESC,IBDISDT,IBDT,IBDUZ,IBFAC,IBI,IBIL,IBJOB,IBLC,IBMAX
|
---|
| 139 | K IBN,IBNOS,IBSAVBS,IBSEQNO,IBSERV,IBSITE,IBSL,IBTRAN,IBX,IBY,IBWHER,IBWARD,IBEDT,IBCHCTY,IBCHPDE,IBERRN,IBASIH,IBRTED
|
---|
| 140 | KILL ; Kill all IB variables needed to build charges.
|
---|
| 141 | K IBCLCT,IBCLDA,IBCLDT,IBCLDAY,IBCLDOL,IBCHPDA,IBCHCDA,IBCHG,IBCHFR,IBCHTO,IBCHTOTL,IBBS,IBNH
|
---|
| 142 | K IBEVDA,IBEVDT,IBEVCLD,IBEVCAL,IBEVNEW,IBEVOLD,IBMED,IBTOTL,IBDESC,IBIL,IBTRAN,IBATYP,IBDATE
|
---|
| 143 | Q
|
---|