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