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
|
---|