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

IBCECOB.m

Go to the documentation of this file.
  1. IBCECOB ;ALB/CXW - IB COB MANAGEMENT SCREEN ;16-JUN-1999
  1. ;;2.0;INTEGRATED BILLING;**137,155,288,432,488,516,547,576,727**;21-MAR-94;Build 34
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. EN ; -- main entry point for COB management
  1. K IBSRT,IBMRADUP,IBSRCH
  1. I $G(IBMRANOT) D EN^VALM("IBCEM COB MANAGEMENT") ;WCJ;IB*2.0*432
  1. I '$G(IBMRANOT) D EN^VALM("IBCEM MRA MANAGEMENT") ;WCJ;IB*2.0*432
  1. Q
  1. ;
  1. HDR ; -- header code
  1. ;I '$G(IBMRANOT) S VALMSG="!=Data Mismatch/MSE Enter ?? for more actions"
  1. I '$G(IBMRANOT) S VALMSG="!=Data Mismatch/MSE | *=Review in Process" ;IB*2*576 - vd
  1. I $G(IBMRANOT) S VALMSG="!=Data Mismatch/MSE | *=Review in Process| ??=Help" ;TPF;EBILL-2436;IB*2.0*727
  1. Q
  1. ;
  1. INIT ; -- init variables and list array
  1. N DIC,DIRUT,DIROUT,DTOUT,DUOUT,X,Y,DIR,IB1,IBQUIT
  1. K ^TMP("IBBIL",$J),^TMP("IBBIL-DIV",$J)
  1. S IBSRT=""
  1. S IB1=1
  1. W !
  1. F S DIC="^VA(200,",DIC(0)="AEMQ",DIC("A")="Select "_$S('IB1:"Another ",1:"")_"BILLER: "_$S('IB1:"",1:"ALL//") D ^DIC K DIC D Q:Y<0
  1. . Q:Y<0
  1. . I $D(^TMP("IBBIL",$J,+Y)) W !,"This biller has already been selected" Q
  1. . S ^TMP("IBBIL",$J,+Y)=""
  1. . S IB1=0
  1. I $D(DTOUT)!$D(DUOUT) S VALMQUIT=1 G INITQ
  1. ;
  1. I '$G(IBMRANOT) G DIVX
  1. ;
  1. DIV ; division
  1. W !
  1. S DIR(0)="SA^A:All Divisions;S:Selected Divisions"
  1. S DIR("A")="Include All Divisions or Selected Divisions? "
  1. S DIR("B")="All"
  1. D ^DIR K DIR
  1. I $D(DIROUT)!$D(DIRUT) S VALMQUIT=1 G INITQ ;Timeout or User "^"
  1. I Y="A" G DIVX
  1. ;
  1. W !
  1. S IBQUIT=0
  1. F D I IBQUIT S IBQUIT=IBQUIT-1 Q
  1. . S DIC=40.8,DIC(0)="AEMQ",DIC("A")=" Select Division: "
  1. . I $O(^TMP("IBBIL-DIV",$J,"")) S DIC("A")=" Select Another Division: "
  1. . D ^DIC K DIC ; lookup
  1. . I X="^^" S IBQUIT=2 Q ; user entered ^^
  1. . I +Y'>0 S IBQUIT=1 Q ; user is done
  1. . S ^TMP("IBBIL-DIV",$J,+Y)=$P(Y,U,2)
  1. . Q
  1. ;
  1. I IBQUIT S VALMQUIT=1 G INITQ ;User "^" out of the selection
  1. ;
  1. I '$O(^TMP("IBBIL-DIV",$J,"")) D G DIV
  1. . W *7,!!?3,"No divisions have been selected. Please try again."
  1. . Q
  1. ;
  1. DIVX ; Exit Division selection.
  1. ;
  1. W !
  1. I '$G(IBMRANOT) S DIR("A")="Within Division " G SRT
  1. ;
  1. CLM ; patch 547 - new claim prompt for CBW
  1. ;
  1. S DIR("A")="(P)rimary Claims,(S)econdary Claims or (B)oth: ",DIR("B")="Both"
  1. S DIR(0)="SBA^P -:Primary Claims;S -:Secondary Claims;B -:Both"
  1. S DIR("?")="This field determines whether you want to search for just primary claims, just secondary/tertiary claims or both."
  1. D ^DIR K DIR S DIR("A")=""
  1. I $D(DTOUT)!$D(DUOUT) S VALMQUIT=1 G INITQ
  1. S IBSRCH=$E(Y)
  1. W !
  1. ;
  1. SRT ;
  1. S DIR("A")=DIR("A")_"Sort By: ",DIR("B")="BILLER"
  1. S DIR(0)="SBA^B:BILLER;D:DAYS SINCE TRANSMISSION OF LATEST BILL;L:DATE LAST "_$S($G(IBMRANOT):"EOB",1:"MRA")_" RECEIVED;"
  1. ; IB*2.0*547 add Tertiary and Primary Insurance Company sorts for CBW
  1. S:'$G(IBMRANOT) DIR(0)=DIR(0)_"I:SECONDARY INSURANCE COMPANY;M:"_$S($G(IBMRANOT):"EOB",1:"MRA")_" STATUS;P:PATIENT NAME;R:PATIENT RESPONSIBILITY;S:SERVICE DATE"
  1. S:$G(IBMRANOT)=1 DIR(0)=DIR(0)_"I:SECONDARY INSURANCE COMPANY;M:"_$S($G(IBMRANOT):"EOB",1:"MRA")_" STATUS;P:PATIENT NAME;R:PATIENT RESPONSIBILITY;S:SERVICE DATE;K:PRIMARY INSURANCE COMPANY"
  1. S DIR("?")="Enter the code to indicate how the list should be sorted." D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT) S VALMQUIT=1 G INITQ
  1. S IBSRT=Y
  1. ;
  1. W !
  1. S IBMRADUP=0
  1. S DIR("A")="Do you want to include Denied "_$S($G(IBMRANOT):"EOB",1:"MRA")_"s for Duplicate Claim/Service",DIR("B")="No",DIR(0)="YO"
  1. D ^DIR K DIR
  1. I $D(DTOUT)!$D(DUOUT) S VALMQUIT=1 G INITQ
  1. I Y S IBMRADUP=1
  1. ;
  1. D BLD^IBCECOB1
  1. ;
  1. INITQ Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. EXIT ; -- exit code
  1. K ^TMP("IBBIL",$J),^TMP("IBBIL-DIV",$J)
  1. K ^TMP("IBCECOB",$J),^TMP("IBCECOB1",$J)
  1. K ^TMP("IBCOBST",$J),^TMP("IBCOBSTX",$J)
  1. D CLEAN^VALM10
  1. Q
  1. ;
  1. EXP ; -- expand code to show additional details of the EOB record
  1. NEW IBDA,IBIFN,LSTENTRY
  1. D SEL^IBCECOB2(.IBDA,1) ; selects a bill
  1. S LSTENTRY=+$O(IBDA(0)) I 'LSTENTRY G EXPQ ; list entry number
  1. S IBIFN=+$G(IBDA(LSTENTRY)) I 'IBIFN G EXPQ ; bill#
  1. ;
  1. ; If only one MRA on file, call the listman screen and quit
  1. I $$MRACNT^IBCEMU1(IBIFN)=1 D EN^VALM("IBCEM MRA DETAIL") G EXPQ
  1. ;
  1. EXPLOOP ; At this point, we know there are multiple MRA's on file
  1. ;
  1. D FULL^VALM1
  1. I $$SEL^IBCEMU1(IBIFN,1,LSTENTRY) D G EXPLOOP ; MRA lister/selection
  1. . NEW IBIFN,LSTENTRY,IBDASAVE ; protect variables
  1. . M IBDASAVE=IBDA ; save off IBDA array
  1. . D EN^VALM("IBCEM MRA DETAIL") ; call the listman
  1. . M IBDA=IBDASAVE ; restore IBDA array
  1. . Q
  1. EXPQ ;
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. COBPOSS(IB364) ; Returns 1 if transmit bill ien in IB364 is currently
  1. ; in a status where COB may be performed on the bill
  1. ; Used by index "ACOB", file 364
  1. N IBWNR,IBNSEQ,IB01,IBM1,IBU1,IB0,IBOK,IBMRA
  1. S IBOK=1
  1. S IB0=$G(^IBA(364,IB364,0))
  1. ;;IBWNR = IF MEDICARE, WILL THEY REIMBURSE ; IBMRA = CLAIM MRA STATUS, 0=NO MRA NEEDED, 1N=MRA NEEDED, NOT YET REQUESTED
  1. ;; 1R=MRA REQUESTED, C=VALID MRA RECEIVED, A=MRA SKIPPED
  1. S IBWNR=$$WNRBILL^IBEFUNC(+IB0),IBMRA=$P($G(^DGCR(399,+IB0,"TX")),U,5)
  1. S IB01=$G(^DGCR(399,+IB0,0)),IBM1=$G(^("M1")),IBU1=$G(^("U1"))
  1. I 'IBWNR,IBU1-$P(IBU1,U,2)'>0 S IBOK=0 G COBQ ; Bill has a 0 balance
  1. I $S('IBWNR:$E($P(IB0,U,3))'="A",1:IBMRA'="1N"&(IBMRA'="A")) S IBOK=0 G COBQ ; Not in correct transmit status
  1. S IBNSEQ=+$TR($P(IB0,U,8),"PST","230")
  1. I 'IBNSEQ!'$D(^DGCR(399,+IB0,"I"_IBNSEQ)) S IBOK=0 G COBQ ; No next ins
  1. I "234"'[$P(IB01,U,13) S IBOK=0 G COBQ ; Bill invalid status for COB
  1. I IBNSEQ D
  1. . N Z,IBSTOP
  1. . S IBSTOP=0
  1. . F Z=IBNSEQ:1:3 D Q:IBSTOP
  1. .. I $D(^DGCR(399,+IB0,"I"_Z)) D
  1. ... ;Insurance must reimburse
  1. ... I $P($G(^DIC(36,+^DGCR(399,+IB0,"I"_Z),0)),U,2)="N" S IBOK=0 Q
  1. ... I $P(IBM1,U,4+Z) S IBOK=0,IBSTOP=1 Q ; Already has a next seq bill
  1. ... S (IBOK,IBSTOP)=1
  1. ;
  1. COBQ Q IBOK
  1. ;