[613] | 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
|
---|