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

IBAMTC.m

Go to the documentation of this file.
  1. IBAMTC ;ALB/CPM - MEANS TEST NIGHTLY COMPILATION JOB ; 09-OCT-91
  1. ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
  1. ;;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ;
  1. INIT ; Entry point - initialize variables and parameters
  1. ;
  1. ;***
  1. ;S XRTL=$ZU(0),XRTN="IBAMTC-1" D T0^%ZOSV ;start rt clock
  1. ;
  1. D NIGHTLY^IBTRKR ; claims tracking nightly update
  1. ;
  1. D ^IBCD ; automated biller
  1. ;
  1. D NOW^%DTC S IBAFY=$S($E(X,4,5)<10:$E(X,2,3),1:$E(X,2,3)+1),DT=X,U="^"
  1. S (IBERRN,IBWHER,IBJOB,IBY,Y)=1,IBCNT=0 K ^TMP($J,"IBAMTC")
  1. D SITE^IBAUTL I Y<1 S IBY=Y D ERR G CLEAN
  1. D SERV^IBAUTL2 I IBY<1 D ERR G CLEAN
  1. ;
  1. ; Compile Category C co-pay and per diem charges for all inpatients
  1. S (IBWARD,DFN)="" F S IBWARD=$O(^DPT("CN",IBWARD)) Q:IBWARD="" F S DFN=$O(^DPT("CN",IBWARD,DFN)) Q:'DFN S IBA=^(DFN),IBY=1 D PROC
  1. ;
  1. ; Clean up expired Category C billing clocks
  1. CLEAN S %H=+$H-1 D YMD^%DTC S IBDT=X,(IBN,DFN)=0,IBWHER=23
  1. F S DFN=$O(^IBE(351,"ACT",DFN)) Q:'DFN D
  1. . F S IBN=$O(^IBE(351,"ACT",DFN,IBN)) Q:'IBN D
  1. .. S IBY=1,X1=IBDT,(X2,IBCLDT)=+$P($G(^IBE(351,+IBN,0)),"^",3) D ^%DTC
  1. .. I X>364 S IBCLDA=IBN D CLOCKCL^IBAUTL3,ERR:IBY<1
  1. ;
  1. ; Close out incomplete events where the patient has been discharged,
  1. ; pass the related charges if they appear correct, and send a bulletin
  1. ; - also, send bulletins on old incomplete charges where there is no
  1. ; incomplete event
  1. D MAIN^IBAMTC2
  1. ;
  1. ;D ^IBAMTC1
  1. ;
  1. ; Send bulletin reporting job completion
  1. D BULL^IBAMTC1
  1. ;
  1. ; -- purge alerts
  1. D PURGE^IBAERR3
  1. ;
  1. ; Monitor special inpatient billing cases
  1. D BGJ^IBAMTI
  1. ;
  1. ; Kill variables and quit.
  1. D KILL1
  1. ;
  1. I $D(ZTQUEUED),$G(ZTSK) D KILL^%ZTLOAD
  1. ;***
  1. ;I $D(XRT0) S:'$D(XRTN) XRTN="IBAMTC" D T1^%ZOSV ;stop rt clock
  1. ;
  1. Q
  1. ;
  1. ;
  1. PROC ; Process all currently admitted patients.
  1. D ORIG ; find "original" admission date
  1. Q:$$BILST^DGMTUB(DFN)<IBADMDT ; patient was last Cat C before admission
  1. Q:IBADMDT\1=DT ; patient was admitted today - process tomorrow
  1. Q:$$OE^IBAUTL5(IBA) ; admitted for Observation & Examination
  1. Q:$O(^IBE(351.2,"AC",IBA,0)) ; skip special inpatient admissions
  1. ; - gather event information
  1. D EVFIND^IBAUTL3 I 'IBEVDA D BSEC Q:'IBBS ; wasn't billable yesterday
  1. S X=IBADMDT D H^%DTC S IBBDT=%H D:'IBEVDA LAST^IBAUTL5
  1. I IBEVDA,IBEVCAL S X1=IBEVCAL,X2=1 D C^%DTC S IBBDT=%H
  1. S IBEDT=+$H-1
  1. ; - gather clock information
  1. S IBWHER=24 D CLOCK^IBAUTL3 I IBY<1 D ERR G PROCQ
  1. I IBCLDA S X=IBCLDT D H^%DTC S IBCLCT=IBBDT-%H
  1. ; - build charges for inpatient days
  1. D ^IBAUTL4 I IBY<1 D ERR G PROCQ
  1. ; - pass per diem if over 30 days old, or both per diem and the copay
  1. ; - if 4 days from patient's statement date; update event, clock
  1. S IBWHER=22
  1. 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
  1. I $G(IBCHCDA),$$STD^IBAUTL5(DFN) S IBNOS=IBCHCDA D FILER^IBAUTL5 I IBY<1 D ERR G PROCQ
  1. I IBEVDA,$D(IBDT) S IBEVCLD=IBDT D EVUPD^IBAUTL3
  1. I IBCLDA D CLUPD^IBAUTL3
  1. PROCQ D KILL Q
  1. ;
  1. BSEC ; Determine patient's bedsection for the previous day.
  1. S X1=DT,X2=-1 D C^%DTC
  1. S VAIP("D")=X_.2359 D IN5^VADPT S IBBS=$$SECT^IBAUTL5(+VAIP(8)) Q
  1. ;
  1. ERR ; Error processing. Input: IBY, IBWHER, IBCNT
  1. S IBDUZ=DUZ,IBCNT=IBCNT+1 D ^IBAERR1 K IBDUZ Q
  1. ;S ^TMP($J,"IBAMTC","E",IBERRN)=$P(IBY,"^",2)_"^"_$S($D(DFN):DFN,1:"")_"^"_IBWHER,IBERRN=IBERRN+1 Q
  1. ;
  1. ORIG ; Find first admission date, considering ASIH movements
  1. ; Input: IBA Output: IBADMDT
  1. N X,Y,Z S Z=IBA
  1. F S X=$G(^DGPM(Z,0)),Y=$P(X,"^",21) Q:Y="" S Z=+$P($G(^DGPM(Y,0)),"^",14)
  1. S IBADMDT=+X Q
  1. ;
  1. KILL1 ; Kill all IB variables.
  1. K VAERR,VAIP,IBA,IBADMDT,IBAFY,IBATYP,IBBDT,IBBS,IBCHARG,IBCHG,IBCNT,IBCUR,IBDESC,IBDISDT,IBDT,IBDUZ,IBFAC,IBI,IBIL,IBJOB,IBLC,IBMAX
  1. K IBN,IBNOS,IBSAVBS,IBSEQNO,IBSERV,IBSITE,IBSL,IBTRAN,IBX,IBY,IBWHER,IBWARD,IBEDT,IBCHCTY,IBCHPDE,IBERRN,IBASIH,IBRTED
  1. KILL ; Kill all IB variables needed to build charges.
  1. K IBCLCT,IBCLDA,IBCLDT,IBCLDAY,IBCLDOL,IBCHPDA,IBCHCDA,IBCHG,IBCHFR,IBCHTO,IBCHTOTL,IBBS,IBNH
  1. K IBEVDA,IBEVDT,IBEVCLD,IBEVCAL,IBEVNEW,IBEVOLD,IBMED,IBTOTL,IBDESC,IBIL,IBTRAN,IBATYP,IBDATE
  1. Q