1 | PSXBPSRP ;BHAM ISC/MFR - CMOP/ECME ACTIVITY REPORT ;09/01/2006
|
---|
2 | ;;2.0;CMOP;**63**;11 Apr 97;Build 8
|
---|
3 | ;External reference to ^PSRX( supported by IA #1221
|
---|
4 | ;External reference to ^PS(59 supported by IA #1976
|
---|
5 | ;External reference to ^PSOBPSUT supported by IA #4701
|
---|
6 | ;External reference to ^BPSUTIL supported by IA #4410
|
---|
7 | ;External reference to ^IBNCPDPI supported by IA #4729
|
---|
8 | ;
|
---|
9 | EN ; Entry Point
|
---|
10 | N %,%ZIS,EXCEL,STDT,TERM,ENDT,DIVDA,DIVNM,DTOUT,I,LINE,POP,VA,VAERR
|
---|
11 | N X,Y,ZTDESC,ZTIO,ZTQUEUED,ZTREQ,ZTRTN,ZTSAVE,ZTSK
|
---|
12 | ;
|
---|
13 | BDT ; - Prompt to select Date Range (Return: Start Date^End Date)
|
---|
14 | S X=$$SELDATE() I X="^" S POP=1 G EXIT
|
---|
15 | S STDT=$P(X,U),ENDT=$P(X,U,2)
|
---|
16 | ;
|
---|
17 | DIV ; - Get Division(s) (Return: DIVDA and DIVNM arrays)
|
---|
18 | D SELDIV I '$D(DIVNM) S POP=1 G EXIT
|
---|
19 | ;
|
---|
20 | EXC ;- Prompt for Excel Capture
|
---|
21 | S EXCEL=$$EXCEL^PSXBPSUT() I EXCEL="^" S POP=1 G EXIT
|
---|
22 | ;
|
---|
23 | DEV ; - Prompt for Device
|
---|
24 | W !! S %ZIS="MQ",%ZIS("A")="Select Printer: ",%ZIS("B")=""
|
---|
25 | D ^%ZIS I POP S POP=1 G EXIT
|
---|
26 | S TERM=$S($E($G(IOST),1,2)="C-":1,1:0)
|
---|
27 | I '$D(IO("Q")) G START
|
---|
28 | ;
|
---|
29 | QUE ; - Process queue device
|
---|
30 | S ZTSAVE("*")=""
|
---|
31 | S ZTRTN="START^PSXBPSRP"
|
---|
32 | S ZTDESC="CMOP/ECME Activity Report"
|
---|
33 | D ^%ZTLOAD
|
---|
34 | W !,$S($D(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
|
---|
35 | D HOME^%ZIS
|
---|
36 | S TERM=$S($E($G(IOST),1,2)="C-":1,1:0)
|
---|
37 | G EXIT
|
---|
38 | ;
|
---|
39 | ;Report Processing Tag
|
---|
40 | ;
|
---|
41 | START N BPFND,STDTE,ENDTE,LINE,POP,Y
|
---|
42 | S BPFND=0,LINE="W ! F I=1:1:80 W ""="""
|
---|
43 | U IO
|
---|
44 | ;
|
---|
45 | ;Excel Display - Print Header Record
|
---|
46 | I EXCEL D PLINEX
|
---|
47 | ;
|
---|
48 | S Y=STDT X ^DD("DD") S STDTE=Y
|
---|
49 | S Y=ENDT X ^DD("DD") S ENDTE=Y
|
---|
50 | ;
|
---|
51 | ;Loop through divisions and display
|
---|
52 | S DIVDA=0 F S DIVDA=$O(DIVDA(DIVDA)) Q:DIVDA'>0 D ONEDIV(.BPFND,STDTE,ENDTE) Q:$G(POP)
|
---|
53 | ;
|
---|
54 | ;Make sure a record was printed
|
---|
55 | I '$G(POP),BPFND=0 D
|
---|
56 | .I 'EXCEL D TITLE
|
---|
57 | .W !,"NO DATA FOUND FOR CHOSEN PARAMETERS"
|
---|
58 | .I TERM,'EXCEL D PAUSE2
|
---|
59 | ;
|
---|
60 | I '$G(POP),'EXCEL S POP=2
|
---|
61 | G EXIT
|
---|
62 | ;
|
---|
63 | ONEDIV(BPFND,STDTE,ENDTE) ; - Display information for one division
|
---|
64 | N %,PSXDT,TRX,PS,Y
|
---|
65 | S PSXDT=STDT-.1
|
---|
66 | F S PSXDT=$O(^PSX(550.2,"D",PSXDT)) Q:'PSXDT!(PSXDT>(ENDT+.24)) D Q:$G(POP)
|
---|
67 | .S (PS,TRX)=0 F S TRX=$O(^PSX(550.2,"D",PSXDT,TRX)) Q:'TRX D Q:$G(POP)
|
---|
68 | . . N TEMP,DATA
|
---|
69 | . . D GETS^DIQ(550.2,TRX,".01;1;2;3;5;6;7;8;9;10;13;14","","TEMP")
|
---|
70 | . . M DATA=TEMP(550.2,TRX_",")
|
---|
71 | . . I $G(DATA(.01))="" Q
|
---|
72 | ..I '$D(DIVNM(DATA(2))) Q
|
---|
73 | ..I DATA(2)'=DIVDA(DIVDA) Q
|
---|
74 | ..;
|
---|
75 | ..;Set flag that at least one record was found
|
---|
76 | ..S BPFND=1
|
---|
77 | ..;
|
---|
78 | ..;Display Transmission Information - Normal Display Only
|
---|
79 | ..I 'EXCEL D
|
---|
80 | ...D TITLE
|
---|
81 | ...W !!,?7,"TRANSMISSION:",?35,DATA(.01)
|
---|
82 | ...W !,?7,"STATUS:",?35,DATA(1)
|
---|
83 | ...W !,?7,"DIVISION:",?35,DATA(2)
|
---|
84 | ...W !,?7,"CMOP SYSTEM:",?35,DATA(3)
|
---|
85 | ...W !,?7,"TRANSMISSION DATE/TIME:",?35,DATA(5)
|
---|
86 | ...I DATA(6) W !,?7,"CREATED DATE/TIME:",?35,DATA(6)
|
---|
87 | ...I DATA(7) W !,?7,"RECEIVED DATE/TIME:",?35,DATA(7)
|
---|
88 | ...I DATA(8) W !,?7,"RETRANSMISSION #:",?35,DATA(8)
|
---|
89 | ...I DATA(9) W !,?7,"ORIGINAL TRANS.:",?35,DATA(9)
|
---|
90 | ...I DATA(10) W !,?7,"CLOSED DATE/TIME:",?35,DATA(10)
|
---|
91 | ...W !,?7,"TOTAL PATIENTS:",?35,DATA(13)
|
---|
92 | ...W !,?7,"TOTAL RXS:",?35,DATA(14)
|
---|
93 | ..;
|
---|
94 | ..;Display Records in Normal Format
|
---|
95 | ..I 'EXCEL D Q
|
---|
96 | ...S PS=$$PDET(TRX) Q:$G(POP)
|
---|
97 | ...I 'PS D CHKP(3) Q:$G(POP) D NDAT
|
---|
98 | ...I TERM,'EXCEL D PAUSE Q:$G(POP)
|
---|
99 | ..;
|
---|
100 | ..;Display Records in Excel Format
|
---|
101 | ..D PDETEX(TRX)
|
---|
102 | Q
|
---|
103 | ;
|
---|
104 | ;Display Record(s) - Normal Format
|
---|
105 | PDET(TRX) N BIEN,DFN,RFL,M,N,NDCR,NDCS,RXS,PS,RDT,RXI,VA
|
---|
106 | D PLINE
|
---|
107 | S (PS,RXS)=0 F S RXS=$O(^PSX(550.2,TRX,15,RXS)) Q:'RXS D Q:$G(POP)
|
---|
108 | .S RXI=+$$GET1^DIQ(550.215,RXS_","_TRX,".01","I")
|
---|
109 | .S RFL=+$$GET1^DIQ(550.215,RXS_","_TRX,".02","I")
|
---|
110 | .S DFN=+$$GET1^DIQ(550.215,RXS_","_TRX,".03","I")
|
---|
111 | .Q:$$STATUS^PSOBPSUT(RXI,RFL)=""
|
---|
112 | .D CHKP(2) Q:$G(POP)
|
---|
113 | .S PS=1 D PID^VADPT
|
---|
114 | .S BIEN=RXI_"."_$E($TR($J("",4-$L(RFL))," ","0")_RFL,1,4)_1
|
---|
115 | .S RDT=$S(RFL=0:$$GET1^DIQ(52,RXI,31,"I"),1:$$GET1^DIQ(52.1,RFL_","_RXI_",",17,"I"))
|
---|
116 | .W !,$E($$GET1^DIQ(2,DFN,.01),1,14)_" ("_$G(VA("BID"))_")"
|
---|
117 | .W ?22,RXI_"/"_$$GET1^DIQ(52,RXI,.01)_$S($G(^PSRX(RXI,"IB")):"$",1:"")_$$ECME^PSOBPSUT(RXI)_"/"_RFL
|
---|
118 | .S (NDCS,NDCR)="",(M,N)=0
|
---|
119 | .F S M=$O(^PSRX(RXI,4,M)) Q:'M S N=^(M,0) I $P(N,"^",3)=RFL S NDCR=$P(N,"^",8),NDCS=$P(N,"^",9)
|
---|
120 | .W ?45,$E(NDCS,1,13),?59,$E(NDCR,1,13),?73,$S(RDT:"DISPENS",1:"TRANSMI")
|
---|
121 | .W !,?3,$E($$GET1^DIQ(52,RXI,6),1,18),?22,$$BPSPLN^BPSUTIL(RXI,RFL)
|
---|
122 | .W ?38,$E($$STATUS^PSOBPSUT(RXI,RFL),1,7),?48,$P($$BILLINFO^IBNCPDPI(RXI,RFL),"^",1)
|
---|
123 | .W ?58,$S(RDT:$E(RDT,4,5)_"/"_$E(RDT,6,7)_"/"_$E(RDT,2,3),1:"")
|
---|
124 | Q PS
|
---|
125 | ;
|
---|
126 | ;Display Record(s) - Excel Format
|
---|
127 | PDETEX(TRX) N BIEN,DFN,RFL,M,N,NDCR,NDCS,RXS,PS,RDT,RXI,VA
|
---|
128 | S RXS=0 F S RXS=$O(^PSX(550.2,TRX,15,RXS)) Q:'RXS D
|
---|
129 | .S RXI=+$$GET1^DIQ(550.215,RXS_","_TRX,".01","I")
|
---|
130 | .S RFL=+$$GET1^DIQ(550.215,RXS_","_TRX,".02","I")
|
---|
131 | .S DFN=+$$GET1^DIQ(550.215,RXS_","_TRX,".03","I")
|
---|
132 | .Q:$$STATUS^PSOBPSUT(RXI,RFL)=""
|
---|
133 | .S PS=1 D PID^VADPT
|
---|
134 | .S BIEN=RXI_"."_$E($TR($J("",4-$L(RFL))," ","0")_RFL,1,4)_1
|
---|
135 | .S RDT=$S(RFL=0:$$GET1^DIQ(52,RXI,31,"I"),1:$$GET1^DIQ(52.1,RFL_","_RXI_",",17,"I"))
|
---|
136 | .W !,DATA(.01),U ;Transmission
|
---|
137 | .W DATA(1),U ;Status
|
---|
138 | .W DATA(2),U ;Division
|
---|
139 | .W DATA(3),U ;CMOP System
|
---|
140 | .W DATA(5),U ;Transmission Date/Time
|
---|
141 | .W $E($$GET1^DIQ(2,DFN,.01),1,14),U ;Name
|
---|
142 | .W "("_$G(VA("BID"))_")",U ;Pt.ID
|
---|
143 | .W RXI,U ;ECME#
|
---|
144 | .W $$GET1^DIQ(52,RXI,.01)_$S($G(^PSRX(RXI,"IB")):"$",1:"")_$$ECME^PSOBPSUT(RXI),U ;RX#
|
---|
145 | .W RFL,U ;RFL#
|
---|
146 | .N NDCS,NDCR,M,N S (NDCS,NDCR)="",(M,N)=0
|
---|
147 | .F S M=$O(^PSRX(RXI,4,M)) Q:'M S N=^(M,0) I $P(N,"^",3)=RFL S NDCR=$P(N,"^",8),NDCS=$P(N,"^",9)
|
---|
148 | .W $E(NDCS,1,13),U ;NDC SENT
|
---|
149 | .W $E(NDCR,1,13),U ;NDC RECVD
|
---|
150 | .W $S(RDT:"DISPENS",1:"TRANSMI"),U ;CMOP-STAT
|
---|
151 | .W $E($$GET1^DIQ(52,RXI,6),1,18),U ;DRUG
|
---|
152 | .W $$BPSPLN^BPSUTIL(RXI,RFL),U ;INSURANCE
|
---|
153 | .W $E($$STATUS^PSOBPSUT(RXI,RFL),1,7),U ;PAY-STAT
|
---|
154 | .W $P($$BILLINFO^IBNCPDPI(RXI,RFL),"^"),U ;BILL#
|
---|
155 | .W $S(RDT:$E(RDT,4,5)_"/"_$E(RDT,6,7)_"/"_$E(RDT,2,3),1:"") ;REL-DATE
|
---|
156 | Q
|
---|
157 | ;
|
---|
158 | ;- Display Header - Normal
|
---|
159 | PLINE W !,"NAME",?22,"ECME#/RX#/FL#",?45,"NDC SENT",?59,"NDC RECVD",?71,"CMOP-STAT"
|
---|
160 | W !," DRUG",?22,"INSURANCE",?38,"PAY-STAT",?48,"BILL#",?58,"REL-DATE"
|
---|
161 | X LINE
|
---|
162 | Q
|
---|
163 | ;
|
---|
164 | ;- Display Header - Excel
|
---|
165 | PLINEX W !,"TRANSMISSION",U,"STATUS",U,"DIVISION",U,"CMOP SYSTEM",U,"TRANSMISSION DATE/TIME",U
|
---|
166 | W "NAME",U,"Pt.ID",U,"ECME#",U,"RX#",U,"FL#",U,"NDC SENT",U,"NDC RECVD",U,"CMOP-STAT",U
|
---|
167 | W "DRUG",U,"INSURANCE",U,"PAY-STAT",U,"BILL#",U,"REL-DATE"
|
---|
168 | Q
|
---|
169 | ;
|
---|
170 | EXIT I '$G(POP) D PAUSE2
|
---|
171 | I $D(ZTQUEUED) S ZTREQ="@" Q
|
---|
172 | I $G(POP)'=1 D ^%ZISC
|
---|
173 | Q
|
---|
174 | ;
|
---|
175 | ;- Print message if no billable prescriptions
|
---|
176 | NDAT W !!,"********* BATCH HAS NO ECME BILLABLE PRESCRIPTIONS *******",!
|
---|
177 | Q
|
---|
178 | ;
|
---|
179 | TITLE W @IOF
|
---|
180 | W !,?25,"CMOP/ECME ACTIVITY REPORT "_$S($G(BPFND)=1:"for "_$E(DIVDA(DIVDA),1,24),1:"")
|
---|
181 | W !,"For ",STDTE," thru ",$P(ENDTE,"@"),?40,"Printed: ",$$FMTE^XLFDT($$NOW^XLFDT())
|
---|
182 | X LINE
|
---|
183 | Q
|
---|
184 | ;
|
---|
185 | CHKP(BPLINES) Q:$G(EXCEL)
|
---|
186 | S BPLINES=BPLINES+1
|
---|
187 | I $G(TERM) S BPLINES=BPLINES+2
|
---|
188 | I $Y>(IOSL-BPLINES) D:$G(TERM) PAUSE Q:$G(POP) D TITLE,PLINE Q
|
---|
189 | Q
|
---|
190 | ;
|
---|
191 | ; Enter Date Range
|
---|
192 | ;
|
---|
193 | ; Return Value -> P1^P2
|
---|
194 | ;
|
---|
195 | ; where P1 = From Date
|
---|
196 | ; = ^ Exit
|
---|
197 | ; P2 = To Date
|
---|
198 | ; = blank for Exit
|
---|
199 | ;
|
---|
200 | SELDATE() N DIR,DIRUT,DTOUT,DUOUT,VAL,X,Y
|
---|
201 | S VAL=""
|
---|
202 | S DIR(0)="DA",DIR("A")="ENTER BEGINNING TRANSMISSION DATE: "
|
---|
203 | D ^DIR
|
---|
204 | ;
|
---|
205 | ;Check for "^", timeout, or blank entry
|
---|
206 | I ($G(DUOUT)=1)!($G(DTOUT)=1)!($G(X)="") S VAL="^"
|
---|
207 | ;
|
---|
208 | I VAL="" D
|
---|
209 | .S $P(VAL,U)=Y
|
---|
210 | .S DIR(0)="DA^"_VAL,DIR("A")="ENTER ENDING TRANSMISSION DATE: "
|
---|
211 | .D ^DIR
|
---|
212 | .;
|
---|
213 | .;Check for "^", timeout, or blank entry
|
---|
214 | .I ($G(DUOUT)=1)!($G(DTOUT)=1)!($G(X)="") S VAL="^" Q
|
---|
215 | .;
|
---|
216 | .;Define Entry
|
---|
217 | .S $P(VAL,U,2)=Y
|
---|
218 | ;
|
---|
219 | Q VAL
|
---|
220 | ;
|
---|
221 | ;Select Divisions
|
---|
222 | ;
|
---|
223 | ; Returns Arrays -> DIVNM("names of divisions") = selection number
|
---|
224 | ; DIVDA("iens of divisions") = name of division
|
---|
225 | SELDIV N DIR,DIV,DIVX,DIRUT,DUOUT,DTOUT,I,X,Y
|
---|
226 | W !!,"SELECTION OF DIVISION(S)",!
|
---|
227 | S DIV="" F I=1:1 S DIV=$O(^PS(59,"B",DIV)) Q:DIV="" S DIVNM(I)=DIV,DIVNM(DIV)=I,DIVDA=$O(^PS(59,"B",DIV,0)),DIVNM(I,"I")=DIVDA
|
---|
228 | S I=I-1
|
---|
229 | K DIR S DIR(0)="S^A:ALL DIVISIONS;S:SELECT DIVISIONS"
|
---|
230 | ;
|
---|
231 | D ^DIR
|
---|
232 | ;
|
---|
233 | ;Check for "^", timeout, or blank entry
|
---|
234 | I ($G(DUOUT)=1)!($G(DTOUT)=1)!($G(Y)="^") K DIVNM Q
|
---|
235 | ;
|
---|
236 | ;All Divisions
|
---|
237 | I Y="A" D ALL Q
|
---|
238 | ;
|
---|
239 | ;Select Divisions
|
---|
240 | I Y="S" D SELECT(I),ALL
|
---|
241 | Q
|
---|
242 | ;
|
---|
243 | ;Select which divisions to display
|
---|
244 | SELECT(I) N C,DIR,DIVX,DIRUT,DUOUT,DTOUT,X,Y
|
---|
245 | F C=1:1:I S DIR("A",C)=C_" "_DIVNM(C)
|
---|
246 | S DIR(0)="LO^1:"_I,DIR("A")="Select Division(s) "
|
---|
247 | D ^DIR
|
---|
248 | ;
|
---|
249 | ;Check for "^", timeout, or blank entry
|
---|
250 | I ($G(DUOUT)=1)!($G(DTOUT)=1)!($G(Y)="^")!('+Y) K DIVNM Q
|
---|
251 | ;
|
---|
252 | M DIVX=DIVNM K DIVNM
|
---|
253 | F I=1:1 S X=$P(Y,",",I) Q:'X M DIVNM(X)=DIVX(X) S DIVNM=DIVX(X),DIVNM(DIVNM)=X
|
---|
254 | Q
|
---|
255 | ;
|
---|
256 | ;Display selected divisions
|
---|
257 | ALL N DA,DIR,DIV,DIRUT,DUOUT,DTOUT,X,Y
|
---|
258 | Q:'$D(DIVNM)
|
---|
259 | W !!,"You have selected:",! S DIV=0 F S DIV=$O(DIVNM(DIV)) Q:'DIV W !,DIV,?5,DIVNM(DIV)
|
---|
260 | S DIR(0)="Y",DIR("A")="Is this correct",DIR("B")="YES" D ^DIR
|
---|
261 | K DIR
|
---|
262 | I Y=1 S DIV=0 F S DIV=$O(DIVNM(DIV)) Q:'DIV S DA=DIVNM(DIV,"I"),DIVDA(DA)=DIVNM(DIV) K DIVNM(DIV)
|
---|
263 | ;
|
---|
264 | ;Check for "^", timeout, or non-yes entry
|
---|
265 | I ($G(DUOUT)=1)!($G(DTOUT)=1)!($G(Y)'=1) K DIVNM
|
---|
266 | Q
|
---|
267 | ;
|
---|
268 | ;Screen Pause 2
|
---|
269 | PAUSE2 Q:'$G(TERM)
|
---|
270 | N X
|
---|
271 | U IO(0) W !!,"Press RETURN to continue:"
|
---|
272 | R X:$G(DTIME)
|
---|
273 | U IO
|
---|
274 | Q
|
---|
275 | ;
|
---|
276 | ;Screen Pause 1
|
---|
277 | ;
|
---|
278 | ; Return variable - BPQ = 0 Continue
|
---|
279 | ; 2 Quit
|
---|
280 | PAUSE N X
|
---|
281 | U IO(0) W !!,"Press RETURN to continue, '^' to exit:"
|
---|
282 | R X:$G(DTIME) S:'$T X="^" S:X["^" POP=2
|
---|
283 | U IO
|
---|
284 | Q
|
---|