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

RCDPEFA1.m

Go to the documentation of this file.
  1. RCDPEFA1 ;AITC/FA - FIRST PARTY AUTO-DECREASE REPORT ; 6/12/19 7:36am
  1. ;;4.5;Accounts Receivable;**345,349**;Mar 20, 1995;Build 44
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ; Read ^DG(40.8) - IA 417
  1. ; DIVISION^VAUTOMA - IA 664
  1. ;
  1. EN ; entry point for Auto-Decrease Adjustment report [RCDPE FIRST PARTY AUTO-DECREASE]
  1. N INPUT,RCVAUTD,DISP
  1. S INPUT=$$STADIV^RCDPEFA2(.RCVAUTD) ; Division filter
  1. Q:'INPUT ; '^' or timeout
  1. S DISP=$$DETSUM^RCDPEFA2 ; PRCA*4.5*349 - Display detailed or summary report
  1. Q:DISP=0
  1. S $P(INPUT,U,8)=DISP
  1. S $P(INPUT,U,7)="A" ; '^' or timeout
  1. I DISP="D" D ;
  1. . S $P(INPUT,U,7)=$$ASKPAT^RCDPEFA2 ; PRCA*4.5*349 - Filter by Patient or 'ALL'
  1. Q:$P(INPUT,U,7)=0 ; '^' or timeout
  1. S $P(INPUT,U,2)="C"
  1. I DISP="D" S $P(INPUT,U,2)=$$ASKSORT^RCDPEFA2 ; Select Sort Criteria
  1. Q:$P(INPUT,U,2)=0 ; '^' or timeout
  1. S $P(INPUT,U,3)="F"
  1. I DISP="D" D ;
  1. . S $P(INPUT,U,3)=$$SORTORD^RCDPEFA2($P(INPUT,U,2)) ; Select Sort Order
  1. Q:$P(INPUT,U,3)=0 ; '^' or timeout
  1. S $P(INPUT,U,4)=$$DTRNG^RCDPEFA2 ; Select Date Range for Report
  1. Q:'$P(INPUT,U,4) ; '^' or timeout
  1. S $P(INPUT,U,4)=$P($P(INPUT,U,4),"|",2,3)
  1. S $P(INPUT,U,6)=$$ASKLM^RCDPEARL ; Ask to Display in Listman Template
  1. Q:$P(INPUT,U,6)<0 ; '^' or timeout
  1. I $P(INPUT,U,6)=1 D Q ; Compile data and call listman to display
  1. . D LMOUT(INPUT,.RCVAUTD,.IO)
  1. I DISP="D" S $P(INPUT,U,5)=$$DISPTY^RCDPEFA2 ; Select Display Type
  1. Q:$P(INPUT,U,5)=-1 ; '^' or timeout
  1. I $P(INPUT,U,5)=1 D INFO^RCDPEM6 ; Display capture information for Excel
  1. Q:'$$DEVICE^RCDPEFA2(.IO) ; Ask output device
  1. ;
  1. ; Compile and Display Report data (queued) - not allowed for EXCEL
  1. I $P(INPUT,U,5)'=1,$D(IO("Q")) D Q
  1. . N ZTDESC,ZTQUEUED,ZTRTN,ZTSAVE,ZTSK
  1. . S ZTRTN="REPORT^RCDPEFAD(INPUT,.RCVAUTD,.IO)"
  1. . S ZTDESC="EDI LOCKBOX FIRST PARTY AUTO-DECREASE REPORT"
  1. . S ZTSAVE("RC*")="",ZTSAVE("INPUT")="",ZTSAVE("IO*")=""
  1. . D ^%ZTLOAD
  1. . W !!,$S($G(ZTSK):"Task number "_ZTSK_" has been queued.",1:"Unable to queue this job.")
  1. . K IO("Q") D HOME^%ZIS
  1. D REPORT(INPUT,.RCVAUTD,.IO) ; Create report
  1. Q
  1. ;
  1. REPORT(INPUTS,RCVAUTD,IO) ;EP Compile and print report
  1. ; Input: INPUTS - A1^A2^A3^...^An Where:
  1. ; A1 - 1 - All divisions selected, 2 - Selected divisions
  1. ; A2 - C - Sort by Claim, N - Sort by Patient Name
  1. ; A3 - F - sort First to Last, L - sort Last to First
  1. ; A4 - B1|B2
  1. ; B1 - Auto-Post Start Date
  1. ; B2 - Auto-Post End Date
  1. ; A5 - 1 - Output to Excel, else 0
  1. ; A6 - 1 - Output to List Manager, else 0
  1. ; A7 - C1|C2
  1. ; C1 - P - Filter list by Patient
  1. ; A - Show all 1st Party Auto-Decreases"
  1. ; C2 - IEN into file #2 (if C1=P, null otherwise)
  1. ; RCVAUTD - Array of selected Divisions, Only passed if A1=2
  1. ; IO - Output Device
  1. N DTOTAL,GTOTAL,XX,ZTREQ
  1. U IO
  1. K ^TMP("RCDPEFADP",$J),^TMP("RCDPE_ADP",$J)
  1. D COMPILE(INPUTS,.RCVAUTD,.DTOTAL,.GTOTAL) ; Scan AR TRANSACTION file for entries in date range
  1. D DISP(INPUTS,.DTOTAL,.GTOTAL) ; Display Report
  1. K ^TMP("RCDPEFADP",$J),^TMP("RCSELPAY",$J) ; Clear ^TMP global
  1. D ^%ZISC ; Close device
  1. Q
  1. ;
  1. COMPILE(INPUTS,RCVAUTD,DTOTAL,GTOTAL) ;EP Generate the Auto-Decrease report ^TMP array
  1. ; Input: INPUTS - See REPORT for details
  1. ; RCVAUTD - Array of Divisions
  1. ; Only passed if A1=2
  1. ; Output: DTOTAL - Array of totals by Auto-Post Date
  1. ; GTOTAL - Grand totals
  1. ; ^TMP("RCDPEFADP",$J)- Array of report data, See SAVE for a full description
  1. N AMT,BEG,DAIEN,END,EXCEL,PIEN,RCBILL,RCBILL3,RCCMT,RCCOPAY,RCDT,RCDTI,RCDEBTOR,RCDIEN
  1. N RCSITE,RCTR,RCTRAND,RCTYPE,RCSORT,RCUSER,RC430IEN,STA,STNAM,STNUM,TRANDA,XX
  1. ;
  1. S XX=$P(INPUTS,U,4) ; Auto-Post Date range
  1. S PIEN=$P($P(INPUTS,U,7),"|",2) ; Patient IEN filter (if any)
  1. S BEG=$$FMADD^XLFDT($P(XX,"|",1),-1)
  1. S END=$P(XX,"|",2) ; Auto-Post End Date
  1. S RCTR=0 ; Record counter
  1. S EXCEL=$P(INPUTS,U,5) ; 1 output to Excel, 0 otherwise
  1. S RCSORT=$P(INPUTS,U,2) ; Sort Type
  1. ;
  1. ; Scan index for auto-posted claim lines within the ERA
  1. ; and Save claim line detail to ^TMP global
  1. S ^TMP("RCDPE_FAD",$J,"TCNT")=0,^TMP("RCDPE_FAD",$J,"TAMT")=0
  1. ;
  1. ; Get IEN of 'DECREASE ADJUSTMENT' fron #430.3
  1. S DAIEN=$O(^PRCA(430.3,"B","DECREASE ADJUSTMENT",""))
  1. ;
  1. ; Scan AR Transaction date index for days
  1. S RCTRAND=BEG
  1. F S RCTRAND=$O(^PRCA(433,"AT",DAIEN,RCTRAND)) Q:'RCTRAND!(RCTRAND>END) D
  1. . ;
  1. . ; Scan AR transactions
  1. . S TRANDA=""
  1. . F S TRANDA=$O(^PRCA(433,"AT",DAIEN,RCTRAND,TRANDA)) Q:'TRANDA D
  1. . . S RC430IEN=$$GET1^DIQ(433,TRANDA_",",.03,"I") ; Get AR ACCOUNT
  1. . . Q:'RC430IEN
  1. . . S RCSITE=$$GET1^DIQ(430,RC430IEN_",",12,"I") ; Get SITE ien
  1. . . Q:'RCSITE
  1. . . ;
  1. . . ; Ignore transaction if not a selected Division
  1. . . I $P(INPUTS,U,1)=2,'$D(RCVAUTD(RCSITE)) Q
  1. . . S RCUSER=$$GET1^DIQ(433,TRANDA_",",42,"E") ; Get user
  1. . . Q:RCUSER'="POSTMASTER" ; Is this auto-decrease?
  1. . . S RCBILL=$$GET1^DIQ(433,TRANDA_",",.03,"E") ; Copay Claim #
  1. . . S RCBILL3=$$GET1^DIQ(433,TRANDA_",",94,"E") ; 3rd Party #
  1. . . I RCBILL3="" Q ; Not a 3rd party offset
  1. . . S XX=$O(^IB("ABIL",RCBILL,0)) ; IEN in file #350
  1. . . S RCCOPAY=$$GET1^DIQ(350,XX_",",.07,"E") ; Copay Amount
  1. . . ;
  1. . . ; Make sure this is first party - DEBTOR is a patient
  1. . . Q:$$GET1^DIQ(340,$$GET1^DIQ(430,RC430IEN_",",9,"I")_",",.01,"I")'["DPT"
  1. . . S RCDEBTOR=$$GET1^DIQ(430,RC430IEN_",",9,"E")
  1. . . S RCDIEN=$$GET1^DIQ(430,RC430IEN_",",9,"I") ; IEN of file #340
  1. . . S RCDIEN=$P($$GET1^DIQ(340,RCDIEN_",",.01,"I"),";",1) ; IEN of the PATIENT DEBTOR
  1. . . I PIEN'="",RCDIEN'=PIEN Q ; Not the selected patient
  1. . . S RCDEBTOR=$E($$GET1^DIQ(2,RCDIEN_",",.01,"E"),1,23)
  1. . . S RCDEBTOR=RCDEBTOR_"/"_$E($$GET1^DIQ(2,RCDIEN_",",.09,"E"),6,9)
  1. . . S RCDTI=$$GET1^DIQ(433,TRANDA_",",11,"I") ; Transaction date
  1. . . S RCDT=$$FMTE^XLFDT(RCDTI,"2SZ") ; Transaction date Externam
  1. . . S RCAMT=$$GET1^DIQ(433,TRANDA_",",15,"E") ; Transaction amount
  1. . . D DIV(RC430IEN,.STNUM,.STNAM) ; Station name/number
  1. . . S RCCMT=$$GET1^DIQ(433,TRANDA_",",41,,"RCCMT") ; PRCA*4.5*349 - Comments
  1. . . D SAVE(RCDEBTOR,RCAMT,RCBILL,RCBILL3,RCCOPAY,RCDTI,RCDT,EXCEL,RCSORT,.RCTR,STNAM,STNUM,.RCCMT)
  1. Q
  1. ;
  1. SAVE(RCDEBTOR,RCAMT,RCBILL,RCBILL3,RCOPAY,RCDTI,RCDT,EXCEL,RCSORT,RCTR,STNAM,STNUM,RCCMT) ; Put data into ^TMP
  1. ; Input: RCDEBTOR - Patient Name
  1. ; RCAMT - Auto-Decrease amount
  1. ; RCBILL - Copay Claim #
  1. ; RCBILL3 - 3rd Party Claim #
  1. ; RCCOPAY - Copay Amount
  1. ; RCDTI - Auto-decrease date (internal)
  1. ; RCDT - Auto-decrease date (external)
  1. ; EXCEL - 1 output to Excel, 0 otherwise
  1. ; RCSORT - C - Sort by Claim, N - Sort by Patient Name
  1. ; DTOTAL() - Current array of totals by Auto-Decrease Date
  1. ; GTOTAL - Current Grand total
  1. ; RCTR - Record Counter
  1. ; STNAM - Station name
  1. ; STNUM - Station number
  1. ; RCCMT - PRCA*4.5*349 - Comments
  1. ; ^TMP("RCDPEFADP",$J)- Current report data
  1. ; See below for a full description
  1. ; Output: DTOTAL() - Updated array of totals by Auto-Post Date
  1. ; GTOTAL - Updated Grand totals
  1. ; RCTR - Record Counter
  1. ; ^TMP("RCDPEFADP",$J,A1,A2,A3) = B1^B2^B3^...^Bn Where:
  1. ; A1 - "EXCEL" if report to excel, fileman date if not
  1. ; A2 - Excel Line Counter if to excel, Claim # if sort by claim,
  1. ; Patient Name if sort by Name
  1. ; A3 - Record Counter
  1. ; B1 - External Station Name
  1. ; B2 - External Station Number
  1. ; B3 - External Patient Name/SSN
  1. ; B4 - Copay Amount
  1. ; B5 - Auto-Decrease Amount
  1. ; B6 - Copay Bill Number
  1. ; B7 - 3rd Party Bill Number
  1. ; B8 - Auto-Decrease Date
  1. ; ^TMP("RCDPEFADP",$J,A1,A2,A3,"CMT") = Multi-line comment added for PRCA*4.5*349
  1. N A1,A2,XX,CNT
  1. S RCTR=RCTR+1
  1. ;
  1. ; If EXCEL sorting is done in EXCEL
  1. I EXCEL=1 D
  1. . S A1="EXCEL",A2=$G(^TMP("RCDPEFADP",$J,A1))+1
  1. . S ^TMP("RCDPEFADP",$J,A1)=A2
  1. ;
  1. ; Otherwise sort by DATE and selected criteria
  1. I 'EXCEL D
  1. . S A1=RCDTI
  1. . S A2=$S($E(RCSORT)="C":RCBILL,1:RCDEBTOR)
  1. ;
  1. ; Update ^TMP gif claim level adjustments found for this claim
  1. S XX=STNAM_U_STNUM_U_RCDEBTOR_U_RCOPAY_U_RCAMT_U_RCBILL_U_RCBILL3_U_RCDT
  1. S ^TMP("RCDPEFADP",$J,A1,A2,RCTR)=XX ; Claim Information
  1. ; PRCA*4.5*349 Begin modified block - Add comments to ^TMP
  1. Q:$D(RCCMT)<9
  1. S XX="",CNT=0 F S XX=$O(RCCMT(XX)) Q:'XX D
  1. . S CNT=CNT+1
  1. . S ^TMP("RCDPEFADP",$J,A1,A2,RCTR,"CMT",CNT)=RCCMT(XX)
  1. ; PRCA*4.5*349 End modified block
  1. ;
  1. ; Update totals for date
  1. S $P(DTOTAL(RCDTI),U,1)=$P($G(DTOTAL(RCDTI)),U,1)+1
  1. S $P(DTOTAL(RCDTI),U,2)=$P($G(DTOTAL(RCDTI)),U,2)+RCAMT
  1. S $P(DTOTAL(RCDTI),U,3)=$P($G(DTOTAL(RCDTI)),U,3)+RCOPAY ; PRCA*4.5*349
  1. ;
  1. ; Update totals for date range
  1. S $P(GTOTAL,U,1)=$P($G(GTOTAL),U,1)+1
  1. S $P(GTOTAL,U,2)=$P($G(GTOTAL),U,2)+RCAMT
  1. S $P(GTOTAL,U,3)=$P($G(GTOTAL),U,3)+RCOPAY ; PRCA*4.5*349
  1. Q
  1. ;
  1. DISP(INPUTS,DTOTAL,GTOTAL) ; Format the display for screen/printer or MS Excel
  1. ; Input: INPUTS - See REPORT for details
  1. ; DTOTAL()- Array of totals by Internal Auto-Post date
  1. ; GTOTAL - Grand Totals for the selected date period
  1. ; ^TMP("RCDPEFADP",$J) - See SAVE for description
  1. N A1,A2,A3,DATA,EXCEL,HDRINFO,LMAN,LCNT,MODE,PAGE,RCRDNUM,STOP,X,Y,DISP
  1. U IO
  1. S EXCEL=$P(INPUTS,U,5)
  1. S LMAN=$P(INPUTS,U,6)
  1. S DISP=$P(INPUTS,U,8) ; PRCA*4.5*349
  1. ;
  1. ; Header information
  1. S XX=$P(INPUTS,U,4) ; Auto-Post Date range
  1. S HDRINFO("START")=$$FMTE^XLFDT($P(XX,"|",1),"2SZ")
  1. S HDRINFO("END")=$$FMTE^XLFDT($P(XX,"|",2),"2SZ")
  1. S HDRINFO("RUNDATE")=$$FMTE^XLFDT($$NOW^XLFDT,"2SZ")
  1. S XX=$P(INPUTS,U,2) ; Sort Type
  1. S HDRINFO("SORT")="Sorted By: "_$S(XX="C":"Claim",XX="P":"Payer",1:"Patient Name")
  1. S XX=$S($P(INPUTS,U,3)="L":"Last to First",1:"First to Last")
  1. S HDRINFO("SORT")=HDRINFO("SORT")_" - "_XX
  1. S HDRINFO("DISP")="Display: "_$S(DISP="S":"SUMMARY",1:"DETAIL") ; PRCA*4.5*349
  1. ;
  1. ; Format Division filter
  1. S XX=$P(INPUTS,U,1) ; XX=1 - All Divisions, 2- selected
  1. S HDRINFO("DIVISIONS")=$S(XX=2:$$LINE(.RCVAUTD),1:"ALL")
  1. ;
  1. S A1="",PAGE=0,STOP=0,LCNT=1
  1. I 'LMAN,DISP="S" D HDR(EXCEL,.HDRINFO,.PAGE)
  1. S MODE=$S($P(INPUTS,U,3)="L":-1,1:1) ; Mode for $ORDER
  1. F D Q:(A1="")!STOP
  1. . S A1=$O(^TMP("RCDPEFADP",$J,A1))
  1. . Q:A1=""
  1. . I 'LMAN,DISP="D" D Q:STOP
  1. . . I PAGE D ASK(.STOP,0) Q:STOP ; Output to screen, quit if user wants to
  1. . . D HDR(EXCEL,.HDRINFO,.PAGE) ; Display Header
  1. . S A2=""
  1. . F D Q:(A2="")!STOP
  1. . . S A2=$O(^TMP("RCDPEFADP",$J,A1,A2),MODE)
  1. . . I 'EXCEL,A2="" D TOTALD^RCDPEFA2(LMAN,.HDRINFO,.PAGE,.STOP,A1,.DTOTAL,.LCNT)
  1. . . Q:A2=""
  1. . . Q:DISP="S" ; PRCA*4.5*349 - Skip printing details if summary report
  1. . . S A3=0
  1. . . F D Q:'A3!STOP
  1. . . . S A3=$O(^TMP("RCDPEFADP",$J,A1,A2,A3))
  1. . . . Q:'A3
  1. . . . S DATA=^TMP("RCDPEFADP",$J,A1,A2,A3) ; Auto-Decreased Claim
  1. . . . I EXCEL W !,DATA Q ; Output to Excel
  1. . . . I LMAN D Q
  1. . . . . N RCCMT
  1. . . . . M RCCMT=^TMP("RCDPEFADP",$J,A1,A2,A3,"CMT")
  1. . . . . D LMAN^RCDPEFA2(DATA,INPUT,.RCCMT,.LCNT)
  1. . . . I $Y>(IOSL-4) D Q:STOP ; End of page
  1. . . . . D ASK(.STOP,0)
  1. . . . . Q:STOP
  1. . . . . D HDR(EXCEL,.HDRINFO,.PAGE)
  1. . . . S Y=$P(DATA,U,3) ; Patient Name/SSN last 4
  1. . . . S $E(Y,31)=$J($P(DATA,U,4),6,2) ; COPAY Amount
  1. . . . S $E(Y,39)=$J($P(DATA,U,5),6,2) ; Auto-Decrease Amount
  1. . . . S $E(Y,47)=$E($P(DATA,U,6),1,11) ; Copay Claim #
  1. . . . S $E(Y,60)=$E($P(DATA,U,7),1,11) ; Third Party Claim #
  1. . . . S $E(Y,73)=$P(DATA,U,8) ; Auto-Decrease Date
  1. . . . W !,Y
  1. . . . ; PRCA*4.5*349 Begin Modified Block
  1. . . . I $P($P(INPUTS,U,7),"|",3)=1 D ; Show comment detail?
  1. . . . . W !,?6,"Comment: "
  1. . . . . N CNT
  1. . . . . S CNT="" F S CNT=$O(^TMP("RCDPEFADP",$J,A1,A2,A3,"CMT",CNT)) Q:CNT="" D
  1. . . . . . W ^TMP("RCDPEFADP",$J,A1,A2,A3,"CMT",CNT),!,?11
  1. . . . ; PRCA*4.5*349 End Modified Block
  1. ;
  1. ; Grand totals
  1. I $D(GTOTAL) D
  1. . I 'STOP,'EXCEL D ; Print grand total if not Excel
  1. . . D TOTALG^RCDPEFA2(LMAN,.HDRINFO,.PAGE,GTOTAL,.STOP,.LCNT)
  1. . I 'EXCEL,'LMAN D ; Report finished
  1. . . W !,$$ENDORPRT^RCDPEARL,!
  1. . . D ASK(.STOP,1)
  1. ;
  1. ; Null Report
  1. I '$D(GTOTAL),'LMAN D
  1. . I PAGE=0 D HDR(EXCEL,.HDRINFO,.PAGE)
  1. . W !!,?26,"*** No Records to Print ***",!
  1. . W !,$$ENDORPRT^RCDPEARL
  1. . S:'$D(ZTQUEUED) X=$$ASKSTOP^RCDPELAR
  1. ;
  1. ; List manager
  1. I LMAN D
  1. . S:LCNT=1 ^TMP("RCDPE_ADP",$J,LCNT)=$J("",26)_"*** No Records to Print ***",LCNT=LCNT+1
  1. . S ^TMP("RCDPE_ADP",$J,LCNT)=" ",LCNT=LCNT+1
  1. . S ^TMP("RCDPE_ADP",$J,LCNT)=$$ENDORPRT^RCDPEARL
  1. ; Close device
  1. I '$D(ZTQUEUED) D ^%ZISC
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. Q
  1. ;
  1. ASK(STOP,TYP) ; Ask to continue, if TYP=1 then prompt to finish
  1. ; Input: TYP - 1 - Prompt to finish, 0 Otherwise
  1. ; Output: STOP - 1 abort print, 0 otherwise
  1. N DIR,DIROUT,DIRUT,DTOUT,DUOUT
  1. Q:$E(IOST,1,2)'["C-" ; Not a terminal
  1. S:$G(TYP)=1 DIR("A")="Enter RETURN to finish"
  1. S DIR(0)="E"
  1. W !
  1. D ^DIR
  1. I ($D(DIRUT))!($D(DUOUT))!($D(DUOUT)) S STOP=1
  1. Q
  1. ;
  1. DIV(STAIEN,STNUM,STNAM) ; Get the station for this ERA
  1. ; Input: DAIEN - AR ACCOUNT IEN
  1. ; Output: STNUM - Station Number
  1. ; STNAM - Station Name
  1. S (STNUM,STNAM)="UNKNOWN"
  1. Q:'STAIEN
  1. S STNAM=$$GET1^DIQ(430,STAIEN_",",12,"E")
  1. S STNUM=$$GET1^DIQ(430,STAIEN_",",12,"I")
  1. Q
  1. ;
  1. HDR(EXCEL,HDRINFO,PAGE,NOLINE) ; Print the report header
  1. ; Input: EXCEL - 1 if output to Excel, 0 otherwise
  1. ; HDRINFO() - Array of Header information
  1. ; PAGE - Current Page Number
  1. ; NOLINE - 1 to not display Claim line header
  1. ; Optional, defaults to 0
  1. ; Output: PAGE - Updated Page Number (if EXCEL=0)
  1. N DIV,MSG,SUB,XX,Y,Z0,Z1
  1. S:'$D(NOLINE) NOLINE=0
  1. I EXCEL D Q
  1. . W !,"STATION^STATION NUMBER^PATIENT^COPAY AMOUNT^DECREASE AMOUNT^"
  1. . W "COPAY BILL #^3RD PARTY BILL #^AUTO DECREASE DATE"
  1. ;
  1. S PAGE=PAGE+1
  1. W @IOF
  1. S MSG(1)=" First Party COPAY Auto-Decrease Report "
  1. S MSG(1)=MSG(1)_" Page: "_PAGE
  1. S MSG(2)=" Run Date: "_HDRINFO("RUNDATE")
  1. S Z0="Divisions: "_HDRINFO("DIVISIONS")
  1. S MSG(3)=$S($L(Z0)<75:$J("",75-$L(Z0)\2),1:"")_Z0
  1. S XX=" (Date Decrease Applied)"
  1. S MSG(4)=" Date Range: "_HDRINFO("START")_" - "_HDRINFO("END")_XX
  1. S MSG(5)=" "_HDRINFO("SORT")_" "_HDRINFO("DISP") ; PRCA*4.5*349
  1. S MSG(6)=" Copay Decrease Copay 3rd Party"
  1. I 'NOLINE D
  1. . S MSG(7)="Patient Name/SSN Amt Amt Bill# Bill# Date"
  1. . S MSG(8)=$TR($J("",80)," ","-")
  1. D EN^DDIOL(.MSG)
  1. Q
  1. ;
  1. HINFO(INPUTS,HDRINFO) ; Get header information
  1. ; Input: INPUTS - See REPORT for description
  1. ; HDRINFO - Header array for ListMan, passed by ref.
  1. N XX
  1. S XX=$P(INPUTS,U,4) ; Auto-Post Date range
  1. S HDRINFO("START")=$$FMTE^XLFDT($P(XX,"|",1),"2SZ")
  1. S HDRINFO("END")=$$FMTE^XLFDT($P(XX,"|",2),"2SZ")
  1. S HDRINFO("RUNDATE")=$$FMTE^XLFDT($$NOW^XLFDT,"2SZ")
  1. S XX=$P(INPUTS,U,2) ; Sort Type
  1. S HDRINFO("SORT")="SORTED BY: "_$S(XX="C":"CLAIM",1:"PATIENT NAME")
  1. S XX=$S($P(INPUTS,U,3)="L":"LAST TO FIRST",1:"FIRST TO LAST")
  1. S HDRINFO("SORT")=HDRINFO("SORT")_" - "_XX
  1. S HDRINFO("SORT")=HDRINFO("SORT")_" DISPLAY: "_$S($P(INPUTS,U,8)="S":"SUMMARY",1:"DETAIL")
  1. ;
  1. ; Format Division filter
  1. S XX=$P(INPUTS,U,1) ; 1 - All Divisions, 2- selected
  1. S HDRINFO("DIVISIONS")=$S(XX=2:$$LINE(.RCVAUTD),1:"ALL")
  1. Q
  1. ;
  1. LINE(DIV) ; List selected stations
  1. ; Input: DIV() - Array of selected divisions
  1. ; Returns: Comma delimited list of selected divisions
  1. N LINE,P,SUB
  1. S LINE="",SUB="",P=0
  1. F S SUB=$O(DIV(SUB)) Q:'SUB S P=P+1,$P(LINE,", ",P)=$G(DIV(SUB))
  1. Q LINE
  1. ;
  1. LMOUT(INPUT,RCVAUTD,IO) ; Output report to Listman
  1. ; Input: INPUT - see REPORT for description
  1. ; RCVAUTD - Array of selected Divisions
  1. ; IO - Device array
  1. ; Output: ^TMP("RCDPE_LAR",$J,nn) - Array of display lines (no headers)
  1. N HDR,HDRINFO,Z0
  1. D REPORT(INPUT,.RCVAUTD,.IO) ; Get lines to be displayed
  1. D HINFO(INPUT,.HDRINFO)
  1. S HDR("TITLE")="FIRST PARTY AUTO-DECREASE"
  1. S HDR(1)=$J("RUN DATE: ",34)_HDRINFO("RUNDATE")
  1. S Z0="DIVISIONS: "_HDRINFO("DIVISIONS")
  1. S HDR(2)=$S($L(Z0)<75:$J("",75-$L(Z0)\2),1:"")_Z0
  1. S HDR(3)=" DATE RANGE: "_HDRINFO("START")_" - "_HDRINFO("END")_" (DATE DECREASE APPLIED)"
  1. S HDR(4)=$J("",(80-$L(HDRINFO("SORT")))\2)_HDRINFO("SORT")
  1. S HDR(5)=" "
  1. S HDR(6)=" Copay Decrease Copay 3rd Party"
  1. S HDR(7)="Patient Name/SSN Amt Amt Bill# Bill# Date"
  1. D LMRPT^RCDPEARL(.HDR,$NA(^TMP("RCDPE_ADP",$J))) ; Generate ListMan display
  1. K ^TMP("RCDPEFADP",$J),^TMP($J,"RCDPEFADP"),^TMP("RCDPE_ADP",$J)
  1. Q
  1. ;
  1. ; PRCA*4.5*349 - Subroutine added
  1. PCENT(AMNT,COPAY) ; Return percentage of dollars auto-decreased
  1. Q:COPAY=0 "###"
  1. Q $FN(AMNT/COPAY*100,"",0)