| 1 | IBAMTV1 ;ALB/CPM - BUILD ARRAY OF BILLABLE EPISODES ; 31-MAY-94 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**15,33,91,132,153,293**;21-MAR-94;Build 1 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | CARE ; Build an array of episodes to be back-billed. | 
|---|
| 6 | ; | 
|---|
| 7 | ; Input: IBSTART  --  First date that the patient is Means Test billable | 
|---|
| 8 | ;          IBEND  --  Last date that the patient is Means Test billable | 
|---|
| 9 | ;            DFN  --  Pointer to the patient in file #2 | 
|---|
| 10 | ; | 
|---|
| 11 | ; Output:  ^TMP("IBAMTV",$J,episode date) = 1^2^3, where | 
|---|
| 12 | ;                         1 = adm date for inpatient care | 
|---|
| 13 | ;                             visit date for outpatient care | 
|---|
| 14 | ;                         2 = disch/last bill date for inpatient care | 
|---|
| 15 | ;                             null for outpatient care | 
|---|
| 16 | ;                         3 = null for inpatient care | 
|---|
| 17 | ;                             softlink for outpatient care | 
|---|
| 18 | ; | 
|---|
| 19 | K ^TMP("IBAMTV",$J) | 
|---|
| 20 | ; | 
|---|
| 21 | ; - inpatient at IBSTART? | 
|---|
| 22 | S VAINDT=IBSTART\1_.2359 D ADM^VADPT2 | 
|---|
| 23 | I VADMVT D | 
|---|
| 24 | .S IBA=$$ORIG(VADMVT),IBADM=+$G(^DGPM(IBA,0))\1 | 
|---|
| 25 | .Q:+$$MVT^DGPMOBS(IBA) | 
|---|
| 26 | .S IBDIS=+$G(^DGPM(+$P($G(^DGPM(IBA,0)),"^",17),0))\1 | 
|---|
| 27 | .S:'IBDIS!(IBDIS>IBEND) IBDIS=$$FMADD^XLFDT(IBEND,1) | 
|---|
| 28 | .S ^TMP("IBAMTV",$J,IBADM)=(IBSTART\1)_"^"_IBDIS | 
|---|
| 29 | ; | 
|---|
| 30 | ; - get subsequent admissions | 
|---|
| 31 | S IBD="" F  S IBD=$O(^DGPM("ATID1",DFN,IBD)) Q:'IBD!((9999999.9999999-IBD)\1'>IBSTART)  S IBA=+$O(^(IBD,0)) D | 
|---|
| 32 | .S IBADM0=$G(^DGPM(IBA,0)) | 
|---|
| 33 | .Q:+IBADM0>IBEND  ;           adm after end date for MT | 
|---|
| 34 | .Q:+$$MVT^DGPMOBS(IBA)  ;       adm for obs & examination | 
|---|
| 35 | .Q:$$ASIH^IBAUTL5(IBADM0)  ;  asih admission (catch it later) | 
|---|
| 36 | .; | 
|---|
| 37 | .S IBDIS=+$G(^DGPM(+$P($G(^DGPM(IBA,0)),"^",17),0))\1 | 
|---|
| 38 | .S:'IBDIS!(IBDIS>IBEND) IBDIS=$$FMADD^XLFDT(IBEND,1) | 
|---|
| 39 | .S ^TMP("IBAMTV",$J,+IBADM0\1)=(+IBADM0\1)_"^"_IBDIS | 
|---|
| 40 | ; | 
|---|
| 41 | ; Outpatient encounters | 
|---|
| 42 | N IBVAL,IBCBK,IBFILTER,IBOE,IBOE0,IBCK,IBT,IBPB,Z | 
|---|
| 43 | S IBVAL("DFN")=DFN,IBVAL("BDT")=IBSTART,IBVAL("EDT")=IBEND | 
|---|
| 44 | ; Only parent encounters | 
|---|
| 45 | S IBFILTER="" | 
|---|
| 46 | S IBCBK="I '$P(Y0,U,6) S ^TMP(""IBOE"",$J,+$P(Y0,U,8),Y)=Y0" | 
|---|
| 47 | K ^TMP("IBOE",$J) | 
|---|
| 48 | D SCAN^IBSDU("PATIENT/DATE",.IBVAL,IBFILTER,IBCBK,1) K ^TMP("DIERR",$J) | 
|---|
| 49 | F Z=0:1:6,9,10,13 S IBCK(Z)="" | 
|---|
| 50 | S IBT=0 F  S IBT=$O(^TMP("IBOE",$J,IBT)) Q:'IBT  D | 
|---|
| 51 | . S IBOE=0 F  S IBOE=$O(^TMP("IBOE",$J,IBT,IBOE)) Q:'IBOE  S IBOE0=$G(^(IBOE)) D | 
|---|
| 52 | .. K IBPB | 
|---|
| 53 | .. I $$BILLCK^IBAMTEDU(IBOE,IBOE0,.IBCK,.IBPB) D | 
|---|
| 54 | ... S Z=$O(IBPB(0)) Q:'Z | 
|---|
| 55 | ...; | 
|---|
| 56 | ... ;Check any visits for that date for dispositions, add-edits | 
|---|
| 57 | ... I Z=3 Q:$D(^TMP("IBAMTV",$J,IBOE0\1)) | 
|---|
| 58 | ... I Z=2 Q:$S($D(^TMP("IBAMTV",$J,IBOE0\1)):1,1:$$NBCSC^IBEFUNC($P(IBOE0,U,3),IBOE0\1)) | 
|---|
| 59 | ...; | 
|---|
| 60 | ... S ^TMP("IBAMTV",$J,IBOE0\1)=IBOE0\1_U_U_IBOE | 
|---|
| 61 | K ^TMP("IBOE",$J) | 
|---|
| 62 | ; | 
|---|
| 63 | K IBA,IBADM,IBADM0,IBAD,IBD,IBDIS,IBDT,IBI,VAINDT,VADMVT | 
|---|
| 64 | ; | 
|---|
| 65 | Q | 
|---|
| 66 | ; | 
|---|
| 67 | INP(DATE) ; Was the patient an inpatient on DATE? | 
|---|
| 68 | ;  Input:   DATE  --  Date of outpatient visit | 
|---|
| 69 | ;           array IBARR | 
|---|
| 70 | ; Output:      1  --  Patient was an inpatient on DATE | 
|---|
| 71 | ;              0  --  Patient was not | 
|---|
| 72 | N X,Y,Z S X=0 | 
|---|
| 73 | I '$G(DATE) G INPQ | 
|---|
| 74 | S Y=0 F  S Y=$O(IBARR(Y)) Q:X!'Y!(Y>DATE)  D | 
|---|
| 75 | .S Z=0 F  S Z=$O(IBARR(Y,Z)) Q:'Z  S Z1=$G(IBARR(Y,Z)) I DATE'<+Z1,DATE'>$P(Z1,"^",2) S X=1 Q | 
|---|
| 76 | INPQ Q X | 
|---|
| 77 | ; | 
|---|
| 78 | ORIG(IBA) ; Find first admission pointer, considering ASIH movements | 
|---|
| 79 | ;  Input:  IBA  --  Pointer to admission in #405 | 
|---|
| 80 | ; Output:    Z  --  Pointer to original admission in #405 | 
|---|
| 81 | N X,Y,Z S Z=+$G(IBA) | 
|---|
| 82 | F  S X=$G(^DGPM(Z,0)),Z=$P(X,"^",14),Y=$P(X,"^",21) Q:Y=""  S Z=Y | 
|---|
| 83 | Q Z | 
|---|