| 1 | BPSNCPD3 ;BHAM ISC/LJE - Continuation of BPSNCPDP - DUR HANDLING ;06/16/2004
 | 
|---|
| 2 |  ;;1.0;E CLAIMS MGMT ENGINE;**1,5**;JUN 2004;Build 45
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ; DUR1 is called by PSO to get the reject info so that should NOT be removed
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ; Function call for DUR INFORMATION 
 | 
|---|
| 9 |  ; Parameters: BRXIEN = Prescription IEN
 | 
|---|
| 10 |  ;             BFILL = fill number
 | 
|---|
| 11 |  ;             DUR = DUR info passed back
 | 
|---|
| 12 |  ;             ERROR = error passed back
 | 
|---|
| 13 |  ; Note:
 | 
|---|
| 14 |  ;    DUR("BILLED")=0 if ecme off for pharmacy or no transaction in ECME
 | 
|---|
| 15 |  ;    DUR(<Insurance counter>,"BILLED")=1 if billed through ecme
 | 
|---|
| 16 | DUR1(BRXIEN,BFILL,DUR,ERROR) ;
 | 
|---|
| 17 |  N SITE,DFILL,TRANIEN,JJ,DUR1,DURIEN,I
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ; Get Site info and check is ECME is turned on
 | 
|---|
| 20 |  ; If not, set DUR("BILLED")=0 and quit
 | 
|---|
| 21 |  I '$G(BFILL) S SITE=$$RXAPI1^BPSUTIL1(BRXIEN,20,"I")
 | 
|---|
| 22 |  I $G(BFILL) S SITE=$$RXSUBF1^BPSUTIL1(BRXIEN,52,52.1,BFILL,8,"I")
 | 
|---|
| 23 |  I '$$ECMEON^BPSUTIL(SITE) S DUR("BILLED")=0 Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ; Set up the Transaction IEN
 | 
|---|
| 26 |  S DFILL="",DFILL=$E($TR($J("",4-$L(BFILL))," ","0")_BFILL,1,4)_1
 | 
|---|
| 27 |  S TRANIEN=BRXIEN_"."_DFILL
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  ; If the transaction record does not exist, set DUR("BILLED")=0 and quit
 | 
|---|
| 30 |  I '$D(^BPST(TRANIEN)) S DUR("BILLED")=0 Q
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  ; Loop through the insurance multiple and set DUR array
 | 
|---|
| 33 |  S JJ=0
 | 
|---|
| 34 |  F  S JJ=$O(^BPST(TRANIEN,10,JJ)) Q:JJ=""!(JJ'?1N.N)  D
 | 
|---|
| 35 |  . ;
 | 
|---|
| 36 |  . ; We are good so set Billed
 | 
|---|
| 37 |  . S DUR(JJ,"BILLED")=1
 | 
|---|
| 38 |  . ;
 | 
|---|
| 39 |  . ; Get Insurance Info and set into DUR array
 | 
|---|
| 40 |  . D GETS^DIQ(9002313.59902,JJ_","_TRANIEN_",","902.05;902.06;902.24;902.25;902.26","E","DUR1","ERROR")
 | 
|---|
| 41 |  . S DUR(JJ,"INSURANCE NAME")=$G(DUR1(9002313.59902,JJ_","_TRANIEN_",",902.24,"E"))  ; Insurance Company Name
 | 
|---|
| 42 |  . S DUR(JJ,"GROUP NUMBER")=$G(DUR1(9002313.59902,JJ_","_TRANIEN_",",902.05,"E"))    ; Insurance Group Number
 | 
|---|
| 43 |  . S DUR(JJ,"GROUP NAME")=$G(DUR1(9002313.59902,JJ_","_TRANIEN_",",902.25,"E"))      ; Insurance Group Name
 | 
|---|
| 44 |  . S DUR(JJ,"PLAN CONTACT")=$G(DUR1(9002313.59902,JJ_","_TRANIEN_",",902.26,"E"))    ; Insurance Contact Number
 | 
|---|
| 45 |  . S DUR(JJ,"CARDHOLDER ID")=$G(DUR1(9002313.59902,JJ_","_TRANIEN_",",902.06,"E"))   ; Cardholder ID
 | 
|---|
| 46 |  . ;
 | 
|---|
| 47 |  . ; Get Response IEN and Data
 | 
|---|
| 48 |  . S DURIEN="",DURIEN=$P(^BPST(TRANIEN,0),"^",5)                             ;Note: in future will need to store/get DURIEN for each insurance
 | 
|---|
| 49 |  . S DUR(JJ,"RESPONSE IEN")=DURIEN
 | 
|---|
| 50 |  . D GETS^DIQ(9002313.0301,"1,"_DURIEN_",","501;567.01*;526","E","DUR1","ERROR")
 | 
|---|
| 51 |  . S DUR(JJ,"PAYER MESSAGE")=$G(DUR1(9002313.0301,"1,"_DURIEN_",",526,"E"))           ;Additional free text message info from payer
 | 
|---|
| 52 |  . S DUR(JJ,"STATUS")=$G(DUR1(9002313.0301,"1,"_DURIEN_",",501,"E"))                  ;Status of Response
 | 
|---|
| 53 |  . S DUR(JJ,"REASON")=$G(DUR1(9002313.1101,"1,1,"_DURIEN_",",439,"E"))                ;Reason of Service Code
 | 
|---|
| 54 |  . S DUR(JJ,"CLIN SIGNIFICANCE")=$G(DUR1(9002313.1101,"1,1,"_DURIEN_",",528,"E"))     ;Clinical Significance Code
 | 
|---|
| 55 |  . S DUR(JJ,"OTH PHARM IND")=$G(DUR1(9002313.1101,"1,1,"_DURIEN_",",529,"E"))         ;Other Pharmacy Indicator Code
 | 
|---|
| 56 |  . S DUR(JJ,"PREV FILL DATE")=$G(DUR1(9002313.1101,"1,1,"_DURIEN_",",530,"E"))        ;Previous Date of Fill
 | 
|---|
| 57 |  . S DUR(JJ,"QTY OF PREV FILL")=$G(DUR1(9002313.1101,"1,1,"_DURIEN_",",531,"E"))      ;Quantity of Previous Fill
 | 
|---|
| 58 |  . S DUR(JJ,"DATABASE IND")=$G(DUR1(9002313.1101,"1,1,"_DURIEN_",",532,"E"))          ;Database Indicator
 | 
|---|
| 59 |  . S DUR(JJ,"OTH PRESCRIBER IND")=$G(DUR1(9002313.1101,"1,1,"_DURIEN_",",533,"E"))    ;Other Prescriber Indicator
 | 
|---|
| 60 |  . S DUR(JJ,"DUR FREE TEXT DESC")=$G(DUR1(9002313.1101,"1,1,"_DURIEN_",",544,"E"))    ;DUR Free Text Message from Payer
 | 
|---|
| 61 |  . ;
 | 
|---|
| 62 |  . ; Get DUR reject codes and description and store in DUR 
 | 
|---|
| 63 |  . D GETS^DIQ(9002313.0301,"1,"_DURIEN_",","511*","I","DUR1","ERROR")                 ;get DUR codes and descriptions
 | 
|---|
| 64 |  . S DUR(JJ,"REJ CODE LST")=""
 | 
|---|
| 65 |  . F I=1:1 Q:'$D(DUR1(9002313.03511,I_",1,"_DURIEN_","))  D
 | 
|---|
| 66 |  .. S DUR(JJ,"REJ CODES",I,DUR1(9002313.03511,I_",1,"_DURIEN_",",.01,"I"))=$$GET1^DIQ(9002313.93,DUR1(9002313.03511,I_",1,"_DURIEN_",",.01,"I"),".02")
 | 
|---|
| 67 |  .. S DUR(JJ,"REJ CODE LST")=DUR(JJ,"REJ CODE LST")_","_DUR1(9002313.03511,I_",1,"_DURIEN_",",.01,"I")
 | 
|---|
| 68 |  . S DUR(JJ,"REJ CODE LST")=$E(DUR(JJ,"REJ CODE LST"),2,9999)
 | 
|---|
| 69 |  Q
 | 
|---|