| [613] | 1 | PSOREJU2 ;BIRM/MFR - BPS (ECME) - Clinical Rejects Utilities (1) ;10/15/04
 | 
|---|
 | 2 |  ;;7.0;OUTPATIENT PHARMACY;**148,260**;DEC 1997;Build 84
 | 
|---|
 | 3 |  ;Reference to $$NABP^BPSBUTL supported by IA 4719
 | 
|---|
 | 4 |  ;Reference to File 9002313.23 - BPS NCPDP REASON FOR SERVICE CODE supported by IA 4714
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | GET(RX,RFL,REJDATA,REJID,OKCL,CODE) ;
 | 
|---|
 | 7 |  ; Input:  (r) RX  - Rx IEN (#52) 
 | 
|---|
 | 8 |  ;         (o) RFL - Refill # (Default: most recent)
 | 
|---|
 | 9 |  ;         (r) REJDATA(REJECT IEN,FIELD) - Array where these Reject fields will be returned:
 | 
|---|
 | 10 |  ;                       "CODE" - Reject Code (79 or 88)
 | 
|---|
 | 11 |  ;                       "DATE/TIME" - DATE/TIME Reject was detected
 | 
|---|
 | 12 |  ;                       "PAYER MESSAGE" - Message returned by the payer
 | 
|---|
 | 13 |  ;                       "REASON" - Reject Reason description (from payer)
 | 
|---|
 | 14 |  ;                       "INSURANCE NAME" - Patient's Insurance Company Name
 | 
|---|
 | 15 |  ;                       "GROUP NAME" - Patient's Insurance Group Name
 | 
|---|
 | 16 |  ;                       "GROUP NUMBER" - Patient's Insurance Group Number
 | 
|---|
 | 17 |  ;                       "CARDHOLDER ID" - Patient's Insurance Cardholder ID
 | 
|---|
 | 18 |  ;                       "PLAN CONTACT" - Plan's Contact (eg., "1-800-...")
 | 
|---|
 | 19 |  ;                       "PLAN PREVIOUS FILL DATE" - Last time Rx was paid by payer
 | 
|---|
 | 20 |  ;                       "STATUS" - REJECTS status ("OPEN/UNRESOLVED" or "CLOSED/RESOLVED")
 | 
|---|
 | 21 |  ;                       "DUR TEXT" - Payer's DUR description
 | 
|---|
 | 22 |  ;                       "OTHER REJECTS" - Other Rejects on the same response
 | 
|---|
 | 23 |  ;                       "REASON SVC CODE" - Reason for Service Code
 | 
|---|
 | 24 |  ;                  If REJECT is closed, the following fields will be returned:
 | 
|---|
 | 25 |  ;                       "CLA CODE" - Clarification Code submitted
 | 
|---|
 | 26 |  ;                       "PRIOR AUTH TYPE" - Prior Authorization Type
 | 
|---|
 | 27 |  ;                       "PRIOR AUTH NUMBER" - Prior Authorization Type
 | 
|---|
 | 28 |  ;                       "CLOSED DATE/TIME" - DATE/TIME Reject was closed
 | 
|---|
 | 29 |  ;                       "CLOSED BY" - Name of the user responsible for closing Reject
 | 
|---|
 | 30 |  ;                       "CLOSE REASON" - Reason for closing Reject (text)
 | 
|---|
 | 31 |  ;                       "CLOSE COMMENTS" - User entered comments at close
 | 
|---|
 | 32 |  ;         (o) REJID - REJECT IEN in the PRESCRIPTION file for retrieve this REJECT
 | 
|---|
 | 33 |  ;         (o) OKCL - If set to 1, CLOSED REJECTs will also be returned
 | 
|---|
 | 34 |  ;         (o) CODE - Only REJECTs with this CODE should be returned
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  N REJS,ARRAY,REJFLD,IDX,COM,Z
 | 
|---|
 | 37 |  ;
 | 
|---|
 | 38 |  I '$D(RFL) S RFL=$$LSTRFL^PSOBPSU1(RX)
 | 
|---|
 | 39 |  ;
 | 
|---|
 | 40 |  K REJDATA
 | 
|---|
 | 41 |  I '$O(^PSRX(RX,"REJ",0)) Q
 | 
|---|
 | 42 |  ;
 | 
|---|
 | 43 |  K REJS S RFL=+$G(RFL)
 | 
|---|
 | 44 |  I $G(REJID) D
 | 
|---|
 | 45 |  . I +$P($G(^PSRX(RX,"REJ",REJID,0)),"^",4)'=RFL Q
 | 
|---|
 | 46 |  . I '$G(OKCL),$P($G(^PSRX(RX,"REJ",REJID,0)),"^",5) Q
 | 
|---|
 | 47 |  . S REJS(REJID)=""
 | 
|---|
 | 48 |  E  D
 | 
|---|
 | 49 |  . S IDX=999
 | 
|---|
 | 50 |  . F  S IDX=$O(^PSRX(RX,"REJ",IDX),-1) Q:'IDX  D
 | 
|---|
 | 51 |  . . I +$P($G(^PSRX(RX,"REJ",IDX,0)),"^",4)'=RFL Q
 | 
|---|
 | 52 |  . . I '$G(OKCL),$P($G(^PSRX(RX,"REJ",IDX,0)),"^",5) Q
 | 
|---|
 | 53 |  . . S REJS(IDX)=""
 | 
|---|
 | 54 |  I '$D(REJS) Q
 | 
|---|
 | 55 |  ;
 | 
|---|
 | 56 |  S IDX=0
 | 
|---|
 | 57 |  F  S IDX=$O(REJS(IDX)) Q:'IDX  D
 | 
|---|
 | 58 |  . K ARRAY D GETS^DIQ(52.25,IDX_","_RX_",","*","","ARRAY")
 | 
|---|
 | 59 |  . K REJFLD M REJFLD=ARRAY(52.25,IDX_","_RX_",")
 | 
|---|
 | 60 |  . I $G(CODE),REJFLD(.01)'=CODE Q
 | 
|---|
 | 61 |  . S REJDATA(IDX,"CODE")=$G(REJFLD(.01))
 | 
|---|
 | 62 |  . S REJDATA(IDX,"DATE/TIME")=$G(REJFLD(1))
 | 
|---|
 | 63 |  . S REJDATA(IDX,"PAYER MESSAGE")=$G(REJFLD(2))
 | 
|---|
 | 64 |  . S REJDATA(IDX,"REASON")=$G(REJFLD(3))
 | 
|---|
 | 65 |  . S REJDATA(IDX,"PHARMACIST")=$G(REJFLD(4))
 | 
|---|
 | 66 |  . S REJDATA(IDX,"INSURANCE NAME")=$G(REJFLD(20))
 | 
|---|
 | 67 |  . S REJDATA(IDX,"GROUP NAME")=$G(REJFLD(6))
 | 
|---|
 | 68 |  . S REJDATA(IDX,"GROUP NUMBER")=$G(REJFLD(21))
 | 
|---|
 | 69 |  . S REJDATA(IDX,"CARDHOLDER ID")=$G(REJFLD(22))
 | 
|---|
 | 70 |  . S REJDATA(IDX,"PLAN CONTACT")=$G(REJFLD(7))
 | 
|---|
 | 71 |  . S REJDATA(IDX,"PLAN PREVIOUS FILL DATE")=$G(REJFLD(8))
 | 
|---|
 | 72 |  . S REJDATA(IDX,"STATUS")=$G(REJFLD(9))
 | 
|---|
 | 73 |  . S REJDATA(IDX,"OTHER REJECTS")=$G(REJFLD(17))
 | 
|---|
 | 74 |  . S REJDATA(IDX,"DUR TEXT")=$G(REJFLD(18))
 | 
|---|
 | 75 |  . S REJDATA(IDX,"REASON SVC CODE")=$G(REJFLD(14))
 | 
|---|
 | 76 |  . S REJDATA(IDX,"RESPONSE IEN")=$G(REJFLD(16))
 | 
|---|
 | 77 |  . I '$G(OKCL) Q
 | 
|---|
 | 78 |  . S REJDATA(IDX,"CLOSED DATE/TIME")=$G(REJFLD(10))
 | 
|---|
 | 79 |  . S REJDATA(IDX,"CLOSED BY")=$G(REJFLD(11))
 | 
|---|
 | 80 |  . S REJDATA(IDX,"CLOSE REASON")=$G(REJFLD(12))
 | 
|---|
 | 81 |  . S REJDATA(IDX,"CLOSE COMMENTS")=$G(REJFLD(13))
 | 
|---|
 | 82 |  . S REJDATA(IDX,"COD1")=$G(REJFLD(14))
 | 
|---|
 | 83 |  . S REJDATA(IDX,"COD2")=$G(REJFLD(15))
 | 
|---|
 | 84 |  . S REJDATA(IDX,"COD3")=$G(REJFLD(19))
 | 
|---|
 | 85 |  . S REJDATA(IDX,"CLA CODE")=$G(REJFLD(24))
 | 
|---|
 | 86 |  . S REJDATA(IDX,"PRIOR AUTH TYPE")=$G(REJFLD(25))
 | 
|---|
 | 87 |  . S REJDATA(IDX,"PRIOR AUTH NUMBER")=$G(REJFLD(26))
 | 
|---|
 | 88 |  . S COM=0 F  S COM=$O(^PSRX(RX,"REJ",IDX,"COM",COM)) Q:'COM  D
 | 
|---|
 | 89 |  . . S Z=^PSRX(RX,"REJ",IDX,"COM",COM,0)
 | 
|---|
 | 90 |  . . S REJDATA(IDX,"COMMENTS",COM,"DATE/TIME")=$P(Z,"^")
 | 
|---|
 | 91 |  . . S REJDATA(IDX,"COMMENTS",COM,"USER")=$P(Z,"^",2)
 | 
|---|
 | 92 |  . . S REJDATA(IDX,"COMMENTS",COM,"COMMENTS")=$P(Z,"^",3)
 | 
|---|
 | 93 |  Q
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 | HELP(OPTS) ; Display the Help Text for the DUR handling options (OVERRIDE/IGNORE/STOP/QUIT)
 | 
|---|
 | 96 |  ;
 | 
|---|
 | 97 |  I OPTS["O" D
 | 
|---|
 | 98 |  . W !?1,"(O)verride - This option will provide the prompts for the code sets needed to"
 | 
|---|
 | 99 |  . W !?1,"             override this reject and get a payable 3rd party claim. Before"
 | 
|---|
 | 100 |  . W !?1,"             you select this option, you may need to call the 3rd party payer"
 | 
|---|
 | 101 |  . W !?1,"             to determine which code sets are needed to override a particular"
 | 
|---|
 | 102 |  . W !?1,"             reject. Once the proper override is accepted the label will print"
 | 
|---|
 | 103 |  . W !?1,"             and the prescription can be filled."
 | 
|---|
 | 104 |  ;
 | 
|---|
 | 105 |  I OPTS["I" D
 | 
|---|
 | 106 |  . W !?1,"(I)gnore   - Choosing Ignore will by-pass 3rd party processing and will allow"
 | 
|---|
 | 107 |  . W !?1,"             you to print a label and fill the prescription. This essentially"
 | 
|---|
 | 108 |  . W !?1,"             ignores the clinical safety issues suggested by the 3rd party"
 | 
|---|
 | 109 |  . W !?1,"             payer and will NOT result in a payable claim."
 | 
|---|
 | 110 |  ;           
 | 
|---|
 | 111 |  I OPTS["Q" D
 | 
|---|
 | 112 |  . W !?1,"(Q)uit     - Choosing Quit will postpone the processing of this prescription"
 | 
|---|
 | 113 |  . W !?1,"             until this 3rd party reject is resolved. A label will not be"
 | 
|---|
 | 114 |  . W !?1,"             printed for this prescription and it can not be filled/dispensed"
 | 
|---|
 | 115 |  . W !?1,"             until this reject is resolved. Rejects can be resolved through"
 | 
|---|
 | 116 |  . W !?1,"             the Worklist option under the ePharmacy menu."
 | 
|---|
 | 117 |  Q
 | 
|---|
 | 118 |  ;
 | 
|---|
 | 119 | DVINFO(RX,RFL,LM) ; Returns header displayable Division Information
 | 
|---|
 | 120 |  ;Input: (r) RX   - Rx IEN (#52)
 | 
|---|
 | 121 |  ;       (o) RFL  - Refill # (Default: most recent)
 | 
|---|
 | 122 |  ;       (o) LM   - ListManager format? (1 - Yes / 0 - No) - Default: 0
 | 
|---|
 | 123 |  N TXT,DVINFO,NCPNPI
 | 
|---|
 | 124 |  S DVINFO="Division : "_$$GET1^DIQ(59,+$$RXSITE^PSOBPSUT(RX,RFL),.01)
 | 
|---|
 | 125 |  S NCPNPI=$P($$NABP^BPSBUTL(RX,RFL)," ")
 | 
|---|
 | 126 |  S $E(DVINFO,$S($G(LM):58,1:51))=$S($L(NCPNPI)=7:"NCPDP",1:"  NPI")_"#: "_NCPNPI
 | 
|---|
 | 127 |  Q DVINFO
 | 
|---|
 | 128 |  ;
 | 
|---|
 | 129 | PTINFO(RX,LM) ; Returns header displayable Patient Information
 | 
|---|
 | 130 |  ;Input: (r) RX   - Rx IEN (#52)
 | 
|---|
 | 131 |  ;       (o) LM   - ListManager format? (1 - Yes / 0 - No) - Default: 0
 | 
|---|
 | 132 |  N DFN,VADM,PTINFO
 | 
|---|
 | 133 |  S DFN=$$GET1^DIQ(52,RX,2,"I") D DEM^VADPT
 | 
|---|
 | 134 |  S PTINFO="Patient  : "_$E($G(VADM(1)),1,$S($G(LM):24,1:20))_"("_$P($G(VADM(2)),"^",2)_")"
 | 
|---|
 | 135 |  S PTINFO=PTINFO_"  Sex: "_$P($G(VADM(5)),"^")
 | 
|---|
 | 136 |  S $E(PTINFO,$S($G(LM):61,1:54))="DOB: "_$P($G(VADM(3)),"^",2)_"("_$P($G(VADM(4)),"^")_")"
 | 
|---|
 | 137 |  Q PTINFO
 | 
|---|
 | 138 |  ;
 | 
|---|
 | 139 | RETRXF(RX,RFL,ONOFF) ; - Set/Reset the Re-transmission flag
 | 
|---|
 | 140 |  ;Input: (r) RX    - Rx IEN (#52)
 | 
|---|
 | 141 |  ;       (r) RFL   - Refill IEN (#52.1)
 | 
|---|
 | 142 |  ;       (o) ONOFF - Turn flag ON or OFF (1 - ON / 0 - OFF) (Default: OFF) 
 | 
|---|
 | 143 |  N DA,DIE,DR
 | 
|---|
 | 144 |  S DR="82///"_$S($G(ONOFF):"YES",1:"@")
 | 
|---|
 | 145 |  I 'RFL S DA=RX,DIE="^PSRX("
 | 
|---|
 | 146 |  I RFL S DA(1)=RX,DA=RFL,DIE="^PSRX("_RX_",1,"
 | 
|---|
 | 147 |  D ^DIE
 | 
|---|
 | 148 |  Q
 | 
|---|
 | 149 |  ;
 | 
|---|
 | 150 | REASON(TXT) ; Extracts the Reason for service code from the REASON text field
 | 
|---|
 | 151 |  ; Input: (r) TXT  - Reason text (e.g., NN Reason for Service Code Text)
 | 
|---|
 | 152 |  ;Output:   REASON - NN (if on valid and on file (#9002313.23), null otherwise)
 | 
|---|
 | 153 |  N REASON,DIC,X,Y
 | 
|---|
 | 154 |  S REASON=$P(TXT," ") I $L(REASON)'=2 Q ""
 | 
|---|
 | 155 |  S DIC=9002313.23,X=REASON D ^DIC I Y<0 Q ""
 | 
|---|
 | 156 |  Q REASON
 | 
|---|
 | 157 |  ;
 | 
|---|
 | 158 | SETOPN(RX,REJ) ; - Set the Reject RE-OPENED flag to YES
 | 
|---|
 | 159 |  ;Input: (r) RX    - Rx IEN (#52)
 | 
|---|
 | 160 |  ;       (r) REJ   - Reject IEN (#52.25)
 | 
|---|
 | 161 |  ;       
 | 
|---|
 | 162 |  I '$D(^PSRX(RX,"REJ",REJ)) Q
 | 
|---|
 | 163 |  N DIE,DA,DR
 | 
|---|
 | 164 |  S DIE="^PSRX("_RX_",""REJ"",",DA(1)=RX,DA=REJ,DR="23///YES" D ^DIE
 | 
|---|
 | 165 |  Q
 | 
|---|
 | 166 |  ;
 | 
|---|
 | 167 | PRT(FIELD,P,L) ; Sets the lines for fields that require text wrapping
 | 
|---|
 | 168 |  ;Input: FIELD - Subscript name from the DATA(REJ,FIELD) array
 | 
|---|
 | 169 |  ;         P   - Position where the content should be printed
 | 
|---|
 | 170 |  ;         L   - Lenght of the text on each line
 | 
|---|
 | 171 |  N TXT,I
 | 
|---|
 | 172 |  S TXT=DATA(REJ,FIELD) I $L(TXT)'>L W ?P,TXT Q
 | 
|---|
 | 173 |  F I=1:1 Q:TXT=""  D
 | 
|---|
 | 174 |  . I I=1 W ?P,$E(TXT,1,L),! S TXT=$E(TXT,L+1,999) Q
 | 
|---|
 | 175 |  . W ?P,$E(TXT,1,L) S TXT=$E(TXT,L+1,999) W:TXT'="" !
 | 
|---|
 | 176 |  Q
 | 
|---|
 | 177 |  ;
 | 
|---|
 | 178 | PA() ; - Ask for Prior Authorization Type and Number
 | 
|---|
 | 179 |  ;Output:(PAT^PAN) PAT - Prior Authorization Type (See DD File#52,
 | 
|---|
 | 180 |  ;                         Sub-file#52.25,field#25 for possible values)
 | 
|---|
 | 181 |  ;                 PAN - Prior Authorization Number (11 digits)
 | 
|---|
 | 182 |  ;        
 | 
|---|
 | 183 |  N DIR,Y,DIRUT,DIROUT,PAT,PAN
 | 
|---|
 | 184 |  S DIR(0)="52.25,25",DIR("A")="  Prior Authorization Type",DIR("B")="0"
 | 
|---|
 | 185 |  S (DIR("?"),DIR("??"))="^D PAHLP^PSOREJU2"
 | 
|---|
 | 186 |  D ^DIR I $D(DIRUT)!$D(DIROUT) Q "^"
 | 
|---|
 | 187 |  S PAT=Y
 | 
|---|
 | 188 |  K DIR S DIR(0)="52.25,26",DIR("A")="Prior Authorization Number"
 | 
|---|
 | 189 |  S DIR("?")="^D PANHLP^PSOREJU2",DIR("??")=""
 | 
|---|
 | 190 |  D ^DIR I (Y["^")!$D(DIROUT) Q "^"
 | 
|---|
 | 191 |  S PAN=Y
 | 
|---|
 | 192 |  Q (PAT_"^"_PAN)
 | 
|---|
 | 193 |  ;
 | 
|---|
 | 194 | PAHLP ; Prior Authorization Type Help
 | 
|---|
 | 195 |  W !?9,"EPSDT - Early Periodic Screening Diagnosis Treatment"
 | 
|---|
 | 196 |  W !?9,"AFDC  - Aid to Family with Dependent Children"
 | 
|---|
 | 197 |  Q
 | 
|---|
 | 198 |  ;
 | 
|---|
 | 199 | PANHLP ; Prior Authorization Number Help
 | 
|---|
 | 200 |  W "OR you may leave it blank if the claim does not require a number."
 | 
|---|
 | 201 |  Q
 | 
|---|