IBCNEDE2 ;DAOU/DAC - IIV PRE REG EXTRACT (APPTS) ;18-JUN-2002 ;;2.0;INTEGRATED BILLING;**184,271,249,345**;21-MAR-94;Build 28 ;;Per VHA Directive 2004-038, this routine should not be modified. ; ;**Program Description** ; This program finds veterans who are scheduled to be seen within a ; specified date range. ; Periodically check for stop request for background task ; Q ; can't be called directly ; EN ; Loop through designated cross-references for updates ; Pre reg extract (Appointment extract) ; N TODAYSDT,FRESHDAY,SLCCRIT1,MAXCNT,CNT,ENDDT,CLNC,FRESHDT N APTDT,INREC,INSIEN,PAYER,PIEN,PAYERSTR,SYMBOL,SUPPBUFF N DFN,OK,VAIN,INS,DATA1,DATA2,ELG,PAYERID,SETSTR,SRVICEDT,ACTINS N TQIEN,IBINDT,IBOUTP,QURYFLAG,INSNAME,FOUND1,FOUND2,IBCNETOT N SID,SIDACT,SIDDATA,SCNT5,SIDARRAY,SIDCNT,IBDDI,IBINS,DISYS ; S SETSTR=$$SETTINGS^IBCNEDE7(2) ; Get setting for pre reg. extract I 'SETSTR Q ; Quit if extract is not active S SLCCRIT1=$P(SETSTR,U,2) ; Selection Criteria #1 S MAXCNT=$P(SETSTR,U,4) ; Max # of TQ entries to create S:MAXCNT="" MAXCNT=9999999999 S SUPPBUFF=$P(SETSTR,U,5) ; Suppress Buffer Flag S FRESHDAY=$P($G(^IBE(350.9,1,51)),U,1) ; Freshness days span S CNT=0 ; Init. TQ entry counter S ENDDT=$$FMADD^XLFDT(DT,SLCCRIT1) ; End of appt. date selection range S IBCNETOT=0 ; Initialize count for periodic TaskMan check K ^TMP($J,"SDAMA301"),^TMP("IBCNEDE2",$J) ; Clean TMP globals ; S CLNC=0 ; Init. clinic ; Loop through clinics F S CLNC=$O(^SC(CLNC)) Q:'CLNC!(CNT'ENDDT)!(CNT'MAXCNT S CNT=MAXCNT Q ;exceeds MAXCNT ... . ; ... . S SID="" ... . F S SID=$O(SIDARRAY(SID)) Q:SID="" D SET($P(SID,"_"),$P(SID,"_",2)) ... . I SIDACT=4!(SIDACT=5) D SET("","") ... . Q ... Q ENQ K ^TMP($J,"SDAMA301"),^TMP("IBCNEDE2",$J) Q ; CLINICEX ; Clinic exclusion S OK=1 I $D(^DG(43,1,"DGPREC","B",CLNC)) S OK=0 Q ; ELG ; Eligibility exclusion I ELG="" S OK=0 Q I $D(^DG(43,1,"DGPREE","B",ELG)) S OK=0 Q S OK=1 Q ; INP ; Inpatient status D INP^VADPT I $G(VAIN(1))'="" K VAIN S OK=0 Q K VAIN S OK=1 Q ; NOACTIVE ; No active insurance ; ; Call IB utility to search for patient's inactive insurance ; IBCNS passes back IBINS = 1 if active insurance was found ; IBCNS sets the array IBDD to the patient's valid insurance ; IBCNS sets the array IBDDI to the patient's invalid insurance ; N SVIBDDI K IBINS,IBDD,IBDDI S IBINDT=APTDT,IBOUTP=2,(FOUND1,FOUND2)=0 ; D ^IBCNS K IBDD ; don't need this array I $G(IBINS)=1 Q ; if active insurance was found quit M SVIBDDI=IBDDI ; Inactive Insurance I CNT0 S FOUND2=$$INAC^IBCNEDE6(.CNT,MAXCNT,.IBDDI,SRVICEDT,FRESHDAY,1) M IBDDI=SVIBDDI ; ; Most Popular Payer I CNT