| 1 | FBAAMST ;WCIOFO/SAB-MST REPORT ;6/12/2001 | 
|---|
| 2 | ;;3.5;FEE BASIS;**30**;JAN 30, 1995 | 
|---|
| 3 | ; | 
|---|
| 4 | ; locate POV for MST | 
|---|
| 5 | S FBPOV=$$POV^FBAAUTL3("55") | 
|---|
| 6 | I FBPOV'>0 D  G EXIT | 
|---|
| 7 | . W $C(7),!,"Purpose of Visit Code 55 (MST) not found.  Can't print the MST report." | 
|---|
| 8 | ; | 
|---|
| 9 | ; ask dates | 
|---|
| 10 | S DIR(0)="D^::EX",DIR("A")="From Date" | 
|---|
| 11 | ;   default from date is first day of previous month | 
|---|
| 12 | S DIR("B")=$$FMTE^XLFDT($E($$FMADD^XLFDT($E(DT,1,5)_"01",-1),1,5)_"01") | 
|---|
| 13 | D ^DIR K DIR G:$D(DIRUT) EXIT | 
|---|
| 14 | S FBDT1=Y | 
|---|
| 15 | S DIR(0)="DA^"_FBDT1_"::EX",DIR("A")="To Date: " | 
|---|
| 16 | ;   default to date is last day of specified month | 
|---|
| 17 | S X=FBDT1 D DAYS^FBAAUTL1 | 
|---|
| 18 | S DIR("B")=$$FMTE^XLFDT($E(FBDT1,1,5)_X) | 
|---|
| 19 | D ^DIR K DIR G:$D(DIRUT) EXIT | 
|---|
| 20 | S FBDT2=Y | 
|---|
| 21 | ; | 
|---|
| 22 | ; ask if summary or detail | 
|---|
| 23 | S DIR(0)="S^S:Summary;D:Detail" | 
|---|
| 24 | S DIR("A")="Summary or Detail Output",DIR("B")="Summary" | 
|---|
| 25 | S DIR("?",1)="Enter D to print veteran, authorization, and payment details." | 
|---|
| 26 | S DIR("?",2)="Enter S to just print a report summary." | 
|---|
| 27 | S DIR("?")="Enter a code from the list." | 
|---|
| 28 | D ^DIR K DIR G:$D(DIRUT) EXIT | 
|---|
| 29 | S FBDETAIL=$S(Y="D":1,1:0) | 
|---|
| 30 | ; | 
|---|
| 31 | ; ask device | 
|---|
| 32 | S %ZIS="QM" D ^%ZIS G:POP EXIT | 
|---|
| 33 | I $D(IO("Q")) D  G EXIT | 
|---|
| 34 | . S ZTRTN="QEN^FBAAMST",ZTDESC="MST Report" | 
|---|
| 35 | . F FBX="FBPOV","FBDT*","FBDETAIL" S ZTSAVE(FBX)="" | 
|---|
| 36 | . D ^%ZTLOAD,HOME^%ZIS K ZTSK | 
|---|
| 37 | ; | 
|---|
| 38 | QEN ; queued entry | 
|---|
| 39 | U IO | 
|---|
| 40 | ; | 
|---|
| 41 | GATHER ; collect and sort data | 
|---|
| 42 | K ^TMP($J) | 
|---|
| 43 | ; initialize totals | 
|---|
| 44 | F I="PATIENT","VISIT","AMTPAID" F J="F","M","U","T" S FBT(I,J)=0 | 
|---|
| 45 | ; | 
|---|
| 46 | S FBQUIT=0 | 
|---|
| 47 | ; loop thru Fee Basis Patients | 
|---|
| 48 | S FBC=0 | 
|---|
| 49 | S FBDFN=0 F  S FBDFN=$O(^FBAAA(FBDFN)) Q:'FBDFN  D  Q:FBQUIT | 
|---|
| 50 | . S FBC=FBC+1 | 
|---|
| 51 | . I $D(ZTQUEUED),FBC\1000,$$S^%ZTLOAD S ZTSTOP=1,FBQUIT=1 Q | 
|---|
| 52 | . ; | 
|---|
| 53 | . ; search for MST authoriztions that match criteron | 
|---|
| 54 | . S FBFNDAUT=0 ; init flag, true if 1 or more MST authorizations | 
|---|
| 55 | . ; loop thru authorizations | 
|---|
| 56 | . S FBAU=0 F  S FBAU=$O(^FBAAA(FBDFN,1,FBAU)) Q:'FBAU  D | 
|---|
| 57 | . . S FBA=$G(^FBAAA(FBDFN,1,FBAU,0)) | 
|---|
| 58 | . . Q:$P($G(^FBAAA(FBDFN,1,FBAU,"ADEL")),U)  ; austin deleted | 
|---|
| 59 | . . Q:$P(FBA,U,7)'=FBPOV  ; not MST purpose of visit | 
|---|
| 60 | . . ; ensure authorization is not outside the period of interest | 
|---|
| 61 | . . Q:$P(FBA,U)>FBDT2  ; auth from date after specified rpt end | 
|---|
| 62 | . . Q:$P(FBA,U,2)<FBDT1  ; auth to date before specified rpt begin | 
|---|
| 63 | . . ; passed all criteria | 
|---|
| 64 | . . I 'FBFNDAUT D | 
|---|
| 65 | . . . ; this is the first MST authorization selected for patient | 
|---|
| 66 | . . . ; get patient name | 
|---|
| 67 | . . . S FBPNAME=$$GET1^DIQ(161,FBDFN,.01) | 
|---|
| 68 | . . . S:FBPNAME="" FBPNAME="UNKNOWN" | 
|---|
| 69 | . . . ; get gender | 
|---|
| 70 | . . . S DFN=FBDFN K VAPTYP,VAHOW,VAROOT D DEM^VADPT | 
|---|
| 71 | . . . S FBGEN=$P(VADM(5),U) ; gender internal value | 
|---|
| 72 | . . . S FBSSN=$P(VADM(2),U,2) ; SSN external value | 
|---|
| 73 | . . . I "^F^M^"'[(U_FBGEN_U) S FBGEN="U" | 
|---|
| 74 | . . . ; increment count of unique patients | 
|---|
| 75 | . . . S FBT("PATIENT",FBGEN)=FBT("PATIENT",FBGEN)+1 | 
|---|
| 76 | . . . S ^TMP($J,"FBA",FBPNAME_U_FBDFN)=FBSSN_U_FBGEN | 
|---|
| 77 | . . . S FBFNDAUT=1 ; note that a MST authorization was found for patient | 
|---|
| 78 | . . . D KVA^VADPT ; clean up patient demographics | 
|---|
| 79 | . . ; save authorization by patient name^dfn,auth to date^auth ien | 
|---|
| 80 | . . S ^TMP($J,"FBA",FBPNAME_U_FBDFN,$P(FBA,U,2)_U_FBAU)=FBA | 
|---|
| 81 | . ; | 
|---|
| 82 | . ; look for payments related to the selected patient authorizations | 
|---|
| 83 | . Q:'FBFNDAUT  ; no selected MST authorizations for patient | 
|---|
| 84 | . ; loop thru vendor multiple | 
|---|
| 85 | . S FBV=0 F  S FBV=$O(^FBAAC(FBDFN,1,FBV)) Q:'FBV  D | 
|---|
| 86 | . . ; loop thru initial treatment date multiple | 
|---|
| 87 | . . S FBTDI=0 F  S FBTDI=$O(^FBAAC(FBDFN,1,FBV,1,FBTDI)) Q:'FBTDI  D | 
|---|
| 88 | . . . S FBY2=$G(^FBAAC(FBDFN,1,FBV,1,FBTDI,0)) | 
|---|
| 89 | . . . Q:$P(FBY2,U)<FBDT1  ; date of service prior to report start | 
|---|
| 90 | . . . Q:$P(FBY2,U)>FBDT2  ; date of service after report end | 
|---|
| 91 | . . . S FBATO=$P($G(^FBAAA(FBDFN,1,$P(FBY2,U,4),0)),U,2) ; auth to date | 
|---|
| 92 | . . . Q:'$D(^TMP($J,"FBA",FBPNAME_U_FBDFN,FBATO_U_$P(FBY2,U,4)))  ; not one of the selected authorizations | 
|---|
| 93 | . . . ; loop thru service provided multiple | 
|---|
| 94 | . . . S FBSPI=0 | 
|---|
| 95 | . . . F  S FBSPI=$O(^FBAAC(FBDFN,1,FBV,1,FBTDI,1,FBSPI)) Q:'FBSPI  D | 
|---|
| 96 | . . . . S FBY3=$G(^FBAAC(FBDFN,1,FBV,1,FBTDI,1,FBSPI,0)) | 
|---|
| 97 | . . . . Q:$P(FBY3,U,6)=""  ; not finalized | 
|---|
| 98 | . . . . S ^TMP($J,"FBA",FBPNAME_U_FBDFN,FBATO_U_$P(FBY2,U,4),$P(FBY2,U)_U_FBSPI_","_FBTDI_","_FBV_","_FBDFN_",")="" | 
|---|
| 99 | . . . . S FBT("AMTPAID",FBGEN)=FBT("AMTPAID",FBGEN)+$P(FBY3,U,3) | 
|---|
| 100 | . . . . I '$D(^TMP($J,"FBV",FBDFN,$P(FBY2,U))) D | 
|---|
| 101 | . . . . . ; new visit | 
|---|
| 102 | . . . . . S FBT("VISIT",FBGEN)=FBT("VISIT",FBGEN)+1 | 
|---|
| 103 | . . . . . S ^TMP($J,"FBV",FBDFN,$P(FBY2,U))="" | 
|---|
| 104 | ; | 
|---|
| 105 | PRINT ; report data | 
|---|
| 106 | S FBPG=0 D NOW^%DTC S Y=% D DD^%DT S FBDTR=Y | 
|---|
| 107 | K FBDL S FBDL="",$P(FBDL,"-",IOM)="" | 
|---|
| 108 | ; | 
|---|
| 109 | ; build page header text for selection criteria | 
|---|
| 110 | K FBHDT | 
|---|
| 111 | S FBHDT(1)="  For "_$$FMTE^XLFDT(FBDT1)_" through "_$$FMTE^XLFDT(FBDT2) | 
|---|
| 112 | ; | 
|---|
| 113 | ; | 
|---|
| 114 | D HD | 
|---|
| 115 | I 'FBQUIT,'$D(^TMP($J)) W !,"No MST authorizations found during period." | 
|---|
| 116 | I 'FBQUIT,FBDETAIL D | 
|---|
| 117 | . ; loop thru veterans | 
|---|
| 118 | . S FBPAT="" | 
|---|
| 119 | . F  S FBPAT=$O(^TMP($J,"FBA",FBPAT)) Q:FBPAT=""  D  Q:FBQUIT | 
|---|
| 120 | . . S FBPNAME=$P(FBPAT,U) | 
|---|
| 121 | . . S FBDFN=$P(FBPAT,U,2) | 
|---|
| 122 | . . S FBX=$G(^TMP($J,"FBA",FBPAT)) | 
|---|
| 123 | . . W !!,FBPNAME,?40,"Patient ID: ",$P(FBX,U),?67,"Gender: ",$P(FBX,U,2) | 
|---|
| 124 | . . ; loop thru authorizations | 
|---|
| 125 | . . S FBAUT="" | 
|---|
| 126 | . . F  S FBAUT=$O(^TMP($J,"FBA",FBPAT,FBAUT)) Q:FBAUT=""  D  Q:FBQUIT | 
|---|
| 127 | . . . S FBAU=$P(FBAUT,U,2) | 
|---|
| 128 | . . . S FBA=^TMP($J,"FBA",FBPAT,FBAUT) | 
|---|
| 129 | . . . I $Y+9>IOSL D HD Q:FBQUIT  D HDPAT | 
|---|
| 130 | . . . W !!,?2,"Authorization #: ",FBDFN,"-",FBAU | 
|---|
| 131 | . . . W ?32,"FR: ",$$FMTE^XLFDT($P(FBA,U),"2DF") | 
|---|
| 132 | . . . W ?47,"TO: ",$$FMTE^XLFDT($P(FBA,U,2),"2DF") | 
|---|
| 133 | . . . ; loop thru payments | 
|---|
| 134 | . . . I $O(^TMP($J,"FBA",FBPAT,FBAUT,""))']"" W !!,?4,"No finalized payments on file." | 
|---|
| 135 | . . . E  S FBPAY="" F  S FBPAY=$O(^TMP($J,"FBA",FBPAT,FBAUT,FBPAY)) Q:FBPAY=""  D  Q:FBQUIT | 
|---|
| 136 | . . . . S FBIENS=$P(FBPAY,U,2) | 
|---|
| 137 | . . . . S FBV=$P(FBIENS,",",3) | 
|---|
| 138 | . . . . S FBTDI=$P(FBIENS,",",2) | 
|---|
| 139 | . . . . S FBSPI=$P(FBIENS,",",1) | 
|---|
| 140 | . . . . S FBVY=$S(FBV:$G(^FBAAV(FBV,0)),1:"") | 
|---|
| 141 | . . . . S FBAACPT=$$GET1^DIQ(162.03,FBIENS,.01) | 
|---|
| 142 | . . . . S FBMODLE=$$MODL^FBAAUTL4("^FBAAC("_FBDFN_",1,"_FBV_",1,"_FBTDI_",1,"_FBSPI_",""M"")","E") | 
|---|
| 143 | . . . . I $Y+7>IOSL D HD Q:FBQUIT  D HDPAT,HDAUT | 
|---|
| 144 | . . . . W !!,?4,"Svc Date: ",$$FMTE^XLFDT($P(FBPAY,U),"2DF") | 
|---|
| 145 | . . . . W ?24,"CPT-MOD: " | 
|---|
| 146 | . . . . W FBAACPT_$S($G(FBMODLE)]"":"-"_$P(FBMODLE,","),1:"") | 
|---|
| 147 | . . . . W ?43,"DIAG: ",$$GET1^DIQ(162.03,FBIENS,28) | 
|---|
| 148 | . . . . W ?58,"AMT PAID: ",$J($$GET1^DIQ(162.03,FBIENS,2,"I"),9,2) | 
|---|
| 149 | . . . . I $P($G(FBMODLE),",",2)]"" D  Q:FBQUIT | 
|---|
| 150 | . . . . . N FBI,FBMOD | 
|---|
| 151 | . . . . . F FBI=2:1 S FBMOD=$P(FBMODLE,",",FBI) Q:FBMOD=""  D  Q:FBQUIT | 
|---|
| 152 | . . . . . . I $Y+4>IOSL D HD Q:FBQUIT  D HDPAT,HDAUT | 
|---|
| 153 | . . . . . . W !,?38,"-",FBMOD | 
|---|
| 154 | . . . . W !,?4,"Vendor: ",$E($P(FBVY,U),1,30) | 
|---|
| 155 | . . . . W ?44,"Vendor ID: ",$P(FBVY,U,2) | 
|---|
| 156 | ; | 
|---|
| 157 | I FBQUIT W !!,"REPORT STOPPED AT USER REQUEST" | 
|---|
| 158 | E  D RSUM | 
|---|
| 159 | ; | 
|---|
| 160 | I 'FBQUIT,$E(IOST,1,2)="C-" S DIR(0)="E" D ^DIR K DIR | 
|---|
| 161 | D ^%ZISC | 
|---|
| 162 | ; | 
|---|
| 163 | EXIT ; | 
|---|
| 164 | I $D(ZTQUEUED) S ZTREQ="@" | 
|---|
| 165 | K ^TMP($J) | 
|---|
| 166 | K FBA,FBAACPT,FBATO,FBAU,FBAUT,FBC,FBDETAIL,FBDFN,FBDL,FBDT1,FBDT2 | 
|---|
| 167 | K FBDTR,FBFNDAUT,FBGEN,FBHDT,FBI,FBIENS,FBMODLE,FBPAT,FBPAY,FBPG | 
|---|
| 168 | K FBPNAME,FBPOV,FBSPI,FBT,FBTDI,FBSSN,FBQUIT,FBV,FBVY,FBX,FBY2,FBY3 | 
|---|
| 169 | K %,DFN,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,I,J,POP,X,Y | 
|---|
| 170 | Q | 
|---|
| 171 | HD ; page header | 
|---|
| 172 | N FBI | 
|---|
| 173 | I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1,FBQUIT=1 Q | 
|---|
| 174 | I $E(IOST,1,2)="C-",FBPG S DIR(0)="E" D ^DIR K DIR I 'Y S FBQUIT=1 Q | 
|---|
| 175 | I $E(IOST,1,2)="C-"!FBPG W @IOF | 
|---|
| 176 | S FBPG=FBPG+1 | 
|---|
| 177 | W !,"MST "_$S(FBDETAIL:"Detailed",1:"Summary")_" Report" | 
|---|
| 178 | W ?49,FBDTR,?72,"page ",FBPG | 
|---|
| 179 | S FBI=0 F  S FBI=$O(FBHDT(FBI)) Q:'FBI  W !,FBHDT(FBI) | 
|---|
| 180 | W !,FBDL | 
|---|
| 181 | Q | 
|---|
| 182 | HDPAT ; page header for continued Patient | 
|---|
| 183 | W !,"Patient: ",FBPNAME," (continued)" | 
|---|
| 184 | Q | 
|---|
| 185 | HDAUT ; page header for continued Authorization | 
|---|
| 186 | W !,"  Authorization: ",FBDFN,"-",FBAU," (continued)" | 
|---|
| 187 | Q | 
|---|
| 188 | RSUM ; report summary | 
|---|
| 189 | I $Y+14>IOSL D HD Q:FBQUIT | 
|---|
| 190 | W !!,"REPORT SUMMARY" | 
|---|
| 191 | W !!,"Gender",?8,"# Unique",?18,"# Visits" | 
|---|
| 192 | W ?28,"    Total",?44,"Average Paid",?58,"Average Paid" | 
|---|
| 193 | W !,?8,"Patients" | 
|---|
| 194 | W ?28,"   Payments",?44," Per Patient",?58,"  Per Visit" | 
|---|
| 195 | W !,"------",?8,"--------",?18,"--------" | 
|---|
| 196 | W ?28,"--------------",?44,"------------",?58,"------------" | 
|---|
| 197 | F I="F","M","U" D RSUML(I) | 
|---|
| 198 | W !,?8,"--------",?18,"--------" | 
|---|
| 199 | W ?28,"--------------",?44,"------------",?58,"------------" | 
|---|
| 200 | D RSUML("T") | 
|---|
| 201 | I $Y+8>IOSL D HD Q:FBQUIT | 
|---|
| 202 | W !!,"Notes:  (1) # Unique Patients represents patients having one or more MST" | 
|---|
| 203 | W !,"            authorizations that overlap the period being reported." | 
|---|
| 204 | W !,"        (2) # Visits and Total Payments are obtained from any finalized" | 
|---|
| 205 | W !,"            payment(s) that are linked to the MST authorizations and have a" | 
|---|
| 206 | W !,"            date of service within the period being reported." | 
|---|
| 207 | Q | 
|---|
| 208 | RSUML(FBI) ; report summary number line | 
|---|
| 209 | N FBTX | 
|---|
| 210 | S FBTX=$S(FBI="F":"Female",FBI="M":"Male",FBI="U":"Unspec.",1:"Total") | 
|---|
| 211 | I FBI="U",FBT("PATIENT",FBI)'>0 Q | 
|---|
| 212 | I "^F^M^U^"[(U_FBI_U) F I="PATIENT","VISIT","AMTPAID" S FBT(I,"T")=FBT(I,"T")+FBT(I,FBI) | 
|---|
| 213 | W !,FBTX,?8,$J($FN(FBT("PATIENT",FBI),","),8) | 
|---|
| 214 | W ?18,$J($FN(FBT("VISIT",FBI),","),8) | 
|---|
| 215 | W ?28,$J($FN(FBT("AMTPAID",FBI),",",2),14) | 
|---|
| 216 | I FBT("PATIENT",FBI)>0 W ?44,$J($FN(FBT("AMTPAID",FBI)/FBT("PATIENT",FBI),",",2),12) | 
|---|
| 217 | I FBT("VISIT",FBI)>0 W ?58,$J($FN(FBT("AMTPAID",FBI)/FBT("VISIT",FBI),",",2),12) | 
|---|
| 218 | Q | 
|---|
| 219 | ; | 
|---|
| 220 | ;FBAAMST | 
|---|