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

BAREDP11.m

Go to the documentation of this file.
  1. BAREDP11 ; IHS/SD/LSL - NEW REPORT ERA CLAIMS (2) ;
  1. ;;1.8;IHS ACCOUNTS RECEIVABLE;**3,5,20,23**;OCT 26, 2005
  1. ;
  1. ; IHS/SD/LSL - 10/14/03 - V1.7 Patch 4 - HIPAA
  1. ; Routine Created
  1. ; ;P.OTT 10/28/2013 DON'T DISPLAY 'REASON NOT POSTABLE' IF MATCHED
  1. ; ********************************************************************
  1. ;
  1. COMPUTE ;EP
  1. ; Compute line tag required by BARDBQUE but all processing
  1. ; is done under PRINT so just quit here
  1. Q
  1. ; ********************************************************************
  1. ;
  1. PRINT ; EP
  1. ; PRINT the report (Browse or Print)
  1. S BAR("PG")=0
  1. I (BARTYP="D"!(BARTYP="B")) D DETAIL
  1. I BARTYP="S" D SUMMARY
  1. I $G(BAR("F1"))="" D
  1. . W !,$$CJ^XLFSTR("* * E N D O F R E P O R T * *",IOM)
  1. . D PAZ^BARRUTL
  1. D CLEANUP
  1. Q
  1. ; ********************************************************************
  1. ;
  1. HD ; EP
  1. D PAZ^BARRUTL
  1. I $D(DTOUT)!$D(DUOUT)!$D(DIROUT) S BAR("F1")=1 Q
  1. ; -------------------------------
  1. ;
  1. HDB ; EP
  1. S BAR("PG")=BAR("PG")+1
  1. I BAR("PG")>1 S BAR("LVL")=4
  1. D WHD^BARRHD
  1. I BARTYP="S" D
  1. . X BAR("COL")
  1. . W !,BARDASH,!
  1. Q
  1. ; ********************************************************************
  1. ;
  1. DETAIL ;
  1. ; Print report in brief and detail format
  1. D HDB
  1. K BARFLG ;bar*1.8*20
  1. F XI=1:1:$L(BARINDX) S IND=$E(BARINDX,XI) D INDEX Q:$G(BAR("F1"))
  1. ;start new code bar*1.8*20
  1. I $D(^XTMP("BAR-ERARPT",$J,DUZ(2))) D
  1. .W !!,$$EN^BARVDF("RVN"),$$CJ^XLFSTR(BARZ("W","HDR"),IOM),!
  1. .W $$EN^BARVDF("RVF")
  1. .S CLMDA=0,BARFLG=1,(BARXBLC,BARXBLT,BARXPYT,BARXADJT)=0
  1. .F S CLMDA=$O(^XTMP("BAR-ERARPT",$J,DUZ(2),CLMDA)) Q:CLMDA'>0 D CLAIM Q:$G(BAR("F1"))
  1. .Q:$G(BAR("F1"))
  1. .K ^XTMP("BAR-ERARPT",$J)
  1. .I BARXBLC=0 W !!,$$CJ^XLFSTR("* * * NO DATA TO PRINT * * *",IOM),! Q
  1. .I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. .W !,BARSTAR
  1. .W !,"TOTALS FOR ",BARZ("W")
  1. .W !?2,"AMOUNT BILLED.........."
  1. .W $J($FN(BARXBLC,","),6)," BILLS(S)"
  1. .W " $",$J($FN(BARXBLT,",",2),15)
  1. .W !?2,"PAYMENTS..............."
  1. .W $J($FN(BARXPYC,","),6)," BILLS(S)"
  1. .W " $",$J($FN(BARXPYT,",",2),15)
  1. .W !?2,"ADJUSTMENTS............"
  1. .W $J($FN(BARXADJC,","),6)," BILLS(S)"
  1. .W ?58,"$",$J($FN(BARXADJT,",",2),15)
  1. .W !
  1. ;end new code bar*1.8*20
  1. Q
  1. ; *********************************************************************
  1. ;
  1. INDEX ; EP
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. W !!,$$EN^BARVDF("RVN"),$$CJ^XLFSTR(BARZ(IND,"HDR"),IOM),!
  1. W $$EN^BARVDF("RVF")
  1. S (BARXPYT,BARXBLT,BARXADJT)=0
  1. S (BARXPYC,BARXBLC,BARXADJC)=0
  1. S BARFIRST=1
  1. S CLMDA=0
  1. F S CLMDA=$O(^BAREDI("I",DUZ(2),IMPDA,30,"AC",IND,CLMDA)) Q:CLMDA'>0 D CLAIM Q:$G(BAR("F1"))
  1. Q:$G(BAR("F1"))
  1. I BARXBLC=0 W !!,$$CJ^XLFSTR("* * * NO DATA TO PRINT * * *",IOM),! Q
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. W !,BARSTAR
  1. W !,"TOTALS FOR ",BARZ(IND)
  1. W !?2,"AMOUNT BILLED.........."
  1. W $J($FN(BARXBLC,","),6)," BILLS(S)"
  1. W " $",$J($FN(BARXBLT,",",2),15)
  1. W !?2,"PAYMENTS..............."
  1. W $J($FN(BARXPYC,","),6)," BILLS(S)"
  1. W " $",$J($FN(BARXPYT,",",2),15)
  1. W !?2,"ADJUSTMENTS............"
  1. W $J($FN(BARXADJC,","),6)," BILLS(S)"
  1. W ?58,"$",$J($FN(BARXADJT,",",2),15)
  1. W !
  1. I $G(INDSAVE)'="" S IND=INDSAVE K INDSAVE ;bar*1.8*20
  1. Q
  1. ; ********************************************************************
  1. ;
  1. CLAIM ; EP
  1. ; WORK THE CLAIM
  1. K CLM
  1. I $P($G(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,2)),U)'=BARCHK Q
  1. I '$G(BARFLG),IND="M",$D(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,4)) S ^XTMP("BAR-ERARPT",$J,DUZ(2),CLMDA)="" Q ;bar*1.8*20
  1. D ENP^XBDIQ1(90056.0205,"IMPDA,CLMDA",".01:.09","CLM(")
  1. ;S BARERRC=$P($G(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,2)),U,4) ;OLD 'CLAIM STATUS #204' ;bar*1.8*20
  1. S BARERRC=$P($G(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,0)),U,2) ;bar*1.8*20
  1. S BARERRCD=""
  1. I +BARERRC S BARERRCD=$$GET1^DIQ(90056.21,BARERRC,.02) ;ERROR CODE FROM 'A/R EDI EDI ERROR CODES'
  1. ; Billed amount totals for this index
  1. I +CLM(.05) D
  1. . S BARXBLC=BARXBLC+1
  1. . S BARXBLT=BARXBLT+CLM(.05)
  1. ; Payment amount totals for this index
  1. I +CLM(.04) D
  1. . S BARXPYC=BARXPYC+1
  1. . S BARXPYT=BARXPYT+CLM(.04)
  1. ; Write RA patient data
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. I BARTYP="D",'BARFIRST W !,BARDASH
  1. S BARFIRST=0
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. W !,$E(CLM(.01),1,18) ;RA bill number
  1. W ?19,$E(CLM(.06),1,29) ;RA patient name
  1. W ?49,CLM(.08) ;RA dos begin
  1. W ?62,"- ",$E($P(CLM(.07)," ",3,999),1,15) ;RA HRN/HIC
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. ;W !," ** BILL NOT MATCHED TO RPMS "
  1. ;I BARERRCD]"" W "- ",BARERRCD," "
  1. ;IHS/SD/TPF BAR*1.8*3 UFMS SESSION
  1. ;I BARERRCD]"",(BARERRCD'="MATCHED") W !,"- ** BILL NOT MATCHED TO RPMS ",!,"(OLD) REASON: ",BARERRCD
  1. ;E W !,"- Matched: "
  1. ;END IHS/SD/TPF BAR*1.8*3 UFMS SESSION
  1. ;BEGIN BAR*1.8*5 SRS-80 IHS/SD/TPF 4/15/2008 NEW ERRORS CAN BE MULTIPLE
  1. ;start old bar*1.8*20
  1. ;I $O(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,4,0)),(BARERRCD'="MATCHED") D
  1. ;.N REASDA,REASIENS,REASON
  1. ;.W !,"- ** BILL NOT MATCHED TO RPMS "
  1. ;.W !?4,"REASON NOT MATCHED: "
  1. ;.S REASDA=0
  1. ;.F S REASDA=$O(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,4,REASDA)) Q:'REASDA D
  1. ;..S REASIENS=REASDA_","_CLMDA_","_IMPDA_","
  1. ;..S REASON=$$GET1^DIQ(90056.0205401,REASIENS,.01,"I")
  1. ;..S REASON=$$GET1^DIQ(90056.21,REASON_",",.02,"E")
  1. ;..W !?6,REASON
  1. ;.K REASDA,REASIENS,REASON
  1. ;.W !,"- **"
  1. ;E W !,"- Matched: "
  1. ;end old start new bar*1.8*20
  1. I BARERRC'="M",BARERRC'="P" D
  1. .W !,"- ** BILL NOT MATCHED TO RPMS "
  1. N REASDA,REASIENS,REASON
  1. ;;;I (BARERRC'="P"),$D(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,4)) D
  1. I (BARERRC'="M"),(BARERRC'="P"),$D(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,4)) D ;P.OTT 10/28/2013
  1. .W !?4,"REASON NOT POSTABLE: "
  1. .S REASDA=0
  1. .F S REASDA=$O(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,4,REASDA)) Q:'REASDA D
  1. ..S REASIENS=REASDA_","_CLMDA_","_IMPDA_","
  1. ..S REASON=$$GET1^DIQ(90056.0205401,REASIENS,.01,"I")
  1. ..S REASON=$$GET1^DIQ(90056.21,REASON_",",.02,"E")
  1. ..W !?6,REASON
  1. K REASDA,REASIENS,REASON
  1. ;W !,"- **" ;bar*1.8*20
  1. I BARERRC="M" S BARMIEN=CLMDA_","_IMPDA_"," W !,"- Matched: "_$$GET1^DIQ(90056.0205,BARMIEN,"1.01","E")
  1. ;end new bar*1.8*20
  1. ;W "**"
  1. ;END
  1. I BARTYP="D" D Q:$G(BAR("F1"))
  1. . I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. . W !!,"AMOUNT BILLED.............................................$",$J($FN(CLM(.05),",",2),15)
  1. . I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. . W !,"PAYMENT...................................................$",$J($FN(CLM(.04),",",2),15)
  1. D ADJ
  1. Q
  1. ; ********************************************************************
  1. ;
  1. ADJ ;
  1. ; Loop adjustment data on claim
  1. K ADJ
  1. Q:'+$O(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,30,0)) ; No adjustments
  1. S BARXADJC=BARXADJC+1
  1. I BARTYP="D" D Q:$G(BAR("F1"))
  1. . I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. . W !,"ADJUSTMENTS"
  1. S ADJDA=0
  1. F S ADJDA=$O(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,30,ADJDA)) Q:'+ADJDA D ADJ2 Q:$G(BAR("F1"))
  1. Q:$G(BAR("F1"))
  1. Q
  1. ; ********************************************************************
  1. ;
  1. ADJ2 ;
  1. ;
  1. Q:'$D(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,30,ADJDA,0))
  1. D ENP^XBDIQ1(90056.0208,"IMPDA,CLMDA,ADJDA,",".01:.05","ADJ(")
  1. S BARADJ(0)=$G(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,30,ADJDA,0))
  1. S BARXADJT=BARXADJT+ADJ(.02)
  1. I BARTYP="D" D Q:$G(BAR("F1")) ; If detail, write specifics
  1. . I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. . W !?2,$J($P(ADJ(.01)," "),2) ; Standard adj code
  1. . D PAD
  1. . W ?6,ADJ(.03) ; Standard adj description
  1. . W ?53,"$",$J($FN(ADJ(.02),",",2),10) ; Adj amount
  1. . I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. . W !?6,$J($P(BARADJ(0),U,4),3) ; RPMS Category
  1. . W ?10,$E(ADJ(.04),1,19) ; RPMS Category Description
  1. . W ?30,"/"
  1. . W ?32,$J($P(BARADJ(0),U,5),3) ; RPMS Reason Code
  1. . W ?36,$E(ADJ(.05),1,30) ; RPMS Reason Description
  1. Q
  1. ; ********************************************************************
  1. ;
  1. PAD ;
  1. ; Standard Adj Description must be 47 characters
  1. K L,I,K
  1. S K=$P(ADJ(.03)," ",3,999)
  1. S L=$L(K)
  1. I L>45 S K=$E(K,1,46)
  1. I L<46 D
  1. . F I=L:1:46 S K=K_"."
  1. S ADJ(.03)=K
  1. K L,I,K
  1. Q
  1. ; ********************************************************************
  1. ;
  1. SUMMARY ;
  1. D SUMDATA
  1. I '$D(BARX) D Q
  1. . D HDB
  1. . W !!!,$$CJ^XLFSTR("* * * NO DATA TO PRINT * * *",IOM)
  1. . D PAZ^BARRUTL
  1. D SUMPRINT
  1. Q
  1. ; ********************************************************************
  1. ;
  1. SUMDATA ;
  1. ;
  1. S BAR("COL")="W !,""CLAIM STATUS"",?26,""BILL COUNT"",?40,""PAYMENTS"",?51,""COPAY/DEDUCT"",?66,""ADJUSTMENTS"""
  1. K BARA
  1. F XI=1:1:$L(BARINDX) S BARX($E(BARINDX,XI))=0
  1. S BARX=0
  1. F XI=1:1:$L(BARINDX) S IND=$E(BARINDX,XI) D SUMDATA2
  1. Q
  1. ; ********************************************************************
  1. ;
  1. SUMDATA2 ;
  1. ;
  1. S CLMDA=0
  1. F S CLMDA=$O(^BAREDI("I",DUZ(2),IMPDA,30,"AC",IND,CLMDA)) Q:CLMDA'>0 D SUMDATA3
  1. Q
  1. ; ********************************************************************
  1. ;
  1. SUMDATA3 ;
  1. K CLM
  1. Q:'$D(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,0)) ; No data
  1. I $P($G(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,2)),U)'=BARCHK Q
  1. D ENP^XBDIQ1(90056.0205,"IMPDA,CLMDA",".01:.09","CLM(")
  1. S $P(BARX(IND),U)=$P($G(BARX(IND)),U)+1 ; Bill count per index
  1. S $P(BARX(IND),U,2)=$P($G(BARX(IND)),U,2)+CLM(.04) ; Payment
  1. S $P(BARX,U)=$P($G(BARX),U)+1 ; Total bill count
  1. S $P(BARX,U,2)=$P($G(BARX),U,2)+CLM(.04) ; Total payments
  1. S ADJDA=0
  1. F S ADJDA=$O(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,30,ADJDA)) Q:'+ADJDA D SUMDATA4
  1. Q
  1. ; ********************************************************************
  1. ;
  1. SUMDATA4 ;
  1. ;
  1. Q:'$D(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,30,ADJDA,0)) ; No data
  1. S BARADJ0=$G(^BAREDI("I",DUZ(2),IMPDA,30,CLMDA,30,ADJDA,0))
  1. I ($P(BARADJ0,U,4)=13!($P(BARADJ0,U,4)=14)) D
  1. . S $P(BARX(IND),U,3)=$P($G(BARX(IND)),U,3)+$P(BARADJ0,U,2)
  1. . S $P(BARX,U,3)=$P($G(BARX),U,3)+$P(BARADJ0,U,2)
  1. E D
  1. . S $P(BARX(IND),U,4)=$P($G(BARX(IND)),U,4)+$P(BARADJ0,U,2)
  1. . S $P(BARX,U,4)=$P($G(BARX),U,4)+$P(BARADJ0,U,2)
  1. ;S BARA($P(BARADJ0,U,4))=$G(BARA($P(BARADJ0,U,4)))+$P(BARADJ0,U,2)
  1. I $P(BARADJ0,U,4)'="" S BARA($P(BARADJ0,U,4))=$G(BARA($P(BARADJ0,U,4)))+$P(BARADJ0,U,2) ;BAR*1.8*5 SRS-80 IHS/SD/TPF 4/15/2008 FOUND DURING DEVELOPMENT
  1. S BARA=$G(BARA)+$P(BARADJ0,U,2)
  1. Q
  1. ; ********************************************************************
  1. ;
  1. SUMPRINT ;
  1. ;
  1. D HDB
  1. S IND=""
  1. F S IND=$O(BARX(IND)) Q:IND="" D Q:$G(BAR("F1"))
  1. . I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. . W !,BARZ(IND)
  1. . W ?26,$J($P(BARX(IND),U),6)
  1. . W ?35,$J($FN($P(BARX(IND),U,2),",",2),12)
  1. . W ?50,$J($FN($P(BARX(IND),U,3),",",2),12)
  1. . W ?65,$J($FN($P(BARX(IND),U,4),",",2),12)
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. W !?26,"------",?35,"------------",?50,"------------",?65,"------------"
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. W !?3,"GRAND TOTALS"
  1. W ?26,$J($P(BARX,U),6)
  1. W ?35,$J($FN($P(BARX,U,2),",",2),12)
  1. W ?50,$J($FN($P(BARX,U,3),",",2),12)
  1. W ?65,$J($FN($P(BARX,U,4),",",2),12)
  1. I '$D(BARA) W !! Q
  1. ; Adjustment summary
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. W !!?10,"ADJUSTMENT Totals:",!
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1")) W !
  1. ; List copay AND deduct first
  1. F I=13,14 D Q:$G(BAR("F1"))
  1. . I $D(BARA(I)) D Q:$G(BAR("F1"))
  1. . . W ?15,$$GET1^DIQ(90052.01,I,.01)
  1. . . W ?50,$J($FN(BARA(I),",",2),12)
  1. . . W !
  1. . . K BARA(I)
  1. . . I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. ; loop the rest
  1. S I=0
  1. F S I=$O(BARA(I)) Q:'+I D
  1. . W ?15,$$GET1^DIQ(90052.01,I,.01)
  1. . W ?50,$J($FN(BARA(I),",",2),12)
  1. . W !
  1. . I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. W ?50,"============",!
  1. I $Y>(IOSL-5) D HD Q:$G(BAR("F1"))
  1. W ?50,$J($FN(BARA,",",2),12),!
  1. Q
  1. ; ********************************************************************
  1. ;
  1. CLEANUP ;
  1. K IMPDA,CLMDA,ADJDA,TRDA,I,J,K,DA,DR,DIC,DIE,CLM,ADJ
  1. Q