1 | IBATO ;LL/ELZ - TRANSFER PRICING REPORTS ; 18-DEC-98
|
---|
2 | ;;2.0;INTEGRATED BILLING;**115**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ENW ; produces a workload report
|
---|
6 | N IBHEAD,IBMARG,IBFIELD,IBMUL
|
---|
7 | S IBHEAD="Transfer Pricing Workload Report "
|
---|
8 | D DISP^IBATO1
|
---|
9 | S IBMARG=$$SEL^IBATO1("70,60,61,50,51,53,52") Q:'IBMARG
|
---|
10 | D START
|
---|
11 | Q
|
---|
12 | ENP ; produces a patient detail report
|
---|
13 | N IBHEAD,IBMARG,IBFIELD,IBMUL
|
---|
14 | S IBHEAD="Transfer Pricing Patient Report "
|
---|
15 | D DISP^IBATO1
|
---|
16 | S IBMARG=$$SEL^IBATO1("1,2,40,41,60,50,52,53") Q:'IBMARG
|
---|
17 | D START
|
---|
18 | Q
|
---|
19 | ENEX ; excel formatted report
|
---|
20 | N IBHEAD,IBMARG,IBFIELD,IBMUL,IBEX,IBQUIT
|
---|
21 | S IBEX=1,IBQUIT=0
|
---|
22 | W !!,"This will produce a report that can be exported into an excel spread sheet."
|
---|
23 | W !,"If you select any fields with an asterisk (*) then the report will contain"
|
---|
24 | W !,"fields which are multiples. Multiple fields will cause dollar amounts to"
|
---|
25 | W !,"repeat for each multiple line!",! Q:$$PAGE
|
---|
26 | D DISP^IBATO1
|
---|
27 | S IBMARG=$$SEL^IBATO1() Q:'IBMARG
|
---|
28 | D START
|
---|
29 | Q
|
---|
30 | ENS ; produces a summary report
|
---|
31 | N IBHEAD
|
---|
32 | S IBHEAD="Transfer Pricing Summary Report "
|
---|
33 | START ;
|
---|
34 | N IBBDT,IBEDT,IBFAC,IBXREF,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
|
---|
35 | ;
|
---|
36 | ; status for sorting
|
---|
37 | W !,"Select how you want this report to sort by for a date range."
|
---|
38 | S DIR(0)="S^E:EVENT DATE;P:PRICED DATE"
|
---|
39 | S DIR("A")="Select Sort"
|
---|
40 | D ^DIR Q:$D(DIRUT) S IBXREF=$S(Y="E":"AG",1:"AE")
|
---|
41 | S IBHEAD=$S(Y="E":"Event ",1:"Priced ")_$G(IBHEAD)
|
---|
42 | ;
|
---|
43 | Q:$$FAC^IBATUTL Q:$$SLDR^IBATUTL
|
---|
44 | Q:$$DEV("Transfer Pricing Report","DQ")
|
---|
45 | ;
|
---|
46 | DQ ; queued entry point
|
---|
47 | N IBPAGE,IBDT,IBVISN,IBIEN,IBLOC,IBTYPE,IBTMP,IBCOPAY,IBCOUNT,IBQUIT
|
---|
48 | N IBSAVE,IBX,IBLINE,IBLAST
|
---|
49 | U IO K ^TMP("IBATO",$J)
|
---|
50 | S (IBQUIT,IBPAGE,IBSAVE,IBLAST)=0,IBDT=$$FMADD^XLFDT(IBBDT,-1)_.99999
|
---|
51 | S IBLINE="" F IBX=1:1:80 S IBLINE=IBLINE_"-"
|
---|
52 | F S IBDT=$O(^IBAT(351.61,IBXREF,IBDT)) Q:IBDT<1!(IBDT>IBEDT) S IBIEN=0 F S IBIEN=$O(^IBAT(351.61,IBXREF,IBDT,IBIEN)) Q:IBIEN<1 D
|
---|
53 | . S IBIEN(0)=$G(^IBAT(351.61,IBIEN,0))
|
---|
54 | . Q:$P(IBIEN(0),"^",5)="X"!('$P(IBIEN(0),"^",11))
|
---|
55 | . S IBVISN=+$$VISN^IBATUTL($P(IBIEN(0),"^",11))
|
---|
56 | . S IBLOC=$P(IBIEN(0),"^",11)
|
---|
57 | . S IBTYPE=$P($P(IBIEN(0),"^",12),";",2)
|
---|
58 | . I $D(IBFAC)'=0,$D(IBFAC(IBVISN,"C",$P(IBIEN(0),"^",11)))=0 Q
|
---|
59 | . S ^TMP("IBATO",$J,IBVISN,IBLOC,IBTYPE,IBIEN)=IBIEN(0)
|
---|
60 | ;
|
---|
61 | ;use excel format for printing
|
---|
62 | I $G(IBEX) D K ^TMP("IBATO",$J) D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@" Q
|
---|
63 | . N A,B,C,D
|
---|
64 | . ;
|
---|
65 | . ;first print header
|
---|
66 | . S A=0 F S A=$O(IBFIELD(A)) Q:A<1 S B=0 F S B=$O(IBFIELD(A,B)) Q:B<1 W $P(IBFIELD(A,B),"^"),"|"
|
---|
67 | . S A=0 F S A=$O(IBMUL(A)) Q:A<1 S B=0 F S B=$O(IBMUL(A,B)) Q:B<1 W $P(IBMUL(A,B),"^"),"|"
|
---|
68 | . W !
|
---|
69 | . ;
|
---|
70 | . ;now onto printing excel
|
---|
71 | . S A=0 F S A=$O(^TMP("IBATO",$J,A)) Q:A<1 S B=0 F S B=$O(^TMP("IBATO",$J,A,B)) Q:B<1 S C=0 F S C=$O(^TMP("IBATO",$J,A,B,C)) Q:C="" S D=0 F S D=$O(^TMP("IBATO",$J,A,B,C,D)) Q:D<1 D EXPRT^IBATO1(D)
|
---|
72 | ;
|
---|
73 | ; start all other printing
|
---|
74 | S IBVISN=0
|
---|
75 | F S IBVISN=$O(^TMP("IBATO",$J,IBVISN)) Q:IBVISN<1!IBQUIT D
|
---|
76 | . D ZERO(.IBVISN)
|
---|
77 | . S IBLOC=0
|
---|
78 | . F S IBLOC=$O(^TMP("IBATO",$J,IBVISN,IBLOC)) Q:IBLOC<1!IBQUIT D
|
---|
79 | .. D ZERO(.IBLOC)
|
---|
80 | .. S IBTYPE=""
|
---|
81 | .. F S IBTYPE=$O(^TMP("IBATO",$J,IBVISN,IBLOC,IBTYPE)) Q:IBTYPE=""!IBQUIT D
|
---|
82 | ... S IBIEN=0
|
---|
83 | ... F S IBIEN=$O(^TMP("IBATO",$J,IBVISN,IBLOC,IBTYPE,IBIEN)) Q:IBIEN<1!IBQUIT D
|
---|
84 | .... S IBIEN(0)=^TMP("IBATO",$J,IBVISN,IBLOC,IBTYPE,IBIEN)
|
---|
85 | .... S IBIEN(6)=$G(^IBAT(351.61,IBIEN,6))
|
---|
86 | .... S IBCOPAY=$$COPAY^IBATUTL($P(IBIEN(0),"^",2),$P(IBIEN(0),"^",12),$P($P(IBIEN(0),"^",9),"."),$P($P(IBIEN(0),"^",10),"."))
|
---|
87 | .... I IBCOPAY,IBTYPE="SCE(" S (IBCOUNT,IBTMP)=0 F S IBTMP=$O(^IBAT(351.61,"AH",$P(IBIEN(0),"^",2),$P(IBIEN(0),"^",4),IBTMP)) Q:IBTMP<1 I $P(^IBAT(351.61,IBTMP,0),"^",12)["SCE(" S IBCOUNT=IBCOUNT+1
|
---|
88 | .... I S IBCOPAY=IBCOPAY/IBCOUNT
|
---|
89 | .... S IBIEN(6)="1^"_$P(IBIEN(6),"^",1,2)_"^"_IBCOPAY_"^"_($P(IBIEN(6),"^",2)-IBCOPAY)
|
---|
90 | .... D:$D(IBMARG) PRT^IBATO1(IBIEN)
|
---|
91 | .... D SUM(.IBLOC,.IBTYPE,IBIEN(6)),SUM(.IBVISN,.IBTYPE,IBIEN(6))
|
---|
92 | .. D:'IBQUIT TOTAL(.IBLOC)
|
---|
93 | .. D:'IBQUIT PRINT(.IBLOC)
|
---|
94 | . D:'IBQUIT TOTAL(.IBVISN)
|
---|
95 | . D:'IBQUIT PRINT(.IBVISN):$D(IBFAC)=0!($D(IBFAC(IBVISN))=11)
|
---|
96 | I $E(IOST,1,2)="C-" I $$PAGE
|
---|
97 | K ^TMP("IBATO",$J)
|
---|
98 | D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
|
---|
99 | Q
|
---|
100 | TOTAL(X) ; totals up types in subscripted X
|
---|
101 | N IBP,IBX
|
---|
102 | F IBX="DGPM(","SCE(","PSRX(","RMPR(660," F IBP=1:1:5 S $P(X("TOTAL"),"^",IBP)=$P(X("TOTAL"),"^",IBP)+$P(X(IBX),"^",IBP)
|
---|
103 | Q
|
---|
104 | SUM(X,Z,Y) ; adds up amounts for type in X
|
---|
105 | N IBP
|
---|
106 | F IBP=1:1:5 S $P(X(Z),"^",IBP)=$P(X(Z),"^",IBP)+$P(Y,"^",IBP)
|
---|
107 | Q
|
---|
108 | ZERO(X) ; zeros out variables
|
---|
109 | N IBP
|
---|
110 | F IBP="DGPM(","PSRX(","SCE(","RMPR(660,","TOTAL" S X(IBP)=0
|
---|
111 | Q
|
---|
112 | PRINT(IBPRT) ; prints out report sum from what is passed
|
---|
113 | N IBP
|
---|
114 | D HEAD(IBPRT)
|
---|
115 | F IBP="DGPM(","SCE(","PSRX(","RMPR(660,","TOTAL" Q:IBQUIT D
|
---|
116 | . W !!,$S(IBP="DGPM(":"INPATIENT",IBP="SCE(":"OUTPATIENT",IBP="PSRX(":"PHARMACY",IBP="RMPR(660,":"PROSTHETICS",1:"TOTAL")
|
---|
117 | . W ":",?27,"COUNT: ",$$NUM($P(IBPRT(IBP),"^"),0)
|
---|
118 | . W:IBP="DGPM(" !,?20,"OUTLIER DAYS: ",$$NUM($P(IBPRT(IBP),"^",2),0)
|
---|
119 | . W !,?20,"TOTAL AMOUNT: ",$$NUM($P(IBPRT(IBP),"^",3))
|
---|
120 | Q
|
---|
121 | DEV(ZTDESC,ZTRTN) ; device handler for reports
|
---|
122 | ; needs task description and entry point returns 1 if queued or pop
|
---|
123 | N %ZIS,ZTSAVE,POP,ZTSK
|
---|
124 | I $D(IBMARG) W !,?5,"*** Requires a margin of at least ",IBMARG," ***"
|
---|
125 | S %ZIS="MQ" D ^%ZIS Q:POP 1
|
---|
126 | I $D(IO("Q")) D Q 1
|
---|
127 | . S ZTRTN=ZTRTN_"^IBATO",ZTSAVE("IB*")=""
|
---|
128 | . D ^%ZTLOAD,HOME^%ZIS K IO("Q") W !,"Task# ",ZTSK
|
---|
129 | Q 0
|
---|
130 | HEAD(X) ;
|
---|
131 | N Z
|
---|
132 | I IBPAGE,$E(IOST,1,2)="C-" I $$PAGE S IBQUIT=1 Q
|
---|
133 | S IBPAGE=IBPAGE+1
|
---|
134 | W @IOF,!,IBHEAD,$$FMTE^XLFDT(IBBDT,"5D")," to ",$$FMTE^XLFDT(IBEDT,"5D"),?IOM-10,"Page: ",IBPAGE
|
---|
135 | W ! F Z=1:1:IOM W "-"
|
---|
136 | W !,"LOCATION: "_$P($$INST^IBATUTL(X),"^")
|
---|
137 | Q
|
---|
138 | PAGE() ; performs page reads and returns 1 if quitting is needed
|
---|
139 | Q:IBQUIT 1
|
---|
140 | N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
|
---|
141 | S DIR(0)="E" D ^DIR
|
---|
142 | Q $D(DIRUT)
|
---|
143 | NUM(X,X2,X3) ; calls to format numbers
|
---|
144 | D COMMA^%DTC
|
---|
145 | Q X
|
---|