1 | DGMTUB ;ALB/RMO/CAW,CPM,LBD - Means Test Billing Utilities ; 7/22/02 9:32am
|
---|
2 | ;;5.3;Registration;**33,456,481**;Aug 13, 1993
|
---|
3 | ;
|
---|
4 | BIL(DFN,DGDT) ;Determine if patient is pending adjudication
|
---|
5 | ; or category C and has agreed to pay the deductible
|
---|
6 | ; Input -- DFN Patient IEN
|
---|
7 | ; DGDT Date/Time
|
---|
8 | ; Output -- 1=TRUE and 0=FALSE
|
---|
9 | N MT0,MTI,TDAT,EDAT,BILL,STOP
|
---|
10 | S (BILL,STOP)=0
|
---|
11 | I '$G(DFN) G BILQ
|
---|
12 | S:'$G(DGDT) DGDT=DT
|
---|
13 | ;
|
---|
14 | S TDAT=-(DGDT+.1)
|
---|
15 | F S TDAT=$O(^DGMT(408.31,"AID",1,DFN,TDAT)) Q:'TDAT!STOP D
|
---|
16 | .S MTI=0 F S MTI=$O(^DGMT(408.31,"AID",1,DFN,TDAT,MTI)) Q:'MTI!STOP D
|
---|
17 | ..S MT0=$G(^DGMT(408.31,MTI,0)) Q:'$G(^("PRIM")) ; not primary MT
|
---|
18 | ..;
|
---|
19 | ..; - evaluate the test if the category isn't 'REQUIRED'
|
---|
20 | ..I MT0,$P(MT0,"^",3)'=1 D
|
---|
21 | ...S EDAT=$S($P(MT0,"^",3)=3:+MT0,1:$P(MT0,"^",7))
|
---|
22 | ...;
|
---|
23 | ...; - if the patient is not billable on the evaluation date, quit
|
---|
24 | ...I EDAT\1=(DGDT\1),'$$CK(MT0) S STOP=1 Q
|
---|
25 | ...;
|
---|
26 | ...; - if the test effective date is prior to the evaluation date,
|
---|
27 | ...; obtain the billable status and quit
|
---|
28 | ...I EDAT'>DGDT S BILL=$$CK(MT0),STOP=1
|
---|
29 | ;
|
---|
30 | BILQ Q BILL
|
---|
31 | ;
|
---|
32 | BILST(DFN) ;Determine the last date patient was pending adjudication
|
---|
33 | ; or category C and agreed to pay the deductible
|
---|
34 | ; Input -- DFN Patient IEN
|
---|
35 | ; Output -- Last effective date
|
---|
36 | N DGDT,DGENDT,DGMT0,DGMTI,DGMTIDT,DGSTDT
|
---|
37 | S (DGDT,DGENDT,DGSTDT)=""
|
---|
38 | I '$G(DFN) G BILSTQ
|
---|
39 | I $$BIL(DFN,DT) S DGDT=DT G BILSTQ
|
---|
40 | ;
|
---|
41 | S DGMTIDT="" F S DGMTIDT=$O(^DGMT(408.31,"AID",1,DFN,DGMTIDT)) Q:DGMTIDT=""!(DGDT) D
|
---|
42 | .S DGMTI=0 F S DGMTI=$O(^DGMT(408.31,"AID",1,DFN,DGMTIDT,DGMTI)) Q:DGMTI=""!(DGDT) D
|
---|
43 | ..I $D(^DGMT(408.31,DGMTI,0)),$G(^("PRIM")) S DGMT0=^(0) D CKDT
|
---|
44 | ;
|
---|
45 | BILSTQ Q +$P($G(DGDT),".")
|
---|
46 | ;
|
---|
47 | CKDT ;Check the date of test
|
---|
48 | N DGMTS,X,X1,X2,Y
|
---|
49 | S Y=$$CK(DGMT0) S DGMTS=$P(DGMT0,"^",3) S:Y DGSTDT=$P(DGMT0,"^",7) S:'Y DGENDT=$S(DGMTS=1:DGENDT,DGMTS=3:$P(DGMT0,"^"),1:$P(DGMT0,"^",7))
|
---|
50 | I DGSTDT S:'DGENDT DGDT=DT I DGENDT S X1=DGENDT,X2=-1 D C^%DTC S DGDT=X
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | CK(DGMT0) ;Check if patient is pending adjudication or category C
|
---|
54 | ; and has agreed to pay the deductible
|
---|
55 | ; Add check for GMT status (DG*5.3*456)
|
---|
56 | ; Input -- DGMT0 Annual Means Test 0th node
|
---|
57 | ; Output -- 1=TRUE and 0=FALSE
|
---|
58 | N DGMTATP,DGMTS,Y
|
---|
59 | S DGMTS=$P(DGMT0,"^",3),DGMTATP=$P(DGMT0,"^",11)
|
---|
60 | I ("^2^6^16^"[("^"_DGMTS_"^"))&(DGMTATP'=0) S Y=1
|
---|
61 | Q +$G(Y)
|
---|
62 | ;
|
---|
63 | GMT(DFN,DGDT) ;Determine if patient is GMT Copay Required as of the date
|
---|
64 | ; specified
|
---|
65 | ; Input -- DFN Patient IEN
|
---|
66 | ; DGDT Date/Time
|
---|
67 | ; Output -- 1=Patient had GMT status or Pending Adjudication
|
---|
68 | ; for GMT as of date specified
|
---|
69 | ; 0=Patient did not have GMT status
|
---|
70 | ;
|
---|
71 | N DGMT,DGSTA,DGMT0,DGMTG
|
---|
72 | I '$G(DFN) Q 0
|
---|
73 | S:'$G(DGDT) DGDT=DT
|
---|
74 | ; Get last primary means test with status other than Required
|
---|
75 | S DGMT=$$LVMT^DGMTU(DFN,DGDT),DGSTA=$P(DGMT,U,4)
|
---|
76 | I DGSTA="G" Q 1 ; status = GMT copay required
|
---|
77 | S DGMT0=$G(^DGMT(408.31,+DGMT,0)),DGMTG=$P(DGMT0,U,27)
|
---|
78 | I DGMTG="" Q 0
|
---|
79 | ; If status = Pending Adjudication and GMT Threhold is greater than
|
---|
80 | ; MT Threshold, then patient is Pending Adjudication for GMT
|
---|
81 | I DGSTA="P",DGMTG>$P(DGMT0,U,12) Q 1
|
---|
82 | Q 0
|
---|