Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BPSRPT9

BPSRPT9.m

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