1 | PSOREJP1 ;BIRM/MFR - Third Party Reject Display Screen ;04/29/05
|
---|
2 | ;;7.0;OUTPATIENT PHARMACY;**148,247,260,281**;DEC 1997;Build 41
|
---|
3 | ;Reference to File 9002313.93 - BPS NCPDP REJECT CODES supported by IA 4720
|
---|
4 | ;Reference to ^PS(59.7 supported by IA 694
|
---|
5 | ;Reference to ^PSDRUG("AQ" supported by IA 3165
|
---|
6 | ;
|
---|
7 | EN(RX,REJ,CHANGE) ; Entry point
|
---|
8 | ;
|
---|
9 | ; - DO NOT change the IF logic below as both of them might get executed (intentional)
|
---|
10 | N FILL,LASTLN
|
---|
11 | S FILL=+$$GET1^DIQ(52.25,REJ_","_RX,5)
|
---|
12 | I $$CLOSED(RX,REJ) D EN^VALM("PSO REJECT DISPLAY - RESOLVED")
|
---|
13 | I '$$CLOSED(RX,REJ) D EN^VALM("PSO REJECT DISPLAY")
|
---|
14 | D FULL^VALM1
|
---|
15 | Q
|
---|
16 | ;
|
---|
17 | HDR ; - Builds the Header section
|
---|
18 | N LINE1,LINE2,X
|
---|
19 | S VALMHDR(1)=$$DVINFO^PSOREJU2(RX,FILL,1),VALMHDR(2)=$$PTINFO^PSOREJU2(RX,1)
|
---|
20 | S VALMHDR(3)=$$RXINFO(RX,FILL,1),VALMHDR(4)=$$RXINFO(RX,FILL,2)
|
---|
21 | Q
|
---|
22 | ;
|
---|
23 | INIT ; Builds the Body section
|
---|
24 | N DATA,LINE
|
---|
25 | F I=1:1:$G(LASTLN) D RESTORE^VALM10(I)
|
---|
26 | K ^TMP("PSOREJP1",$J) S VALMCNT=0,LINE=0
|
---|
27 | D GET^PSOREJU2(RX,FILL,.DATA,REJ,1)
|
---|
28 | D REJ ; Display REJECT Info
|
---|
29 | D OTH ; Display Other Rejects Info
|
---|
30 | D COM^PSOREJP3 ; Display Comment
|
---|
31 | D INS ; Display Insurance Info
|
---|
32 | D CLS ; Display Resolution Info
|
---|
33 | S VALMCNT=LINE
|
---|
34 | Q
|
---|
35 | ;
|
---|
36 | REJ ; - DUR Information
|
---|
37 | N TYPE,PFLDT
|
---|
38 | D SETLN("REJECT Information",1,1)
|
---|
39 | S TYPE=$S($G(DATA(REJ,"CODE"))=79:"79 - REFILL TOO SOON",1:"88 - DUR REJECT")
|
---|
40 | D SETLN("Reject Type : "_TYPE_" received on "_$$FMTE^XLFDT($G(DATA(REJ,"DATE/TIME"))),,,18)
|
---|
41 | D SETLN("Reject Status : "_$G(DATA(REJ,"STATUS")),,,18)
|
---|
42 | D SET("PAYER MESSAGE",63)
|
---|
43 | D SET("REASON",63)
|
---|
44 | S PFLDT=$$FMTE^XLFDT($G(DATA(REJ,"PLAN PREVIOUS FILL DATE")))
|
---|
45 | D SET("DUR TEXT",63,$S(PFLDT="":1,1:0))
|
---|
46 | I PFLDT'="" D SETLN("Last Fill Date : "_PFLDT_" (from payer)",,1,18)
|
---|
47 | Q
|
---|
48 | ;
|
---|
49 | OTH ; - Other Rejects Information
|
---|
50 | N LST,I,RJC,J,LAST
|
---|
51 | S LST=$G(DATA(REJ,"OTHER REJECTS")) I LST="" Q
|
---|
52 | D SETLN()
|
---|
53 | D SETLN("OTHER REJECTS",1,1)
|
---|
54 | F I=1:1:$L(LST,",") S RJC=$P(LST,",",I) D
|
---|
55 | . S LAST=1 F J=(I+1):1:$L(LST,",") I $P(LST,",",J)'="" S LAST=0 Q
|
---|
56 | . I RJC'="" D SETLN(RJC_" - "_$$EXP(RJC),,$S(LAST:1,1:0),6)
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | INS ; - Insurance Information
|
---|
60 | D SETLN()
|
---|
61 | D SETLN("INSURANCE Information",1,1)
|
---|
62 | D SETLN("Insurance : "_$G(DATA(REJ,"INSURANCE NAME")),,,18)
|
---|
63 | D SETLN("Contact : "_$G(DATA(REJ,"PLAN CONTACT")),,,18)
|
---|
64 | D SETLN("Group Name : "_$G(DATA(REJ,"GROUP NAME")),,,18)
|
---|
65 | D SETLN("Group Number : "_$G(DATA(REJ,"GROUP NUMBER")),,,18)
|
---|
66 | D SETLN("Cardholder ID : "_$G(DATA(REJ,"CARDHOLDER ID")),,1,18)
|
---|
67 | Q
|
---|
68 | ;
|
---|
69 | CLS ; - Resolution Information
|
---|
70 | N X
|
---|
71 | I '$$CLOSED(RX,REJ) Q
|
---|
72 | D SETLN()
|
---|
73 | D SETLN("RESOLUTION Information",1,1)
|
---|
74 | D SETLN("Resolved By : "_$G(DATA(REJ,"CLOSED BY")),,,18)
|
---|
75 | D SETLN("Date/Time : "_$G(DATA(REJ,"CLOSED DATE/TIME")),,,18)
|
---|
76 | I $G(DATA(REJ,"CLOSE COMMENTS"))'="" D SET("CLOSE COMMENTS",63)
|
---|
77 | I $G(DATA(REJ,"COD1"))'="" D SETLN("Reason for Svc : "_$$OVRX^PSOREJU1(1,$G(DATA(REJ,"COD1"))),,,18)
|
---|
78 | I $G(DATA(REJ,"COD2"))'="" D SETLN("Profes. Svc : "_$$OVRX^PSOREJU1(2,$G(DATA(REJ,"COD2"))),,,18)
|
---|
79 | I $G(DATA(REJ,"COD3"))'="" D SETLN("Result of Svc : "_$$OVRX^PSOREJU1(3,$G(DATA(REJ,"COD3"))),,,18)
|
---|
80 | I $G(DATA(REJ,"CLA CODE"))'="" D
|
---|
81 | . S X=$$GET1^DIQ(52.25,REJ_","_RX,24,"I")_" - "_(DATA(REJ,"CLA CODE"))
|
---|
82 | . D SETLN("Clarific. Code : "_X,,,18)
|
---|
83 | I $G(DATA(REJ,"PRIOR AUTH TYPE"))'="" D
|
---|
84 | . S X=$$GET1^DIQ(52.25,REJ_","_RX,25,"I")_" - "_(DATA(REJ,"PRIOR AUTH TYPE"))
|
---|
85 | . D SETLN("Prior Auth.Type: "_X,,,18),SETLN("Prior Auth. # : "_DATA(REJ,"PRIOR AUTH NUMBER"),,,18)
|
---|
86 | D SETLN("Reason : "_$G(DATA(REJ,"CLOSE REASON")),,1,18)
|
---|
87 | Q
|
---|
88 | ;
|
---|
89 | ;
|
---|
90 | SET(FIELD,L,UND) ; Sets the lines for fields that require text wrapping
|
---|
91 | N TXT,T
|
---|
92 | S TXT=DATA(REJ,FIELD) I $L(TXT)'>L D SETLN($$LABEL(FIELD)_TXT,,$S($G(UND):1,1:0),80-L) Q
|
---|
93 | F I=1:1 Q:TXT="" D
|
---|
94 | . I I=1 D SETLN($$LABEL(FIELD)_$E(TXT,1,L),,,80-L) S TXT=$E(TXT,L+1,999) Q
|
---|
95 | . S T="",$E(T,81-L)=$E(TXT,1,L) D SETLN(T,,$S($E(TXT,L+1,999)=""&$G(UND):1,1:0),80-L) S TXT=$E(TXT,L+1,999)
|
---|
96 | Q
|
---|
97 | ;
|
---|
98 | LABEL(FIELD) ; Sets the label for the field
|
---|
99 | I FIELD="REASON" Q "Reason : "
|
---|
100 | I FIELD="PAYER MESSAGE" Q "Payer Message : "
|
---|
101 | I FIELD="DUR TEXT" Q "DUR Text : "
|
---|
102 | I FIELD="CLOSE COMMENTS" Q "Comments : "
|
---|
103 | Q ""
|
---|
104 | ;
|
---|
105 | VIEW ; - Rx View hidden action
|
---|
106 | N VALMCNT,TITLE
|
---|
107 | I $G(PSOBACK) D Q
|
---|
108 | . S VALMSG="Not available through Backdoor!",VALMBCK="R"
|
---|
109 | S TITLE=VALM("TITLE")
|
---|
110 | ;
|
---|
111 | ; - DO structure used to avoid losing variables RX,FILL,REJ,LINE,TITLE
|
---|
112 | DO
|
---|
113 | . N PSOVDA,DA,PS
|
---|
114 | . S (PSOVDA,DA)=RX,PS="REJECT"
|
---|
115 | . N RX,REJ,FILL,LINE,TITLE D DP^PSORXVW
|
---|
116 | ;
|
---|
117 | S VALMBCK="R",VALM("TITLE")=TITLE
|
---|
118 | Q
|
---|
119 | ;
|
---|
120 | EDT ; - Rx Edit hidden action
|
---|
121 | N VALMCNT,TITLE
|
---|
122 | I $G(PSOBACK) D Q
|
---|
123 | . S VALMSG="Not available through Backdoor!",VALMBCK="R"
|
---|
124 | S TITLE=VALM("TITLE")
|
---|
125 | ;
|
---|
126 | ; - DO structure used to avoid losing variables RX,FILL,REJ,LINE,TITLE
|
---|
127 | DO
|
---|
128 | . N PSOSITE,ORN,PSOPAR,PSOLIST
|
---|
129 | . S PSOSITE=$$RXSITE^PSOBPSUT(RX,FILL),ORN=RX
|
---|
130 | . S PSOPAR=$G(^PS(59,PSOSITE,1)),PSOLIST(1)=ORN_","
|
---|
131 | . N RX,REJ,FILL,LINE,TITLE D EPH^PSORXEDT
|
---|
132 | ;
|
---|
133 | K VALMBCK I $$CLOSED(RX,REJ),$D(PSOSTFLT),PSOSTFLT="U" S CHANGE=1 Q
|
---|
134 | S VALMBCK="R",VALM("TITLE")=TITLE
|
---|
135 | Q
|
---|
136 | ;
|
---|
137 | OVR ; - Override a REJECT action
|
---|
138 | I $$CLOSED(RX,REJ,1) Q
|
---|
139 | N COD1,COD2,COD3
|
---|
140 | D FULL^VALM1 W !
|
---|
141 | S COD1=$$OVRCOD^PSOREJU1(1,$$GET1^DIQ(52.25,REJ_","_RX,14)) I COD1="^" S VALMBCK="R" Q
|
---|
142 | S COD2=$$OVRCOD^PSOREJU1(2) I COD2="^" S VALMBCK="R" Q
|
---|
143 | S COD3=$$OVRCOD^PSOREJU1(3) I COD3="^" S VALMBCK="R" Q
|
---|
144 | D OVRDSP^PSOREJU1(COD1_"^"_COD2_"^"_COD3)
|
---|
145 | D SEND(COD1,COD2,COD3)
|
---|
146 | Q
|
---|
147 | ;
|
---|
148 | RES ; - Re-submit a claim action
|
---|
149 | I $$CLOSED(RX,REJ,1) Q
|
---|
150 | D FULL^VALM1 W !
|
---|
151 | D SEND()
|
---|
152 | Q
|
---|
153 | ;
|
---|
154 | CLA ; - Submit Clarification Code
|
---|
155 | N CLA
|
---|
156 | I $$CLOSED(RX,REJ,1) Q
|
---|
157 | D FULL^VALM1 W !
|
---|
158 | S CLA=$$CLA^PSOREJU1() I CLA="^" S VALMBCK="R" Q
|
---|
159 | W ! D SEND(,,,CLA)
|
---|
160 | Q
|
---|
161 | ;
|
---|
162 | PA ; - Submit Prior Authorization
|
---|
163 | N PA
|
---|
164 | I $$CLOSED(RX,REJ,1) Q
|
---|
165 | D FULL^VALM1 W !
|
---|
166 | S PA=$$PA^PSOREJU2() I PA="^" S VALMBCK="R" Q
|
---|
167 | W ! D SEND(,,,,PA)
|
---|
168 | Q
|
---|
169 | ;
|
---|
170 | SEND(COD1,COD2,COD3,CLA,PA) ; - Sends Claim to ECME and closes Reject
|
---|
171 | N DIR,OVRC,RESP,ALTXT,COM
|
---|
172 | S DIR(0)="Y",DIR("A")=" Confirm",DIR("B")="YES"
|
---|
173 | S DIR("A",1)=" When you confirm, a new claim will be submitted for"
|
---|
174 | S DIR("A",2)=" the prescription and this REJECT will be marked"
|
---|
175 | S DIR("A",3)=" resolved."
|
---|
176 | S DIR("A",4)=" "
|
---|
177 | W ! D ^DIR I $G(Y)=0!$D(DIRUT) S VALMBCK="R" Q
|
---|
178 | I $G(COD1)'="" S OVRC=$G(COD2)_"^"_$G(COD1)_"^"_$G(COD3)
|
---|
179 | S ALTXT="REJECT WORKLIST"
|
---|
180 | S:$G(OVRC)'="" ALTXT=ALTXT_"-DUR OVERRIDE CODES("_$G(COD1)_"/"_$G(COD2)_"/"_$G(COD3)_")"
|
---|
181 | S:$G(CLA) ALTXT=ALTXT_"(CLARIF. CODE="_CLA_")"
|
---|
182 | S:$G(PA) ALTXT=ALTXT_"(PRIOR AUTH.="_$TR(PA,"^","/")_")"
|
---|
183 | D ECMESND^PSOBPSU1(RX,FILL,,"ED",$$GETNDC^PSONDCUT(RX,FILL),,,$G(OVRC),,.RESP,,ALTXT,$G(CLA),$G(PA))
|
---|
184 | I $G(RESP) D Q
|
---|
185 | . W !!?10,"Claim could not be submitted. Please try again later!"
|
---|
186 | . W !,?10,"Reason: ",$S($P(RESP,"^",2)="":"UNKNOWN",1:$P(RESP,"^",2)),$C(7) H 2
|
---|
187 | ;
|
---|
188 | I $$PTLBL^PSOREJP2(RX,FILL) D PRINT(RX,FILL)
|
---|
189 | ;
|
---|
190 | I $D(PSOSTFLT),PSOSTFLT'="B" S CHANGE=1
|
---|
191 | Q
|
---|
192 | ;
|
---|
193 | MP ; - Patient Medication Profile
|
---|
194 | I $G(PSOBACK) D Q
|
---|
195 | . S VALMSG="Not available through Backdoor!",VALMBCK="R"
|
---|
196 | N SITE,PATIENT
|
---|
197 | D FULL^VALM1 W !
|
---|
198 | S SITE=+$$RXSITE^PSOBPSUT(RX,FILL) S:$G(PSOSITE) SITE=PSOSITE
|
---|
199 | S PATIENT=+$$GET1^DIQ(52,RX,2,"I")
|
---|
200 | D LST^PSOPMP0(SITE,PATIENT) S VALMBCK="R"
|
---|
201 | Q
|
---|
202 | ;
|
---|
203 | EXIT ;
|
---|
204 | K ^TMP("PSOREJP1",$J)
|
---|
205 | Q
|
---|
206 | ;
|
---|
207 | SETLN(TEXT,REV,UND,HIG) ; Sets a line to be displayed in the Body section
|
---|
208 | N X
|
---|
209 | S:$G(TEXT)="" $E(TEXT,80)=""
|
---|
210 | S:$L(TEXT)>80 TEXT=$E(TEXT,1,80)
|
---|
211 | S LINE=LINE+1,^TMP("PSOREJP1",$J,LINE,0)=$G(TEXT)
|
---|
212 | ;
|
---|
213 | I LINE>$G(LASTLN) D SAVE^VALM10(LINE) S LASTLN=LINE
|
---|
214 | ;
|
---|
215 | I $G(REV) D Q
|
---|
216 | . D CNTRL^VALM10(LINE,1,$L(TEXT),IORVON,IOINORM)
|
---|
217 | . I $G(UND) D CNTRL^VALM10(LINE,$L(TEXT)+1,80,IOUON,IOINORM)
|
---|
218 | I $G(UND) D CNTRL^VALM10(LINE,1,80,IOUON,IOINORM)
|
---|
219 | I $G(HIG) D
|
---|
220 | . D CNTRL^VALM10(LINE,HIG,80,IOINHI_$S($G(UND):IOUON,1:""),IOINORM)
|
---|
221 | Q
|
---|
222 | HELP ;
|
---|
223 | Q
|
---|
224 | ;
|
---|
225 | RXINFO(RX,FILL,LINE) ; Returns header displayable Rx Information
|
---|
226 | N TXT,RXINFO,LBL,CMOP,DRG
|
---|
227 | I LINE=1 D
|
---|
228 | . S RXINFO="Rx# : "_$$GET1^DIQ(52,RX,.01)_"/"_FILL
|
---|
229 | . S $E(RXINFO,30)="ECME#: "_$E(10000000+RX,2,8)
|
---|
230 | . S $E(RXINFO,55)="Fill Date: "_$$FMTE^XLFDT($$RXFLDT^PSOBPSUT(RX,FILL))
|
---|
231 | I LINE=2 D
|
---|
232 | . S DRG=$$GET1^DIQ(52,RX,6,"I"),CMOP=$S($D(^PSDRUG("AQ",DRG)):1,1:0)
|
---|
233 | . S RXINFO=$S(CMOP:"CMOP ",1:"")_"Drug",$E(RXINFO,10)=": "_$E($$GET1^DIQ(52,RX,6),1,43)
|
---|
234 | . S $E(RXINFO,56)="NDC Code: "_$$GETNDC^PSONDCUT(RX,FILL)
|
---|
235 | Q $G(RXINFO)
|
---|
236 | ;
|
---|
237 | CLOSED(RX,REJ,MSG) ; Returns whether the REJECT is RESOLVED or NOT
|
---|
238 | I $$GET1^DIQ(52.25,REJ_","_RX,10,"I") D:$G(MSG) Q 1
|
---|
239 | . S VALMSG="This Reject is marked resolved!",VALMBCK="R" W $C(7)
|
---|
240 | Q 0
|
---|
241 | ;
|
---|
242 | REOPN(RX,REJ) ; Returns whether the REJECT was RE-OPENED or NOT
|
---|
243 | Q $S($$GET1^DIQ(52.25,REJ_","_RX,23)="":0,1:1)
|
---|
244 | ;
|
---|
245 | EXP(CODE) ; - Returns the explanation field (.02) for a reject code
|
---|
246 | ; Input: (r) CODE - .01 field (Code) value from file 9002313.93
|
---|
247 | ; Output: .02 field (Explanation) value from file 9002313.93
|
---|
248 | N DIC,X,Y
|
---|
249 | S DIC=9002313.93,DIC(0)="Z",X=CODE D ^DIC
|
---|
250 | Q $P($G(Y(0)),"^",2)
|
---|
251 | ;
|
---|
252 | OUT(RX) ; - Supported call by outside PROTOCOLs to act on specific REJECTs
|
---|
253 | N I,RFL,DATA,REJ,PSOBACK,VALMCNT,RXN
|
---|
254 | I '$D(^XUSEC("PSORPH",DUZ)) S VALMSG="PSORPH key required to use the REJ action.",VALMBCK="R" Q
|
---|
255 | I $G(PS)="REJECT" D Q
|
---|
256 | . S VALMSG="REJ action is not available at this point.",VALMBCK="R"
|
---|
257 | S PSOBACK=1
|
---|
258 | S (RFL,I)=0 F I=1:1 Q:'$D(^PSRX(RX,1,I)) S RFL=I
|
---|
259 | S X=$$FIND^PSOREJUT(RX,RFL,.DATA) S REJ=$O(DATA(""))
|
---|
260 | I '$G(REJ) S VALMSG="Invalid selection!",VALMBCK="R" Q
|
---|
261 | D EN(RX,REJ) S VALMBCK="R"
|
---|
262 | Q
|
---|
263 | ;
|
---|
264 | PRINT(RX,RFL) ; Print Label for specific Rx/Fill
|
---|
265 | N PPL,PSOSITE,PSOPAR,PSOSYS,PSOLAP,PSOBARS,PSOBAR0,PSOBAR1,PSOIOS,PSOBFLAG
|
---|
266 | N POP,DFN,PDUZ,RXFL
|
---|
267 | ;
|
---|
268 | S PSOSITE=$$RXSITE^PSOBPSUT(RX,RFL),PSOPAR=^PS(59,PSOSITE,1)
|
---|
269 | S DFN=$$GET1^DIQ(52,RX,2,"I"),PDUZ=DUZ,PSOSYS=$G(^PS(59.7,1,40.1))
|
---|
270 | S PPL=RX I RFL S RXFL(RX)=RFL
|
---|
271 | W ! S PSOBFLAG=1 D LBL^PSOLSET I $G(PSOQUIT) Q
|
---|
272 | ;
|
---|
273 | S IOP=PSOLAP D ^%ZIS,DQ^PSOLBL,^%ZISC
|
---|
274 | Q
|
---|