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

RCDMCR2B.m

Go to the documentation of this file.
  1. RCDMCR2B ;HEC/SBW - DMC Debt Validity Management Report - Collect Data ;28/SEP/2007
  1. ;;4.5;Accounts Receivable;**253**;Mar 20, 1995;Build 9
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. COLLECT(STOPIT,BEGDT,DMCVAL) ; Get the report data
  1. ; STOPIT - Passed Variable to determine if process is to be terminated
  1. ; BEGDT - Beginning Date (in past) to get data for. Optional, Set
  1. ; 365 days in past if not passed.
  1. ; DMCVAL - DMC Debt Valid values that will be included in this report
  1. ; (i.e. DMCVAL("NULL"), DMCVAL("PENDING"), DMCVAL("YES"),
  1. ; or DMCVAL("NO") )
  1. ;Output
  1. ; STOPIT - Passed Variable set to 1 if process is to be terminated
  1. ; ^TMP($J,"RCDMCR2") with report data and summary data
  1. N STAT,RDATE,IEN,CTR,BADDATA
  1. ;Set BEGDT if valid value not passed
  1. S:$G(BEGDT)'>0 BEGDT=$$FMADD^XLFDT(DT,-365,0,0,0)
  1. ;Get AR Bill Data that is within the last 365 days
  1. ;for Bill's with a current status of ACTIVE, CANCELLATION, SUSPENDED,
  1. ;REFUNDED, OPEN, REFUND REVIEW
  1. F STAT=16,39,40,41,42,44 D Q:$G(STOPIT)>0
  1. . S RDATE=BEGDT-1
  1. . F S RDATE=$O(^PRCA(430,"ASDT",STAT,RDATE)) Q:RDATE'>0 D Q:$G(STOPIT)>0
  1. . . S IEN=0
  1. . . F S IEN=$O(^PRCA(430,"ASDT",STAT,RDATE,IEN)) Q:IEN'>0 D Q:$G(STOPIT)>0
  1. . . . S CTR=$G(CTR)+1 ;Counter
  1. . . . I CTR#500=0 S STOPIT=$$STOPIT^RCDMCUT2() Q:STOPIT
  1. . . . N FIRSTPAR,DMCVALID,DFN,STATUS,NAME,SSN,SSNLF,BILLNO,CNUM,CLOC
  1. . . . N PRINAMT,STATUS,EDITBY,EDITDT,OPTDT,DISCHDT,RXDT
  1. . . . ;Quit if bill is not a First Party Bill
  1. . . . S FIRSTPAR=$$FIRSTPAR^RCDMCUT1(IEN)
  1. . . . Q:+FIRSTPAR'>0
  1. . . . ;Get Report Data
  1. . . . S DMCVALID=$$GET1^DIQ(430,IEN_",",125,"E")
  1. . . . ;When DMC Debt VAlid is Null set to string value of "NULL"
  1. . . . S:DMCVALID="" DMCVALID="BLANK/NULL"
  1. . . . ;Quit if DMC Debt Valid Field not one of the request ones
  1. . . . Q:+$D(DMCVAL(DMCVALID))'>0
  1. . . . ;Quit if Veteran is not SC 50% to 100% & not Receiving VA Pension
  1. . . . S DFN=$$GET1^DIQ(430,IEN_",",7,"I")
  1. . . . ;If patient field blank get DFN from AR Debtor File
  1. . . . S:DFN'>0 DFN=$P(FIRSTPAR,U,2)
  1. . . . Q:$$DMCELIG^RCDMCUT1(DFN)'>0
  1. . . . S STATUS=$$GET1^DIQ(430,IEN_",",8)
  1. . . . ;Quit if Current Status is not Active, Open, Suspended,
  1. . . . ;Cancellation, Refunded, or Refund Review
  1. . . . Q:"^ACTIVE^OPEN^SUSPENDED^CANCELLATION^REFUNDED^REFUND REVIEW^"'[(U_STATUS_U)
  1. . . . ;Get Bill Data
  1. . . . S BADDATA=0
  1. . . . D GETDATA
  1. . . . Q:BADDATA>0
  1. . . . ;Check that Episode of Care is not older than 365
  1. . . . ;Quit if there isn't a service date in the last 365 days
  1. . . . Q:OPTDT<BEGDT&(DISCHDT<BEGDT)&(RXDT<BEGDT)
  1. . . . S ^TMP($J,"RCDMCR2","DETAIL",DMCVALID,NAME,SSNLF,BILLNO)=CNUM_U_$G(CLOC)_U_PRINAMT_U_STATUS_U_EDITBY_U_EDITDT
  1. . . . ;Get Summary Data
  1. . . . ;Set total AR bills
  1. . . . S ^TMP($J,"RCDMCR2","TOT","BILL")=$G(^TMP($J,"RCDMCR2","TOT","BILL"))+1
  1. . . . ;Set total AR bills for a given status
  1. . . . S ^TMP($J,"RCDMCR2","TOT-STAT",STATUS)=$G(^TMP($J,"RCDMCR2","TOT-STAT",STATUS))+1
  1. . . . ;Set total AR (Principle Amt) dollars
  1. . . . S ^TMP($J,"RCDMCR2","TOT","$")=$G(^TMP($J,"RCDMCR2","TOT","$"))+PRINAMT
  1. . . . ;Set totaL unique veterans
  1. . . . I $D(^TMP($J,"RCDMCR2","TOT","VETSSN",SSN))'>0 D
  1. . . . . S ^TMP($J,"RCDMCR2","TOT","VET")=$G(^TMP($J,"RCDMCR2","TOT","VET"))+1
  1. . . . . S ^TMP($J,"RCDMCR2","TOT","VETSSN",SSN)=""
  1. . . . ;Get Summary data by DMC Debt Valid field
  1. . . . ;Set total AR bills by DMC Debt Valid field
  1. . . . S ^TMP($J,"RCDMCR2","SUM",DMCVALID,"BILL")=$G(^TMP($J,"RCDMCR2","SUM",DMCVALID,"BILL"))+1
  1. . . . ;Set total AR bills by DMC Debt Valid value and status
  1. . . . S ^TMP($J,"RCDMCR2","SUM-STAT",DMCVALID,STATUS)=$G(^TMP($J,"RCDMCR2","SUM-STAT",DMCVALID,STATUS))+1
  1. . . . ;Set total AR (Principle Amt) dollars by DMC Debt Valid value
  1. . . . S ^TMP($J,"RCDMCR2","SUM",DMCVALID,"$")=$G(^TMP($J,"RCDMCR2","SUM",DMCVALID,"$"))+PRINAMT
  1. . . . ;Set totaL unique veterans by DMC Debt Valid value
  1. . . . I $D(^TMP($J,"RCDMCR2","SUM",DMCVALID,"VETSSN",SSN))'>0 D
  1. . . . . S ^TMP($J,"RCDMCR2","SUM",DMCVALID,"VET")=$G(^TMP($J,"RCDMCR2","SUM",DMCVALID,"VET"))+1
  1. . . . . S ^TMP($J,"RCDMCR2","SUM",DMCVALID,"VETSSN",SSN)=""
  1. Q
  1. ;
  1. GETDATA ;Get data for report
  1. ;Get AR Bill Data - Bill #, Patient, Current Status,
  1. ;Principal Balance, DMC Debt Valid Edited, DMC Debt Valid Edited Date
  1. ;Name, SSN, Eligibility Data, Service Dates
  1. N IENS,ARDATA,ERR,SERDT
  1. ;Quit if DFN not set
  1. I DFN'>0 S BADDATA=1 Q
  1. ;
  1. ;IEN is from calling routine
  1. S IENS=IEN_","
  1. D GETS^DIQ(430,IENS,".01;71;126;127","EIN","ARDATA","ERR")
  1. ;Bill Number
  1. S BILLNO=$G(ARDATA(430,IENS,.01,"E"))
  1. I BILLNO']"" S BADDATA=1 Q
  1. ;Principle amount
  1. S PRINAMT=$G(ARDATA(430,IENS,71,"I"))
  1. ;DMC Debt Valid Edited By
  1. S EDITBY=$G(ARDATA(430,IENS,126,"E"))
  1. ;DMC Debt Valid Edited Date
  1. S EDITDT=$G(ARDATA(430,IENS,127,"I"))
  1. ;
  1. ;Get Demographic Data
  1. D DEM^VADPT
  1. I $G(VAERR)>0 S BADDATA=1 D KVAR^VADPT Q
  1. S NAME=$G(VADM(1))
  1. I NAME']"" S BADDATA=1 Q
  1. S SSN=$P(VADM(2),U,1)
  1. S SSNLF=$G(VA("BID"))
  1. I SSNLF']"" S BADDATA=1 Q
  1. ;
  1. D ELIG^VADPT
  1. S CNUM=$G(VAEL(7))
  1. ;If claim # same as SSN, block first 5 characters
  1. I CNUM]"",CNUM=SSN S CNUM="#####"_$E(CNUM,6,10)
  1. D KVAR^VADPT
  1. ;Get Station Number in file #4 for the Claim Folder Location in file #2
  1. I CNUM]"" D
  1. . S CLOC=$$GET1^DIQ(4,+$$GET1^DIQ(2,DFN_",",.314,"I","","ERR")_",",99)
  1. ;
  1. ;Get Service Date
  1. S SERDT=$$GETSERDT^RCDMCUT1(BILLNO)
  1. ;Get outpatient date
  1. S OPTDT=$P(SERDT,U,2)
  1. ;Get Inpatient Discharge date
  1. S DISCHDT=$P(SERDT,U,3)
  1. ;Get RX fill/refill date
  1. S RXDT=$P(SERDT,U,4)
  1. Q