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

RCDPEAC.m

Go to the documentation of this file.
  1. RCDPEAC ;ALB/TMK/PJH - ACTIVE BILLS WITH EEOB ON FILE ;Jun 06, 2014@19:11:19
  1. ;;4.5;Accounts Receivable;**208,269,276,298,303,326,332,432**;Mar 20, 1995;Build 16
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. EN ; Entry point for Active Bills With EEOB Report [RCDPE ACTIVE WITH EEOB REPORT]
  1. N %ZIS,CHAM,DTOUT,DUOUT,END,HDR,POP,RCCT,RCDISPTY,RCHDR,RCINS,RCLSTMGR,RCPAR,RCPGNUM,RCSORT,RCSTOP,RCTMPND,RCZRO
  1. N START,TRIC,VAUTD,X,Y
  1. ; PRCA*4.5*276 - IA 1077 - Query Division
  1. D DIVISION^VAUTOMA
  1. I 'VAUTD&($D(VAUTD)'=11) Q
  1. ; PRCA*4.5*276 - select report format
  1. Q:'$$SELECT(.RCINS,.RCSORT,.RCZRO,.RCTYPE)
  1. ;
  1. S RCTMPND="",RCPGNUM=0,RCSTOP=0
  1. I RCLSTMGR D G ENOUT
  1. . S RCTMPND=$T(+0)_"^AR - ACTIVE BILLS WITH EEOB REPORT" K ^TMP($J,RCTMPND) ; clean any residue
  1. . D ENQ
  1. . M HDR=RCHDR
  1. . D LMRPT^RCDPEARL(.HDR,$NA(^TMP($J,RCTMPND))) ; generate ListMan display
  1. . I $D(RCTMPND) K ^TMP($J,RCTMPND)
  1. ;
  1. W !
  1. S %ZIS="QM" D ^%ZIS Q:POP
  1. I $D(IO("Q")) D Q
  1. .N ZTDESC,ZTRTN,ZTSAVE,ZTSK
  1. .S ZTRTN="ENQ^RCDPEAC",ZTDESC="AR - ACTIVE BILLS WITH EEOB REPORT"
  1. .S ZTSAVE("*")=""
  1. .D ^%ZTLOAD
  1. .W !!,$S($D(ZTSK):"Your task number"_ZTSK_" has been queued.",1:"Unable to queue this job.")
  1. .K IO("Q") D HOME^%ZIS
  1. U IO
  1. ;
  1. ENQ ; Queued entry point for the report
  1. ; RCSORT and array RCINS must exist
  1. ; RCINS = "A" for all ins co, "R" for range, "S" for selected individual
  1. ; for RCINS="R" ("FR")=from payer name and ("TR")=to payer name
  1. ; for RCINS="S" ("S",INS CO IEN IN FILE 36)=""
  1. ; RCSORT = "PN" for sort by patient name followed by ;- if reverse order
  1. ; "L4" for sort by patient SSN followed by ;- if reverse order
  1. ;
  1. N POSTDT,RC0,RC399,RC399M1,RC430,RCACT,RCBILL,RCEIEN,RCEOB,RCEX,RCEXT,RCINC,RCKEY2,RCKEY4,RCNEW
  1. N RCPAYNAM,RCPT,RCSSN,RCSTOP,RCTOT,RCZ,RCZ0,RCZ1,SN,X,Y,Z,Z0
  1. K ^TMP($J,"RCSORT")
  1. S RCCT=0 ;Page count for List Manager
  1. S RCEXT=0 ; Set Excel page 1 count
  1. I 'RCLSTMGR D HDRBLD
  1. I RCLSTMGR D HDRLM
  1. S RCACT=+$O(^PRCA(430.3,"AC",102,0)) ; Get active status ien
  1. G:'RCACT ENOUT
  1. ;
  1. I 'RCLSTMGR D HDRLST^RCDPEARL(0,.RCHDR) ; initial report header
  1. S RCBILL=0,RCDT=START-.0001
  1. ; PRCA*4.5*303 - Changed loop to use the "AD" index on 361.1 so that the number of records checked is limited by
  1. ; the START and END dates of when the EEOB was recieved in VistA
  1. ; PRCA*4.5*326 - Start modified block. Change INCLUDE params and shorten line lengths.
  1. F S RCDT=$O(^IBM(361.1,"AD",RCDT)) Q:(RCDT>(END_".24"))!(RCDT="") D
  1. . S RCEIEN="" F S RCEIEN=$O(^IBM(361.1,"AD",RCDT,RCEIEN)) Q:RCEIEN="" D ;
  1. . . S RCBILL=$P(^IBM(361.1,RCEIEN,0),U,1)
  1. . . S RCINC=$$INCLUDE(RCBILL,RCEIEN,RCTYPE) ; PRCA*4.5*326 - Inclusion by payer or payer type
  1. . . I RCINC,($P(^PRCA(430,RCBILL,0),U,8)=RCACT),$$EEOB(RCBILL,.RCEOB,RCZRO) D ; PRCA*4.5*326
  1. . . . S (RCTOT,RCEOB,SN)=0
  1. . . . F S RCEOB=$O(RCEOB(RCEOB)) Q:'RCEOB F S SN=$O(RCEOB(RCEOB,SN)) Q:'SN D
  1. . . . . S RCTOT=RCTOT+$G(^IBM(361.1,RCEOB,1))
  1. . . . . ; PRCA*4.5*326 - Begin block - Change insurance co. name (file 36) to payer name (file 344.6)
  1. . . . . S RCPAYNAM=$$INSNM(RCBILL,RCEIEN)
  1. . . . . S RCKEY2=$$SL1(RCSORT,RCBILL),RCKEY4=+RCEOB(RCEOB,SN)_"_"_RCEOB_"_"_SN
  1. . . . . S ^TMP($J,"RCSORT",RCPAYNAM,RCKEY2,RCBILL,RCKEY4,RCEOB)=$P(RCEOB(RCEOB,SN),U,2) ; PRCA*4.5.303 add ERA PD AMOUNT
  1. . . . . I $O(RCEOB(0)) S ^TMP($J,"RCSORT",RCPAYNAM,RCKEY2,RCBILL)=RCTOT ;This is from the eob and will be the same for each line
  1. . . . . ; PRCA*4.5*326 - End block
  1. ;
  1. S RCZ="",(RCSTOP,RCNEW)=0
  1. F S RCZ=$O(^TMP($J,"RCSORT",RCZ)) Q:RCZ=""!RCSTOP D S:($G(RCINS)="R")!($G(RCINS)="S")&(RCPGNUM>1) RCNEW=1
  1. . I RCSORT'["-" D
  1. .. S RCZ0="" F S RCZ0=$O(^TMP($J,"RCSORT",RCZ,RCZ0)) Q:RCZ0=""!RCSTOP D OUTPUT(RCZ,RCZ0,RCSORT,.RCSTOP,.RCINS,RCNEW) S RCNEW=0
  1. . I RCSORT["-" D
  1. .. S RCZ0="" F S RCZ0=$O(^TMP($J,"RCSORT",RCZ,RCZ0),-1) Q:RCZ0=""!RCSTOP D OUTPUT(RCZ,RCZ0,RCSORT,.RCSTOP,.RCINS,.RCNEW) S RCNEW=0
  1. ;
  1. I '$D(^TMP($J,"RCSORT")) S $P(Z," ",25)="",Z=Z_"*** NO RECORDS TO PRINT ***" D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. I $D(^TMP($J,"RCSORT")),'RCSTOP D SL^RCDPEARL($$ENDORPRT^RCDPEARL,.RCCT,RCTMPND)
  1. ; PRCA*4.5*303 - If regular report (no listmanager or queued) ask user to quit
  1. I 'RCSTOP,'RCLSTMGR,'$D(ZTQUEUED) D ASK^RCDPEARL(.RCSTOP)
  1. ;
  1. ENOUT I $D(ZTQUEUED) S ZTREQ="@"
  1. I '$D(ZTQUEUED) D ^%ZISC
  1. K ^TMP($J,"RCSORT"),RCDT
  1. Q
  1. ;
  1. OUTPUT(RCZ,RCZ0,RCSORT,RCSTOP,RCINS,RCNEW) ; Output the data
  1. ; RCZ, RCZ0 are the first 2 sort levels for the array
  1. ; RCINS = insurance co info array
  1. ; RCSTOP passed by ref - returned if user chooses to stop
  1. ; RCNEW = 1 if the header should be forced to print
  1. N ZZ,RCEPD
  1. S RCBILL=0 F S RCBILL=$O(^TMP($J,"RCSORT",RCZ,RCZ0,RCBILL)) Q:'RCBILL!RCSTOP S RCZ1="" F S RCZ1=$O(^TMP($J,"RCSORT",RCZ,RCZ0,RCBILL,RCZ1)) Q:RCZ1=""!RCSTOP D
  1. . I $D(ZTQUEUED),$$S^%ZTLOAD S (RCSTOP,ZTSTOP)=1 K ZTREQ I +$G(RCSTOP) W !!,"***TASK STOPPED BY USER***" Q
  1. . ; IA 1992 - BILL/CLAIMS file (#399)
  1. . S RC399=$G(^DGCR(399,RCBILL,0)),RC399M1=$G(^DGCR(399,RCBILL,"M1")),RCPT=+$P(RC399,U,2),RC430=$G(^PRCA(430,RCBILL,0)) ;RC430 is from the top level
  1. . ; PRCA*4.5*276 - Check for Division
  1. . I VAUTD=0 Q:$P(RC399,U,22)="" Q:$G(VAUTD($P(RC399,U,22)))=""
  1. . ; PRCA*4.5*326 remove phamacy check. Now in $$INCLUDE logic
  1. . S RCSTOP=$$NEWPG(.RCINS,RCNEW) S RCNEW=0 Q:RCSTOP
  1. . S X=$$GET1^DIQ(430,RCBILL_",",11)
  1. . ; PRCA*4.5*276 - Row #1: Print last 4 SSN only - Move Bill Number to end
  1. . S RCSSN=$P($G(^DPT(RCPT,0)),U,9),RCSSN=$E(RCSSN,$L(RCSSN)-3,$L(RCSSN))
  1. . I $G(RCDISPTY) S RCEX=$P($G(^DPT(RCPT,0)),U)_"^"_RCSSN_"^"_$TR($P(RC430,U),"-","")
  1. . E D
  1. . . S Z=$E($P($G(^DPT(RCPT,0)),U)_$J("",25),1,25)_" "_$E(RCSSN_$J("",5),1,5)_" "_$TR($P(RC430,U),"-","")
  1. . . D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. . ; PRCA*4.5*276 - Row #2: Move Ins Name, Balance, Amt Bill, Amt Paid
  1. . S Y=+$G(^TMP($J,"RCSORT",RCZ,RCZ0,RCBILL))
  1. . I $G(RCDISPTY) S RCEX=RCEX_"^"_RCZ_"^"_+X_"^"_+$P(RC430,U,3)_"^"_Y ; PRCA*4.5*326 - Use RCZ for insurance name
  1. . E D
  1. . . ; PRCA*4.5*326 - Use RCZ for insurance name
  1. . . S Z=$E(RCZ_$J("",30),1,30)_$E($J("",12)_$J(+X,"",2),1+$L($J(+X,"",2)),12+$L($J(+X,"",2)))_$E($J("",13)_$J(+$P(RC430,U,3),"",2),1+$L($J(+$P(RC430,U,3),"",2)),13+$L($J(+$P(RC430,U,3),"",2)))_$E($J("",13),1,13-$L(Y))_$J(Y,"",2)
  1. . . D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. . ; PRCA*4.5*276 Do not display Date Referred
  1. . S RCEOB=0,RCEPD="" F S RCEOB=$O(^TMP($J,"RCSORT",RCZ,RCZ0,RCBILL,RCZ1,RCEOB)) Q:'RCEOB!RCSTOP S RCEPD=$G(^TMP($J,"RCSORT",RCZ,RCZ0,RCBILL,RCZ1,RCEOB)) D
  1. . . S RCSTOP=$$NEWPG(.RCINS,RCNEW,2)
  1. . . Q:RCSTOP
  1. . . S RC0=$G(^IBM(361.1,RCEOB,0))
  1. . . ; PRCA*4.5*276 - Row #3: Trace#, Date Rec'd, Date Posted
  1. . . I $G(RCDISPTY) W !,RCEX_"^"_$P(RC0,U,7)_"^"_$$FMTE^XLFDT($P(RC0,U,5),"2D")_"^"_$S(RCZ1:$$FMTE^XLFDT(+RCZ1,"2D"),1:"")_"^"_RCEPD
  1. . . E D
  1. . . . S Z=" "_$P(RC0,U,7)_$J("",50-$L($P(RC0,U,7)))_$J(RCEPD,10,2)_" "_$E($$FMTE^XLFDT($P(RC0,U,5),"2D")_$J("",8),1,8)_" "_$E($S(RCZ1:$$FMTE^XLFDT(+RCZ1,"2D"),1:"")_$J("",8),1,8)
  1. . . . D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. . I '$G(RCDISPTY) S Z="" D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. ;
  1. Q
  1. ;
  1. INCLUDE(RCZ,EOBIEN,RCTYPE) ; PRCA*4.5*326 change parameters
  1. ; Function returns 1 if record should be included based on ins co
  1. ; RCINS = array containing insurance co information
  1. ; RCZ = ien of the entry in file 430
  1. N OK,RCI,RCINM,RCAINP,XX ; PRCA*4.5*326
  1. S OK=1
  1. S RCI=+$$INS(RCZ)
  1. ;
  1. I 'RCI S OK=0 G INCQ ; Not a third party bill
  1. ;
  1. ; PRCA*4.5*326 - Start modified block - Check for payer match
  1. I RCINS'="A" D ;
  1. . S OK=$$ISSEL^RCDPEU1(361.1,EOBIEN)
  1. E I RCTYPE'="A" D ;
  1. . S OK=$$ISTYPE^RCDPEU1(361.1,EOBIEN,RCTYPE)
  1. ; PRCA*4.5*326 - End modified block
  1. ;
  1. INCQ Q OK
  1. ;
  1. INSNM(RCZ,EOBIEN) ; Returns the name of payer from the ERA associated with the EOB
  1. ; If that is null, return the insurance co for bill ien RCZ file 430
  1. ; Input: RCZ = Point to bill, file #430
  1. ; EOBIEN = Pointer to EOB file 361.1
  1. ; Returns: NM = Free text name of Payer from ERA or insurance on bill if ERA not found.
  1. ;
  1. N ERAIEN,FILE,NM
  1. S NM=""
  1. S ERAIEN=$$EOBERA^RCDPEU1(EOBIEN)
  1. I ERAIEN S NM=$$GETNAME^RCDPEU1(344.4,ERAIEN)
  1. I NM="" S NM=$P($G(^DIC(36,+$$INS(RCZ),0)),U)
  1. Q NM
  1. ;
  1. INS(RCZ) ; Returns ien of insurance co for bill ien RCZ from file 430
  1. N RC
  1. S RC=$P($G(^PRCA(430,RCZ,0)),U,9) ;DEBTOR
  1. Q $S($P($G(^RCD(340,+RC,0)),U)'["DIC(36":"",1:+^(0))
  1. ;
  1. NEWPG(RCINS,RCNEW,RCLINES) ; Check for new page needed, output header
  1. ; RCINS = ins co selection criteria
  1. ; RCNEW = 1 to force new page
  1. ; RCLINES = Number of lines before IOSL to force new page
  1. ; Function returns 1 if user chooses to stop output
  1. S RCLINES=$G(RCLINES,5)
  1. I RCNEW!(($Y+RCLINES)>IOSL) D
  1. . D:'$G(RCDISPTY) HDRLST^RCDPEARL(.RCSTOP,.RCHDR)
  1. Q RCSTOP
  1. ;
  1. EEOB(RCZ,RCEOB,RCZRO) ; Find all non-MRA EEOBs for bill ien RCZ
  1. ; Function returns 1 if any valid EEOBs found, 0 if none
  1. ; RCEOB(eob ien)=date posted returned for valid EEOBs found -
  1. ; pass by reference
  1. N OK,Z,Z0,Z00,DET,SN,ZPD,ZINC
  1. K RCEOB
  1. ;
  1. S (Z,OK,SN,ZINC)=0
  1. ; IA 4051 for File #361.1
  1. F S Z=$O(^IBM(361.1,"B",RCZ,Z)) Q:'Z I $P($G(^IBM(361.1,Z,0)),U,4)'=1 D
  1. . ; retrieve the EEOB data from ERA Detail sub-entry
  1. . S (Z0,DET)=0
  1. . F S Z0=$O(^RCY(344.4,"ADET",Z,Z0)) Q:'Z0 F S DET=$O(^RCY(344.4,"ADET",Z,Z0,DET)) Q:'DET D ; ERA Detail
  1. . . ; PRCA*4.5*303 - added check for Zero paid or Paid > 0 check for report.
  1. . . S ZINC=0,ZPD=+$P($G(^RCY(344.4,Z0,1,DET,0)),U,3)
  1. . . I (RCZRO="A") S ZINC=1 ; PRCA*4.5*332
  1. . . I (RCZRO="Z"),(ZPD=0) S ZINC=1
  1. . . I (RCZRO="P"),(ZPD>0) S ZINC=1 ; PRCA*4.5*332
  1. . . ; PRCA*4.5*303 - Removed looking for Receipt, include record based on ERA DETAIL POST STATUS
  1. . . ; PRCA*4.5*303 - Removed check for Receipt (If Z1 is not empty) Changed date to Piece 7 and
  1. . . ; added check for either 0 paid or paid >0 depending on selection. Added ERA PD AMOUNT as second piece of RCEOB array
  1. . . I ZINC S SN=SN+1,RCEOB(Z,SN)=+$P($G(^RCY(344.4,Z0,0)),U,7)_U_ZPD,OK=1 ; PRCA*4.5*332
  1. ;
  1. Q OK
  1. ;
  1. SL1(RCSORT,RCZ) ; Function returns 1st sort level data from ien RCZ in file 430
  1. ; RCSORT = "PN" for patient name sort = "L4" for SSN last 4 sort
  1. N DAT
  1. I RCSORT="PN" S DAT=$P($G(^DPT(+$P($G(^PRCA(430,RCZ,0)),U,7),0)),U)
  1. I RCSORT="L4" S DAT=$P($G(^DPT(+$P($G(^PRCA(430,RCZ,0)),U,7),0)),U,9),DAT=$E(DAT,$L(DAT)-3,$L(DAT))
  1. Q $S($G(DAT)'="":DAT,1:" ")
  1. ;
  1. SELECT(RCINS,RCSORT,RCZRO,RCTYPE) ; Select insurance co, sort criteria, Zero Payment, Bill type (Med/RX) and if output for EXCEL format is selected
  1. ; Function returns values selected for RCSORT and RCINS - passed by ref
  1. N RCQUIT,DONE,DIR,X,Y,%DT
  1. S (RCQUIT,DONE,RCLSTMGR)=0
  1. ; PRCA*4.5*326 - Begin changed block - Ask to show Medical/Pharmacy Tricare, CHAMPVA or All
  1. S RCTYPE=$$RTYPE^RCDPEU1("")
  1. I RCTYPE=-1 G SELQ
  1. ;
  1. S RCINS=$$PAYRNG^RCDPEU1()
  1. I RCINS=-1 G SELQ
  1. ;
  1. I RCINS'="A" D I XX=-1 G SELQ
  1. . S RCPAR("TYPE")=RCTYPE
  1. . S RCPAR("SELC")=RCINS
  1. . S RCPAR("DICA")="SELECT INSURANCE COMPANY: "
  1. . S XX=$$SELPAY^RCDPEU1(.RCPAR)
  1. ; PRCA*4.5*326 - End changed block
  1. ;
  1. ; PRCA*4.5*303 - Add Zero $ Prompt and Medical/Pharmacy EEOBs Prompt
  1. S DIR(0)="SA^P:PAYMENT EEOBs;Z:ZERO PAYMENT EEOBs;A:ALL"
  1. S DIR("A")="RUN REPORT FOR (P)AYMENT EEOBs or (Z)ERO PAYMENT EEOBs or (A)LL: ",DIR("B")="ALL"
  1. W ! D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT) G SELQ
  1. S RCZRO=$E(Y,1)
  1. ;
  1. S DIR(0)="SA^P:PATIENT NAME;L:LAST 4 OF PATIENT SSN",DIR("A")="WITHIN INS CO, SORT BY (P)ATIENT NAME OR (L)AST 4 OF SSN?: ",DIR("B")="PATIENT NAME" W ! D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT) G SELQ
  1. S RCSORT=$S(Y="P":"PN",1:"L4")
  1. S DIR(0)="SA^F:FIRST TO LAST;L:LAST TO FIRST",DIR("A")="SORT "_$S(RCSORT="PN":"PATIENT NAME",1:"LAST 4")_" (F)IRST TO LAST OR (L)AST TO FIRST?: ",DIR("B")="FIRST TO LAST" D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT) G SELQ
  1. I Y="L" S RCSORT=RCSORT_";-"
  1. ;
  1. ; PRCA*4.5*298 - Add Date Range Prompts
  1. K DIR
  1. S DIR("?")="ENTER THE EARLIEST RECEIVED DATE TO INCLUDE ON THE REPORT"
  1. S DIR(0)="DAO^:"_DT_":APE",DIR("A")="START DATE (RECEIVED): ",DIR("B")="T" D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") G SELQ
  1. S START=Y
  1. K DIR
  1. S DIR("?")="ENTER THE LATEST RECEIVED DATE TO INCLUDE ON THE REPORT"
  1. S DIR("B")="T"
  1. S DIR(0)="DAO^"_START_":"_DT_":APE",DIR("A")="END DATE (RECEIVED): " D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") G SELQ
  1. S END=Y
  1. ; PRCA*4.5*326 - Remove old Tricare and CHAMPVA prompts
  1. ;
  1. ; PRCA*4.5*276 - Determine whether to gather data for Excel report.
  1. S RCDISPTY=$$DISPTY^RCDPEM3 G SELQ:RCDISPTY<0
  1. I RCDISPTY D INFO^RCDPEM6 S DONE=1 G SELQ
  1. ;
  1. ; PRCA*4.5*298 - Add ListManager Prompts
  1. S RCLSTMGR=$$ASKLM^RCDPEARL G:RCLSTMGR<0 SELQ
  1. ;
  1. S DONE=1
  1. ;
  1. SELQ ;
  1. Q DONE
  1. ;
  1. LIST(DIR,RCINS) ; Sets up help array for ins co selected in DIR("?")
  1. N CT,Z
  1. S CT=1
  1. I '$O(RCINS("S",0)) S DIR("?")="NO INSURANCE COMPANIES SELECTED" Q
  1. S DIR("?",1)="INSURANCE COMPANIES ALREADY SELECTED:"
  1. S Z=0 F S Z=$O(RCINS("S",Z)) Q:'Z S CT=CT+1,DIR("?",CT)=" "_$P($G(^DIC(36,Z,0)),U)
  1. S DIR("?")=" "
  1. Q
  1. ;
  1. HDRBLD ; create the report header
  1. ; returns RCHDR,RCPGNUM,RCSTOP
  1. ; RCHDR(0) = header text line count
  1. ; RCHDR("PGNUM") = page number
  1. ; RCHDR("XECUTE") = M code for page number
  1. ; RCHDR("RUNDATE") = date/time report generated
  1. ; RCPGNUM - page counter
  1. ; RCSTOP - flag to stop listing
  1. ; INPUT:
  1. ; RCDTRNG - date range filter value to be printed as part of the header
  1. ; RCPAY - Payer filter value(s)
  1. ; RCLSTMGR
  1. ;
  1. N Z0
  1. S Z0=""
  1. K RCHDR S RCHDR("RUNDATE")=$$NOW^RCDPEARL,RCPGNUM=0,RCSTOP=0
  1. ;
  1. I RCDISPTY D Q ; Excel format, xecute code is QUIT, null page number
  1. . S RCHDR(0)=1,RCHDR("XECUTE")="Q",RCPGNUM=""
  1. . S RCHDR(1)="PATIENT NAME^SSN^BILL#^INS CO NAME^BALANCE^AMT BILLE^AMT PAID^TRACE#^DT REC'D^DT POST^ERA PD AMT"
  1. ;
  1. N MSG,DATE,Y,DIV,HCNT
  1. S RCHDR(1)=$$HDRNM,HCNT=1 ; line 1 will be replaced by XECUTE code below
  1. S RCHDR("XECUTE")="N Y S RCPGNUM=RCPGNUM+1,Y=$$HDRNM^"_$T(+0)_"_$S(RCLSTMGR:"""",1:$J(""Page: ""_RCPGNUM,12)),RCHDR(1)=$J("" "",80-$L(Y)\2)_Y"
  1. ;
  1. S Y="RUN DATE: "_RCHDR("RUNDATE"),HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. I VAUTD=1 S Y="DIVISIONS: ALL"
  1. I VAUTD=0 D
  1. . S Z0=0,Y="DIVISIONS: " F X=1:1 S Z0=$O(VAUTD(Z0)) Q:Z0="" S:X>1 Y=Y_", " S Y=Y_VAUTD(Z0)
  1. S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. I RCINS="S" S Z=0,Z0="" F S Z=$O(RCINS("S",Z)) Q:'Z S Z0=Z0_$S(Z0'="":",",1:"")_$P($G(^DIC(36,Z,0)),U)
  1. ; PRCA*4.5*326 - Start modified block
  1. S Z0="PAYERS: "_$S(RCINS="A":"ALL ",RCINS="R":"RANGE",1:"SELECTED")
  1. S Z0=Z0_$J("",16)_"MEDICAL/PHARMACY/TRICARE/CHAMPVA: "_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ;PRCA*4.5*432 Add CHAMPVA
  1. S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Z0)\2)_Z0,Z0=""
  1. ; PRCA*4.5*326 modify next two lines for tricare filter
  1. S Z0=Z0_"DATE RANGE: "_$$FMTE^XLFDT(START,"2Z")_"-"_$$FMTE^XLFDT(END,"2Z")
  1. S Z0=Z0_$J("",16)_" PAYMENT TYPE: "_$S(RCZRO="Z":"ZERO PAYMENT",RCZRO="P":"PAYMENT",1:"ALL") ; PRCA*4.5*332
  1. ; PRCA*4.5*326 - End modified block
  1. ;
  1. S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Z0)\2)_Z0
  1. ;
  1. S HCNT=HCNT+1,RCHDR(HCNT)=""
  1. S Y="PATIENT NAME SSN BILL#",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y="INS CO NAME BALANCE AMT BILLED AMT PAID",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=" TRACE# ERA PD AMT REC'D DT POST",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=$TR($J("",IOM)," ","="),HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S RCHDR(0)=HCNT
  1. Q
  1. ;
  1. HDRLM ; create the list manager version of the report header
  1. ; returns RCHDR,RCPGNUM,RCSTOP
  1. ; RCHDR(0) = header text line count
  1. ; RCHDR("PGNUM") = page number
  1. ; RCHDR("XECUTE") = M code for page number
  1. ; RCHDR("RUNDATE") = date/time report generated
  1. ; RCPGNUM - page counter
  1. ; RCSTOP - flag to stop listing
  1. ;INPUT:
  1. ; RCDTRNG - date range filter value to be printed as part of the header
  1. ; RCPAY - Payer filter value(s)
  1. ; RCLSTMGR
  1. ;
  1. N Z0 S Z0=""
  1. K RCHDR S RCPGNUM=0,RCSTOP=0
  1. N MSG,DATE,Y,DIV,HCNT
  1. ; PRCA*4.5*326 Start modified code block
  1. S HCNT=1
  1. S RCHDR("TITLE")=$$HDRNM,RCHDR("XECUTE")="Q"
  1. S RCHDR(1)="DATE RANGE: "_$$FMTE^XLFDT(START,"2Z")_"-"_$$FMTE^XLFDT(END,"2Z")_$J("",16)
  1. S RCHDR(1)=RCHDR(1)_" PAYMENT TYPE: "_$S(RCZRO="Z":"ZERO PAYMENT",RCZRO="P":"PAYMENT",1:"ALL") ; PRCA*4.5*332
  1. I VAUTD=1 S Y="DIVISIONS: ALL"
  1. I VAUTD=0 D
  1. . S Z0=0,Y="DIVISIONS: " F X=1:1 S Z0=$O(VAUTD(Z0)) Q:Z0="" S:X>1 Y=Y_", " S Y=Y_VAUTD(Z0)
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. I RCINS="S" S Z=0,Z0="" F S Z=$O(RCINS("S",Z)) Q:'Z S Z0=Z0_$S(Z0'="":",",1:"")_$P($G(^DIC(36,Z,0)),U)
  1. S Z0="PAYERS: "_$S(RCINS="A":"ALL ",RCINS="R":"RANGE",1:"SELECTED")
  1. S Z0=Z0_$J("",38-$L(Z0))_"MEDICAL/PHARMACY/TRICARE/CHAMPVA: "_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ;PRCA*4.5*432 Add CHAMPVA
  1. ; PRCA*4.5*326 End modified code block
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Z0
  1. I RCINS="A" S HCNT=HCNT+1,RCHDR(HCNT)=""
  1. ;
  1. S Y="PATIENT NAME SSN BILL#",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y="INS CO NAME BALANCE AMT BILLED AMT PAID",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=" TRACE# ERA PD AMT REC'D DT POST",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S RCHDR(0)=HCNT
  1. Q
  1. ;
  1. ; extrinsic variable, name for header PRCA*4.5*298
  1. HDRNM() Q "EDI LOCKBOX ACTIVE BILLS W/EEOB REPORT"