| 1 | IBECEAU1 ;ALB/CPM - Cancel/Edit/Add... Clock Utilities ; 12-MAR-93
 | 
|---|
| 2 |  ;;Version 2.0 ; INTEGRATED BILLING ;**57**; 21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | CLSTR(DFN,DATE) ; Find the billing clock in effect on DATE.
 | 
|---|
| 6 |  ;   Input:      DFN  --  Pointer to the patient in file #2
 | 
|---|
| 7 |  ;              DATE  --  The date which is covered by the clock
 | 
|---|
| 8 |  ;  Output:   IBCLDA  --  Pointer to the clock in file #351
 | 
|---|
| 9 |  ;                        (or null if there is none)
 | 
|---|
| 10 |  ;            IBCLST  --  Zeroth node of clock pointed to by
 | 
|---|
| 11 |  ;                        IBCLDA  [OPTIONAL]
 | 
|---|
| 12 |  N X,Y
 | 
|---|
| 13 |  K IBCLST S IBCLDA=""
 | 
|---|
| 14 |  I '$G(DATE)!'$G(DFN) G CLSTRQ
 | 
|---|
| 15 |  S X="" F  S X=$O(^IBE(351,"AIVDT",DFN,X)) Q:'X  S IBCLDA=0 F  S IBCLDA=$O(^IBE(351,"AIVDT",DFN,X,IBCLDA)) Q:'IBCLDA  S Y=$G(^IBE(351,IBCLDA,0)) I Y,$P(Y,"^",4)'=3,$P(Y,"^",3)'>DATE S IBCLST=Y G CLSTRQ
 | 
|---|
| 16 | CLSTRQ Q
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | CLDSP(X,NAM) ; Display Billing Clock data for NAM.
 | 
|---|
| 19 |  ;   Input:        X  --  Zeroth node of clock in file #351
 | 
|---|
| 20 |  ;               NAM  --  Patient name^short id^long id
 | 
|---|
| 21 |  I '$G(X)!($G(NAM)="") G CLDSPQ
 | 
|---|
| 22 |  W !!,"Means Test Billing Clock information for ",$P(NAM,"^")," (",$P(NAM,"^",3),")"
 | 
|---|
| 23 |  W !,$TR($J("",80)," ","-")
 | 
|---|
| 24 |  W !?2,"Clock Start Date: ",$$DAT1^IBOUTL($P(X,"^",3)),?42,"Clock End Date: ",$S($P(X,"^",10):$$DAT1^IBOUTL($P(X,"^",10)),1:"N/A")
 | 
|---|
| 25 |  W !?6,"Clock Status: ",$S($P(X,"^",4)=1:"CURRENT",$P(X,"^",4)=2:"CLOSED",1:"UNKNOWN"),?42,"Inpatient Days: ",+$P(X,"^",9)
 | 
|---|
| 26 |  W !!?2,"Medicare Deductible Co-payments:"
 | 
|---|
| 27 |  W !?15,"1st 90 days: $",+$P(X,"^",5),?45,"3rd 90 days: $",+$P(X,"^",7)
 | 
|---|
| 28 |  W !?15,"2nd 90 days: $",+$P(X,"^",6),?45,"4th 90 days: $",+$P(X,"^",8)
 | 
|---|
| 29 |  W !,$TR($J("",80)," ","-")
 | 
|---|
| 30 | CLDSPQ Q
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | CLINP(BEG,DIF,IBCLDA) ; Update Billing Clock Inpatient Days
 | 
|---|
| 33 |  ;   Input:      BEG  --  Existing number of inpatient days
 | 
|---|
| 34 |  ;               DIF  --  Days to add to clock (could be negative)
 | 
|---|
| 35 |  ;            IBCLDA  --  Pointer to clock in file #351
 | 
|---|
| 36 |  N DAYS,DIR,DIRUT,DUOUT,DTOUT,DIE,DA,DR,I,IBF
 | 
|---|
| 37 |  I $G(BEG)=""!'$G(DIF)!'$G(IBCLDA) G CLINPQ1
 | 
|---|
| 38 |  S DAYS=BEG+DIF
 | 
|---|
| 39 |  I DAYS<0!(DAYS>365) W !!,"Can't update the clock to reflect ",DAYS," inpatient days.",!,"Please review this patient's clock and use the Clock Maintenance option",!,"to make any changes, if necessary." G CLINPQ1
 | 
|---|
| 40 |  W ! S DIR(0)="Y",DIR("?")="Enter 'Y' or 'YES' to update the clock, or 'N', 'NO', or '^' to stop.",DIR("A")="Update the number of inpatient days from "_BEG_" to "_DAYS D ^DIR
 | 
|---|
| 41 |  I 'Y!($D(DIRUT))!($D(DUOUT)) W !,"The billing clock has not been updated." G CLINPQ
 | 
|---|
| 42 |  S DIE="^IBE(351,",DA=IBCLDA,DR=".09////"_DAYS_";13////"_DUZ_";14///NOW" D ^DIE
 | 
|---|
| 43 |  W !,"The clock has been updated."
 | 
|---|
| 44 | CLINPQ S IBF=0 F I=90,180,270 I BEG'>I,DAYS>I S IBF=1 Q
 | 
|---|
| 45 |  I IBF W !!,*7,"   ** Please review to see if this patient requires a new copay charge. **"
 | 
|---|
| 46 | CLINPQ1 Q
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | CLAMT(STR,AMT,IBCLDA) ; Update Billing Clock Medicare Deductible co-payments
 | 
|---|
| 49 |  ;   Input:      STR  --  Zeroth node of clock in file #351
 | 
|---|
| 50 |  ;               AMT  --  Dollar Amt to add to clock (could be negative)
 | 
|---|
| 51 |  ;            IBCLDA  --  Pointer to clock in file #351
 | 
|---|
| 52 |  N DAYS,DIR,DIRUT,DUOUT,DTOUT,DIE,DA,DR,IBMED,IBCLDT,NEWAMT,PTR
 | 
|---|
| 53 |  I $G(STR)=""!'$G(AMT)!'$G(IBCLDA) G CLAMTQ
 | 
|---|
| 54 |  S DAYS=+$P(STR,"^",9),PTR=$S(DAYS<91:5,DAYS<181:6,DAYS<271:7,1:8)
 | 
|---|
| 55 |  S IBCLDT=+$P(STR,"^",3) D DED^IBAUTL3
 | 
|---|
| 56 |  S NEWAMT=+$P(STR,"^",PTR)+AMT
 | 
|---|
| 57 |  I NEWAMT<0 W !!,"Can't update the clock to reflect a copayment of -$",-NEWAMT,".",!,"Please review this patient's clock and use the Clock Maintenance option",!,"to make any changes, if necessary." G CLAMTQ
 | 
|---|
| 58 |  I NEWAMT>IBMED W !!,"Note that the effective Medicare Deductible for this billing clock is $",IBMED,".",!,"Please note that $",NEWAMT," is beyond this limit."
 | 
|---|
| 59 |  W ! S DIR(0)="Y",DIR("?")="Enter 'Y' or 'YES' to update the clock, or 'N', 'NO', or '^' to stop.",DIR("A")="Update the "_$$INPT^IBECEAU(DAYS)_" 90 days copayment from $"_+$P(STR,"^",PTR)_" to $"_NEWAMT D ^DIR
 | 
|---|
| 60 |  I 'Y!($D(DIRUT))!($D(DUOUT)) W !,"The billing clock has not been updated." G CLAMTQ
 | 
|---|
| 61 |  S DIE="^IBE(351,",DA=IBCLDA,DR=".0"_PTR_"////"_NEWAMT_";13////"_DUZ_";14///NOW" D ^DIE
 | 
|---|
| 62 |  W !,"The clock has been updated."
 | 
|---|
| 63 | CLAMTQ Q
 | 
|---|