BPSSCRRS ;BHAM ISC/SS - ECME SCREEN RESUBMIT ;05-APR-05
 ;;1.0;E CLAIMS MGMT ENGINE;**1,3,5**;JUN 2004;Build 45
 ;;Per VHA Directive 2004-038, this routine should not be modified.
 Q
 ;IA 4702
 ;
RES ;
 N BPRET,BPSARR59
 I '$D(@(VALMAR)) Q
 D FULL^VALM1
 W !,"Enter the line numbers for the claim(s) to be resubmitted."
 S BPRET=$$ASKLINES^BPSSCRU4("Select item(s)","C",.BPSARR59,VALMAR)
 I BPRET="^" S VALMBCK="R" Q
 ;go thru all selected claims and try to resubmit them separately
 ;update the content of the screen and display it
 ;only if at least one claim was submitted successfully
 I $$RESUBMIT(.BPSARR59) D REDRAW^BPSSCRUD("Updating screen for resubmitted claims...")
 E  S VALMBCK="R"
 Q
 ;
 ;/**
 ;go thru all selected claims and try to resubmit them separately
 ;input:
 ; RXI - array with ptrs to BPS TRANSACTION file (see ASKLINES^BPSSCRU4)
 ;returns 
 ; 0 - if no claims were resubmitted 
 ; 1 - if at least one claim was resubmitted 
RESUBMIT(RXI) ;*/
 N BPRVRSED ;was successfully reversed
 N BPRVNEED ;needs reversal
 N BPRVWAIT ;cycles of waiting 
 N BPRVRSNT ;reversal has been sent
 N WHERE,DOSDATE,BILLNUM,RXIEN,RXR,BPDFN
 N BP59
 N UPDATFLG,BPCLTOT,BPCLTOTR
 N BPQ
 N BPSTATUS
 N REVCOUNT S REVCOUNT=0
 N BPIFANY S BPIFANY=0
 S BPCLTOT=0 ;total for resubmitted
 S BPCLTOTR=0 ;total for reversed, not resubmitted
 S UPDATFLG=0
 S BP59="",BPQ=""
 F  S BP59=$O(RXI(BP59)) Q:BP59=""  D  Q:BPQ="^"
 . I BPIFANY=0 W @IOF
 . S BPIFANY=1,BPQ=""
 . S BPDFN=+$P($G(^BPST(BP59,0)),U,6)
 . W !,"You've chosen to RESUBMIT the following prescription for "_$E($$PATNAME^BPSSCRU2(BPDFN),1,13)
 . W !,@VALMAR@(+$G(RXI(BP59)),0)
 . S (BPRVNEED,BPRVRSED,BPRVWAIT,BPRVRSNT)=0
 . S BPQ=$$YESNO("Are you sure?(Y/N)")
 . I BPQ=-1 S BPQ="^" Q
 . I BPQ'=1 Q
 . S RXIEN=$P(BP59,".")
 . S RXR=+$E($P(BP59,".",2),1,4)
 . I BPRVNEED=1&(BPRVRSED'=1) Q  ;cannot be resubmitted
 . I $$RXDEL^BPSOS(+RXIEN,RXR) W !!,">> Cannot Reverse or Resubmit ",!,@VALMAR@(+$G(RXI(BP59)),0),!," because it has been deleted in Pharmacy.",! Q
 . S BPSTATUS=$P($$CLAIMST^BPSSCRU3(BP59),U)
 . I BPSTATUS["E REVERSAL REJECTED" W !!,">> Cannot Resubmit ",!,@VALMAR@(+$G(RXI(BP59)),0),!," because the REVERSAL was rejected.",! Q
 . I BPSTATUS["IN PROGRESS" W !!,">> Cannot Resubmit ",!,@VALMAR@(+$G(RXI(BP59)),0),!," because there is no response from the payer yet.",! Q
 . I BPSTATUS["E REVERSAL STRANDED" W !!,">> Cannot Resubmit ",!,@VALMAR@(+$G(RXI(BP59)),0),!," because there is no response for reversal yet.",! Q
 . S DOSDATE=$$DOSDATE(RXIEN,RXR)
 . S BILLNUM=$$EN^BPSNCPDP(RXIEN,RXR,DOSDATE,"ERES","","ECME RESUBMIT")
 . ;print return value message
 . W !!
 . W:+BILLNUM>0 $S(+BILLNUM=10:"Reversal but no Resubmit:",1:"Not Processed:"),!,"  "
 . ;Change Return Message for SC/EI
 . S:$P(BILLNUM,U,2)="NEEDS SC DETERMINATION" $P(BILLNUM,U,2)="NEEDS SC/EI DETERMINATION"
 . W $P(BILLNUM,U,2)
 . ;0 Prescription/Fill successfully submitted to ECME for claims processing
 . ;1 ECME did not submit prescription/fill
 . ;2 IB says prescription/fill is not ECME billable or the data returned from IB is not valid
 . ;3 ECME closed the claim but did not submit it to the payer
 . ;4 Unable to queue the ECME claim
 . ;5 Invalid input
 . ;10 Reversal but no resubmit
 . I +BILLNUM=0 D 
 . . D ECMEACT^PSOBPSU1(+RXIEN,+RXR,"Claim resubmitted to 3rd party payer: ECME USER's SCREEN")
 . . S UPDATFLG=1,BPCLTOT=BPCLTOT+1
 . I +BILLNUM=10 D 
 . . D ECMEACT^PSOBPSU1(+RXIEN,+RXR,"Claim reversed but not resubmitted: ECME USER's SCREEN")
 . . S UPDATFLG=1,BPCLTOTR=BPCLTOTR+1
 W:BPIFANY=0 !,"No eligible items selected."
 W !,BPCLTOT," claim",$S(BPCLTOT'=1:"s have",1:" has")," been resubmitted.",!
 W:BPCLTOTR>0 !,BPCLTOTR," claim",$S(BPCLTOTR'=1:"s have",1:" has")," been reversed but not resubmitted.",!
 D PAUSE^VALM1
 Q UPDATFLG
 ;
 ; Ask
 ; Input:
 ;  BPQSTR - question
 ;  BPDFL - default answer
 ; Output: 
 ; 1 YES
 ; 0 NO
 ; -1 if cancelled
YESNO(BPQSTR,BPDFL) ; Default - YES
 N DIR,Y,DUOUT
 S DIR(0)="Y"
 S DIR("A")=BPQSTR
 S:$L($G(BPDFL)) DIR("B")=BPDFL
 D ^DIR
 Q $S($G(DUOUT)!$G(DUOUT)!(Y="^"):-1,1:Y)
 ;
 ;Date of service
 ;RXIEN - IEN in file #52
 ;RXR - refill number
 ;returns:
 ; date of service
DOSDATE(RXIEN,RXR) ;
 N BPDOS,BPDT
 ;try release date
 S BPDOS=$$RXRLDT^PSOBPSUT(RXIEN,RXR)\1
 Q:+BPDOS>0 BPDOS
 ;try fill date
 S BPDOS=$$RXFLDT^PSOBPSUT(RXIEN,RXR)\1
 I '$G(DT) Q BPDOS
 I BPDOS>0,BPDOS'>DT Q BPDOS
 ;use current date (today)
 Q DT\1
 ;
 ;To display the FILL date on the screen
 ; use Date Of Service date , later on it might be changed
 ;input:
 ;RXIEN - IEN in file #52
 ;RXR - refill number
 ;returns:
 ; date of service
 ; or empty date if failure
FILLDATE(RXIEN,RXR) ;
 N DOSDT
 S DOSDT=$$DOSDATE(RXIEN,RXR)
 I $L(DOSDT)'=7 Q "  /  "
 Q $E(DOSDT,4,5)_"/"_$E(DOSDT,6,7)
 ;       
