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

RCDPEM4.m

Go to the documentation of this file.
  1. RCDPEM4 ;OIFO-BAYPINES/PJH - EPAYMENTS AUDIT REPORTS ;Nov 17, 2014@17:00:41
  1. ;;4.5;Accounts Receivable;**276,284,298,304,321,326,332,432**;Mar 20, 1995;Build 16
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. EOB ; EEOB Move/Copy/Rmove Audit Report [RCDPE EEOB MOVE/COPY/RMOVE RPT]
  1. N RCRTYP S RCRTYP="EOB" ; record type
  1. D ASKUSR
  1. Q
  1. ;
  1. POST ; ERAs Posted with Paper EOB Audit Report [RCDPE ERA W/PAPER EOB REPORT]
  1. N RCRTYP S RCRTYP="ERA" ; record type
  1. D ASKUSR
  1. Q
  1. ;
  1. ASKUSR ;collect filter and device options
  1. Q:$G(RCRTYP)="" ; must have record type
  1. N %ZIS,POP,RCACT,RCDISPTY,RCDIV,RCDTRNG,RCHDR,RCLSTMGR,RCLNCNT,RCPGNUM,RCPROG,RCSTA,RCSTOP
  1. N RCTMPND,RCTYPE,VAUTD,X,Y
  1. ; RCACT - selected actions for EOB
  1. ; RCDISPTY - display type
  1. ; RCDIV - selected divs.
  1. ; RCDTRNG - date range for report
  1. ; RCHDR - header array
  1. ; RCLSTMGR - ListMan output flag
  1. ; RCPGNUM - report page count
  1. ; RCPROG - ^TMP storage node for entries
  1. ; RCSTA - station
  1. ; RCSTOP - flag to stop report
  1. ; RCTMPND - ListMan storage node
  1. ; RCTYPE - Type of EEOBs to include M/P/T/C/A MEDICAL/PHARMACY/TRICARE/CHAMPVA/ALL
  1. ;
  1. S RCPROG=$T(+0),RCLSTMGR="",RCACT="",(RCLNCNT,RCSTOP)=0,RCTMPND=""
  1. ; S (RCXCLUDE("CHAMPVA"),RCXCLUDE("TRICARE"))=0 ; default to false
  1. ;Select Date Range for Report
  1. S RCDTRNG=$$DTRNG() G:'RCDTRNG EXIT
  1. ;Select Filter for Action Type (Move,Copy,Remove or All)
  1. I RCRTYP="EOB" S RCACT=$$ACTION G:RCACT<0 EXIT
  1. ;Select Filter/Sort by Division
  1. D STADIV G:'RCDIV EXIT
  1. ; Begin PRCA*4.5*326 Tricare filter
  1. S RCTYPE=$$RTYPE^RCDPEU1("A") I RCTYPE=-1 G EXIT
  1. ;
  1. ; Select Display Type , exit if indicated
  1. S RCDISPTY=$$DISPTY() G:RCDISPTY<0 EXIT
  1. ;Display capture information for Excel, set RCLSTMGR to prevent question
  1. I RCDISPTY D INFO^RCDPEM6 S RCLSTMGR="^"
  1. I RCLSTMGR="" S RCLSTMGR=$$ASKLM^RCDPEARL G:RCLSTMGR<0 EXIT
  1. I RCLSTMGR D G EXIT
  1. .X "S RCTMPND=$T(+0)_U_$$HDR"_RCRTYP K ^TMP($J,RCTMPND) ; ^TMP storage node, clean any residue
  1. .D RPRTCMPL
  1. .N H,L,HDR S L=0
  1. .X "S HDR(""TITLE"")=$$HDR"_RCRTYP
  1. .F H=1:1:7 I $D(RCHDR(H)) S L=H,HDR(H)=RCHDR(H) ; take first 7 lines of report header
  1. .I $O(RCHDR(L)) D ; any remaining header lines at top of report
  1. ..N N S N=0,H=L F S H=$O(RCHDR(H)) Q:'H S N=N+.001,^TMP($J,RCTMPND,N)=RCHDR(H)
  1. .; invoke ListMan
  1. .D LMRPT^RCDPEARL(.HDR,$NA(^TMP($J,RCTMPND))) ; generate ListMan display
  1. ;
  1. ;Select output device
  1. S %ZIS="QM" D ^%ZIS Q:POP
  1. ;Option to queue
  1. I 'RCDISPTY,$D(IO("Q")) D Q
  1. .N ZTSK,ZTDESC,ZTSAVE,ZTQUEUED,ZTRTN
  1. .S ZTRTN="RPRTCMPL^RCDPEM4"
  1. .S ZTDESC="EDI LOCKBOX PAPER EOB AUDIT REPORT"
  1. .S ZTSAVE("RC*")="",ZTSAVE("VAUTD")=""
  1. .D ^%ZTLOAD
  1. .W !!,$S($G(ZTSK):"Task number "_ZTSK_" was queued.",1:"Unable to queue this task."),!
  1. .K ZTSK,IO("Q") D HOME^%ZIS
  1. ;
  1. ;Compile and Print Report
  1. D RPRTCMPL
  1. Q
  1. ;
  1. RPRTCMPL ;Compile and print report
  1. K ^TMP(RCPROG,$J),^TMP($J,"RC TOTAL")
  1. ;Scan ERA file for entries in date range
  1. I RCRTYP="ERA" D CMPLERA
  1. ;Scan EOB file for entries in date range
  1. I RCRTYP="EOB" D CMPLEOB
  1. ;Display Report
  1. D DISP
  1. ;
  1. EXIT ;
  1. ;Clear old data
  1. K ^TMP(RCPROG,$J),^TMP($J,"RC TOTAL")
  1. Q
  1. ;
  1. CMPLERA ;Generate the ERA posted with paper EOB report ^TMP array
  1. ; ^RCY(344.4,0) = ELECTRONIC REMITTANCE ADVICE^344.4I^
  1. N START,END,ERAIEN,STA,STNAM,STNUM
  1. ;Date Range
  1. S START=0,END="9999999",SUB=0
  1. S:$P(RCDTRNG,U) START=$P(RCDTRNG,U,2),END=$P(RCDTRNG,U,3)_".24" ; PRCA*4.5*326 allow for time at end of date range
  1. ;Selected division or All
  1. ;Scan AFL index for ERA within date range
  1. F S START=$O(^RCY(344.4,"AFL",START)) Q:'START Q:START>END D
  1. .S ERAIEN=""
  1. .F S ERAIEN=$O(^RCY(344.4,"AFL",START,ERAIEN)) Q:'ERAIEN D
  1. ..;Ignore if not posted with paper EOB
  1. ..Q:'$D(^RCY(344.4,ERAIEN,7))
  1. ..;Check division
  1. ..D ERASTA(ERAIEN,.STA,.STNUM,.STNAM)
  1. ..I RCDIV=2,'$D(VAUTD(STA)) Q
  1. ..I '$$ISTYPE^RCDPEU1(344.4,ERAIEN,RCTYPE) Q ; PRCA*4.5*326 - M/P/T/A filter
  1. ..;
  1. ..D SVERA^RCDPEM41(ERAIEN,STA,STNUM,STNAM)
  1. ;
  1. Q
  1. ;
  1. CMPLEOB ;Generate the EOB Moved/Copy/Remove report ^TMP array
  1. N DTSUB,START,END,EOBIEN,IEN101,STA,STNAM,STNUM
  1. ;Date Range
  1. S START=$P(RCDTRNG,U,2),END=$P(RCDTRNG,U,3)
  1. ;Selected division or All
  1. ;Scan AEOB index for EOB within date range
  1. F S START=$O(^IBM(361.1,"AEOB",START)) Q:'START Q:(START\1)>END D
  1. .S EOBIEN=""
  1. .F S EOBIEN=$O(^IBM(361.1,"AEOB",START,EOBIEN)) Q:'EOBIEN D
  1. ..; Ignore if not MOVED/COPIED
  1. ..S IEN101="" F S IEN101=$O(^IBM(361.1,"AEOB",START,EOBIEN,IEN101)) Q:'IEN101 D ;
  1. ...; Check division
  1. ...D EOBSTA(EOBIEN,.STA,.STNUM,.STNAM)
  1. ...I RCDIV=2,'$D(VAUTD(STA)) Q
  1. ...I '$$ISTYPE^RCDPEU1(361.1,EOBIEN,RCTYPE) Q ; PRCA*4.5*326 - M/P/T/A filter
  1. ...;
  1. ...;
  1. ...D SVEOB^RCDPEM41(EOBIEN,IEN101,STA,STNUM,STNAM)
  1. ;
  1. Q
  1. ;
  1. DISP ; Format the display for screen/printer or MS Excel
  1. N DVFLTR,IEN,RCNTRY,SUB,Y
  1. ;Format Division Filter
  1. S DVFLTR=$S(RCRTYP="EOB":"ALL STATIONS/DIVISIONS",1:"ALL") I RCDIV=2 S DVFLTR=$$LINE(.VAUTD)
  1. D:'RCLSTMGR HDRBLD ; Report header
  1. D:RCLSTMGR HDRLM ; Listman header
  1. ; RCNTRY - entry from ^TMP(RCPROG,$J)
  1. ;
  1. U IO
  1. ;
  1. ; Display Header for first time
  1. D:'RCLSTMGR HDRLST^RCDPEARL(.RCSTOP,.RCHDR)
  1. ;Report by division or 'ALL'
  1. S SUB=0,RCSTOP=0
  1. F S SUB=$O(^TMP(RCPROG,$J,SUB)) Q:SUB=""!RCSTOP D
  1. .S IEN=0 F S IEN=$O(^TMP(RCPROG,$J,SUB,IEN)) Q:'IEN!RCSTOP S RCNTRY=^(IEN) D
  1. ..I RCDISPTY W !,RCNTRY Q ; spreadsheet format
  1. ..I RCRTYP="ERA" D ; ERA posted with paper EOB
  1. ...I 'RCLSTMGR,$Y>(IOSL-RCHDR(0)) D HDRLST^RCDPEARL(.RCSTOP,.RCHDR) Q:RCSTOP
  1. ...S Y=$$PAD^RCDPEARL($P(RCNTRY,U,5),11) ; ERA#
  1. ...S Y=Y_$$PAD^RCDPEARL($P(RCNTRY,U,6),13) ;RECEIPT#
  1. ...S Y=Y_$$PAD^RCDPEARL($P(RCNTRY,U,3),18) ;DATE/TIME
  1. ...S Y=Y_$$PAD^RCDPEARL($P(RCNTRY,U,4),16) ;USER LASTNAME,FIRSTNAME
  1. ...S Y=Y_$P(RCNTRY,U,7) ;MATCH STATUS
  1. ...D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
  1. ...D SL^RCDPEARL($J("",61)_$P(RCNTRY,U,8),.RCLNCNT,RCTMPND) ;POST STATUS
  1. ..;
  1. ..I RCRTYP="EOB" D ; EOB Moved/Copied
  1. ...I 'RCLSTMGR,$Y>(IOSL-RCHDR(0)) D HDRLST^RCDPEARL(.RCSTOP,.RCHDR) Q:RCSTOP
  1. ...S Y=$$PAD^RCDPEARL($P(RCNTRY,U,5),20) ; ORIGINAL BILL
  1. ...S Y=Y_$P(RCNTRY,U,8) ; TRACE #
  1. ...D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
  1. ...S Y=$$PAD^RCDPEARL($J("",6)_$P(RCNTRY,U,7),15) ;ERA
  1. ...S Y=Y_$$PAD^RCDPEARL($P(RCNTRY,U,3),20) ;DATE/TIME
  1. ...S Y=Y_$$PAD^RCDPEARL($P(RCNTRY,U,12),15) ;MOVED/COPIED/REMOVED
  1. ...S Y=Y_$$PAD^RCDPEARL("$"_$P(RCNTRY,U,9),11) ;PAYMENT AMOUNT
  1. ...S Y=Y_$P(RCNTRY,U,4) ; USER LASTNAME,FIRSTNAME
  1. ...D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
  1. ...D:$P(RCNTRY,U,12)'="REMOVED"
  1. ....S Y=$$PAD^RCDPEARL("New Bill: "_$P(RCNTRY,U,6),25) ;NEW BILL
  1. ....S Y=Y_"Other Bill Number(s): "_$P(RCNTRY,U,11) ;OTHER BILLS
  1. ....D SL^RCDPEARL(Y,.RCLNCNT,RCTMPND)
  1. ...;
  1. ...D WP($P(RCNTRY,U,10)) ; Justification comments
  1. ...D SL^RCDPEARL("",.RCLNCNT,RCTMPND) ; skip a line
  1. .;
  1. .; end of report
  1. .I 'RCSTOP D SL^RCDPEARL(" ",.RCLNCNT,RCTMPND),SL^RCDPEARL($$ENDORPRT^RCDPEARL,.RCLNCNT,RCTMPND)
  1. ;
  1. D:'$D(^TMP(RCPROG,$J))
  1. .D SL^RCDPEARL(" ",.RCLNCNT,RCTMPND) ; skip line
  1. .D SL^RCDPEARL(" *** NO RECORDS TO PRINT ***",.RCLNCNT,RCTMPND)
  1. ;
  1. ;Close device
  1. I '$D(ZTQUEUED),'RCLSTMGR D ^%ZISC
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. Q
  1. ;
  1. LINE(VAUTD) ;List selected stations
  1. N LINE,SUB
  1. S LINE="",SUB=""
  1. F S SUB=$O(VAUTD(SUB)) Q:'SUB D
  1. .S LINE=LINE_$G(VAUTD(SUB))_", "
  1. Q $E(LINE,1,$L(LINE)-2)
  1. ;
  1. SELDIV(VAUTD,Z) ;Devisions are organized as Z(1)="DIV1,DIV2,..., Z(2)="DIVN,DIVN+1,... etc.
  1. ; Input:
  1. ; VAUTD (required/pass-by-ref) - Division(s) array; result of call to DIVISION^VAUTOMA
  1. ; Output:
  1. ; Z (required/pass-by-ref) - reformatted array of divisions
  1. ;
  1. N SUB,CNT
  1. S CNT=1,Z(CNT)="DIVISIONS: "
  1. I $D(VAUTD)=1 D Q
  1. . S Z(CNT)=Z(CNT)_"ALL"
  1. .S Z(CNT)=$J("",80-$L(Z(CNT))\2)_Z(CNT)
  1. I $D(VAUTD)>1,'VAUTD D
  1. .S SUB=VAUTD
  1. .F S SUB=$O(VAUTD(SUB)) Q:'SUB D
  1. ..I Z(CNT)="DIVISIONS: " S Z(CNT)=Z(CNT)_VAUTD(SUB) Q
  1. ..S Z(CNT)=Z(CNT)_$S(Z(CNT)]"":",",1:"")_VAUTD(SUB)
  1. ..I $L(Z(CNT))>50 S Z(CNT)=$J("",80-$L(Z(CNT))\2)_Z(CNT),CNT=CNT+1,Z(CNT)=""
  1. ;
  1. I Z(CNT)]"" S Z(CNT)=$J("",80-$L(Z(CNT))\2)_Z(CNT)
  1. I Z(CNT)="" K Z(CNT)
  1. Q
  1. ;
  1. HDRBLD ; create the report header
  1. ; returns RCHDR, RCPGNUM, RCSTOP
  1. ; RCHDR(0) = header text line count
  1. ; RCHDR("XECUTE") = M code for page number
  1. ; RCHDR("RUNDATE") = date/time report generated, external format
  1. ; RCPGNUM - page counter
  1. ; RCSTOP - flag to exit
  1. ; INPUT:
  1. ; RCDISPTY - Display/print/Excel flag
  1. ; RCDTRNG - date range
  1. ; RCRTYP - Report Type (EOB or ERA)
  1. ; VAUTD
  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(1)="^^^",RCHDR("XECUTE")="Q",RCPGNUM=""
  1. .S:RCRTYP="ERA" RCHDR(1)="STATION^STATION NUMBER^DATE/TIME^USER^ERA^RECEIPT^MATCH STATUS^POSTED STATUS"
  1. .S:RCRTYP="EOB" RCHDR(1)="STATION^STATION NUMBER^DATE/TIME^USER^ORIGINAL BILL^NEW BILL^ERA#^TRACE#^PAYMENT AMOUNT^JUSTIFICATION^OTHER BILLS^MOVED/COPIED"
  1. ;
  1. N START,END,MSG,DATE,Y,DIV,HCNT,J
  1. S START=$$FMTE^XLFDT($P(RCDTRNG,U,2),"2Z"),END=$$FMTE^XLFDT($P(RCDTRNG,U,3),"2Z"),HCNT=0
  1. ;
  1. S RCHDR(0)=0 ; header line count
  1. X "S Y=$$HDR"_RCRTYP S HCNT=1
  1. ;
  1. I RCRTYP="ERA" D
  1. .D HDRXEC(RCRTYP) ; xecute code for line 1
  1. .S Y="Run Date/Time: "_RCHDR("RUNDATE")
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .S Y="DIVISIONS: "_$S(VAUTD=1:"ALL",1:DVFLTR)
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .S Y="Date Range: "_START_" - "_END_" (DATE ERA UPDATED)"
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .; PRCA*4.5*326
  1. .S Y="MEDICAL/PHARMACY/TRICARE/CHAMPVA: "
  1. .S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL")
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=""
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=" Date/Time User Who EFT Match Status"
  1. .S HCNT=HCNT+1,RCHDR(HCNT)="ERA # Receipt # ERA Updated Updated Detail Post Status"
  1. .S RCHDR(0)=HCNT ; header line count
  1. ;
  1. I RCRTYP="EOB" D
  1. .D HDRXEC(RCRTYP) ; xecute code for line 1
  1. .S Y="Run Date/Time: "_RCHDR("RUNDATE")
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .S Y="Divisions: "_$S(VAUTD=1:"ALL",1:DVFLTR)
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .S Y="Date Range: "_START_" - "_END_" (Date EEOB was Moved/Copied/Removed)"
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .; PRCA*4.5*326
  1. .S Y="MEDICAL/PHARMACY/TRICARE/CHAMPVA: "
  1. .S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL")
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .S Y=" Action(s) Selected: "_$S(RCACT="M":"MOVE",RCACT="C":"COPY",RCACT="R":"REMOVE",1:"ALL")
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=""
  1. .S HCNT=HCNT+1,RCHDR(HCNT)="Orig Bill# Trace #"
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=" Moved/Copied/ Total Amt User Who Moved/"
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=" ERA # Date/Time Removed Paid Copied/Removed"
  1. .S RCHDR(0)=HCNT ; header line count
  1. ;
  1. ; add row of equal signs, not for ListMan
  1. S Y=RCHDR(0)+1,RCHDR(0)=Y,RCHDR(Y)=$TR($J("",80)," ","=")
  1. Q
  1. ;
  1. HDRLM ; create the Listman header
  1. ; returns RCHDR
  1. ; RCHDR(0) = header text line count
  1. ; INPUT:
  1. ; RCDTRNG - date range
  1. ; VAUTD - Division filter value(s)
  1. N START,END,MSG,DATE,Y,DIV,HCNT,J
  1. S START=$$FMTE^XLFDT($P(RCDTRNG,U,2),"2Z"),END=$$FMTE^XLFDT($P(RCDTRNG,U,3),"2Z"),HCNT=0
  1. ;
  1. S RCHDR(0)=0 ; header line count
  1. X "S Y=$$HDR"_RCRTYP
  1. I RCRTYP="ERA" D
  1. .D HDRXEC(RCRTYP) ; xecute code for line 1
  1. .S HCNT=1,RCHDR(HCNT)=""
  1. .S Y="Divisions: "_$S(VAUTD=1:"ALL",1:DVFLTR)_" "
  1. .; PRCA*4.5*326
  1. .S Y=Y_"MEDICAL/PHARMACY/TRICARE/CHAMPVA: "
  1. .S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL")
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=""
  1. .S Y="Date Range: "_START_" - "_END_" (DATE ERA UPDATED)"
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=""
  1. .S HCNT=HCNT+1,RCHDR(HCNT)=" Date/Time User Who EFT Match Status"
  1. .S HCNT=HCNT+1,RCHDR(HCNT)="ERA # Receipt # ERA Updated Updated Detail Post Status"
  1. .S RCHDR(0)=HCNT ; header line count
  1. ;
  1. I RCRTYP="EOB" D
  1. .D HDRXEC(RCRTYP) ; xecute code for line 1
  1. .S Y="Divisions: "_$S(VAUTD=1:"ALL",1:DVFLTR)_" "
  1. .; PRCA*4.5*326
  1. .S Y=Y_"MEDICAL/PHARMACY/TRICARE/CHAMPVA: "
  1. .S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL")
  1. .S HCNT=1,RCHDR(HCNT)=Y
  1. .S Y="Date Range: "_START_" - "_END_" (Date EEOB was Moved/Copied/Removed)"
  1. .S HCNT=2,RCHDR(HCNT)=Y
  1. .S Y="Action(s) Selected: "_$S(RCACT="M":"MOVE",RCACT="C":"COPY",RCACT="R":"REMOVE",1:"ALL")
  1. .S HCNT=3,RCHDR(HCNT)=Y
  1. .S HCNT=4,RCHDR(HCNT)=""
  1. .S HCNT=5,RCHDR(HCNT)="Orig Bill# Trace #"
  1. .S HCNT=6,RCHDR(HCNT)=" Moved/Copied/ Total Amt User Who Moved/"
  1. .S HCNT=7,RCHDR(HCNT)=" ERA # Date/Time Removed Paid Copied/Removed"
  1. .S RCHDR(0)=HCNT ; header line count
  1. ;
  1. ; add row of equal signs, not for ListMan
  1. S:'RCLSTMGR Y=RCHDR(0)+1,RCHDR(0)=Y,RCHDR(Y)=" "_$TR($J("",78)," ","=")
  1. Q
  1. ;
  1. HDREOB() ; extrinsic variable, header for EOB report
  1. Q "EEOB Move/Copy/Remove - Audit Report"
  1. ;
  1. HDRERA() ; extrinsic variable, header for ERA report
  1. Q "ERAs Posted with Paper EOB - Audit Report"
  1. ;
  1. HDRXEC(TYP) ; create xecute code for header
  1. S RCHDR("XECUTE")="N Y S RCPGNUM=RCPGNUM+1,Y=$$HDR"_TYP_"^"_$T(+0)_",RCHDR(1)=$J("" "",80-$L(Y)\2)_Y"_"_"" Page: ""_RCPGNUM"
  1. Q
  1. ;
  1. DTRNG() ; function, return date range for a report
  1. N DIR,DUOUT,X,Y,RCSTART,RCEND
  1. D DATES(.RCSTART,.RCEND)
  1. Q:RCSTART=-1 0
  1. Q:RCSTART "1^"_RCSTART_"^"_RCEND
  1. Q:'RCSTART "0^^"
  1. Q 0
  1. ;
  1. DATES(BDATE,EDATE) ;Get a date range.
  1. S (BDATE,EDATE)=0
  1. S DIR("?")="Enter the latest date of receipt of deposit to include on the report."
  1. S DIR(0)="DAO^:"_DT_":APE",DIR("A")="Start date: " D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") S BDATE=-1 Q
  1. S BDATE=Y
  1. S DIR("?")="Enter the latest date of receipt of deposit to include on the report."
  1. S DIR("B")=Y(0)
  1. S DIR(0)="DAO^"_BDATE_":"_DT_":APE",DIR("A")=" End date: " D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") S BDATE=-1 Q
  1. S EDATE=Y
  1. Q
  1. ;
  1. STADIV ;Division/Station Filter/Sort
  1. ;
  1. ;Sort selection
  1. N DIR,DUOUT,Y
  1. S RCDIV=0
  1. ;
  1. ;Division selection - IA 664
  1. ;RETURNS Y=-1 (quit), VAUTD=1 (for all),VAUTD=0 (selected divisions in VAUTD)
  1. D DIVISION^VAUTOMA Q:Y<0
  1. ;
  1. ;If ALL selected
  1. I VAUTD=1 S RCDIV=1 Q
  1. ;If some DIVISIONS selected
  1. S RCDIV=2
  1. Q
  1. ;
  1. ACTION() ; Get action type
  1. N DIR,X,Y,DIROUT,DUOUT
  1. S DIR("A")="Move/Copy/Remove or All (M/C/R/A): "
  1. S DIR("B")="All" ; default to ALL
  1. S DIR(0)="SAB^M:Move;C:Copy;R:Remove;A:All"
  1. D ^DIR Q:$G(DIROUT)!$G(DUOUT) -1
  1. ;
  1. Q Y
  1. ;
  1. DISPTY() ; Get display/output type
  1. N DIR,DTOUT,DUOUT,X,Y
  1. S DIR(0)="YA"
  1. S DIR("A")="Export the report to Microsoft Excel? "
  1. S DIR("B")="NO"
  1. D ^DIR I $G(DUOUT) Q -1
  1. Q Y
  1. ;
  1. ERASTA(ERAIEN,STA,STNUM,STNAM) ; Get the station for this ERA
  1. ; read allowed on BILL/CLAIMS file (#399) via IA 3820
  1. ; returns STA: station IEN, STNAM: station name, STNUM: station number
  1. N ERAEOB,ERABILL,STAIEN
  1. S (ERAEOB,ERABILL)=""
  1. S (STA,STNUM,STNAM)="UNKNOWN"
  1. D
  1. .S ERAEOB=$P($G(^RCY(344.4,ERAIEN,1,1,0)),U,2) Q:'ERAEOB ; if EOB pointer not on first sub-file entry then stop
  1. .S ERABILL=$P($G(^IBM(361.1,ERAEOB,0)),U,1) Q:'ERABILL ; EXPLANATION OF BENEFITS file (#361.1)
  1. .S STAIEN=$P($G(^DGCR(399,ERABILL,0)),U,22) Q:'STAIEN ;(#.22) DEFAULT DIVISION [22P:40.8]
  1. .S STA=STAIEN
  1. .S STNAM=$$EXTERNAL^DILFD(399,.22,,STA)
  1. .S STNUM=$P($G(^DG(40.8,STAIEN,0)),U,2) ;IA 417
  1. ;
  1. Q
  1. ;
  1. EOBSTA(EOBIEN,STA,STNUM,STNAM) ; Get the station for this EOB
  1. ;Allowed read on 399 via IA 3820
  1. N BILL,STAIEN
  1. S (BILL)=""
  1. S (STA,STNUM,STNAM)="UNKNOWN"
  1. D
  1. .S BILL=$P(^IBM(361.1,EOBIEN,0),U,1) Q:'BILL
  1. .S STAIEN=$P($G(^DGCR(399,BILL,0)),U,22) Q:'STAIEN
  1. .S STA=STAIEN
  1. .S STNAM=$$EXTERNAL^DILFD(399,.22,,STA)
  1. .S STNUM=$P($G(^DG(40.8,STAIEN,0)),U,2) ;IA 417
  1. Q
  1. ;
  1. DTPRB() ; Get the Start Date type
  1. N DIR,DTOUT,DUOUT,DIRUT,DIROUT,X,Y
  1. S DIR(0)="SABO^W:Date Removed from Worklist;R:Date ERA Received;B:Both Dates"
  1. S DIR("A")="Select Start Date Type: "
  1. D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT)!(Y="") S Y=0
  1. Q Y
  1. ;
  1. WP(JC) ; format justification comments
  1. ; JC - Justification Comment
  1. I JC="" Q
  1. N PCS,I,CNTR,CMNT,Y
  1. ; PCS - Number of " " $pieces in the comment
  1. ; CNTR - CMNT line counter
  1. ; CMNT - comment text to be displayed
  1. S PCS=$L(JC," "),CNTR=1,CMNT(CNTR)=" Justification Comments: "
  1. F I=1:1:PCS D
  1. .S Y=$P(JC," ",I)
  1. .S:$L(CMNT(CNTR))+$L(Y)>72 CNTR=CNTR+1,CMNT(CNTR)=$J(" ",25)
  1. .S CMNT(CNTR)=CMNT(CNTR)_" "_Y
  1. ;
  1. F I=1:1:CNTR D SL^RCDPEARL(CMNT(I),.RCLNCNT,RCTMPND)
  1. Q
  1. ;