[613] | 1 | IBAECM3 ;WOIFO/SS-LTC PHASE 2 MONTHLY JOB PART 3 ; 20-FEB-02
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**176**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | MJ1ST ;entry for the first Monthly Calculation Process
|
---|
| 6 | N IBMDS1
|
---|
| 7 | ;------ variables
|
---|
| 8 | N IBMJ1ST S IBMJ1ST="MJ1ST" ;to identify 1st MJ in IBAECU4
|
---|
| 9 | N IBPRMNTH S IBPRMNTH=$$PREVMNTH^IBAECM1() ;last day of previous month
|
---|
| 10 | N IBCLKAD1 ; variable to return back from PROCPAT info for clock adjustment
|
---|
| 11 | N IBDFN,IBMNS,IBVAR
|
---|
| 12 | N IBCLKIE1
|
---|
| 13 | N IBCLKDAT ;clock data
|
---|
| 14 | N IBSTRTD ;EFFECTIVE DATE
|
---|
| 15 | S (IBMNS,IBMDS1)=""
|
---|
| 16 | S IBSTRTD=$$BILDATE^IBAECN1()
|
---|
| 17 | K ^TMP($J,"IBMJERR")
|
---|
| 18 | K ^TMP($J,"IBMJINP")
|
---|
| 19 | K ^TMP($J,"IBMJOUT")
|
---|
| 20 | ;prepare arrays for months since the effective date
|
---|
| 21 | D PRMONTHS(.IBMNS,IBPRMNTH)
|
---|
| 22 | ;go thru all patients in #351.81
|
---|
| 23 | S IBDFN1=0
|
---|
| 24 | ;for each patient in file 351.81
|
---|
| 25 | F S IBDFN1=$O(^IBA(351.81,"C",IBDFN1)) Q:+IBDFN1=0 D
|
---|
| 26 | . S IBCLKIE1=0,IBERR=""
|
---|
| 27 | . F S IBCLKIE1=+$O(^IBA(351.81,"C",IBDFN1,IBCLKIE1)) Q:+IBCLKIE1=0 D
|
---|
| 28 | . . S IBCLKDAT=^IBA(351.81,IBCLKIE1,0)
|
---|
| 29 | . . ; quit if STATUS'=OPEN
|
---|
| 30 | . . Q:$P(IBCLKDAT,"^",5)'=1
|
---|
| 31 | . . ; quit if CURRENT EVENTS DATE="" i.e. no LTC events happend
|
---|
| 32 | . . ; this month for the patient
|
---|
| 33 | . . Q:$P(IBCLKDAT,"^",7)=""
|
---|
| 34 | . . ; quit if CURRENT EVENTS DATE>last day of "real-time" previous month -the veteran
|
---|
| 35 | . . ; has been processed for all months in the past
|
---|
| 36 | . . Q:$P(IBCLKDAT,"^",7)>IBPRMNTH
|
---|
| 37 | . . ; if error save it in ^TMP for further e-mail
|
---|
| 38 | . . S IBCLKAD1=""
|
---|
| 39 | . . ;process the patient
|
---|
| 40 | . . S IBVAR=0
|
---|
| 41 | . . F S IBVAR=$O(IBMNS(IBVAR)) Q:+IBVAR=0 D
|
---|
| 42 | . . . Q:$$CHKXTMP(IBDFN1,IBVAR) ;check if it was a crush and the month has been already processed
|
---|
| 43 | . . . M IBMDS1=IBMNS(IBVAR) ;set month to process
|
---|
| 44 | . . . S IBMDS1=$E(IBMDS1(1),6,7)
|
---|
| 45 | . . . D CHNGEVEN^IBAECU4(IBCLKIE1,IBDFN1,IBMDS1(0)) ;set CURRENT EVENT DATE to a date of the MONTH (say,1st day)
|
---|
| 46 | . . . I $$PROCPAT^IBAECM2(.IBMDS1,IBDFN1,IBSTRTD,IBCLKIE1)=-1 D ;perform calcualtion
|
---|
| 47 | . . . . D ERRLOG^IBAECU5(+$G(IBDFN1),+$G(IBCLKIE1),"Charge","Error with LTC clock creation occured during calculation, no proper charges have been created") Q
|
---|
| 48 | . . . D UPDXTMP(IBDFN1,IBVAR) ;mark the month as done
|
---|
| 49 | . . D DELXTMP(IBDFN1)
|
---|
| 50 | ;send all errors to user group
|
---|
| 51 | D SENDERR^IBAECU5 ;send all errors
|
---|
| 52 | ;if we reach this place that means that we processed everybody
|
---|
| 53 | ;and we stamp the date into IB SITE PARAMETERS
|
---|
| 54 | S $P(^IBE(350.9,1,0),"^",16)=$$TODAY^IBAECN1()
|
---|
| 55 | ;if Nightly Job founds that date $P(^IBE(350.9,1,0),"^",16)
|
---|
| 56 | ;is less that begining of current month than NJ runs MJ again and MJ will
|
---|
| 57 | ;process a rest patients
|
---|
| 58 | D KILLXTMP ;delete ^XTMP
|
---|
| 59 | Q
|
---|
| 60 | ;IBALLM - Array with month info
|
---|
| 61 | ; IBALLM (0)-first day of the month
|
---|
| 62 | ; IBALLM (1)-last day of the month
|
---|
| 63 | ; IBALLM (2)-yyymm in Fileman format (like 30201 - for Jan 2002)
|
---|
| 64 | ;IBPRMNTH -Last day of the last mont
|
---|
| 65 | PRMONTHS(IBALLM,IBPRMNTH) ;prepare months
|
---|
| 66 | S IBALLM=""
|
---|
| 67 | N X,IB176YM,IB176TMP
|
---|
| 68 | S IB176YM=$E($$BILDATE^IBAECN1(),1,5)
|
---|
| 69 | F Q:IB176YM>$E(IBPRMNTH,1,5) D
|
---|
| 70 | . S X=IB176YM_"01"
|
---|
| 71 | . S IBALLM(IB176YM,1)=$$LASTDT^IBAECU(X)
|
---|
| 72 | . S IBALLM(IB176YM,2)=$E(IBALLM(IB176YM,1),1,5)
|
---|
| 73 | . S IBALLM(IB176YM,0)=IBALLM(IB176YM,2)_"01",IBALLM=$E(IBALLM(IB176YM,1),6,7)
|
---|
| 74 | . I +$E(IB176YM,4,5)=12 S IB176YM=$E(IB176YM,1,3)+1,IB176YM=IB176YM_"01" Q
|
---|
| 75 | . S IB176YM=IB176YM+1
|
---|
| 76 | Q
|
---|
| 77 | ;
|
---|
| 78 | KILLXTMP ;
|
---|
| 79 | K ^XTMP("IBAEC-P176")
|
---|
| 80 | Q
|
---|
| 81 | ;
|
---|
| 82 | ;IBDFN - ien of #2
|
---|
| 83 | ;IBYM - year_month in yyymm format
|
---|
| 84 | CHKXTMP(IBDFN,IBYM) ;check if ^XTMP for the patient and month is exist
|
---|
| 85 | Q $D(^XTMP("IBAEC-P176",IBDFN,IBYM))>0
|
---|
| 86 | ;
|
---|
| 87 | ;IBDFN - ien of #2
|
---|
| 88 | ;IBYM - year_month in yyymm format
|
---|
| 89 | UPDXTMP(IBDFN,IBYM) ;update XTMP with new info
|
---|
| 90 | N IBDT S IBDT=$$TODAY^IBAECN1()
|
---|
| 91 | S ^XTMP("IBAEC-P176",0)=$$CHNGDATE^IBAECU4(IBDT,30)_"^"_IBDT_"^1st LTC copay calculation"
|
---|
| 92 | S ^XTMP("IBAEC-P176",+IBDFN,IBYM)=""
|
---|
| 93 | Q
|
---|
| 94 | ;
|
---|
| 95 | ;IBDFN - ien of #2
|
---|
| 96 | DELXTMP(IBDFN) ;Kills ^XTMP node for the patient.
|
---|
| 97 | K ^XTMP("IBAEC-P176",+IBDFN)
|
---|
| 98 | Q
|
---|
| 99 | ;
|
---|