| 1 | IBAECB1 ;WOIFO/AAT-LTC BILLING CLOCK INQUIRY ; 21-FEB-02 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**171,176**;21-MAR-94 | 
|---|
| 3 | ;; Per VHA Directive 10-93-142, this routine should not be modified | 
|---|
| 4 | ; | 
|---|
| 5 | Q | 
|---|
| 6 | ; | 
|---|
| 7 | ; Printing the report to the current device | 
|---|
| 8 | ; Input: | 
|---|
| 9 | ;   IBCLK - LTC Billing Clock IEN | 
|---|
| 10 | ;   IOST,IOSL,IOF Must be defined | 
|---|
| 11 | ; Output: IBQUIT=1 if user entered "^" | 
|---|
| 12 | REPORT ;Print the report to the current device | 
|---|
| 13 | N IBZ,IBN4,IBDFN,IBPTZ,IBNAM,IBSSN,IBDOB,IBVET,IBFTN,IBTAB,IBDT1,IBDT2,IBSTA | 
|---|
| 14 | N:'$D(IBQUIT) IBQUIT | 
|---|
| 15 | S IBQUIT=0 | 
|---|
| 16 | ; | 
|---|
| 17 | ; Define required data | 
|---|
| 18 | ; | 
|---|
| 19 | S IBZ=$G(^IBA(351.81,IBCLK,0)) I IBZ="" W !,"Data not found..." Q | 
|---|
| 20 | S IBDFN=+$P(IBZ,U,2) I 'IBDFN W !,"No patient data..." Q | 
|---|
| 21 | S IBPTZ=$G(^DPT(IBDFN,0)) I IBPTZ="" W !,"Patient data not found... (",IBDFN,")" Q | 
|---|
| 22 | S IBN4=$G(^IBA(351.81,IBCLK,4)) ; Node 4 | 
|---|
| 23 | S IBNAM=$P(IBPTZ,U) ; Patient name | 
|---|
| 24 | S IBSSN=$P(IBPTZ,U,9) ; Patient SSN | 
|---|
| 25 | S IBDOB=$P(IBPTZ,U,3) ; Patient DOB | 
|---|
| 26 | S IBVET=+$P($G(^DPT(IBDFN,"TYPE")),U,1) ; Veteran type code | 
|---|
| 27 | S IBVET=$S(IBVET:$P($G(^DG(391,IBVET,0)),U),1:"") ; Veteran type name | 
|---|
| 28 | ; Write caption | 
|---|
| 29 | W IBNAM,?32," ",$$SSN(IBSSN),?48," ",$$DAT1(IBDOB),?62,IBVET | 
|---|
| 30 | W ! D LINE("=",80) | 
|---|
| 31 | ; | 
|---|
| 32 | ; The body of report | 
|---|
| 33 | S IBFTN=$P(IBZ,U) | 
|---|
| 34 | ;; W !,$$FRM("Facility Clock Number"),IBFTN | 
|---|
| 35 | S IBSTA=$P(IBZ,U,5) | 
|---|
| 36 | I 0 W !,$$FRM("LTC Copay Clock Status"),$$EXTERNAL^DILFD(351.81,.05,"",IBSTA) | 
|---|
| 37 | W !,$$FRM("LTC Copay Clock Start Date"),$$DAT2($P(IBZ,U,3)) | 
|---|
| 38 | I 1 W ?56," Clock Status: ",$$EXTERNAL^DILFD(351.81,.05,"",IBSTA) | 
|---|
| 39 | W !,$$FRM("LTC Copay Clock End Date  "),$$DAT2($P(IBZ,U,4)) | 
|---|
| 40 | I '$$SCR() W ! | 
|---|
| 41 | ;;W !,$$FRM("Current Events Date"),$S($P(IBZ,U,7):$$DAT2($P(IBZ,U,7)),1:"none") | 
|---|
| 42 | ;;I '$$SCR() W ! | 
|---|
| 43 | W !,$$FRM("Free Days Remaining"),+$P(IBZ,U,6) | 
|---|
| 44 | I $O(^IBA(351.81,IBCLK,1,0)) ; Not used yet | 
|---|
| 45 | D FRDAYS Q:IBQUIT | 
|---|
| 46 | W ! D CHKPAUSE Q:IBQUIT | 
|---|
| 47 | W !,$$FRM("User Added Entry "),$$PERS($P(IBN4,U,1)) D CHKPAUSE Q:IBQUIT | 
|---|
| 48 | I 0 W !,$$FRM("Date Entry Added") | 
|---|
| 49 | E  W ?55 | 
|---|
| 50 | W $$DAT2($P(IBN4,U,2)) D CHKPAUSE Q:IBQUIT | 
|---|
| 51 | W !,$$FRM("User Last Updated"),$$PERS($P(IBN4,U,3)) D CHKPAUSE Q:IBQUIT | 
|---|
| 52 | I 0 W !,$$FRM("Date Last Updated") | 
|---|
| 53 | E  W ?55 | 
|---|
| 54 | W $$DAT2($P(IBN4,U,4)) | 
|---|
| 55 | Q | 
|---|
| 56 | ; | 
|---|
| 57 | ; | 
|---|
| 58 | ; Fotmatting row labels | 
|---|
| 59 | FRM(IBLBL,IBCUT) ; | 
|---|
| 60 | I $G(IBCUT,1) S IBLBL=$E(IBLBL,1,26) | 
|---|
| 61 | Q "  "_IBLBL_": "  ;;;$J("",26-$L(IBLBL))_":  " | 
|---|
| 62 | ; | 
|---|
| 63 | SSN(IBSSN) I IBSSN?9N Q $E(IBSSN,1,3)_"-"_$E(IBSSN,4,5)_"-"_$E(IBSSN,6,9) | 
|---|
| 64 | Q IBSSN | 
|---|
| 65 | ; | 
|---|
| 66 | DAT1(IBDAT) ;FM -> External date, like 12/25/2000 | 
|---|
| 67 | Q $$FMTE^XLFDT(IBDAT,"5PMZ") | 
|---|
| 68 | ; | 
|---|
| 69 | DAT2(IBDAT) ;FM -> External date, like OCT 25, 2001 | 
|---|
| 70 | Q $$FMTE^XLFDT(IBDAT,"1PMZ") | 
|---|
| 71 | ; | 
|---|
| 72 | ; Draw a line, of characters IBC, length IBN | 
|---|
| 73 | LINE(IBC,IBN) N IBL | 
|---|
| 74 | I $L($G(IBC))'=1 S IBC="=" | 
|---|
| 75 | I +$G(IBN)=0 S IBN=80 | 
|---|
| 76 | S $P(IBL,IBC,IBN+1)="" | 
|---|
| 77 | W IBL | 
|---|
| 78 | Q | 
|---|
| 79 | ; Person | 
|---|
| 80 | PERS(IBIEN) ; | 
|---|
| 81 | I '$G(IBIEN) Q "" | 
|---|
| 82 | Q $P($G(^VA(200,IBIEN,0)),U) | 
|---|
| 83 | ; | 
|---|
| 84 | ; Input: | 
|---|
| 85 | ; IBCLK - LBC Billing Clock IEN | 
|---|
| 86 | ; IBQUIT - if defined, pauses will be made at the bottom of screen ("C-" devices only!) | 
|---|
| 87 | ; Output: | 
|---|
| 88 | ; IBQUIT=1 if user pressed "^". Only if IBQUIT was defined initially! | 
|---|
| 89 | FRDAYS ; Write the list of exempt days | 
|---|
| 90 | N IBZ,IBV,IBC,IBI,IBA,IBN | 
|---|
| 91 | S IBZ=$G(^IBA(351.81,IBCLK,0)) I IBZ="" W !,"Corrupted record of LTC clock ",IBCLK Q | 
|---|
| 92 | S IBC=0 ; Counter of free days | 
|---|
| 93 | ; Collect an array of free days: | 
|---|
| 94 | S IBI=0 F  S IBI=$O(^IBA(351.81,IBCLK,1,IBI)) Q:'IBI  D:$P(^(IBI,0),U,2) | 
|---|
| 95 | . S IBC=IBC+1 | 
|---|
| 96 | . S IBA(IBC)=$P(^IBA(351.81,IBCLK,1,IBI,0),U,2) | 
|---|
| 97 | ;I '$$SCR() W !,$$FRM("Days free of LTC copay") | 
|---|
| 98 | ;E | 
|---|
| 99 | W !,$$FRM("Days Not Subject To LTC Copay",0) | 
|---|
| 100 | I 'IBC W "none" Q | 
|---|
| 101 | S IBV=IBC\3 I IBC#3 S IBV=IBV+1 | 
|---|
| 102 | F IBI=1:1:IBV D  Q:$G(IBQUIT) | 
|---|
| 103 | .  D:$D(IBQUIT) CHKPAUSE | 
|---|
| 104 | .  S IBN=IBI W !?5,$J(IBN,2),?10,$$FMTE^XLFDT(IBA(IBN)) | 
|---|
| 105 | .  S IBN=IBI+IBV I $G(IBA(IBN)) W ?30,$J(IBN,2),?35,$$FMTE^XLFDT(IBA(IBN)) | 
|---|
| 106 | .  S IBN=IBI+(2*IBV) I $G(IBA(IBN)) W ?55,$J(IBN,2),?60,$$FMTE^XLFDT(IBA(IBN)) | 
|---|
| 107 | Q | 
|---|
| 108 | ; | 
|---|
| 109 | PAUSE Q:'$$SCR()  ;Screen only | 
|---|
| 110 | N IBJ,DIR,DIRUT,DTOUT,DUOUT,DIROUT,Y,IOSL2 | 
|---|
| 111 | S IOSL2=$S(IOSL>24:24,1:IOSL) | 
|---|
| 112 | F IBJ=$Y:1:(IOSL2-4) W ! | 
|---|
| 113 | S DIR(0)="E" D ^DIR K DIR I $G(DUOUT) S IBQUIT=1 | 
|---|
| 114 | Q | 
|---|
| 115 | ; | 
|---|
| 116 | CHKPAUSE ;Check pause | 
|---|
| 117 | I $Y>(IOSL-5) D PAUSE Q:IBQUIT  W @IOF D LINE("-",80) W ! | 
|---|
| 118 | Q | 
|---|
| 119 | ; | 
|---|
| 120 | SCR() Q $E(IOST,1,2)="C-" ; Screen | 
|---|