BPSRPT8 ;BHAM ISC/BEE - ECME REPORTS ;14-FEB-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
 ;
 ;Routine to Display the Reports in Excel
 ;
 ;Print Report Line 1
 ;
 ; Input Variable -> BPRTYPE,BPDIV,BPGRPLAN,BPDFN,BPRX,BPREF,BPX,BPSRTDT
 ;                   BPBIL,BPINS,BPCOLL
 ; 
WRLINE1(BPRTYPE,BPREC,BPDIV,BPGRPLAN,BPDFN,BPRX,BPREF,BPX,BPSRTDT,BPBIL,BPINS,BPCOLL) ;
 ;
 ;Division
 S BPREC=$S(BPDIV=0:"BLANK",$$DIVNAME^BPSSCRDS(BPDIV)]"":$$DIVNAME^BPSSCRDS(BPDIV),1:BPDIV)_U
 ;Insurance
 I BPRTYPE'=5,BPRTYPE'=6 S BPREC=BPREC_$E(BPGRPLAN,1,90)_U
 S BPREC=BPREC_$$PATNAME^BPSRPT6(BPDFN)_U  ;Patient Name
 S BPREC=BPREC_"("_$$SSN4^BPSRPT6(BPDFN)_")"_U ;L4SSN
 S BPREC=BPREC_$$RXNUM^BPSRPT6(BPRX)_$$COPAY^BPSRPT6(BPRX)_U ;RX Number
 S BPREC=BPREC_BPREF_"/"_$$ECMENUM^BPSRPT1($P(BPX,U,3))_U ;Refill/ECME Number
 ;
 I (BPRTYPE=1)!(BPRTYPE=4) D  Q
 . S BPREC=BPREC_$$DATTIM^BPSRPT1(BPSRTDT)_U  ;Date
 . S BPREC=BPREC_$TR($J(BPBIL,10,2)," ")_U ;$Billed
 . S BPREC=BPREC_$TR($J(BPINS,10,2)," ")_U ;$Ins. Paid
 . S BPREC=BPREC_$S(BPCOLL]"":$TR($J(BPCOLL,10,2)," "),1:"")_U ;$Collected
 ;
 I BPRTYPE=2 D  Q
 . S BPREC=BPREC_$$DATTIM^BPSRPT1(BPSRTDT)_U ;Date
 . S BPREC=BPREC_$$DATTIM^BPSRPT1(+BPX)_U  ;Released On
 . ;RX INFO
 . S BPREC=BPREC_$$MWC^BPSRPT6(BPRX,BPREF)_U ;Fill Location
 . S BPREC=BPREC_$$RTBCKNAM^BPSRPT1($$RTBCK^BPSRPT1($P(BPX,U,3)))_U  ;Fill Type
 . S BPREC=BPREC_$$RXSTATUS^BPSRPT6($P(BPX,U,3)) ;Status
 . S BPREC=BPREC_$S($P(BPX,U):"/RL",1:"/NR")_U ;RL/NR
 ;
 I BPRTYPE=3 D  Q
 . S BPREC=BPREC_$$DATTIM^BPSRPT1(BPSRTDT)_U ;Date
 . S BPREC=BPREC_$TR($J(BPBIL,10,2)," ")_U ;$Billed
 . S BPREC=BPREC_$TR($J(BPINS,10,2)," ")_U ;Insurance Response
 ;
 I BPRTYPE=5 D  Q
 . S BPREC=BPREC_$$DATTIM^BPSRPT1($$TRANDT^BPSRPT2($P(BPX,U,3),1))_U ;Completed
 . S BPREC=BPREC_$$TTYPE^BPSRPT7($P(BPX,U,4),$P(BPX,U,5))_U ;Trans Type
 . S BPREC=BPREC_$$RESPONSE^BPSRPT7($P(BPX,U,4),$P(BPX,U,5))_U ;Payer Response
 ;
 I BPRTYPE=7 D  Q
 . ;RX INFO
 . S BPREC=BPREC_$$MWC^BPSRPT6(BPRX,BPREF)_U ;Fill Location
 . S BPREC=BPREC_$$RTBCKNAM^BPSRPT1($$RTBCK^BPSRPT1($P(BPX,U,3)))_U ;Fill Type
 . S BPREC=BPREC_$$RXSTATUS^BPSRPT6($P(BPX,U,3)) ;Status
 . S BPREC=BPREC_$S($P(BPX,U):"/RL",1:"/NR")_U ;RL/NR
 . S BPREC=BPREC_$S($P(BPX,U,13):"REJ",1:"")_U
 . S BPREC=BPREC_$$DRGNAM^BPSRPT6($P(BPX,U,14),32)_U ;Drug
 . S BPREC=BPREC_$TR($$GETNDC^BPSRPT6(BPRX,BPREF),"-")_U
 Q
 ;
 ;Print Report Line 2
 ;
 ; Input Variable -> BPRTYPE,BPX,BPRX,BPREF,BPBIL,BPGRPLAN
 ; 
WRLINE2(BPRTYPE,BPREC,BPX,BPRX,BPREF,BPBIL,BPGRPLAN) ;
 I (BPRTYPE=1)!(BPRTYPE=4) D  Q
 . ;Drug, Released On
 . S BPREC=BPREC_$$DRGNAM^BPSRPT6($P(BPX,U,14),32)_U_$TR($$GETNDC^BPSRPT6(BPRX,BPREF),"-")_U
 . S BPREC=BPREC_$$DATTIM^BPSRPT1(+BPX)_U
 . ;RX INFO
 . S BPREC=BPREC_$$MWC^BPSRPT6(BPRX,BPREF)_U ;Fill Location
 . S BPREC=BPREC_$$RTBCKNAM^BPSRPT1($$RTBCK^BPSRPT1($P(BPX,U,3)))_U ;Fill Type
 . S BPREC=BPREC_$$RXSTATUS^BPSRPT6($P(BPX,U,3)) ;Status
 . S BPREC=BPREC_$S($P(BPX,U):"/RL",1:"/NR")_U ;RL/NR
 . S BPREC=BPREC_$S($P(BPX,U,13):"REJ",1:"")
 . I BPRTYPE=1 S BPREC=BPREC_U_$$BILL^BPSRPT6(BPRX,BPREF) ;Bill #
 ;
 I BPRTYPE=2 D  Q
 . S BPREC=BPREC_$E($$CRDHLDID^BPSRPT2(+$P(BPX,U,3)),3,23)_U ;Cardholder ID
 . S BPREC=BPREC_$E($$GRPID^BPSRPT2(+$P(BPX,U,3)),3,10)_U ;Group ID
 . S BPREC=BPREC_$TR($J(BPBIL,10,2)," ")_U ;$Billed
 . S BPREC=BPREC_$$QTY^BPSRPT6($P(BPX,U,3))_U ;Qty
 . S BPREC=BPREC_$$GETNDC^BPSRPT6(BPRX,BPREF)_U ;NDC#
 . S BPREC=BPREC_$$DRGNAM^BPSRPT6($P(BPX,U,14),32)_U ;Drug
 ;
 I BPRTYPE=3 D  Q
 . S BPREC=BPREC_$$DRGNAM^BPSRPT6($P(BPX,U,14),32)_U ;Drug
 . S BPREC=BPREC_$TR($$GETNDC^BPSRPT6(BPRX,BPREF),"-")_U
 . ;RX INFO
 . S BPREC=BPREC_$$MWC^BPSRPT6(BPRX,BPREF)_U ;Fill Location
 . S BPREC=BPREC_$$RTBCKNAM^BPSRPT1($$RTBCK^BPSRPT1($P(BPX,U,3)))_U ;Fill Type
 . S BPREC=BPREC_$$RXSTATUS^BPSRPT6($P(BPX,U,3)) ;Status
 . S BPREC=BPREC_$S($P(BPX,U):"/RL",1:"/NR")_U ;RL/NR
 . S BPREC=BPREC_$S($P(BPX,U,13):"REJ",1:"")
 ;
 I BPRTYPE=5 D  Q
 . S BPREC=BPREC_$$DRGNAM^BPSRPT6($P(BPX,U,14),32)_U ;Drug
 . S BPREC=BPREC_$TR($$GETNDC^BPSRPT6(BPRX,BPREF),"-")_U
 . ;RX INFO
 . S BPREC=BPREC_$$MWC^BPSRPT6(BPRX,BPREF)_U ;Fill Location
 . S BPREC=BPREC_$$RTBCKNAM^BPSRPT1($$RTBCK^BPSRPT1($P(BPX,U,3)))_U ;Fill Type
 . S BPREC=BPREC_$$RXSTATUS^BPSRPT6($P(BPX,U,3)) ;Status
 . S BPREC=BPREC_$S($P(BPX,U):"/RL",1:"/NR")_U ;RL/NR
 . S BPREC=BPREC_$S($P(BPX,U,13):"REJ",1:"")_U
 . I $P(BPGRPLAN,U,2)]"" S BPREC=BPREC_$E($P(BPGRPLAN,U,2),1,30) ;Insurance
 . S BPREC=BPREC_U_$$ELAPSE^BPSRPT6($P(BPX,U,3))  ;Elapsed Time
 ;
 I BPRTYPE=7 D  Q
 . S BPREC=BPREC_$E($$CRDHLDID^BPSRPT2(+$P(BPX,U,3)),3,23)_U ;Cardholder ID
 . S BPREC=BPREC_$E($$GRPID^BPSRPT2(+$P(BPX,U,3)),3,10)_U  ;Group ID
 . S BPREC=BPREC_$$DATTIM^BPSRPT1(+$$CLOSEDT^BPSRPT2(+$P(BPX,U,3)))_U ;Close Dt/Time
 . S BPREC=BPREC_$E($$CLSBY^BPSRPT6(+$P(BPX,U,3)),1,25)_U ;Close By
 . S BPREC=BPREC_$E($P($$CLRSN^BPSRPT7(+$P(BPX,U,3)),U,2),1,30)_U ;Close Reason
 Q
 ;
 ;Print Report Line 3
 ;
 ; Input Variable -> BPRTYPE,BPX
 ; 
WRLINE3(BPRTYPE,BPREC,BPX) N BP59,BPSARR,BPRJCNT,BPZZ
 S BP59=+$P(BPX,U,3)
 ;
 I (",2,7,")[BPRTYPE D  Q
 .S BPREC=BPREC_$$CLAIMID^BPSRPT2(BP59)_U ;Claim ID
 .S BPRJCNT=$$REJTEXT^BPSRPT2(BP59,.BPSARR)
 .F BPZZ=1:1:BPRJCNT S:BPZZ'=1 BPREC=BPREC_"," S BPREC=BPREC_$P(BPSARR(BPZZ),":")
 .;
 .;Write one record per reject/close code
 .S:+BPRJCNT=0 BPRJCNT=1
 .F BPZZ=1:1:BPRJCNT W !,$G(BPREC),U,$P($G(BPSARR(BPZZ)),":"),U,$P($G(BPSARR(BPZZ)),":",2)
 ;
 I BPRTYPE=4 D
 . ;Method
 . I $$AUTOREV^BPSRPT1(BP59) S BPREC=BPREC_U_"AUTO"_U
 . E  S BPREC=BPREC_U_"REGULAR"_U
 . ;Return Status
 . I $P(BPX,U,15)["ACCEPTED" S BPREC=BPREC_"ACCEPTED"_U
 . E  S BPREC=BPREC_"REJECTED"_U
 . ;Reason
 . S BPREC=BPREC_$$RVSRSN^BPSRPT7(+$P(BPX,U,3))
 ;
 ;Write the record
 W !,$G(BPREC)
 Q
 ;
 ;Print Excel Header
 ;
HDR(BPRTYPE) ;
 ;
 ;Check if header already printed
 I $G(BPSDATA) Q
 S BPSDATA=1
 ;
 ;Division
 W !,"DIVISION",U
 ;
 I BPRTYPE'=5,BPRTYPE'=6 W "INSURANCE",U
 ;
 I (",1,2,3,4,5,7,")[BPRTYPE W "PATIENT NAME",U,"Pt.ID",U,"RX#",U,"REF/ECME#",U
 ;
 I (BPRTYPE=1)!(BPRTYPE=4) D  Q
 . W "DATE",U
 . W "$BILLED",U
 . W "$INS RESPONSE",U
 . W "$COLLECT",U
 . W "DRUG",U
 . W "NDC",U
 . W "RELEASED ON",U
 . W "FILL LOCATION",U
 . W "FILL TYPE",U
 . W "STATUS",U
 . W "REJECTED"
 . I BPRTYPE=1 W U,"BILL#"
 . I BPRTYPE=4 W U,"REVERSAL METHOD",U,"RETURN STATUS",U,"REASON"
 ;
 I BPRTYPE=2 D  Q
 . W "DATE",U
 . W "RELEASED ON",U
 . W "FILL LOCATION",U
 . W "FILL TYPE",U
 . W "STATUS",U
 . W "CARDHOLD.ID",U
 . W "GROUP ID",U
 . W "$BILLED",U
 . W "QTY",U
 . W "NDC#",U
 . W "DRUG",U
 . W "CLAIM ID",U
 . W "REJECT CODE(S)",U
 . W "REJECT CODE",U
 . W "REJECT EXPLANATION"
 ;
 I BPRTYPE=3 D  Q
 . W "DATE",U
 . W "$BILLED",U
 . W "$INS RESPONSE",U
 . W "DRUG",U
 . W "NDC",U
 . W "FILL LOCATION",U
 . W "FILL TYPE",U
 . W "STATUS",U
 . W "REJECTED"
 ;
 I BPRTYPE=5 D  Q
 . W "COMPLETED",U
 . W "TRANS TYPE",U
 . W "PAYER RESPONSE",U
 . W "DRUG",U
 . W "NDC",U
 . W "FILL LOCATION",U
 . W "FILL TYPE",U
 . W "STATUS",U
 . W "REJECTED",U
 . W "INSURANCE",U
 . W "ELAP TIME IN SECONDS"
 ;
 I BPRTYPE=6 D  Q
 .W "DATE",U
 .W "#CLAIMS",U
 .W "AMOUNT SUBMITTED",U
 .W "RETURNED REJECTED",U
 .W "RETURNED PAYABLE",U
 .W "AMOUNT TO RECEIVE",U
 .W "DIFFERENCE"
 ;
 I BPRTYPE=7 D  Q
 . W "FILL LOCATION",U
 . W "FILL TYPE",U
 . W "STATUS",U
 . W "REJECTED",U
 . W "DRUG",U
 . W "NDC",U
 . W "CARDHOLD.ID",U
 . W "GROUP ID",U
 . W "CLOSE DATE/TIME",U
 . W "CLOSED BY",U
 . W "CLOSE REASON",U
 . W "CLAIM ID",U
 . W "REJECT CODE(S)",U
 . W "REJECT CODE",U
 . W "REJECT EXPLANATION"
 Q
 ;
 ;Print Report Insurance Subtotals
 ;
ITOT(BPRTYPE,BPDIV,BPGRPLAN,BPTBIL,BPTINS,BPTCOLL,BPCNT) N BPNP
 I (BPRTYPE=1)!(BPRTYPE=4) D  Q
 .W !!,?78,"----------",?100,"----------",?122,"----------"
 .W !,"SUBTOTALS for INS:",$E(BPGRPLAN,1,50),?78,$J(BPTBIL,10,2),?100,$J(BPTINS,10,2),?122,$J(BPTCOLL,10,2)
 .W !,"COUNT",?78,$J(BPCNT,10),?100,$J(BPCNT,10),?122,$J(BPCNT,10)
 .W:BPCNT !,"MEAN",?78,$J(BPTBIL/BPCNT,10,2),?100,$J(BPTINS/BPCNT,10,2),?122,$J(BPTCOLL/BPCNT,10,2)
 I BPRTYPE=3 D  Q
 .W !!,?100,"----------",?122,"----------"
 .W !,"SUBTOTALS for INS:",$E(BPGRPLAN,1,50),?100,$J(BPTBIL,10,2),?122,$J(BPTINS,10,2)
 .W !,"COUNT",?100,$J(BPCNT,10),?122,$J(BPCNT,10)
 .W:BPCNT !,"MEAN",?100,$J(BPTBIL/BPCNT,10,2),?122,$J(BPTINS/BPCNT,10,2)
 I BPRTYPE=2 D  Q
 .W !!,?41,"----------"
 .W !,"SUBTOTALS for INS:",$E(BPGRPLAN,1,22),?41,$J(BPTBIL,10,2)
 .W !,"COUNT",?41,$J(BPCNT,10)
 .W:BPCNT !,"MEAN",?41,$J(BPTBIL/BPCNT,10,2)
 I (BPRTYPE=7) D  Q
 .W !!,"SUBTOTALS for INS:",$E(BPGRPLAN,1,50)
 .N BPBILR
 .S BPBILR="" F  S BPBILR=$O(BPCNT(BPBILR)) Q:BPBILR=""  D  Q:BPQ
 ..S BPNP=$$CHKP^BPSRPT5(1) Q:BPQ
 ..W !,?3,BPBILR,?65,$J($G(BPCNT(BPBILR)),5)
 .Q:$G(BPQ)
 .W !,?65,"-----"
 .W !,"CLOSED CLAIMS SUBTOTAL",?65,$J(BPCNT,5)
 ;
 Q
