| 1 | IVMUFNC2 ;ALB/SEK - INPATIENT/OUTPATIENT CALCULATIONS (CON'T) ; 24-NOV-93 | 
|---|
| 2 | ;;2.0;INCOME VERIFICATION MATCH ;**3,11**; 21-OCT-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | EN(IVMQUERY) ; Calculate number of outpatient days | 
|---|
| 6 | ; Input: IVMQUERY("OVIS") - the # of the QUERY this job has open for | 
|---|
| 7 | ;    searching for patient's outpatient visits.  If null, this QUERY has | 
|---|
| 8 | ;    yet been opened. (pass by reference) | 
|---|
| 9 | ; | 
|---|
| 10 | ; - find visits on or after IVMMTDT | 
|---|
| 11 | N IVMQ | 
|---|
| 12 | K ^TMP("DIERR",$J) | 
|---|
| 13 | S IVMQ=$G(IVMQUERY("OVIS")) | 
|---|
| 14 | I $G(IVMQ) D ACTIVE^SDQ(.IVMQ,"FALSE","SET") ;Reset from previous query | 
|---|
| 15 | ; | 
|---|
| 16 | I '$G(IVMQ) D | 
|---|
| 17 | . D OPEN^SDQ(.IVMQ) Q:'$G(IVMQ) | 
|---|
| 18 | . D INDEX^SDQ(.IVMQ,"PATIENT/DATE","SET") | 
|---|
| 19 | . D SCANCB^SDQ(.IVMQ,"I '$D(^TMP($J,""IVMUFNC1"",DFN,SDOE0\1)) D VALENC^IVMUFNC2(SDOE,SDOE0)","SET") | 
|---|
| 20 | . S IVMQUERY("OVIS")=IVMQ | 
|---|
| 21 | ; | 
|---|
| 22 | D PAT^SDQ(.IVMQ,DFN,"SET") | 
|---|
| 23 | D DATE^SDQ(.IVMQ,IVMMTDT\1,IVMENDT,"SET") | 
|---|
| 24 | D ACTIVE^SDQ(.IVMQ,"TRUE","SET") | 
|---|
| 25 | D SCAN^SDQ(.IVMQ,"FORWARD") | 
|---|
| 26 | K ^TMP("DIERR",$J) | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | VALENC(IVME,IVME0) ; Check for valid outpatient encounter | 
|---|
| 30 | ; Input: IVME = encounter ien | 
|---|
| 31 | ;        IVME0 = 0-node of encounter (optional) | 
|---|
| 32 | N IVMZ,IVMD | 
|---|
| 33 | ; | 
|---|
| 34 | I $G(IVME0)=""  K ^TMP("DIERR",$J) D GETGEN^SDOE(IVME,"IVMZ") S IVME0=$G(IVMZ(0)) I $D(^TMP("DIERR",$J)) K ^TMP("DIERR",$J) Q | 
|---|
| 35 | ; | 
|---|
| 36 | S IVMD=IVME0\1 | 
|---|
| 37 | ; | 
|---|
| 38 | Q:$$IGN^IBEFUNC(+$P(IVME0,U,10),IVMD)  ; Not billable appt type | 
|---|
| 39 | Q:$P($G(^SC(+($P(IVME0,U,4)),0)),U,17)="Y"  ; non-count clinic | 
|---|
| 40 | Q:$$ENCL(IVME)[1  ; claim exposure | 
|---|
| 41 | S VAINDT=IVMD+.2359 D ADM^VADPT2 Q:VADMVT  ; was an inpatient | 
|---|
| 42 | ; | 
|---|
| 43 | S IVMOUT=IVMOUT+1,^TMP($J,"IVMUFNC1",DFN,IVMD)="" | 
|---|
| 44 | Q | 
|---|
| 45 | ; | 
|---|
| 46 | ENCL(IVMIBOE) ; Return classification results for an encounter. | 
|---|
| 47 | ;  Input:    IVMIBOE  --  Pointer to outpatient encounter in file #409.68 | 
|---|
| 48 | ;  Output:   ao^ir^sc^ec, where, for each piece, | 
|---|
| 49 | ;                      1 - care was related to condition, and | 
|---|
| 50 | ;                      0 (or null) - care not related to condition | 
|---|
| 51 | N CL,CLD,X,Y S Y="" | 
|---|
| 52 | S CL=0 F  S CL=$O(^SDD(409.42,"OE",+$G(IVMIBOE),CL)) Q:'CL  S CLD=$G(^SDD(409.42,CL,0)) I CLD S $P(Y,"^",+CLD)=+$P(CLD,"^",3) | 
|---|
| 53 | Q Y | 
|---|
| 54 | ; | 
|---|
| 55 | ; | 
|---|
| 56 | END(DFN,IVMPMTD) ; return end date for calculating inpatient/ | 
|---|
| 57 | ; outpatient days.  this date will be earliest of day before next means | 
|---|
| 58 | ; test and day before current date. | 
|---|
| 59 | ;  Input:  DFN -- pointer to patient in file #2 | 
|---|
| 60 | ;          IVMPMTD -- previous means test date | 
|---|
| 61 | ; | 
|---|
| 62 | N X,IVMICY | 
|---|
| 63 | S IVMICY=$$LYR^DGMTSCU1(IVMPMTD) | 
|---|
| 64 | S X=$P($$LST^DGMTCOU1(DFN,($E(IVMICY,1,3)+2)_"1231.9999",3),"^",2) | 
|---|
| 65 | Q $$FMADD^XLFDT($S(X'>IVMPMTD:DT,X>DT:DT,1:X),-1)_.999999 | 
|---|