1 | RMPORMB ;HIN/RVD - Home Oxygen Monthly Billing Report ;12/13/99
|
---|
2 | ;;3.0;PROSTHETICS;**29,43,44,49,55**;Feb 09, 1996
|
---|
3 | ;ODJ - 5/17/00 - fix FCP problem (patch 49)
|
---|
4 | ; 5/25/00 - fix crash if FCP in ^RMPO(665.72) and not ^RMPR(669.9)
|
---|
5 | ; 5/31/00 - fix crash if FCP is null
|
---|
6 | ;
|
---|
7 | ;ODJ - 10/31/00 - patch 55 - fix problem where totals not being
|
---|
8 | ; displayed when page contains 16 pats.
|
---|
9 | START ;
|
---|
10 | K RQUIT,RSP,RCNT,RPAGE,RDASH,RPTDT,RSHODT,VA,VADM,DFN,RNAM,RMNADFN
|
---|
11 | K Y,RAMT,RLINE,ROVNDR,^TMP($J),RMEND,QUIT
|
---|
12 | ;
|
---|
13 | SITE ;Intialize site variables.
|
---|
14 | D HOSITE^RMPOUTL0 I '$D(RMPOXITE) Q
|
---|
15 | ;
|
---|
16 | FROM ; Get billing month
|
---|
17 | ; specify start/end site & bill month
|
---|
18 | D MONTH^RMPOBIL0() Q:'$D(RMPODATE)!QUIT
|
---|
19 | DEV S %ZIS="MQ" K IOP D ^%ZIS G:POP EXIT I '$D(IO("Q")) U IO G PROC
|
---|
20 | K IO("Q") S ZTDESC="HOME OXYGEN MONTHLY BILLING",ZTRTN="PROC^RMPORMB",ZTIO=IO,ZTSAVE("RMPODATE")="",ZTSAVE("RMPO(""STA"")")="",ZTSAVE("RMPOXITE")=""
|
---|
21 | S ZTSAVE("RMPO(""NAME"")")=""
|
---|
22 | D ^%ZTLOAD W:$D(ZTSK) !,"REQUEST QUEUED!" H 1 G EXIT
|
---|
23 | PROC ;
|
---|
24 | S (RPAGE,RMEND,RMPORPT,RVCNT,RPCNT,RVPRCNT)=0
|
---|
25 | S Y=RMPODATE D DD^%DT S RSHODT=Y
|
---|
26 | S $P(RSP," ",79)=" ",RCNT=0,$P(RDASH,"-",80)=""
|
---|
27 | D NOW^%DTC S Y=% X ^DD("DD")
|
---|
28 | S RPTDT=$P(Y,"@",1)_" "_$P($P(Y,"@",2),":",1,2)
|
---|
29 | F I="T9","TS","TO","SP",1,2,3 S RAMT(I)=0
|
---|
30 | K RFCPT S RFCPI=""
|
---|
31 | F S RFCPI=$O(^RMPR(669.9,RMPOXITE,"RMPOFCP","B",RFCPI)) Q:RFCPI="" D
|
---|
32 | . S RFCPIEN=$O(^RMPR(669.9,RMPOXITE,"RMPOFCP","B",RFCPI,0))
|
---|
33 | . S RPSASFLG=$P(^RMPR(669.9,RMPOXITE,"RMPOFCP",RFCPIEN,0),U,2)
|
---|
34 | . ;S RFCPT(RFCPI)=$S(+RFCPI=910:1,RPSASFLG="Y":2,1:3)
|
---|
35 | . ;p49 replaces above logic - if PSAS then col 1 else col 2
|
---|
36 | . S RFCPT(RFCPI)=$S(RPSASFLG="Y":1,1:2)
|
---|
37 | . Q
|
---|
38 | D LINE
|
---|
39 | D PRINT G:$G(RMEND) EXIT
|
---|
40 | I $E(IOST)["C",(RVCNT=1),(RVPRCNT=1) D ; if terminal
|
---|
41 | .K DIR S DIR("A")="Enter RETURN to continue or '^' to QUIT",DIR(0)="E"
|
---|
42 | .D ^DIR S:$G(X)[U RMEND=1
|
---|
43 | EXIT ;clean-up local variables and close device
|
---|
44 | D ^%ZISC K ^TMP($J)
|
---|
45 | N RMPR,RMPRSITE D KILL^XUSCLEAN
|
---|
46 | Q
|
---|
47 | ;
|
---|
48 | NAME ;Write out the name
|
---|
49 | S RLINE=RLINE_$E($P(RNAM,U,1)_RSP,1,14)
|
---|
50 | S RLINE=RLINE_$E($P(RNAM,U,2)_RSP,1,6)
|
---|
51 | Q
|
---|
52 | ;
|
---|
53 | LINE ;Process entire line (one for each patient)
|
---|
54 | W:$E(IOST)["C" "processing..."
|
---|
55 | F RV=0:0 S RV=$O(^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RV)) Q:RV'>0 D SETRV F RN=0:0 S RN=$O(^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RV,"V",RN)) Q:RN'>0 D
|
---|
56 | .K VA,VADM S DFN=RN D ^VADPT
|
---|
57 | .S RNAM=$E(VADM(1),1,12)_"^"_$P(VA("PID"),"-",3)
|
---|
58 | .S RACPT=$P(^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RV,"V",RN,0),U,2)
|
---|
59 | .S RPSTD=$P(^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RV,"V",RN,0),U,3)
|
---|
60 | .S RAMT(RV,1)=0,RAMT(RV,2)=0,RAMT(RV,3)=0,RAMT(RV,"SUSP")=0
|
---|
61 | .F RI=0:0 S RI=$O(^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RV,"V",RN,1,RI)) Q:RI'>0 D
|
---|
62 | ..S RD=^RMPO(665.72,RMPOXITE,1,RMPODATE,1,RV,"V",RN,1,RI,0)
|
---|
63 | ..S RCOST=$P(RD,U,5),RTOTAL=$P(RD,U,6),RFCP=$P(RD,U,3),RSUSP=$P(RD,U,11)
|
---|
64 | ..S:RFCP="" RFCP="???"
|
---|
65 | ..I '$D(RFCPT(RFCP)) S RFCPT(RFCP)=2 ;p49 fix problem where FCP not in site file ^RMPR(669.9) (use the OTHER col. in this case)
|
---|
66 | ..S RX=RFCPT(RFCP),RAMT(RV,RX)=$G(RAMT(RV,RX))+RTOTAL,RAMT(RV,"SUSP")=$G(RAMT(RV,"SUSP"))+RSUSP
|
---|
67 | .S RLINE=$S(RACPT="Y":"a",1:" ")_$S(RPSTD="Y":"#",RPSTD="P":"p",1:" ")
|
---|
68 | .S RLINE=$E(RLINE_RSP,1,4) D NAME
|
---|
69 | .S RLINE=RLINE_$E($P(^PRC(440,RV,0),U)_RSP,1,8)_" "
|
---|
70 | .S RMT1=$G(RAMT(RV,1))
|
---|
71 | .S RMT2=$G(RAMT(RV,2))
|
---|
72 | .S RMT3=$G(RAMT(RV,3))
|
---|
73 | .S RMTP=$G(RAMT(RV,"SUSP"))
|
---|
74 | .D AMTS(RMT1,RMT2,RMT3,RMTP)
|
---|
75 | .S RTMT(RV,"T9")=RTMT(RV,"T9")+RMT1,RTMT(RV,"TS")=RTMT(RV,"TS")+RMT2
|
---|
76 | .S RTMT(RV,"TO")=RTMT(RV,"TO")+RMT3,RTMT(RV,"SP")=RTMT(RV,"SP")+RMTP
|
---|
77 | .S RMNADFN=RNAM_"^"_RN,^TMP($J,RV,RMNADFN)=RLINE
|
---|
78 | Q
|
---|
79 | ;
|
---|
80 | PRINT ;print report
|
---|
81 | I '$D(^TMP($J)) W !,"***** No RECORDS to Print *****" Q
|
---|
82 | S (RVPRCNT,RPCNT,RCNT)=0
|
---|
83 | F RV=0:0 S RV=$O(^TMP($J,RV)) Q:RV'>0!($G(RMEND)) D RPTHDR S RN="" F S RN=$O(^TMP($J,RV,RN)) Q:$G(RMEND) D:RN="" DND Q:RN="" D
|
---|
84 | .W !,$G(^TMP($J,RV,RN)) S RPCNT=RPCNT+1,RCNT=RCNT+1 D:IOSL<(RCNT+9) PAGE Q:$G(RMEND)
|
---|
85 | D GTOTAL
|
---|
86 | Q
|
---|
87 | ;
|
---|
88 | SETRV ;
|
---|
89 | F I=1,2,3 S RAMT(RV,I)=0
|
---|
90 | F I="T9","TS","TO","SP" S RTMT(RV,I)=0
|
---|
91 | S RVCNT=RVCNT+1
|
---|
92 | Q
|
---|
93 | ;
|
---|
94 | AMTS(C,Y,Z,S) ; Amounts
|
---|
95 | S RLINE=RLINE_$E($$AMT(C)_RSP,1,9)
|
---|
96 | S RLINE=RLINE_$E($$AMT(Y)_RSP,1,9)
|
---|
97 | S RLINE=RLINE_$E($$AMT(Z)_RSP,1,9)
|
---|
98 | S RLINE=RLINE_$E($$AMT(S)_RSP,1,9)
|
---|
99 | S RLINE=RLINE_" "_$$AMT(C+Y+Z)
|
---|
100 | Q
|
---|
101 | AMT(C) ; Format Amounts
|
---|
102 | I C,C'["." S C=+C_".00"
|
---|
103 | I C?.N1"."1N S C=C_0
|
---|
104 | S:C=0 C="-" S C=$E(" ",1,8-$L(C))_C
|
---|
105 | Q C
|
---|
106 | ;
|
---|
107 | PAGE ;Print page
|
---|
108 | I $E(IOST)["C",IOSL<(RCNT+9) D ; if terminal
|
---|
109 | . K DIR S DIR("A")="Enter RETURN to continue or '^' to QUIT",DIR(0)="E"
|
---|
110 | . D ^DIR S:$G(X)[U RMEND=1
|
---|
111 | D:'$G(RMEND) RPTHDR
|
---|
112 | Q
|
---|
113 | RPTHDR ; Print out the report header
|
---|
114 | Q:$G(RMEND) K RA
|
---|
115 | S RA=RMPO("NAME"),RPAGE=RPAGE+1,RCNT=0
|
---|
116 | I $E(IOST)["C"!(RPAGE>1) W @IOF
|
---|
117 | W RPTDT,?(40-($L(RA)/2)),RA,?68,"Page: "_RPAGE
|
---|
118 | W !?15,RSHODT_" Monthly Home Oxygen Billing",!
|
---|
119 | W ?50,"Station",!?50,"Fund Control"
|
---|
120 | W !,"ACC",?4,"Name",?18,"SSN",?24,"Vendor"
|
---|
121 | W ?37,"910 Point Other Susp Total"
|
---|
122 | W !,RDASH
|
---|
123 | Q
|
---|
124 | ;
|
---|
125 | DND ; Print REPORT totals
|
---|
126 | Q:$G(RMEND) K RA
|
---|
127 | S RLINE=" ",RA=RTMT(RV,"T9")+RTMT(RV,"TS")+RTMT(RV,"TO")-RTMT(RV,"SP")
|
---|
128 | I RA D
|
---|
129 | . S RMTT9=RTMT(RV,"T9"),RMTTS=RTMT(RV,"TS"),RMTTO=RTMT(RV,"TO")
|
---|
130 | . S RMTSP=RTMT(RV,"SP")
|
---|
131 | . D AMTS(RMTT9,RMTTS,RMTTO,RMTSP)
|
---|
132 | . W !,?20,"Totals: ",RLINE
|
---|
133 | S RPCNT=$E(" ",1,(6-$L(RPCNT)))_RPCNT
|
---|
134 | W !!,?30,"Total Patients: ",RPCNT
|
---|
135 | S RVPRCNT=RVPRCNT+1,RPCNT=0
|
---|
136 | I $E(IOST)["C",(RVCNT'=RVPRCNT) D ; if terminal
|
---|
137 | .K DIR S DIR("A")="Enter RETURN to continue or '^' to QUIT",DIR(0)="E"
|
---|
138 | .D ^DIR S:$G(X)[U RMEND=1
|
---|
139 | Q
|
---|
140 | ;
|
---|
141 | GTOTAL ; Print REPORT totals for all VENDORS.
|
---|
142 | Q:$G(RMEND) K RA
|
---|
143 | ;S RLINE=" ",RA=RTMT(RV,"T9")+RTMT(RV,"TS")+RTMT(RV,"TO")-RTMT(RV,"SP")
|
---|
144 | S RLINE=" "
|
---|
145 | S (RMTT9,RMTTS,RMTTO,RMTSP)=0
|
---|
146 | I RVCNT>1 D
|
---|
147 | .F RI=0:0 S RI=$O(RTMT(RI)) Q:RI'>0 D
|
---|
148 | .. S RMTT9=RMTT9+RTMT(RI,"T9"),RMTTS=RMTTS+RTMT(RI,"TS"),RMTTO=RMTTO+RTMT(RI,"TO")
|
---|
149 | .. S RMTSP=RMTSP+RTMT(RI,"SP")
|
---|
150 | .D AMTS(RMTT9,RMTTS,RMTTO,RMTSP)
|
---|
151 | .W !!,?14,"Grand Totals: ",RLINE,!
|
---|
152 | .I $E(IOST)["C" D ; if terminal
|
---|
153 | ..K DIR S DIR("A")="Enter RETURN to continue or '^' to QUIT",DIR(0)="E"
|
---|
154 | ..D ^DIR S:$G(X)[U RMEND=1
|
---|
155 | Q
|
---|