BPSRPT9 ;BHAM ISC/BNT - ECME REPORTS ;19-SEPT-08
 ;;1.0;E CLAIMS MGMT ENGINE;**8,18,20,27**;JUN 2004;Build 15
 ;;Per VA Directive 6402, this routine should not be modified.
 ;
 Q
 ; Front End for Potential Secondary and Dual Eligible Claims Reports
 ; Input variable: BPRTYPE -> 8 = Potential Dual Eligible
 ;                            9 = Potential Secondary
 ;
 ; Passed variables - The following local variables are passed around the BPSRPT* routines
 ;                    and are not passed as parameters but are assumed to be defined:
 ;                    BPACREJ,BPAUTREV,BPBEGDT,BPBLINE,BPCCRSN,BPDRGCL,BPDRUG,BPENDDT,BPEXCEL,
 ;                    BPINSINF,BPGRPLN,BPMWC,BPNOW,BPPAGE,BPPHARM,BPQ,BPQSTDRG,
 ;                    BPRLNRL,BPRTBCK,BPSDATA,BPSUMDET,BPRTYPE
 ;
EN(BPRTYPE) ;
 N BPREJCD,BPRLNRL,BPRPTNAM,BPRTBCK,BPSCR,BPSUMDET,CODE,POS,STAT,X,Y,BPINS,BPARR
 N BPSORT,BPCRON,BPSEL,BPS1,BPS2,BPS3,BPS4,BPS5,BPDT,BPPHARM,BPDIVS,BPELIG1,BPSEXCEL
 ;
 ;Verify that a valid report has been requested
 I ",8,9,"'[(","_$G(BPRTYPE)_",") D EN^DDIOL("<Invalid Menu Definition - Report Undefined>") H 3 Q
 ;
 D EN^DDIOL("SELECTION CRITERIA","","!")
 ;Prompt for ECME Pharmacy Division(s) (No Default)
 ;Sets up BPPHARM variable and array, BPPHARM =0 ALL or BPPHARM=1,BPPHARM(ptr) for list
 S X=$$SELPHARM^BPSRPT3() I X="^" Q
 ;
 I BPRTYPE=8 S X=$$SELELIG(.BPELIG1) I X="^" Q
 ;
 ;Prompt to select Date Range
 ;Returns (Start Date^End Date)
 S BPDT=$$SELDATE() I BPDT="^" Q
 ;
 ;Get sort criteria
 I $$GETSORT(BPRTYPE)=-1 Q
 ;
 S BPSEXCEL=0
 I BPRTYPE=9 S BPSEXCEL=$$SELEXCEL()
 ;
 D DEV("RUN^BPSRPT9",BPRTYPE,BPSEXCEL)
 Q
 ;
RUN ; Process Report - runs in the background or foreground
 N BPRPTARR
 I BPRTYPE=9 D GETSEC^BPSRPT9A(BPDT,.BPRPTARR,BPSEXCEL)  ; Collect Potential Secondary Rx Claims data
 I BPRTYPE=8 D GETTRI^BPSRPT9A(BPDT,.BPRPTARR)  ; Collect Potential Dual Eligible Claims data
 ;
 U IO
 I BPRTYPE=8 D PRNTTRI(.BPRPTARR)
 I BPRTYPE=9 D PRNTSEC(.BPRPTARR)
 ;
 D ^%ZISC    ; close the device
 S:$D(ZTQUEUED) ZTREQ="@"
 Q
 ;
 ; Print Dual Eligible Report
PRNTTRI(BPARR) ;
 N BPG,BPQUIT,CNT,RX,FILL,FILLDT,PATNAME,COB,ELIG,PAYER,INSC,PSRT,PSRTID,SSRT,TSRT,DATA
 N SSRTTYP,TSRTTYP
 S SSRTTYP=$P($P(BPSORT,U,2),":")
 S TSRTTYP=$P($P(BPSORT,U,3),":")
 S (BPG,BPQUIT,CNT)=0
 ;
 ; if no data found, display header and message and then get out
 I '$D(BPARR) D  Q
 . D HDR(BPRTYPE)
 . W !!?5,"No potential claims available for date range"
 . Q
 ;
 S PSRT=-DT-1
 D HDR(BPRTYPE)
 F  S PSRT=$O(BPARR(PSRT)) Q:PSRT=""  D  Q:BPQUIT
 . S PSRTID=$S($P($P(BPSORT,U),":")="N":"Patient Name: ",$P($P(BPSORT,U),":")="P":"Payer: ",$P($P(BPSORT,U),":")="S":"Date of Service: ",$P($P(BPSORT,U),":")="O":"Payer Sequence: ",$P($P(BPSORT,U),":")="E":"Patient Eligibility: ",1:"Division: ")
 . I PSRT'=0 W !!,PSRTID,$S($P($P(BPSORT,U),":")="S":$$FMTE^XLFDT($$ABS^XLFMTH(PSRT),"2D"),1:PSRT)
 . S SSRT=-DT-1 F  S SSRT=$O(BPARR(PSRT,SSRT)) Q:SSRT=""  D  Q:BPQUIT
 . . I SSRTTYP="D" W !,"   Division: ",SSRT
 . . S TSRT=-DT-1 F  S TSRT=$O(BPARR(PSRT,SSRT,TSRT)) Q:TSRT=""  D  Q:BPQUIT
 . . . I TSRTTYP="D" W !,"   Division: ",TSRT
 . . . S CNT=0 F  S CNT=$O(BPARR(PSRT,SSRT,TSRT,CNT)) Q:CNT=""  D  Q:BPQUIT
 . . . . S DATA=BPARR(PSRT,SSRT,TSRT,CNT)
 . . . . S RX=$P(DATA,U,2),FILL=$P(DATA,U,3),FILLDT=$P(DATA,U,4),PATNAME=$P(DATA,U,5)
 . . . . S INSC=0 F  S INSC=$O(BPARR(PSRT,SSRT,TSRT,CNT,"INS",INSC)) Q:INSC=""  D
 . . . . . S COB=$S(INSC=1:"p",INSC=2:"s",1:"t")
 . . . . . S ELIG=$P(BPARR(PSRT,SSRT,TSRT,CNT,"ELIG"),U)
 . . . . . ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 . . . . . S PAYER=$E($P(BPARR(PSRT,SSRT,TSRT,CNT,"INS",INSC),U)_"-"_$P(BPARR(PSRT,SSRT,TSRT,CNT,"INS",INSC),U,2),1,16)
 . . . . . I $Y>(IOSL-4) D HDR(BPRTYPE) Q:BPQUIT
 . . . . . ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 . . . . . W !,RX,?10,FILL,?13,FILLDT,?22,$E(PATNAME,1,15),?38,$P(DATA,U,6),?44,COB,?47,ELIG,?52,PAYER,?69,$P(BPARR(PSRT,SSRT,TSRT,CNT,"INS",INSC),U,3)
 . . . . . S ELIG=$S($P(BPARR(PSRT,SSRT,TSRT,CNT,"ELIG"),U,2)]"":$P(BPARR(PSRT,SSRT,TSRT,CNT,"ELIG"),U,2),1:"")
 . . . . . ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 . . . . . I ELIG]"" W !,?47,ELIG
 Q
 ;
 ; Print Secondary Report
PRNTSEC(BPARR) ;
 N BPG,BPQUIT,CNT,INSC,PAYER,PSRT,PSRTID,SSRT,TSRT,DATA,INSDATA,LGFLG1,LGFLG2
 N SSRTTYP,TSRTTYP
 S SSRTTYP=$P($P(BPSORT,U,2),":")
 S TSRTTYP=$P($P(BPSORT,U,3),":")
 S (BPG,BPQUIT)=0
 ;
 ; if no data found, display header and message and then get out
 I '$D(BPARR) D  Q
 . D HDR(BPRTYPE)
 . W !!?5,"No potential secondary Rx claims available for date range"
 . Q
 ;
 I BPSEXCEL D PRNTSECE(.BPARR) Q
 ;
 S PSRT=-DT-1
 D HDR(BPRTYPE)
 F  S PSRT=$O(BPARR(PSRT)) Q:PSRT=""  D  Q:BPQUIT
 . S PSRTID=$S($P($P(BPSORT,U),":")="N":"Patient Name: ",$P($P(BPSORT,U),":")="P":"Payer: ",$P($P(BPSORT,U),":")="S":"Date of Service: ",$P($P(BPSORT,U),":")="O":"Payer Sequence: ",1:"Division: ")
 . I PSRT'=0 W !!,PSRTID,$S($P($P(BPSORT,U),":")="S":$$FMTE^XLFDT($$ABS^XLFMTH(PSRT),"2D"),1:PSRT)
 . S SSRT=-DT-1 F  S SSRT=$O(BPARR(PSRT,SSRT)) Q:SSRT=""  D  Q:BPQUIT
 . . I SSRTTYP="D" W !,"   Division: ",SSRT
 . . S TSRT=-DT-1 F  S TSRT=$O(BPARR(PSRT,SSRT,TSRT)) Q:TSRT=""  D  Q:BPQUIT
 . . . I TSRTTYP="D" W !,"   Division: ",TSRT
 . . . S CNT=0 F  S CNT=$O(BPARR(PSRT,SSRT,TSRT,CNT)) Q:CNT=""  D  Q:BPQUIT
 . . . . S DATA=$G(BPARR(PSRT,SSRT,TSRT,CNT))
 . . . . I $Y>(IOSL-4) D HDR(BPRTYPE) Q:BPQUIT
 . . . . ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 . . . . I DATA]"" W !,$P(DATA,U,2),?11,$P(DATA,U,3),?21,$P(DATA,U,4),?26,$E($P(DATA,U,6),1,10),?37,$P(DATA,U,9),?43,$P(DATA,U,7),?46,$P(DATA,U,5),?55,$E($P(DATA,U,8),1,13),?69,$P(DATA,U,10)
 . . . . ;
 . . . . ; If the bill# contains "(P)" it is a primary ECME reject, flag it for the legend
 . . . . I $P(DATA,U,2)["(P)" S LGFLG1=1
 . . . . S INSC=0 F  S INSC=$O(BPARR(PSRT,SSRT,TSRT,CNT,INSC)) Q:INSC=""  D  Q:BPQUIT
 . . . . . S INSDATA=BPARR(PSRT,SSRT,TSRT,CNT,INSC)
 . . . . . I $Y>(IOSL-4) D HDR(BPRTYPE) Q:BPQUIT
 . . . . . ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 . . . . . W !,?43,$P(INSDATA,U),?55,$E($P(INSDATA,U,2),1,13),?69,$P(INSDATA,U,3)
 . . . . . I $P(INSDATA,U,1)["-" S LGFLG2=1
 ;
 Q:BPQUIT
 I '$G(LGFLG1),'$G(LGFLG2) Q
 ; display the legend at the end of the report
 I $Y>(IOSL-4) D HDR(BPRTYPE) Q:BPQUIT
 W !
 I $G(LGFLG1) W !,"Bill# ""(P) Rej"" indicates a rejected/closed primary ECME claim"
 I $G(LGFLG2) W !,"COB ""-"" indicates a blank COB field in the pt. ins. policy"
 Q
 ;
 ; Print Secondary Report Excel Format
PRNTSECE(BPARR) ;
 N BPSAR,LGFLG1,LGFLG2
 W !,"Division^Bill#^RX#^Fill^Patient^PatID^COB^Date^Payers^HPID/OEID"
 S BPSAR="BPARR(0)"
 F  S BPSAR=$Q(@BPSAR) Q:BPSAR=""  D
 . I $P(@BPSAR,"^",2)["(P)" S LGFLG1=1
 . I $P(@BPSAR,"^",7)["-" S LGFLG2=1
 . W !,@BPSAR
 I $G(LGFLG1) W !,"Bill# ""(P) Rej"" indicates a rejected/closed primary ECME claim"
 I $G(LGFLG2) W !,"COB ""-"" indicates a blank COB field in the pt. ins. policy"
 Q
 ;
 ; Prompt for sort order
GETSORT(BPRTYPE) N DIR,DIRUT,DTOUT,DUOUT,X,Y,BPS1,BPS2,BPS3,BPS4,BPS5,BPSEL
 ;
 S BPSORT="^^",BPCRON=1
 S BPS1="N:Patient Name;",BPS2="P:Payer;",BPS3="S:Date Of Service;",BPS4="D:Division;"
 I BPRTYPE=8 S BPS5="E:Patient Eligibility;"
 ;
 D EN^DDIOL("SORT CRITERIA","","!")
 S BPSEL=BPS1_BPS2_BPS3_BPS4
 I BPRTYPE=8 S BPSEL=BPSEL_BPS5
 ;Set Primary Sort
 S DIR(0)="SB^"_BPSEL
 S DIR("?")="Enter a code from the list to indicate the Primary sort order."
 S DIR("A")="Primary Sort"
 S DIR("B")="Division"
 D ^DIR K DIR
 I ($G(DUOUT)=1)!($G(DTOUT)=1) Q -1
 I BPRTYPE=9 S $P(BPSORT,U)=$S(Y=$P(BPS1,":"):BPS1,Y=$P(BPS2,":"):BPS2,Y=$P(BPS3,":"):BPS3,1:BPS4)
 I BPRTYPE=8 S $P(BPSORT,U)=$S(Y=$P(BPS1,":"):BPS1,Y=$P(BPS2,":"):BPS2,Y=$P(BPS3,":"):BPS3,Y=$P(BPS4,":"):BPS4,1:BPS5)
 I Y="S" S BPCRON=$$ASKCRON() I BPCRON="^" Q -1
 ;
 ;Get Secondary Sort
 N DIR,DIRUT,DTOUT,DUOUT,X,Y
 S BPSEL=$$SRTORD($P($P(BPSORT,U),":"))
 S DIR(0)="SOB^"_BPSEL
 S DIR("?")="Enter a code from the list to indicate the Secondary sort order."
 S DIR("A")="Secondary Sort"
 D ^DIR K DIR
 I ($G(DUOUT)=1)!($G(DTOUT)=1) Q -1
 I BPRTYPE=9 S $P(BPSORT,U,2)=$S(Y=$P(BPS1,":"):BPS1,Y=$P(BPS2,":"):BPS2,Y=$P(BPS3,":"):BPS3,1:BPS4)
 I BPRTYPE=8 S $P(BPSORT,U,2)=$S(Y=$P(BPS1,":"):BPS1,Y=$P(BPS2,":"):BPS2,Y=$P(BPS3,":"):BPS3,Y=$P(BPS4,":"):BPS4,1:BPS5)
 I Y="S" S BPCRON=$$ASKCRON() I BPCRON="^" Q -1
 ;
 ;Get Tertiary Sort
 N DIR,DIRUT,DTOUT,DUOUT,X,Y
 S BPSEL=$$SRTORD($P($P(BPSORT,U,2),":"))
 S DIR(0)="SOB^"_BPSEL
 S DIR("A")="Tertiary Sort"
 S DIR("?")="Enter a code from the list to indicate the Tertiary sort order."
 D ^DIR K DIR
 I ($G(DUOUT)=1)!($G(DTOUT)=1) Q -1
 I BPRTYPE=9 S $P(BPSORT,U,3)=$S(Y=$P(BPS1,":"):BPS1,Y=$P(BPS2,":"):BPS2,Y=$P(BPS3,":"):BPS3,1:BPS4)
 I BPRTYPE=8 S $P(BPSORT,U,3)=$S(Y=$P(BPS1,":"):BPS1,Y=$P(BPS2,":"):BPS2,Y=$P(BPS3,":"):BPS3,Y=$P(BPS4,":"):BPS4,1:BPS5)
 I Y="S" S BPCRON=$$ASKCRON() I BPCRON="^" Q -1
 Q 0
 ;
 ;Ask if Date should be displayed in chronological order
ASKCRON() ;
 N DIR,DIRUT,DTOUT,DUOUT,X,Y
 S DIR(0)="Y"
 S DIR("A")="     Display oldest date first"
 S DIR("B")="YES"
 D ^DIR K DIR
 I ($G(DUOUT)=1)!($G(DTOUT)=1)!($D(DIRUT)) Q "^"
 Q Y
 ;
 ;Handle the sort order display
SRTORD(Y) ;
 I Y="N" S BPS1=""
 I Y="P" S BPS2=""
 I Y="S" S BPS3=""
 I Y="D" S BPS4=""
 I BPRTYPE=8,Y="E" S BPS5=""
 S BPSEL=BPS1_BPS2_BPS3_BPS4
 I BPRTYPE=8 S BPSEL=BPSEL_BPS5
 Q BPSEL
 ;
 ; Enter Date Range
 ;
 ; Return Value -> P1^P2
 ; 
 ;           where P1 = Earliest Date
 ;                    = ^ Exit
 ;                 P2 = Latest Date
 ;                    = blank for Exit
SELDATE() ;
 N BPSIBDT,DIR,DIRUT,DTOUT,DUOUT,VAL,X,Y
 S VAL="",DIR(0)="DA^:DT:EX",DIR("A")="EARLIEST DATE: "
 W ! D ^DIR
 ;
 ;Check for "^", timeout, or blank entry
 I ($G(DUOUT)=1)!($G(DTOUT)=1)!($G(X)="") S VAL="^"
 ;
 I VAL="" D
 .S $P(VAL,U)=Y
 .S DIR(0)="DA^"_VAL_":DT:EX",DIR("A")="  LATEST DATE: ",DIR("B")="T"
 .D ^DIR
 .;
 .;Check for "^", timeout, or blank entry
 .I ($G(DUOUT)=1)!($G(DTOUT)=1)!($G(X)="") S VAL="^" Q
 .;
 .;Define Entry
 .S $P(VAL,U,2)=Y
 ;
 Q VAL
 ;
 ;
 ;Device Selection
 ;Input: BPR = Routine
 ;       BPRTYPE = Report Type used to identify Task name
 ;       BPSEXCEL = Format output for Excel
DEV(BPR,BPRTYPE,BPSEXCEL) ;
 N %ZIS,ZTSK,ZTSAVE,POP,ZTRTN,ZTDESC
 S %ZIS="MQ" D ^%ZIS Q:POP
 I $D(IO("Q")) D  Q
 . S ZTRTN=BPR,ZTDESC=$$RPTNAME(BPRTYPE),ZTSAVE("BP*")=""
 . D ^%ZTLOAD,HOME^%ZIS K IO("Q") W !,"QUEUED TASK #",ZTSK
 D @BPR
 Q
 ;
RPTNAME(BPRTYPE) ;
 ;Verify that a valid report has been requested
 Q $S(BPRTYPE=8:"Potential Claims Report for Dual Eligible",BPRTYPE=9:"Potential Secondary Rx Claims Report",1:"")
 ;
 ;Print the report Header
 ;Input: BPRTYPE = Report Type
HDR(BPRTYPE) ;
 ; BPG is assumed for page #
 Q:BPQUIT
 N DIR,X,Y,BPDIV
 I $E(IOST,1,2)="C-",BPG S DIR(0)="E" D ^DIR K DIR I $D(DIRUT)!($D(DUOUT)) S BPQUIT=1 K DIRUT,DTOUT,DUOUT Q
 S BPG=BPG+1
 W @IOF
 F X=1:1:IOM W "="
 W $$RPTNAME(BPRTYPE),"     ",$$FMTE^XLFDT($P(BPDT,U),"2D")," - ",$$FMTE^XLFDT($P(BPDT,U,2),"2D"),?IOM-10," Page: ",BPG
 W !,"Selected Divisions: "
 I 'BPPHARM W "ALL"
 I BPPHARM S X=0 F  S X=$O(BPPHARM(X)) Q:X=""  W $P(BPPHARM(X),U,2),"; "
 I BPRTYPE=8 D
 .W !,"Selected Patient Eligibility: "
 .I BPELIG1=0 W "ALL" Q
 .I $D(BPELIG1("C")) W "CHAMPVA"
 .I $D(BPELIG1("C")),$D(BPELIG1("T")) W "; "
 .I $D(BPELIG1("T")) W "TRICARE"
 W !,"Sorted By: "_$P($P(BPSORT,U),":",2)_" "_$P($P(BPSORT,U,2),":",2)_" "_$P($P(BPSORT,U,3),":",2)
 ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 W !,"'*' indicates the HPID/OEID failed validation checks"
 ; Write header for Potential Secondary Claims Rpt
 I BPRTYPE=9 D
 . ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 . W !,"Bill#",?11,"RX#",?21,"Fill",?26,"Patient",?36,"PatID",?42,"COB",?46,"Date",?55,"Payers",?69,"HPID/OEID",!
 ; Write header for Potential Dual Eligible Claims Rpt
 I BPRTYPE=8 D
 . ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 . W !,"RX#",?9,"Fill",?14,"Date",?22,"Patient",?37,"PatID",?43,"COB",?47,"Elig",?53,"Payers",?69,"HPID/OEID",!
 F X=1:1:IOM W "-"
 Q
 ;
SELELIG(BPELIG1) ;Select Eligibility Types
 N DIR,X
 ;
 S DIR(0)="SO^T:TRICARE;C:CHAMPVA;A:ALL"
 S DIR("A")="Display (T)RICARE or (C)HAMPVA or (A)LL Entries"
 S DIR("B")="A"
 ;
 S X=$$SELMULTI^BPSOPR(.DIR,.BPELIG1)
 Q X
 ;
SELEXCEL() ; Select whether to capture data for Excel report.
 N BPEXCEL,DIR,DIRUT,DTOUT,DUOUT,DIROUT
 ;
 S BPEXCEL=0
 S DIR(0)="Y",DIR("B")="NO",DIR("T")=DTIME W !
 S DIR("A")="Do you want to capture report data for an Excel document"
 S DIR("?")="^D HEXC^BPSRPT4"
 ;
 D ^DIR
 K DIR
 I $D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) Q "^"
 I Y S BPEXCEL=1
 ;
 ;Display Excel display message
 I BPEXCEL=1 D
 .W !!?5,"Before continuing, please set up your terminal to capture the"
 .W !?5,"detail report data and save the detail report data in a text file"
 .W !?5,"to a local drive. This report may take a while to run."
 .W !!?5,"Note: To avoid undesired wrapping of the data saved to the file,"
 .W !?5,"      please enter '0;256;99999' at the 'DEVICE:' prompt.",!
 ;
 Q BPEXCEL
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HBPSRPT9   13590     printed  Sep 23, 2025@19:29:04                                                                                                                                                                                                    Page 2
BPSRPT9   ;BHAM ISC/BNT - ECME REPORTS ;19-SEPT-08
 +1       ;;1.0;E CLAIMS MGMT ENGINE;**8,18,20,27**;JUN 2004;Build 15
 +2       ;;Per VA Directive 6402, this routine should not be modified.
 +3       ;
 +4        QUIT 
 +5       ; Front End for Potential Secondary and Dual Eligible Claims Reports
 +6       ; Input variable: BPRTYPE -> 8 = Potential Dual Eligible
 +7       ;                            9 = Potential Secondary
 +8       ;
 +9       ; Passed variables - The following local variables are passed around the BPSRPT* routines
 +10      ;                    and are not passed as parameters but are assumed to be defined:
 +11      ;                    BPACREJ,BPAUTREV,BPBEGDT,BPBLINE,BPCCRSN,BPDRGCL,BPDRUG,BPENDDT,BPEXCEL,
 +12      ;                    BPINSINF,BPGRPLN,BPMWC,BPNOW,BPPAGE,BPPHARM,BPQ,BPQSTDRG,
 +13      ;                    BPRLNRL,BPRTBCK,BPSDATA,BPSUMDET,BPRTYPE
 +14      ;
EN(BPRTYPE) ;
 +1        NEW BPREJCD,BPRLNRL,BPRPTNAM,BPRTBCK,BPSCR,BPSUMDET,CODE,POS,STAT,X,Y,BPINS,BPARR
 +2        NEW BPSORT,BPCRON,BPSEL,BPS1,BPS2,BPS3,BPS4,BPS5,BPDT,BPPHARM,BPDIVS,BPELIG1,BPSEXCEL
 +3       ;
 +4       ;Verify that a valid report has been requested
 +5        IF ",8,9,"'[(","_$GET(BPRTYPE)_",")
               DO EN^DDIOL("<Invalid Menu Definition - Report Undefined>")
               HANG 3
               QUIT 
 +6       ;
 +7        DO EN^DDIOL("SELECTION CRITERIA","","!")
 +8       ;Prompt for ECME Pharmacy Division(s) (No Default)
 +9       ;Sets up BPPHARM variable and array, BPPHARM =0 ALL or BPPHARM=1,BPPHARM(ptr) for list
 +10       SET X=$$SELPHARM^BPSRPT3()
           IF X="^"
               QUIT 
 +11      ;
 +12       IF BPRTYPE=8
               SET X=$$SELELIG(.BPELIG1)
               IF X="^"
                   QUIT 
 +13      ;
 +14      ;Prompt to select Date Range
 +15      ;Returns (Start Date^End Date)
 +16       SET BPDT=$$SELDATE()
           IF BPDT="^"
               QUIT 
 +17      ;
 +18      ;Get sort criteria
 +19       IF $$GETSORT(BPRTYPE)=-1
               QUIT 
 +20      ;
 +21       SET BPSEXCEL=0
 +22       IF BPRTYPE=9
               SET BPSEXCEL=$$SELEXCEL()
 +23      ;
 +24       DO DEV("RUN^BPSRPT9",BPRTYPE,BPSEXCEL)
 +25       QUIT 
 +26      ;
RUN       ; Process Report - runs in the background or foreground
 +1        NEW BPRPTARR
 +2       ; Collect Potential Secondary Rx Claims data
           IF BPRTYPE=9
               DO GETSEC^BPSRPT9A(BPDT,.BPRPTARR,BPSEXCEL)
 +3       ; Collect Potential Dual Eligible Claims data
           IF BPRTYPE=8
               DO GETTRI^BPSRPT9A(BPDT,.BPRPTARR)
 +4       ;
 +5        USE IO
 +6        IF BPRTYPE=8
               DO PRNTTRI(.BPRPTARR)
 +7        IF BPRTYPE=9
               DO PRNTSEC(.BPRPTARR)
 +8       ;
 +9       ; close the device
           DO ^%ZISC
 +10       if $DATA(ZTQUEUED)
               SET ZTREQ="@"
 +11       QUIT 
 +12      ;
 +13      ; Print Dual Eligible Report
PRNTTRI(BPARR) ;
 +1        NEW BPG,BPQUIT,CNT,RX,FILL,FILLDT,PATNAME,COB,ELIG,PAYER,INSC,PSRT,PSRTID,SSRT,TSRT,DATA
 +2        NEW SSRTTYP,TSRTTYP
 +3        SET SSRTTYP=$PIECE($PIECE(BPSORT,U,2),":")
 +4        SET TSRTTYP=$PIECE($PIECE(BPSORT,U,3),":")
 +5        SET (BPG,BPQUIT,CNT)=0
 +6       ;
 +7       ; if no data found, display header and message and then get out
 +8        IF '$DATA(BPARR)
               Begin DoDot:1
 +9                DO HDR(BPRTYPE)
 +10               WRITE !!?5,"No potential claims available for date range"
 +11               QUIT 
               End DoDot:1
               QUIT 
 +12      ;
 +13       SET PSRT=-DT-1
 +14       DO HDR(BPRTYPE)
 +15       FOR 
               SET PSRT=$ORDER(BPARR(PSRT))
               if PSRT=""
                   QUIT 
               Begin DoDot:1
 +16              SET PSRTID=$SELECT($PIECE(...
                  SET $PIECE(BPSORT,U),":")="N":"Patient Name: ",$PIECE($PIECE(BPSORT,U),":")="P":"Payer: ",$PIECE($PIECE(BPSORT,U),":")="S":"Date of Service: ",...
                   ... $PIECE($PIECE(BPSORT,U),":")="O":"Payer Sequence: ",$PIECE($PIECE(BPSORT,U),":")="E":"Patient Eligibility: ",1:"Division: ")
 +17               IF PSRT'=0
                       WRITE !!,PSRTID,$SELECT($PIECE($PIECE(BPSORT,U),":")="S":$$FMTE^XLFDT($$ABS^XLFMTH(PSRT),"2D"),1:PSRT)
 +18               SET SSRT=-DT-1
                   FOR 
                       SET SSRT=$ORDER(BPARR(PSRT,SSRT))
                       if SSRT=""
                           QUIT 
                       Begin DoDot:2
 +19                       IF SSRTTYP="D"
                               WRITE !,"   Division: ",SSRT
 +20                       SET TSRT=-DT-1
                           FOR 
                               SET TSRT=$ORDER(BPARR(PSRT,SSRT,TSRT))
                               if TSRT=""
                                   QUIT 
                               Begin DoDot:3
 +21                               IF TSRTTYP="D"
                                       WRITE !,"   Division: ",TSRT
 +22                               SET CNT=0
                                   FOR 
                                       SET CNT=$ORDER(BPARR(PSRT,SSRT,TSRT,CNT))
                                       if CNT=""
                                           QUIT 
                                       Begin DoDot:4
 +23                                       SET DATA=BPARR(PSRT,SSRT,TSRT,CNT)
 +24                                       SET RX=$PIECE(DATA,U,2)
                                           SET FILL=$PIECE(DATA,U,3)
                                           SET FILLDT=$PIECE(DATA,U,4)
                                           SET PATNAME=$PIECE(DATA,U,5)
 +25                                       SET INSC=0
                                           FOR 
                                               SET INSC=$ORDER(BPARR(PSRT,SSRT,TSRT,CNT,"INS",INSC))
                                               if INSC=""
                                                   QUIT 
                                               Begin DoDot:5
 +26                                               SET COB=$SELECT(INSC=1:"p",INSC=2:"s",1:"t")
 +27                                               SET ELIG=$PIECE(BPARR(PSRT,SSRT,TSRT,CNT,"ELIG"),U)
 +28      ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 +29                                               SET PAYER=$EXTRACT($PIECE(BPARR(PSRT,SSRT,TSRT,CNT,"INS",INSC),U)_"-"_$PIECE(BPARR(PSRT,SSRT,TSRT,CNT,"INS",INSC),U,2),1,16)
 +30                                               IF $Y>(IOSL-4)
                                                       DO HDR(BPRTYPE)
                                                       if BPQUIT
                                                           QUIT 
 +31      ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 +32                                               WRITE !,RX,?10,FILL,?13,FILLDT,?22,$EXTRACT(PATNAME,1,15),?38,$PIECE(DATA,U,6),?44,COB,?47,ELIG,?52,PAYER,?69,$PIECE(BPARR(PSRT,SSRT,TSRT,CNT,"INS",INSC),U,3)
 +33                                               SET ELIG=$SELECT($PIECE(BPARR(PSRT,SSRT,TSRT,CNT,"ELIG"),U,2)]"":$PIECE(BPARR(PSRT,SSRT,TSRT,CNT,"ELIG"),U,2),1:"")
 +34      ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 +35                                               IF ELIG]""
                                                       WRITE !,?47,ELIG
                                               End DoDot:5
                                       End DoDot:4
                                       if BPQUIT
                                           QUIT 
                               End DoDot:3
                               if BPQUIT
                                   QUIT 
                       End DoDot:2
                       if BPQUIT
                           QUIT 
               End DoDot:1
               if BPQUIT
                   QUIT 
 +36       QUIT 
 +37      ;
 +38      ; Print Secondary Report
PRNTSEC(BPARR) ;
 +1        NEW BPG,BPQUIT,CNT,INSC,PAYER,PSRT,PSRTID,SSRT,TSRT,DATA,INSDATA,LGFLG1,LGFLG2
 +2        NEW SSRTTYP,TSRTTYP
 +3        SET SSRTTYP=$PIECE($PIECE(BPSORT,U,2),":")
 +4        SET TSRTTYP=$PIECE($PIECE(BPSORT,U,3),":")
 +5        SET (BPG,BPQUIT)=0
 +6       ;
 +7       ; if no data found, display header and message and then get out
 +8        IF '$DATA(BPARR)
               Begin DoDot:1
 +9                DO HDR(BPRTYPE)
 +10               WRITE !!?5,"No potential secondary Rx claims available for date range"
 +11               QUIT 
               End DoDot:1
               QUIT 
 +12      ;
 +13       IF BPSEXCEL
               DO PRNTSECE(.BPARR)
               QUIT 
 +14      ;
 +15       SET PSRT=-DT-1
 +16       DO HDR(BPRTYPE)
 +17       FOR 
               SET PSRT=$ORDER(BPARR(PSRT))
               if PSRT=""
                   QUIT 
               Begin DoDot:1
 +18               SET PSRTID=$SELECT($PIECE($PIECE(BPSORT,U),":")="N":"Patient Name: ",$PIECE($PIECE(BPSORT,U),":")="P":"Payer: ",$PIECE($PIECE(BPSORT,U),":")="S":"Date of Service: ",$PIECE($PIECE(BPSORT,U),":")="O":"Payer Sequence: ",1:"Division: ")
 +19               IF PSRT'=0
                       WRITE !!,PSRTID,$SELECT($PIECE($PIECE(BPSORT,U),":")="S":$$FMTE^XLFDT($$ABS^XLFMTH(PSRT),"2D"),1:PSRT)
 +20               SET SSRT=-DT-1
                   FOR 
                       SET SSRT=$ORDER(BPARR(PSRT,SSRT))
                       if SSRT=""
                           QUIT 
                       Begin DoDot:2
 +21                       IF SSRTTYP="D"
                               WRITE !,"   Division: ",SSRT
 +22                       SET TSRT=-DT-1
                           FOR 
                               SET TSRT=$ORDER(BPARR(PSRT,SSRT,TSRT))
                               if TSRT=""
                                   QUIT 
                               Begin DoDot:3
 +23                               IF TSRTTYP="D"
                                       WRITE !,"   Division: ",TSRT
 +24                               SET CNT=0
                                   FOR 
                                       SET CNT=$ORDER(BPARR(PSRT,SSRT,TSRT,CNT))
                                       if CNT=""
                                           QUIT 
                                       Begin DoDot:4
 +25                                       SET DATA=$GET(BPARR(PSRT,SSRT,TSRT,CNT))
 +26                                       IF $Y>(IOSL-4)
                                               DO HDR(BPRTYPE)
                                               if BPQUIT
                                                   QUIT 
 +27      ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 +28                                       IF DATA]""
                                               WRITE !,$PIECE(DATA,U,2),?11,$PIECE(DATA,U,3),?21,$PIECE(DATA,U,4),?26,$EXTRACT($PIECE(DATA,U,6),1,10),?37,$PIECE(DATA,U,9),?43,$PIECE(DATA,U,7),?46,$PIECE(DATA,U,5),?55,$EXTRACT($PIECE(DATA,U,8),1,13),?69,$P
IECE(DATA,U,10)
 +29      ;
 +30      ; If the bill# contains "(P)" it is a primary ECME reject, flag it for the legend
 +31                                       IF $PIECE(DATA,U,2)["(P)"
                                               SET LGFLG1=1
 +32                                       SET INSC=0
                                           FOR 
                                               SET INSC=$ORDER(BPARR(PSRT,SSRT,TSRT,CNT,INSC))
                                               if INSC=""
                                                   QUIT 
                                               Begin DoDot:5
 +33                                               SET INSDATA=BPARR(PSRT,SSRT,TSRT,CNT,INSC)
 +34                                               IF $Y>(IOSL-4)
                                                       DO HDR(BPRTYPE)
                                                       if BPQUIT
                                                           QUIT 
 +35      ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 +36                                               WRITE !,?43,$PIECE(INSDATA,U),?55,$EXTRACT($PIECE(INSDATA,U,2),1,13),?69,$PIECE(INSDATA,U,3)
 +37                                               IF $PIECE(INSDATA,U,1)["-"
                                                       SET LGFLG2=1
                                               End DoDot:5
                                               if BPQUIT
                                                   QUIT 
                                       End DoDot:4
                                       if BPQUIT
                                           QUIT 
                               End DoDot:3
                               if BPQUIT
                                   QUIT 
                       End DoDot:2
                       if BPQUIT
                           QUIT 
               End DoDot:1
               if BPQUIT
                   QUIT 
 +38      ;
 +39       if BPQUIT
               QUIT 
 +40       IF '$GET(LGFLG1)
               IF '$GET(LGFLG2)
                   QUIT 
 +41      ; display the legend at the end of the report
 +42       IF $Y>(IOSL-4)
               DO HDR(BPRTYPE)
               if BPQUIT
                   QUIT 
 +43       WRITE !
 +44       IF $GET(LGFLG1)
               WRITE !,"Bill# ""(P) Rej"" indicates a rejected/closed primary ECME claim"
 +45       IF $GET(LGFLG2)
               WRITE !,"COB ""-"" indicates a blank COB field in the pt. ins. policy"
 +46       QUIT 
 +47      ;
 +48      ; Print Secondary Report Excel Format
PRNTSECE(BPARR) ;
 +1        NEW BPSAR,LGFLG1,LGFLG2
 +2        WRITE !,"Division^Bill#^RX#^Fill^Patient^PatID^COB^Date^Payers^HPID/OEID"
 +3        SET BPSAR="BPARR(0)"
 +4        FOR 
               SET BPSAR=$QUERY(@BPSAR)
               if BPSAR=""
                   QUIT 
               Begin DoDot:1
 +5                IF $PIECE(@BPSAR,"^",2)["(P)"
                       SET LGFLG1=1
 +6                IF $PIECE(@BPSAR,"^",7)["-"
                       SET LGFLG2=1
 +7                WRITE !,@BPSAR
               End DoDot:1
 +8        IF $GET(LGFLG1)
               WRITE !,"Bill# ""(P) Rej"" indicates a rejected/closed primary ECME claim"
 +9        IF $GET(LGFLG2)
               WRITE !,"COB ""-"" indicates a blank COB field in the pt. ins. policy"
 +10       QUIT 
 +11      ;
 +12      ; Prompt for sort order
GETSORT(BPRTYPE)  NEW DIR,DIRUT,DTOUT,DUOUT,X,Y,BPS1,BPS2,BPS3,BPS4,BPS5,BPSEL
 +1       ;
 +2        SET BPSORT="^^"
           SET BPCRON=1
 +3        SET BPS1="N:Patient Name;"
           SET BPS2="P:Payer;"
           SET BPS3="S:Date Of Service;"
           SET BPS4="D:Division;"
 +4        IF BPRTYPE=8
               SET BPS5="E:Patient Eligibility;"
 +5       ;
 +6        DO EN^DDIOL("SORT CRITERIA","","!")
 +7        SET BPSEL=BPS1_BPS2_BPS3_BPS4
 +8        IF BPRTYPE=8
               SET BPSEL=BPSEL_BPS5
 +9       ;Set Primary Sort
 +10       SET DIR(0)="SB^"_BPSEL
 +11       SET DIR("?")="Enter a code from the list to indicate the Primary sort order."
 +12       SET DIR("A")="Primary Sort"
 +13       SET DIR("B")="Division"
 +14       DO ^DIR
           KILL DIR
 +15       IF ($GET(DUOUT)=1)!($GET(DTOUT)=1)
               QUIT -1
 +16       IF BPRTYPE=9
               SET $PIECE(BPSORT,U)=$SELECT(Y=$PIECE(BPS1,":"):BPS1,Y=$PIECE(BPS2,":"):BPS2,Y=$PIECE(BPS3,":"):BPS3,1:BPS4)
 +17       IF BPRTYPE=8
               SET $PIECE(BPSORT,U)=$SELECT(Y=$PIECE(BPS1,":"):BPS1,Y=$PIECE(BPS2,":"):BPS2,Y=$PIECE(BPS3,":"):BPS3,Y=$PIECE(BPS4,":"):BPS4,1:BPS5)
 +18       IF Y="S"
               SET BPCRON=$$ASKCRON()
               IF BPCRON="^"
                   QUIT -1
 +19      ;
 +20      ;Get Secondary Sort
 +21       NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
 +22       SET BPSEL=$$SRTORD($PIECE($PIECE(BPSORT,U),":"))
 +23       SET DIR(0)="SOB^"_BPSEL
 +24       SET DIR("?")="Enter a code from the list to indicate the Secondary sort order."
 +25       SET DIR("A")="Secondary Sort"
 +26       DO ^DIR
           KILL DIR
 +27       IF ($GET(DUOUT)=1)!($GET(DTOUT)=1)
               QUIT -1
 +28       IF BPRTYPE=9
               SET $PIECE(BPSORT,U,2)=$SELECT(Y=$PIECE(BPS1,":"):BPS1,Y=$PIECE(BPS2,":"):BPS2,Y=$PIECE(BPS3,":"):BPS3,1:BPS4)
 +29       IF BPRTYPE=8
               SET $PIECE(BPSORT,U,2)=$SELECT(Y=$PIECE(BPS1,":"):BPS1,Y=$PIECE(BPS2,":"):BPS2,Y=$PIECE(BPS3,":"):BPS3,Y=$PIECE(BPS4,":"):BPS4,1:BPS5)
 +30       IF Y="S"
               SET BPCRON=$$ASKCRON()
               IF BPCRON="^"
                   QUIT -1
 +31      ;
 +32      ;Get Tertiary Sort
 +33       NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
 +34       SET BPSEL=$$SRTORD($PIECE($PIECE(BPSORT,U,2),":"))
 +35       SET DIR(0)="SOB^"_BPSEL
 +36       SET DIR("A")="Tertiary Sort"
 +37       SET DIR("?")="Enter a code from the list to indicate the Tertiary sort order."
 +38       DO ^DIR
           KILL DIR
 +39       IF ($GET(DUOUT)=1)!($GET(DTOUT)=1)
               QUIT -1
 +40       IF BPRTYPE=9
               SET $PIECE(BPSORT,U,3)=$SELECT(Y=$PIECE(BPS1,":"):BPS1,Y=$PIECE(BPS2,":"):BPS2,Y=$PIECE(BPS3,":"):BPS3,1:BPS4)
 +41       IF BPRTYPE=8
               SET $PIECE(BPSORT,U,3)=$SELECT(Y=$PIECE(BPS1,":"):BPS1,Y=$PIECE(BPS2,":"):BPS2,Y=$PIECE(BPS3,":"):BPS3,Y=$PIECE(BPS4,":"):BPS4,1:BPS5)
 +42       IF Y="S"
               SET BPCRON=$$ASKCRON()
               IF BPCRON="^"
                   QUIT -1
 +43       QUIT 0
 +44      ;
 +45      ;Ask if Date should be displayed in chronological order
ASKCRON() ;
 +1        NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
 +2        SET DIR(0)="Y"
 +3        SET DIR("A")="     Display oldest date first"
 +4        SET DIR("B")="YES"
 +5        DO ^DIR
           KILL DIR
 +6        IF ($GET(DUOUT)=1)!($GET(DTOUT)=1)!($DATA(DIRUT))
               QUIT "^"
 +7        QUIT Y
 +8       ;
 +9       ;Handle the sort order display
SRTORD(Y) ;
 +1        IF Y="N"
               SET BPS1=""
 +2        IF Y="P"
               SET BPS2=""
 +3        IF Y="S"
               SET BPS3=""
 +4        IF Y="D"
               SET BPS4=""
 +5        IF BPRTYPE=8
               IF Y="E"
                   SET BPS5=""
 +6        SET BPSEL=BPS1_BPS2_BPS3_BPS4
 +7        IF BPRTYPE=8
               SET BPSEL=BPSEL_BPS5
 +8        QUIT BPSEL
 +9       ;
 +10      ; Enter Date Range
 +11      ;
 +12      ; Return Value -> P1^P2
 +13      ; 
 +14      ;           where P1 = Earliest Date
 +15      ;                    = ^ Exit
 +16      ;                 P2 = Latest Date
 +17      ;                    = blank for Exit
SELDATE() ;
 +1        NEW BPSIBDT,DIR,DIRUT,DTOUT,DUOUT,VAL,X,Y
 +2        SET VAL=""
           SET DIR(0)="DA^:DT:EX"
           SET DIR("A")="EARLIEST DATE: "
 +3        WRITE !
           DO ^DIR
 +4       ;
 +5       ;Check for "^", timeout, or blank entry
 +6        IF ($GET(DUOUT)=1)!($GET(DTOUT)=1)!($GET(X)="")
               SET VAL="^"
 +7       ;
 +8        IF VAL=""
               Begin DoDot:1
 +9                SET $PIECE(VAL,U)=Y
 +10               SET DIR(0)="DA^"_VAL_":DT:EX"
                   SET DIR("A")="  LATEST DATE: "
                   SET DIR("B")="T"
 +11               DO ^DIR
 +12      ;
 +13      ;Check for "^", timeout, or blank entry
 +14               IF ($GET(DUOUT)=1)!($GET(DTOUT)=1)!($GET(X)="")
                       SET VAL="^"
                       QUIT 
 +15      ;
 +16      ;Define Entry
 +17               SET $PIECE(VAL,U,2)=Y
               End DoDot:1
 +18      ;
 +19       QUIT VAL
 +20      ;
 +21      ;
 +22      ;Device Selection
 +23      ;Input: BPR = Routine
 +24      ;       BPRTYPE = Report Type used to identify Task name
 +25      ;       BPSEXCEL = Format output for Excel
DEV(BPR,BPRTYPE,BPSEXCEL) ;
 +1        NEW %ZIS,ZTSK,ZTSAVE,POP,ZTRTN,ZTDESC
 +2        SET %ZIS="MQ"
           DO ^%ZIS
           if POP
               QUIT 
 +3        IF $DATA(IO("Q"))
               Begin DoDot:1
 +4                SET ZTRTN=BPR
                   SET ZTDESC=$$RPTNAME(BPRTYPE)
                   SET ZTSAVE("BP*")=""
 +5                DO ^%ZTLOAD
                   DO HOME^%ZIS
                   KILL IO("Q")
                   WRITE !,"QUEUED TASK #",ZTSK
               End DoDot:1
               QUIT 
 +6        DO @BPR
 +7        QUIT 
 +8       ;
RPTNAME(BPRTYPE) ;
 +1       ;Verify that a valid report has been requested
 +2        QUIT $SELECT(BPRTYPE=8:"Potential Claims Report for Dual Eligible",BPRTYPE=9:"Potential Secondary Rx Claims Report",1:"")
 +3       ;
 +4       ;Print the report Header
 +5       ;Input: BPRTYPE = Report Type
HDR(BPRTYPE) ;
 +1       ; BPG is assumed for page #
 +2        if BPQUIT
               QUIT 
 +3        NEW DIR,X,Y,BPDIV
 +4        IF $EXTRACT(IOST,1,2)="C-"
               IF BPG
                   SET DIR(0)="E"
                   DO ^DIR
                   KILL DIR
                   IF $DATA(DIRUT)!($DATA(DUOUT))
                       SET BPQUIT=1
                       KILL DIRUT,DTOUT,DUOUT
                       QUIT 
 +5        SET BPG=BPG+1
 +6        WRITE @IOF
 +7        FOR X=1:1:IOM
               WRITE "="
 +8        WRITE $$RPTNAME(BPRTYPE),"     ",$$FMTE^XLFDT($PIECE(BPDT,U),"2D")," - ",$$FMTE^XLFDT($PIECE(BPDT,U,2),"2D"),?IOM-10," Page: ",BPG
 +9        WRITE !,"Selected Divisions: "
 +10       IF 'BPPHARM
               WRITE "ALL"
 +11       IF BPPHARM
               SET X=0
               FOR 
                   SET X=$ORDER(BPPHARM(X))
                   if X=""
                       QUIT 
                   WRITE $PIECE(BPPHARM(X),U,2),"; "
 +12       IF BPRTYPE=8
               Begin DoDot:1
 +13               WRITE !,"Selected Patient Eligibility: "
 +14               IF BPELIG1=0
                       WRITE "ALL"
                       QUIT 
 +15               IF $DATA(BPELIG1("C"))
                       WRITE "CHAMPVA"
 +16               IF $DATA(BPELIG1("C"))
                       IF $DATA(BPELIG1("T"))
                           WRITE "; "
 +17               IF $DATA(BPELIG1("T"))
                       WRITE "TRICARE"
               End DoDot:1
 +18       WRITE !,"Sorted By: "_$PIECE($PIECE(BPSORT,U),":",2)_" "_$PIECE($PIECE(BPSORT,U,2),":",2)_" "_$PIECE($PIECE(BPSORT,U,3),":",2)
 +19      ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 +20       WRITE !,"'*' indicates the HPID/OEID failed validation checks"
 +21      ; Write header for Potential Secondary Claims Rpt
 +22       IF BPRTYPE=9
               Begin DoDot:1
 +23      ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 +24               WRITE !,"Bill#",?11,"RX#",?21,"Fill",?26,"Patient",?36,"PatID",?42,"COB",?46,"Date",?55,"Payers",?69,"HPID/OEID",!
               End DoDot:1
 +25      ; Write header for Potential Dual Eligible Claims Rpt
 +26       IF BPRTYPE=8
               Begin DoDot:1
 +27      ; BPS*1*18:  Modify ePharmacy Screens/Reports to Include the Validated HPID/OEID
 +28               WRITE !,"RX#",?9,"Fill",?14,"Date",?22,"Patient",?37,"PatID",?43,"COB",?47,"Elig",?53,"Payers",?69,"HPID/OEID",!
               End DoDot:1
 +29       FOR X=1:1:IOM
               WRITE "-"
 +30       QUIT 
 +31      ;
SELELIG(BPELIG1) ;Select Eligibility Types
 +1        NEW DIR,X
 +2       ;
 +3        SET DIR(0)="SO^T:TRICARE;C:CHAMPVA;A:ALL"
 +4        SET DIR("A")="Display (T)RICARE or (C)HAMPVA or (A)LL Entries"
 +5        SET DIR("B")="A"
 +6       ;
 +7        SET X=$$SELMULTI^BPSOPR(.DIR,.BPELIG1)
 +8        QUIT X
 +9       ;
SELEXCEL() ; Select whether to capture data for Excel report.
 +1        NEW BPEXCEL,DIR,DIRUT,DTOUT,DUOUT,DIROUT
 +2       ;
 +3        SET BPEXCEL=0
 +4        SET DIR(0)="Y"
           SET DIR("B")="NO"
           SET DIR("T")=DTIME
           WRITE !
 +5        SET DIR("A")="Do you want to capture report data for an Excel document"
 +6        SET DIR("?")="^D HEXC^BPSRPT4"
 +7       ;
 +8        DO ^DIR
 +9        KILL DIR
 +10       IF $DATA(DIRUT)!$DATA(DTOUT)!$DATA(DUOUT)!$DATA(DIROUT)
               QUIT "^"
 +11       IF Y
               SET BPEXCEL=1
 +12      ;
 +13      ;Display Excel display message
 +14       IF BPEXCEL=1
               Begin DoDot:1
 +15               WRITE !!?5,"Before continuing, please set up your terminal to capture the"
 +16               WRITE !?5,"detail report data and save the detail report data in a text file"
 +17               WRITE !?5,"to a local drive. This report may take a while to run."
 +18               WRITE !!?5,"Note: To avoid undesired wrapping of the data saved to the file,"
 +19               WRITE !?5,"      please enter '0;256;99999' at the 'DEVICE:' prompt.",!
               End DoDot:1
 +20      ;
 +21       QUIT BPEXCEL
 +22      ;