| 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 | 
|---|