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

RCDPRU2.m

Go to the documentation of this file.
  1. RCDPRU2 ;AITC/CJE - CARC REPORT ON PAYER OR CARC CODE ;
  1. ;;4.5;Accounts Receivable;**321**;;Build 48
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. Q
  1. ; PRCA*4.5*321 - CARC and Payer report utilities
  1. ;
  1. ; Moved from RCDPARC to RCDPRU then to RCDPRU2 - PRCA*4.5*321
  1. SUM(ARRAY,IEN,BILL,CARC,PAYER,BAMT,PAMT,DESC,AAMT,SORT) ; EP
  1. ; Count Claims and summarize for the report
  1. ; IEN: IEN from 361.1 file; BILL: The K-Bill number; ITEM: Top level sort item PAYER or CARC to summarize;
  1. ; BAMT: Billed Amount; PAMT: Paid Amount ; AAMT: Adjustment Amount;
  1. ; LVL: second level sort (CARC/Payer) ; SORT: "C" is CARC or "P" is Payer first level sort,
  1. N ITEM,LVL
  1. I SORT="C" S ITEM=CARC,LVL=PAYER
  1. E S ITEM=PAYER,LVL=CARC
  1. ;
  1. D:$G(@ARRAY@("~~SUM",ITEM,IEN))'=1 ; If we already counted this claim for CARC or Payer skip
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM"),U,1)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM")),U,1)+1 ; Count claims
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM"),U,2)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM")),U,2)+BAMT ; Summarize amount billed
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM"),U,3)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM")),U,3)+PAMT ; Summarize amount paid
  1. ; Always add in the adjustment (this is a different adjustment each time procedure is called)
  1. S $P(@ARRAY@("REPORT",ITEM,"~~SUM"),U,4)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM")),U,4)+AAMT ; Summarize amount adjusted
  1. S:SORT="C" $P(@ARRAY@("REPORT",ITEM,"~~SUM"),U,5)=$G(DESC) ; CARC Description
  1. I (SORT="C")&($G(LVL)'="") D:$G(@ARRAY@("~~SUM",ITEM,IEN))'=1
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM",LVL),U,1)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM",LVL)),U,1)+1 ; Count claims
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM",LVL),U,2)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM",LVL)),U,2)+BAMT ; Summarize amount billed
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM",LVL),U,3)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM",LVL)),U,3)+PAMT ; Summarize amount paid
  1. ;I $G(LVL)'="" D:$G(@ARRAY@("~~SUM",LVL,IEN))'=1
  1. I (SORT="P")&($G(LVL)'="") D:$G(@ARRAY@("~~SUM",ITEM,IEN,LVL))'=1
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM",LVL),U,1)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM",LVL)),U,1)+1 ; Count claims
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM",LVL),U,2)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM",LVL)),U,2)+BAMT ; Summarize amount billed
  1. . S $P(@ARRAY@("REPORT",ITEM,"~~SUM",LVL),U,3)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM",LVL)),U,3)+PAMT ; Summarize amount paid
  1. ; Always add in the adjustment (this is a different adjustment each time procedure is called)
  1. S $P(@ARRAY@("REPORT",ITEM,"~~SUM",LVL),U,4)=$P($G(@ARRAY@("REPORT",ITEM,"~~SUM",LVL)),U,4)+AAMT ; Summarize amount adjusted
  1. I SORT="P",$G(LVL)'="" S $P(@ARRAY@("REPORT",ITEM,"~~SUM",LVL),U,5)=DESC ; CARC Description
  1. ; Get grand totals for report
  1. D:$G(@ARRAY@("~~SUM",BILL))'=1
  1. . S $P(@ARRAY@("~~SUM","CLAIMS"),U,1)=$P($G(@ARRAY@("~~SUM","CLAIMS")),U,1)+1
  1. . S $P(@ARRAY@("~~SUM","CLAIMS"),U,2)=$P($G(@ARRAY@("~~SUM","CLAIMS")),U,2)+BAMT
  1. . S $P(@ARRAY@("~~SUM","CLAIMS"),U,3)=$P($G(@ARRAY@("~~SUM","CLAIMS")),U,3)+PAMT
  1. ; May have more than one adjustment on a bill
  1. I $G(@ARRAY@("~~SUM",BILL,ITEM))'=1 S $P(@ARRAY@("~~SUM","CLAIMS"),U,4)=$P($G(@ARRAY@("~~SUM","CLAIMS")),U,4)+AAMT ;W "BILL: ",BILL," ITEM: ",ITEM," Adj: ",AAMT,!
  1. ; Set markers so we don't double count a claim
  1. S @ARRAY@("~~SUM",ITEM,BILL)=1,@ARRAY@("~~SUM",ITEM,IEN)=1,@ARRAY@("~~SUM",ITEM,IEN,LVL)=1,@ARRAY@("~~SUM",BILL)=1,@ARRAY@("~~SUM",LVL,BILL)=1,@ARRAY@("~~SUM",LVL,IEN)=1
  1. Q
  1. ;
  1. PAYTIN(PY,L) ; EP
  1. ; Truncate Payer/TIN string to L characters for reports
  1. ; Input: PY = Payer/TIN string
  1. ; L = Maximum length allowed
  1. ; Return: Payer/TIN string truncated to length L
  1. N RETURN,XX,YY,ZZ
  1. S RETURN=PY
  1. I $L(PY)>L D
  1. . S ZZ=$L(PY,"/"),XX=$P(PY,"/",1,ZZ-1),YY=$P(PY,"/",ZZ)
  1. . S XX=$E(XX,1,L-($L(YY)+1)),RETURN=XX_"/"_YY
  1. Q RETURN
  1. ;
  1. PAYTINS(PY,RETURN) ; Get all PAYER/TIN strings for the TIN in PY
  1. ; Input: PY String with Payer Name/TIN in it
  1. ; Output: RETURN passed by reference, array of Payer Name/TINS with same TIN as input PY
  1. N COUNT,NAME,TIN,ZZ
  1. K RETURN
  1. S COUNT=0
  1. S TIN=$P(PY,"/",$L(PY,"/"))
  1. S ZZ="" F S ZZ=$O(^RCY(344.6,"C",TIN_" ",ZZ)) Q:ZZ="" D
  1. . S NAME=$$GET1^DIQ(344.6,ZZ_",",.01,"E")
  1. . I NAME'="" D ;
  1. . . S COUNT=COUNT+1
  1. . . S RETURN(COUNT)=NAME_"/"_TIN
  1. Q
  1. ;
  1. PAYLIST(ARRAY,TYPE,RETURN) ; Expand list of payers to include ones with the same TIN
  1. ; Input: ARRAY - array of payer names or IENS
  1. ; TYPE - E=External (Payer Name array) or I=Internal (IEN array)
  1. ; Output: RETURN array passed by reference
  1. N KEY,ZZ
  1. S KEY=""
  1. F S KEY=$O(ARRAY(KEY)) Q:KEY="" D ;
  1. . I TYPE="I" D ;
  1. . . D TINLIST(KEY,.RETURN,TYPE)
  1. . I TYPE="E" D ;
  1. . S ZZ=""
  1. . F S ZZ=$O(^RCY(344.6,"B",KEY,ZZ)) Q:ZZ="" D ;
  1. . . D TINLIST(ZZ,.RETURN,TYPE)
  1. Q
  1. TINLIST(PIEN,RETURN,TYPE) ; Given a payer IEN from #344.6, get list of payers with the same TIN
  1. ; Input: PIEN - Payer IEN (#344.6)
  1. ; ARRAY - array of payer names or IENS
  1. ; TYPE - E=External (Payer Name array) or I=Internal (IEN array)
  1. ; Output: ARRAY passed by reference with modified entries
  1. N TIN,PNAME,ZZ
  1. S TIN=$$GET1^DIQ(344.6,PIEN_",",.02,"E")
  1. I TIN="" Q
  1. S ZZ=""
  1. F S ZZ=$O(^RCY(344.6,"C",TIN_" ",ZZ)) Q:ZZ="" D
  1. . I TYPE="E" D ;
  1. . . S PNAME=$$GET1^DIQ(344.6,ZZ_",",.01,"E")
  1. . . I PNAME'="" S RETURN(PNAME)=1
  1. . E D
  1. . . S RETURN(ZZ)=1
  1. Q
  1. ;
  1. CHK(TYPE,ITEM,ARRAY) ; Check to see if this ITEM is included for processing
  1. ; If all are included no need to check further
  1. Q:$G(ARRAY(TYPE))="ALL" 1
  1. Q:$G(ITEM)="" 0
  1. Q:$G(ARRAY(TYPE,ITEM))=1 1
  1. Q 0
  1. ;
  1. ;
  1. GPAYR(TIN) ; First payer name derived from TIN - PRCA*4.5*321
  1. ; Input: TIN - Payer ID
  1. ; Return: The first payer name related to TIN
  1. ; *Note more than one entry in 344.6 may have this TIN but for sort by name
  1. ; purposes we have to select one of them.
  1. N RETURN,ZZ
  1. S ZZ=$O(^RCY(344.6,"C",TIN_" ",""))
  1. I ZZ Q $$GET1^DIQ(344.6,ZZ_",",.01,"E")
  1. Q ""