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

PRCABJ2.m

Go to the documentation of this file.
  1. PRCABJ2 ;OIT/hrub - NIGHTLY PROCESS FOR ACCOUNTS RECEIVABLE ;31 Oct 2018 16:00:59
  1. ;;4.5;Accounts Receivable;**304,321,326,332,338,351**;Mar 20, 1995;Build 15
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. ; read of ^DGCR(399.2 allowed by DBIA 3822
  1. ; refactored 17 October 2018, PRCA*4.5*332
  1. Q
  1. ; Auto-audit Paper, Electronic, and Tricare bills if ready
  1. ; PRCA*4.5*332 - Whole subroutine re-written
  1. ABAUDIT ;
  1. ; APIEN - Accounts Payable (file #430) ien (also same ien for file #399)
  1. N APIEN,ARBILL,C,FLAG,J,PRCA,RTYPE ;PRCA*4.5*321, PRCA*4.5*332
  1. ;
  1. S ARBILL("newBillIEN")=$O(^PRCA(430.3,"B","NEW BILL","")) ; New Bill IEN
  1. Q:ARBILL("newBillIEN")="" ; must have the IEN for new bills
  1. ; Check parameters to see if audit needs to run
  1. S FLAG("aaMedPaper")=$$GET1^DIQ(342,"1,",7.05,"I") ; (#7.05) AUTO-AUDIT MEDICAL PAPER BILLS [5S]
  1. S FLAG("aaRxPaper")=$$GET1^DIQ(342,"1,",7.06,"I") ; (#7.06) AUTO-AUDIT RX PAPER BILLS [6S]
  1. S FLAG("aaMedEDI")=$$GET1^DIQ(342,"1,",7.07,"I") ; (#7.07) AUTO-AUDIT MEDICAL EDI BILLS [7S] - PRCA*4.5*321
  1. S FLAG("aaRxEDI")=$$GET1^DIQ(342,"1,",7.08,"I") ; (#7.08) AUTO-AUDIT RX EDI BILLS [8S] - PRCA*4.5*321
  1. S FLAG("aaTricare")=$$GET1^DIQ(342,"1,",7.09,"I") ; (#7.09) AUTO-AUDIT TRICARE BILLS [9S] - PRCA*4.5*332
  1. ; quit if all auto-audit parameters are 'No'
  1. Q:('FLAG("aaMedPaper"))&('FLAG("aaRxPaper"))&('FLAG("aaMedEDI"))&('FLAG("aaRxEDI"))&('FLAG("aaTricare")) ; PRCA*4.5*321
  1. ;
  1. ; RTYPE - array of RATE TYPE entries that have (#.11) BILL RESULTING FROM [11P:430.6] - PRCA*4.5*332
  1. S C=0 F S C=$O(^DGCR(399.3,C)) Q:'C S J=$G(^(C,0)) S:$P(J,U,11) RTYPE(C)=J
  1. ; loop through new bills
  1. ; BILL - info for this bill
  1. ; PRCA - bill # and ECME info
  1. ; RTDGCR - used for file #399 info (except rate type)
  1. S APIEN="" F S APIEN=$O(^PRCA(430,"AC",ARBILL("newBillIEN"),APIEN)) Q:'APIEN D
  1. . N BILL,PRCA,RTDGCR
  1. . ;
  1. . S BILL("rtTyp")=$$GET1^DIQ(399,APIEN_",",.07,"I") ; (#.07) RATE TYPE [7P:399.3] - PRCA*4.5*326
  1. . Q:'BILL("rtTyp") ; must have rate type
  1. . Q:'$D(RTYPE(BILL("rtTyp"))) ; no auto-audit for this RATE TYPE
  1. . ; BEGIN - PRCA*4.5*321
  1. . Q:$$GET1^DIQ(430,APIEN_",",7,"I")="" ; quit if no (#7) PATIENT [7P:2]
  1. . Q:$$GET1^DIQ(430,APIEN_",",9,"I")="" ; quit if no (#9) DEBTOR [9P:340]
  1. . Q:$$GET1^DIQ(430,APIEN_",",239,"I")="" ; quit if no (#239) INSURED NAME [1F]
  1. . Q:$$GET1^DIQ(430,APIEN_",",243,"I")="" ; quit if no (#243) GROUP NAME [5F]
  1. . Q:$$GET1^DIQ(430,APIEN_",",244,"I")="" ; quit if no (#244) GROUP NUMBER [6F]
  1. . Q:$$BILLREJ^PRCAUDT(APIEN) ; PRCA*4.5*321 - claim has reject messages, do not audit
  1. . ;
  1. . S RTDGCR("type")=$$GET1^DIQ(399,APIEN_",",.07,"E") ; (#.07) RATE TYPE [7P:399.3] (IA 4118)
  1. . S RTDGCR("paper")=$$GET1^DIQ(399,APIEN_",",27,"I") ; (#.27) BILL CHARGE TYPE [27S] (ICR 3820)
  1. . S BILL("audit?")=0 ; Boolean flag, need to audit bill?
  1. . S BILL("doneCheck?")=0 ; Boolean flag, done checking?
  1. . ; Get Bill number to check if it's a Pharmacy bill
  1. . S PRCA("bill#")=$$GET1^DIQ(430,APIEN_",",.01,"I") ; (#.01) BILL NO. [1F]
  1. . S PRCA("ecme#")=$$GETECME^RCDPENR1(APIEN) ; ECME# from the bill
  1. . ;
  1. . I PRCA("ecme#")'="" D ; has ECME#, check pharmacy flags
  1. .. I RTDGCR("paper"),'FLAG("aaRxPaper") S BILL("doneCheck?")=1 Q ; Skip paper bill if No auto-audit
  1. .. I 'RTDGCR("paper"),'FLAG("aaRxEDI") S BILL("doneCheck?")=1 Q ; Skip EDI bill if No auto-audit
  1. .. S BILL("audit?")="1^pharmacy" ; audit this pharmacy bill
  1. . ;
  1. . I BILL("audit?") D AUDITX^PRCAUDT(APIEN) Q ; audit pharmacy bill, continue loop
  1. . Q:BILL("doneCheck?") ; done checking, continue loop through bills
  1. . ;
  1. . I RTDGCR("type")["TRICARE" D
  1. .. I FLAG("aaTricare") S BILL("audit?")="1^Tricare" ; audit this Tricare bill
  1. .. S BILL("doneCheck?")=1
  1. . I BILL("audit?") D AUDITX^PRCAUDT(APIEN) Q ; audit Tricare bill, continue loop
  1. . Q:BILL("doneCheck?") ; done checking, continue loop through bills
  1. . D ; medical bill, check medical flags
  1. .. I RTDGCR("paper"),'FLAG("aaMedPaper") S BILL("doneCheck?")=1 Q ; Skip paper bill if No auto-audit
  1. .. I 'RTDGCR("paper"),'FLAG("aaMedEDI") S BILL("doneCheck?")=1 Q ; Skip EDI bill if No auto-audit
  1. .. S BILL("audit?")="1^medical" ; audit this medical bill
  1. . Q:BILL("doneCheck?") ; no auto-audit for medical bill
  1. . ; passed medical checks call auto-audit for this Bill
  1. . I BILL("audit?") D AUDITX^PRCAUDT(APIEN)
  1. ;
  1. Q
  1. ;