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

IBCAPR.m

Go to the documentation of this file.
  1. IBCAPR ;ALB/BI - PRINT EOB/MRA ;20-SEP-2010
  1. ;;2.0;INTEGRATED BILLING;**432**;21-MAR-94;Build 192
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. EN(IBIFN) ; -- main entry point for IBCAPR
  1. S VALMBCK="R"
  1. I '$G(IBIFN),$D(VALMBG),$D(VALMLST) S IBIFN=$$GETIBIFN
  1. Q:$G(IBIFN)=""
  1. D EN^VALM("IBCAPR")
  1. Q
  1. ;
  1. HDR ; -- header code
  1. N PTNAME,CLONED
  1. S PTNAME=$$GET1^DIQ(399,IBIFN_", ",.02)
  1. S VALMHDR(1)="PATIENT: "_PTNAME
  1. ;
  1. S CLONED=$$GET1^DIQ(399,IBIFN_", ",30)
  1. S:CLONED'="" VALMHDR(2)="CLONED FROM: "_CLONED
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. K ^TMP("IBCAPR",$J)
  1. S VALMCNT=$$EOB(IBIFN)-1
  1. Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. K ^TMP("IBCAPR",$J)
  1. D FULL^VALM1
  1. Q
  1. ;
  1. EXPND ; -- expand code
  1. Q
  1. ;
  1. EOB(IBIFN) ; Obtain the EOB Information from Dictionary 361.1, EXPLANATION OF BENEFITS.
  1. ;
  1. N IBALL,IBI,IBILLCNT,IBLN,IBSHEOB
  1. N IBCA,IBCN,IBCT,IBFT,IBMSG,IBPR,IBPT,IBPY,IBQUIT,IBREC1,IBST
  1. N IBSTR,IBTA,IBTS,IBTY,IBX,IBXARRAY,IBXARRY,IBXDATA,IBXERR,IBXSAVE,IBZ,Z
  1. ;
  1. D GETEOBCL(IBIFN,.IBALL) ; get all associated claims
  1. ;
  1. S IBLN=1,IBILLCNT=0
  1. ;
  1. S IBIFN=0
  1. F S IBIFN=$O(IBALL(IBIFN)) Q:IBIFN="" D
  1. .S IBI=0 F S IBI=$O(^IBM(361.1,"B",IBIFN,IBI)) Q:'IBI S Z=+$O(^IBM(361.1,IBI,8,0)) I '$O(^(Z)) S IBILLCNT=IBILLCNT+1,IBSHEOB(IBI)=0 ; Entire EOB belongs to the bill
  1. .;
  1. .S IBI=0 F S IBI=$O(^IBM(361.1,"C",IBIFN,IBI)) Q:'IBI S IBCT=IBCT+1,IBSHEOB(IBI)=1 ; EOB has been reapportioned at the site
  1. ;
  1. Q:'$D(IBSHEOB) ; nothing to print
  1. ;
  1. S Z=0,IBI=0
  1. F IBZ=1:1 S IBI=$O(IBSHEOB(IBI)) Q:'IBI D I $O(IBSHEOB(IBI)) W @IOF
  1. . D REGION1(IBI,+IBSHEOB(IBI),IBZ,IBILLCNT)
  1. . D REGION2,REGION3,REGION4
  1. ;
  1. Q IBLN
  1. ;
  1. REGION1(IBI,IBSPL,IBEOBCT,IBCTOF) ; Claim Header Information
  1. N IBD,IBSTR,IBX,IBM,IBM1,IBM2
  1. ;
  1. ; Line 1
  1. S IBEOBCT=$G(IBEOBCT),IBCTOF=$G(IBCTOF)
  1. S IBD="EOB/MRA Information"_$S(IBCTOF'="":" ("_IBEOBCT_" OF "_IBCTOF_")",1:"")
  1. S IBSTR=$$SETLN(IBD,"",30,45),$E(IBSTR,1,2)=">>",IBLN=$$SET(IBSTR,IBLN)
  1. ;
  1. ; Line 2
  1. ; IBSPL = 0 if EOB represents one bill's payment
  1. ; = 1 if AR had to split the EOB between multiple bills
  1. ; Assumes IBLN is defined and returns it with line count
  1. S IBM=$G(^IBM(361.1,IBI,0))
  1. S IBTY=$P(IBM,U,4),IBTY=$S(IBTY:"MEDICARE MRA",1:"NORMAL EOB")
  1. I IBTY'["MRA",IBSPL S IBTY="A/R SPLIT/COVERS MORE THAN 1 BILL"
  1. I $P(IBM,U,13)>1,$P(IBM,U,13)<5 S IBTY=IBTY_" ("_$$EXTERNAL^DILFD(361.1,.13,,$P(IBM,U,13))_")"
  1. S IBD="EOB Type: "_IBTY,IBSTR=$$SETLN(IBD,"",5,59)
  1. S IBLN=$$SET(IBSTR,IBLN)
  1. ;
  1. ; Line 3
  1. S IBCN=$P(IBM,U,14)
  1. S IBX="0.00"
  1. S IBD="ICN: "_IBCN,IBSTR=$$SETLN(IBD,"",10,30)
  1. S IBM1=$G(^IBM(361.1,IBI,1))
  1. S IBPT=$P(IBM1,U,2) ; patient responsibility 1.02 field
  1. I $P(IBM,U,4),$D(^IBM(361.1,IBI,"ERR")) S IBPT=0 ; filing error
  1. ; If MRA & UB, then calculate patient responsiblity value
  1. I $P(IBM,U,4),$$FT^IBCEF(+$P(IBM,U,1))=3 S IBPT=$$PTRESPI^IBCECOB1(IBI)
  1. S IBD="Patient Resp Amount: "_$S('IBPT:IBX,1:IBPT)
  1. S IBSTR=$$SETLN(IBD,IBSTR,44,35)
  1. S IBLN=$$SET(IBSTR,IBLN)
  1. ;
  1. ; Line 4
  1. S IBPY=$$GET1^DIQ(36,+$P(IBM,U,2)_", ",.01)
  1. S IBM2=$G(^IBM(361.1,IBI,2)),IBTA=$P(IBM2,U,3)
  1. ; if no Total Allowed Amount, sum up amounts on Line Level Adjustment
  1. I IBTA="" S IBTA=$$ALLOWED^IBCEMU2(IBI)
  1. S IBD="Payer Name: "_IBPY,IBSTR=$$SETLN(IBD,"",3,40)
  1. S IBD="Total Allowed Amount: "_$S('IBTA:IBX,1:IBTA)
  1. S IBSTR=$$SETLN(IBD,IBSTR,43,36)
  1. S IBLN=$$SET(IBSTR,IBLN)
  1. ;
  1. ; Line 5
  1. S IBTS=$P(IBM2,U,4)
  1. S IBPR=$$FMTE^XLFDT($P(IBM,U,6))
  1. S IBD="EOB Date: "_IBPR,IBSTR=$$SETLN(IBD,"",5,35)
  1. S IBD="Total Submitted Charges: "_$S('IBTS:IBX,1:IBTS)
  1. S IBSTR=$$SETLN(IBD,IBSTR,40,39)
  1. S IBLN=$$SET(IBSTR,IBLN)
  1. ;
  1. ; Line 6
  1. S IBD="Svc From Dt: "_$$DAT1^IBOUTL($P(IBM1,U,10))
  1. S IBSTR=$$SETLN(IBD,"",2,38)
  1. S IBD="Svc To Dt: "_$$DAT1^IBOUTL($P(IBM1,U,11))
  1. S IBSTR=$$SETLN(IBD,IBSTR,54,25)
  1. S IBLN=$$SET(IBSTR,IBLN)
  1. ;
  1. ; Line 7
  1. S IBCA=$P(IBM1,U)
  1. S IBST=$P(IBM,U,16),IBST=$$EXPAND^IBTRE(361.1,.16,+IBST)
  1. S IBSTR=""
  1. I IBTY["MRA" S IBD="MRA Review Status: "_IBST,IBSTR=$$SETLN(IBD,"",2,38)
  1. S IBD=$S('$G(IBSPL):" ",1:"**")_"Reported Payment Amt: "_$S('IBCA:$J(IBX,"",2),1:$J(+IBCA,"",2))
  1. S IBSTR=$$SETLN(IBD,IBSTR,41,37)
  1. S IBLN=$$SET(IBSTR,IBLN)
  1. ;
  1. REGION2 ; MEDICARE RA Information
  1. ;
  1. I IBTY["MRA",$D(^IBM(361.1,IBI,21)) D
  1. . S IBD=$TR($J("",35)," ","-")_"Review"_$TR($J("",38)," ","-")
  1. . S IBSTR=$$SETLN(IBD,"",1,79),IBLN=$$SET(IBSTR,IBLN)
  1. . S (IBST,IBCN)=0 F S IBCN=$O(^IBM(361.1,IBI,21,IBCN)) Q:'IBCN S X=$G(^(IBCN,0)) D
  1. .. S IBST=0
  1. .. S IBD="Review Date: "_$$DAT1^IBOUTL($P(X,U))
  1. .. S IBSTR=$$SETLN(IBD,"",1,30)
  1. .. S IBD="Reviewed By: "_$$GET1^DIQ(200,+$P(X,U,2)_", ",.01) ; DBIA 10060
  1. .. S IBSTR=$$SETLN(IBD,IBSTR,40,39)
  1. .. S IBLN=$$SET(IBSTR,IBLN)
  1. .. S IBD=0 F S IBD=$O(^IBM(361.1,IBI,21,IBCN,1,IBD)) Q:'IBD S IBSTR=$$SETLN($S('IBST:"Comments: ",1:"")_$G(^(IBD,0)),"",1,$S('IBST:69,1:79)),IBST=1,IBLN=$$SET(IBSTR,IBLN)
  1. . I 'IBST D
  1. .. S IBSTR=$$SETLN("None","",1,10)
  1. .. S IBLN=$$SET(IBSTR,IBLN)
  1. Q
  1. ;
  1. REGION3 ; CLAIM and LINE level Information
  1. N Z
  1. K ^TMP("PRCA_EOB",$J)
  1. D GETEOB^IBCECSA6(IBI,2)
  1. S Z=0 F S Z=$O(^TMP("PRCA_EOB",$J,IBI,Z)) Q:'Z S IBSTR=$$SETLN($G(^TMP("PRCA_EOB",$J,IBI,Z)),"",1,79),IBLN=$$SET(IBSTR,IBLN)
  1. K ^TMP("PRCA_EOB",$J)
  1. Q
  1. ;
  1. REGION4 ; Display information about any 361.1 message storage or filing errors
  1. N Z
  1. I '$O(^IBM(361.1,IBI,"ERR",0)) Q
  1. S IBSTR=$$SETLN(" ** MESSAGE STORAGE ERRORS **","",1,79),IBLN=$$SET(IBSTR,IBLN)
  1. S Z=0 F S Z=$O(^IBM(361.1,IBI,"ERR",Z)) Q:'Z S IBSTR=$$SETLN($G(^(Z,0)),"",1,79),IBLN=$$SET(IBSTR,IBLN)
  1. Q
  1. ;
  1. SETLN(S,V,X,L) ; -- insert text(S) into variable(V)
  1. ; S := string to insert
  1. ; V := destination string
  1. ; X := insert @ col X
  1. ; L := clear # of chars (length)
  1. Q $E(V_$J("",X-1),1,X-1)_$E(S_$J("",L),1,L)_$E(V,X+L,999)
  1. ;
  1. SET(STR,LN) ; set up TMP array with EOB Data
  1. S ^TMP("IBCAPR",$J,LN,0)=STR
  1. Q LN+1
  1. ;
  1. PRTOPT1 ; LIST MANAGER FORM entry point to print EOB, asking for print device.
  1. N IBSCAN
  1. D FULL^VALM1
  1. D ^%ZIS Q:POP
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . U IO W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. D PAUSE^VALM1
  1. I X="^" S VALMBCK="Q" Q
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. PRTOPT2 ; LIST MANAGER FORM entry point to print to default print device.
  1. N IBSCAN,X,IOP
  1. D FULL^VALM1
  1. S VALMBCK="R"
  1. S IOP=$$EOBPRT
  1. D:IOP=""
  1. . Write !!,"*** The default EOB Printer doesn't seem to be defined ***"
  1. . D PAUSE^VALM1
  1. . S X="^"
  1. Q:$G(X)="^"
  1. D ^%ZIS Q:POP
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . U IO W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. Q
  1. ;
  1. PRTOPT3 ; LIST MANAGER FORM entry point to print EOB and MRA, asking for print devices.
  1. N IBSCAN
  1. D FULL^VALM1
  1. W !!,"Select Printer for the EOB",!
  1. D ^%ZIS Q:POP
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . U IO W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. D PAUSE^VALM1
  1. I X="^" S VALMBCK="Q" Q
  1. W !!,"Select Printer for the MRA",!
  1. D MRA^IBCEMRAA(IBIFN)
  1. D PAUSE^VALM1
  1. I X="^" S VALMBCK="Q" Q
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. PRTOPT4 ; LIST MANAGER FORM entry point to print EOB and MRA to default print devices.
  1. N IBSCAN,X,IOP
  1. D FULL^VALM1
  1. S VALMBCK="R"
  1. S IOP=$$EOBPRT
  1. D:IOP=""
  1. . Write !!,"*** The default EOB Printer doesn't seem to be defined ***"
  1. . D PAUSE^VALM1
  1. . S X="^"
  1. Q:$G(X)="^"
  1. D ^%ZIS
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . U IO W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. S IOP=$$MRAPRT
  1. D:IOP=""
  1. . Write !!,"*** The default MRA Printer doesn't seem to be defined ***"
  1. . D PAUSE^VALM1
  1. . S X="^"
  1. Q:$G(X)="^"
  1. D ^%ZIS
  1. U IO
  1. D PROC^IBCEMRAA
  1. D ^%ZISC
  1. Q
  1. ;
  1. PRTOPT5(IBIFN) ; External entry point to print EOB information, asking for print device.
  1. N IBSCAN
  1. D EOB(IBIFN)
  1. D ^%ZIS Q:POP 0
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . U IO W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. K ^TMP("IBCAPR",$J)
  1. Q 1
  1. ;
  1. PRTOPT6(IBIFN) ; External entry point to print EOB information to default print device.
  1. N IBSCAN,IOP
  1. I '$$PRTCHK16 Q $$PRTCHK16
  1. S IOP=$$EOBPRT
  1. Q:IOP="" "0^EOB PRINTER NOT DEFINED"
  1. D EOB(IBIFN)
  1. D ^%ZIS Q:POP
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . U IO W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. K ^TMP("IBCAPR",$J)
  1. Q 1
  1. ;
  1. PRTOPT7(IBIFN) ; External entry point to print EOB and MRA information, asking for print devices.
  1. N IBSCAN
  1. D EOB(IBIFN)
  1. W !!,"Select Printer for the EOB",!
  1. D ^%ZIS Q:POP 0
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . U IO W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. K ^TMP("IBCAPR",$J)
  1. W !!,"Select Printer for the MRA",!
  1. D MRA^IBCEMRAA(IBIFN)
  1. Q 1
  1. ;
  1. PRTOPT8(IBIFN) ; External entry point to print EOB and MRA information to default print devices.
  1. N IBSCAN,IOP
  1. I '$$PRTCHK16 Q $$PRTCHK16
  1. S IOP=$$EOBPRT
  1. Q:IOP="" "0^EOB PRINTER NOT DEFINED"
  1. D EOB(IBIFN)
  1. D ^%ZIS Q:POP "0^EOB PRINTER NOT DEFINED CORRECTLY"
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . U IO W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. K ^TMP("IBCAPR",$J)
  1. I '$$PRTCHK14 Q $$PRTCHK14
  1. S IOP=$$MRAPRT
  1. Q:IOP="" "0^MRA PRINTER NOT DEFINED"
  1. D ^%ZIS Q:POP "0^MRA PRINTER NOT DEFINED CORRECTLY"
  1. U IO
  1. D PROC^IBCEMRAA
  1. D ^%ZISC
  1. Q 1
  1. ;
  1. PRINT8Q(IBIFN) ; External entry point to QUEUE the EOB and MRA print jobs
  1. ; Queue to Print EOB portion to the default EOB printer.
  1. N %ZIS,ZTDTH,ZTRTN,ZTSAVE,ZTDESC,POP,IOP,IBTSK1,IBTSK2
  1. I '$G(IBIFN) Q "0^CLAIM NUMBER NOT DEFINED"
  1. I '$$PRTCHK16 Q $$PRTCHK16
  1. S IOP=$$EOBPRT
  1. Q:IOP="" "0^EOB PRINTER NOT DEFINED"
  1. S %ZIS="QN"
  1. D ^%ZIS I POP Q "0^EOB PRINTER NOT DEFINED CORRECTLY"
  1. S ZTRTN="PRINT8Q1^IBCAPR" ; Background re-entry point.
  1. S ZTDESC="EOB PRINT"
  1. S ZTSAVE("IB*")=""
  1. S ZTDTH=$H
  1. D ^%ZTLOAD S IBTSK1=$G(ZTSK)
  1. K ZTSK,IO("Q") D HOME^%ZIS
  1. ; Queue to Print MRA portion to the default MRA printer.
  1. K %ZIS,ZTRTN,ZTSAVE,ZTDESC,POP
  1. I '$$PRTCHK14 Q $$PRTCHK14
  1. S IOP=$$MRAPRT
  1. Q:IOP="" "0^MRA PRINTER NOT DEFINED"
  1. S IBIFN=$$GETMRACL(IBIFN)
  1. Q:'IBIFN "0^NO MRA CLAIM TO PRINT"
  1. S %ZIS="QN"
  1. D ^%ZIS I POP Q "0^MRA PRINTER NOT DEFINED CORRECTLY"
  1. S ZTRTN="PROC^IBCEMRAA" ; Background re-entry point.
  1. S ZTDESC="MRA PRINT"
  1. S ZTSAVE("IB*")=""
  1. S ZTDTH=$H
  1. D ^%ZTLOAD S IBTSK2=$G(ZTSK)
  1. K ZTSK,IO("Q") D HOME^%ZIS
  1. Q 1_"^"_IBTSK1_"^"_IBTSK2
  1. PRINT8Q1 ; Background re-entry point.
  1. D EOB(IBIFN)
  1. F IBSCAN=1:1:$O(^TMP("IBCAPR",$J,""),-1) D
  1. . W ^TMP("IBCAPR",$J,IBSCAN,0),!
  1. D ^%ZISC
  1. Q
  1. ;
  1. EOBPRT() ; Get EOB Printer Name
  1. Q $$GET1^DIQ(350.9,"1, ",8.16)
  1. ;
  1. MRAPRT() ; Get MRA Printer Name
  1. Q $$GET1^DIQ(350.9,"1, ",8.19)
  1. ;
  1. PRTCHK(ERROR) ; ; Validate ALL printer parameters.
  1. ; USAGE EXAMPLES: W $$PRTCHK^IBCAPR(.ERRMSG)," ",ERRMSG,!
  1. ; I '$$PRTCHK^IBCAPR Q
  1. N X,ERR14,ERR15,ERR16,ERR19,STATUS
  1. S ERROR="",STATUS=1
  1. S:'$$PRTCHK14(.X,.ERR14) STATUS=0
  1. S:'$$PRTCHK15(.X,.ERR15) STATUS=0
  1. S:'$$PRTCHK16(.X,.ERR16) STATUS=0
  1. S:'$$PRTCHK19(.X,.ERR19) STATUS=0
  1. Q:STATUS 1
  1. I ERR14'="" S ERROR=ERR14
  1. I ERR15'="" S ERROR=ERROR_$S(ERROR="":ERR15,1:", "_ERR15)
  1. I ERR16'="" S ERROR=ERROR_$S(ERROR="":ERR16,1:", "_ERR16)
  1. I ERR19'="" S ERROR=ERROR_$S(ERROR="":ERR19,1:", "_ERR19)
  1. Q 0
  1. ;
  1. PRTCHK14(PRTNM,ERROR) ; Validate the CMS-1500 printer parameter.
  1. ; USAGE EXAMPLES: I $$PRTCHK14^IBCAPR(.NAME,.ERRMSG) S IOP=NAME
  1. ; I '$$PRTCHK14^IBCAPR Q
  1. N POP
  1. S ERROR=""
  1. S IOP=$$CMS1500^IBCAPR1(),PRTNM=IOP
  1. I IOP="" S ERROR="CMS-1500 PRINTER NOT DEFINED" Q "0^"_ERROR
  1. S %ZIS="QN"
  1. D ^%ZIS I POP S ERROR="CMS-1500 PRINTER NOT DEFINED CORRECTLY" Q "0^"_ERROR
  1. Q 1
  1. ;
  1. PRTCHK15(PRTNM,ERROR) ; Validate the UB-04 printer parameter.
  1. ; USAGE EXAMPLE: I $$PRTCHK15^IBCAPR(.NAME,.ERRMSG) S IOP=NAME
  1. ; I '$$PRTCHK15^IBCAPR Q
  1. N POP
  1. S ERROR=""
  1. S IOP=$$UB4PRT^IBCAPR1(),PRTNM=IOP
  1. I IOP="" S ERROR="UB-04 PRINTER NOT DEFINED" Q "0^"_ERROR
  1. S %ZIS="QN"
  1. D ^%ZIS I POP S ERROR="UB-04 PRINTER NOT DEFINED CORRECTLY" Q "0^"_ERROR
  1. Q 1
  1. ;
  1. PRTCHK16(PRTNM,ERROR) ; Validate the EOB printer parameter.
  1. ; USAGE EXAMPLE: I $$PRTCHK16^IBCAPR(.NAME,.ERRMSG) S IOP=NAME
  1. ; I '$$PRTCHK16^IBCAPR Q
  1. N POP
  1. S ERROR=""
  1. S IOP=$$EOBPRT(),PRTNM=IOP
  1. I IOP="" S ERROR="EOB PRINTER NOT DEFINED" Q "0^"_ERROR
  1. S %ZIS="QN"
  1. D ^%ZIS I POP S ERROR="EOB PRINTER NOT DEFINED CORRECTLY" Q "0^"_ERROR
  1. Q 1
  1. ;
  1. PRTCHK19(PRTNM,ERROR) ; Validate the MRA printer parameter.
  1. ; USAGE EXAMPLE: I $$PRTCHK19^IBCAPR(.NAME,.ERRMSG) S IOP=NAME
  1. ; I '$$PRTCHK19^IBCAPR Q
  1. N POP
  1. S ERROR=""
  1. S IOP=$$MRAPRT(),PRTNM=IOP
  1. I IOP="" S ERROR="MRA PRINTER NOT DEFINED" Q "0^"_ERROR
  1. S %ZIS="QN"
  1. D ^%ZIS I POP S ERROR="MRA PRINTER NOT DEFINED CORRECTLY" Q "0^"_ERROR
  1. Q 1
  1. ;
  1. GETIBIFN() ; Get Internal Claim Pointer
  1. N DIR,IBDA,IBIFN S IBIFN=""
  1. D FULL^VALM1
  1. D EN^VALM2($G(XQORNOD(0)),"S")
  1. S IBDA=$O(VALMY(0))
  1. S:IBDA IBIFN=$P($G(^TMP("IBCECOB",$J,IBDA)),U,2)
  1. Q IBIFN
  1. ;
  1. GETMRACL(IBIFN) ; Get MRA claim #
  1. ; Find if there was MEDICARE WNR on the bill being passed in and then get the claim associated with it.
  1. N IBMRASEQ,IBWNRFL,IBM1,IBMRACL
  1. F IBMRASEQ=1:1:3 S IBWNRFL=$$WNRBILL^IBEFUNC(IBIFN,IBMRASEQ) Q:+IBWNRFL
  1. I '+IBWNRFL Q 0 ; No Medicare WNR on Bill
  1. S IBM1=$G(^DGCR(399,IBIFN,"M1"))
  1. S IBMRACL=$P(IBM1,U,4+IBMRASEQ)
  1. I +IBMRACL Q IBMRACL
  1. ;
  1. ; Since Medicare WNR does not generate a new bill # and hence may not
  1. ; point to a previous bill, this may need to grab the secondary bill
  1. I IBMRASEQ=1 S IBMRACL=$P(IBM1,U,6)
  1. ;
  1. Q +IBMRACL
  1. ;
  1. GETEOBCL(IBIFN,IBALL) ; Get all Claims associated with this one.
  1. ; If it's secondary, get primary
  1. ; If it's a tertiary, get secondary and primary
  1. ; Input: IBIFN - IEN to 399 for cliam being printed
  1. ; IBALL by reference
  1. ; Output: IBALL - Array of claim numbers which have EOBS for this claim.
  1. N IBCOBN,IBPRVCL,IBM1,LOOP
  1. S IBALL(IBIFN)=""
  1. S IBM1=$G(^DGCR(399,IBIFN,"M1"))
  1. S IBCOBN=$$COBN^IBCEF(IBIFN)-1
  1. Q:IBCOBN<1
  1. F LOOP=IBCOBN:-1:1 S IBPRVCL=$P(IBM1,U,4+LOOP) S:IBPRVCL]"" IBALL(IBPRVCL)=""
  1. Q