- ABMPPADJ ; IHS/SD/SDR - Prior Payments/Adjustments page (CE);
- ;;2.6;IHS 3P BILLING SYSTEM;**4,6,8,9,10,19,21,23**;NOV 12, 2009;Build 427
- ; split routine to ABMPPAD1 because of size
- ;
- ;IHS/SD/SDR - v2.5 p13 - NO IM
- ;
- ;IHS/SD/SDR 2.6*6 5010 - added export mode 32
- ;IHS/SD/SDR 2.6*19 HEAT168248 - Added code to put each SAR only once with the total amt. In split routine, ABMPPAD3
- ;IHS/SD/SDR 2.6*21 HEAT118718 - Check for replacement insurer
- ;IHS/SD/SDR 2.6*23 CR9730 Added call for PRINT ORDER CHARGE SCREEN page
- ;
- ;ABMPL(Insurer priority, Insurer IEN)=
- ; P1=13 multiple IEN
- ; P2=Billing status
- ;ABMPP(Insurer IEN, "P" or "A", Counter)=
- ; P1=Amount
- ; P2=Adj Category
- ; P3=Trans. Type
- ; P4=Std Adj. Reason
- ; P5=billable?(Y/N)
- ; P6=Payment multiple IEN
- DISPCK ; chk if no complete insurer OR if 2 export modes on claim; don't do if either is true
- ;
- ;if medicaid insurer type, UB-04 or 837I, itemized, and they chose to display print order screen
- I (ABMP("ITYP")="D")&("^28^31^"[("^"_ABMP("EXP")_"^"))&($P($G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),1,ABMP("VTYP"),0)),U,12)=1)&($P($G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),1,ABMP("VTYP"),1)),U,24)="Y") D PRTORD^ABMDEOK1 ;abm*2.6*23 IHS/SD/SDR CR9730
- K ABMTFLAG,ABMSFLG,ABMMFLG
- K ABMPM
- N ABMPP
- S ABMA=0
- K ABMAFLG,ABMMFLG
- F S ABMA=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMA)) Q:+ABMA=0 D
- .S ABMAI=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMA,0)),U)
- .Q:ABMAI="" ;abm*2.6*10 HEAT74239
- .I $P($G(^ABMNINS(ABMP("LDFN"),ABMAI,0)),U,11)="Y",($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMA,0)),U,3)="C") S ABMAFLG=1
- .I $$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABMAI,".211","I"),1,"I")="R",($P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,8)=ABMAI) S ABMMFLG=1 ;abm*2.6*9 tribal self-insured ;abm*2.6*10 HEAT73780
- I $G(ABMAFLG)=1,($G(ABMMFLG)=1) Q ;don't do COB page cuz there is a tribal insurer and Medicare
- K ABMAFLG,ABMMFLG
- D DISPCK^ABMPPAD1
- GATHER Q:$G(ABMCHK)=1 ;quit if no complete insurer or 2 export modes on claim
- K ABMPM,ABMPP
- D SETVAR^ABMPPAD1
- S ABMPHRN=$P($G(^AUPNPAT(ABMP("PDFN"),41,DUZ(2),0)),U,2)
- S ABMBSUF=$P($G(^ABMDPARM(ABMP("LDFN"),1,2)),U,4)
- ;loop thru active bills
- S ABMBSTA=""
- F S ABMBSTA=$O(^ABMDBILL(DUZ(2),"AS",ABMP("CDFN"),ABMBSTA)) Q:ABMBSTA="" D
- .Q:ABMBSTA="X"
- .S ABMBFIEN=0
- .F S ABMBFIEN=$O(^ABMDBILL(DUZ(2),"AS",ABMP("CDFN"),ABMBSTA,ABMBFIEN)) Q:+ABMBFIEN=0 D
- ..S ABMBNUM=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U)
- ..;get previous payments
- ..S ABMPIEN=0,ABMTFLAG=0
- ..F S ABMPIEN=$O(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN)) Q:+ABMPIEN=0 D
- ...S ABMLN=+$G(ABMLN)+1
- ...S ABMPREC=$G(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN,0))
- ...;check if summary or split out entries; if split set flag so it won't
- ...;get trans from A/R again
- ...S ABMBINS=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U,8) ;abm*2.6*6
- ...I $P($G(^ABMDBILL(DUZ(2),ABMBFIEN,2)),U)'=(+$P(ABMPREC,U,3)+($P(ABMPREC,U,4))+($P(ABMPREC,U,6))+($P(ABMPREC,U,7))+($P(ABMPREC,U,9))+($P(ABMPREC,U,10))+($P(ABMPREC,U,12))+($P(ABMPREC,U,13))+($P(ABMPREC,U,14))) D
- ....S ABMTFLAG=1
- ....S ABMOPDT=$P(ABMPREC,U)
- ....I +$P(ABMPREC,U,10)'=0 S ABMCAT="P",ABMAMT=$P(ABMPREC,U,10)
- ....E D
- .....S ABMCAT="A"
- .....S ABMADJC=$P(ABMPREC,U,15)
- .....S ABMADJT=$P(ABMPREC,U,16)
- .....S ABMSAR=$P(ABMPREC,U,17)
- .....I ABMADJC=3 S ABMAMT=$P(ABMPREC,U,6)
- .....I ABMADJC=4 S ABMAMT=$P(ABMPREC,U,7)
- .....I ABMADJC=13 S ABMAMT=$P(ABMPREC,U,3)
- .....I ABMADJC=14 S ABMAMT=$P(ABMPREC,U,4)
- .....I ABMADJC=15 S ABMAMT=$P(ABMPREC,U,9)
- .....I ABMADJC=16 S ABMAMT=$P(ABMPREC,U,12)
- .....I ABMADJC=19 S ABMAMT=$P(ABMPREC,U,13)
- .....I ABMADJC=20 S ABMAMT=$P(ABMPREC,U,14)
- ....S ABMBINS=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U,8)
- ....;start new abm*2.6*21 IHS/SD/SDR HEAT118718
- ....I '$D(^ABMDBILL(DUZ(2),ABMBFIEN,13,"B",ABMBINS)) D ;means it is a replacement insruer
- .....S ABMTIEN=0,ABMTFLG=0
- .....F S ABMTIEN=$O(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN)) Q:'ABMTIEN D Q:ABMTFLG
- ......I $P($G(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U,11)=ABMBINS D ;this is our replacement
- .......S ABMBINS=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U)
- .......S ABMTFLG=1
- .....K ABMTIEN,ABMTFLG
- ....;end new abm*2.6*21 IHS/SD/SDR HEAT118718
- ....Q:(+$G(ABMAMT)=0)&(($G(ABMCAT)="A")&(+$G(ABMADJC)=0)) ;stop <UNDEF>GATHER+42 error
- ....S ABMPP(ABMBINS,ABMCAT,ABMLN)=ABMAMT_$S(ABMCAT="A":"^"_ABMADJC_"^"_ABMADJT_"^"_ABMSAR,1:"")
- ....I ABMCAT="P" S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N"
- ....I ABMCAT="A",(ABMADJC=13!(ABMADJC=14)) S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="Y"
- ....I ABMCAT="A",(ABMADJC'=13&(ABMADJC'=14)) S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N"
- ....S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,6)=ABMPIEN ;save payment IEN w/trans
- ...S ABMILST(ABMBINS,ABMBFIEN)="" ;abm*2.6*6 5010
- ...I $P($G(^ABMDBILL(DUZ(2),ABMBFIEN,2)),U)=(+$P(ABMPREC,U,3)+($P(ABMPREC,U,4))+($P(ABMPREC,U,6))+($P(ABMPREC,U,7))+($P(ABMPREC,U,9))+($P(ABMPREC,U,10))+($P(ABMPREC,U,12))+($P(ABMPREC,U,13))+($P(ABMPREC,U,14))) D
- ....S ABMOPDT=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN,0)),U) ;original pymt dt
- ....K ^ABMDBILL(DUZ(2),ABMBFIEN,3) ;remove summary entry; individual entries will be filed later
- ..Q:($G(ABMTFLAG)=1) ;trans split; skip next part
- ..;get trans for those bills
- ..I $P($G(^ABMDPARM(ABMP("LDFN"),1,2)),U,4)'="" S ABMBNUM=$G(ABMBNUM)_"-"_ABMBSUF
- ..I $P($G(^ABMDPARM(ABMP("LDFN"),1,3)),U,3)=1 S ABMBNUM=$G(ABMBNUM)_"-"_ABMPHRN
- ..;
- ..S ABMHOLD=DUZ(2)
- ..S ABMSAT=ABMP("LDFN") ;Satellite = 3P Visit loc
- ..S ABMPAR=0 ;Parent
- ..; check site active at DOS to ensure bill added to correct site
- ..S DA=0
- ..F S DA=$O(^BAR(90052.06,DA)) Q:DA'>0 D Q:ABMPAR
- ...Q:'$D(^BAR(90052.06,DA,DA)) ; Pos Parent UNDEF Site Parameter
- ...Q:'$D(^BAR(90052.05,DA,ABMSAT)) ; Satellite UNDEF Parent/Satellit
- ...Q:+$P($G(^BAR(90052.05,DA,ABMSAT,0)),U,5) ; Par/Sat not usable
- ...; Q if sat NOT active at DOS
- ...I ABMP("VDT")<$P($G(^BAR(90052.05,DA,ABMSAT,0)),U,6) Q
- ...; Q if sat became NOT active before DOS
- ...I $P($G(^BAR(90052.05,DA,ABMSAT,0)),U,7),(ABMP("VDT")>$P($G(^BAR(90052.05,DA,ABMSAT,0)),U,7)) Q
- ...S ABMPAR=$S(ABMSAT:$P($G(^BAR(90052.05,DA,ABMSAT,0)),U,3),1:"")
- ..Q:+ABMPAR=0
- ..S DUZ(2)=ABMPAR
- ..S ABMAIEN=$O(^BARBL(DUZ(2),"B",ABMBNUM,0))
- ..I +$G(ABMAIEN)=0 S:+$G(ABMHOLD)'=0 DUZ(2)=ABMHOLD K ABMHOLD Q ;there isn't an A/R bill w/this number
- ..Q:$P($G(^BARAC(DUZ(2),$P($G(^BARBL(DUZ(2),ABMAIEN,0)),U,3),0)),U)'["AUTNINS" ;abm*2.6*10 HEAT70085
- ..S ABMBINS=+$P($G(^BARAC(DUZ(2),$P($G(^BARBL(DUZ(2),ABMAIEN,0)),U,3),0)),U) ;abm*2.6*10 HEAT70085
- ..;start new abm*2.6*21 IHS/SD/SDR HEAT118718
- ..I '$D(^ABMDBILL(DUZ(2),ABMBFIEN,13,"B",ABMBINS)) D ;means it is a replacement insruer
- ...S ABMTIEN=0,ABMTFLG=0
- ...F S ABMTIEN=$O(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN)) Q:'ABMTIEN D Q:ABMTFLG
- ....I $P($G(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U,11)=ABMBINS D ;this is our replacement
- .....S ABMBINS=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U)
- .....S ABMTFLG=1
- ...K ABMTIEN,ABMTFLG
- ...S ABMILST(ABMBINS,ABMBFIEN)=""
- ..;end new abm*2.6*21 IHS/SD/SDR HEAT118718
- ..S ABMTRIEN=0,ABMLN=1
- ..F S ABMTRIEN=$O(^BARTR(DUZ(2),"AC",ABMAIEN,ABMTRIEN)) Q:ABMTRIEN="" D
- ...S ABMREC=$G(^BARTR(DUZ(2),ABMTRIEN,0))
- ...I $G(ABMOPDT)="" S ABMOPDT=$P($P(ABMREC,U),".")
- ...Q:+$P(ABMREC,U,2)=0&(+$P(ABMREC,U,3)=0)
- ...;S ABMBINS=$P(ABMREC,U,6) ;abm*2.6*10 HEAT70085
- ...;Q:$P($G(^BARAC(DUZ(2),ABMBINS,0)),U)'["AUTNINS" ;abm*2.6*10 HEAT70085
- ...;S ABMBINS=+$P($G(^BARAC(DUZ(2),ABMBINS,0)),U) ;abm*2.6*10 HEAT70085
- ...S ABMTTYP=$P($G(^BARTR(DUZ(2),ABMTRIEN,1)),U,1)
- ...S ABMADJC=$P($G(^BARTR(DUZ(2),ABMTRIEN,1)),U,2)
- ...S ABMCAT=""
- ...I ABMTTYP=40 S ABMCAT="P"
- ...I "^3^4^13^14^15^16^19^20^"[("^"_ABMADJC_"^") S ABMCAT="A",ABMTTYP=$P($G(^BARTR(DUZ(2),ABMTRIEN,1)),U,3)
- ...Q:ABMCAT=""
- ...S ABMPP(ABMBINS,ABMCAT,ABMLN)=$S(+$P(ABMREC,U,2)'=0&(ABMCAT="A"):$P(ABMREC,U,2),+$P(ABMREC,U,2)'=0&(ABMCAT="P"):$P(ABMREC,U,2),1:$P(ABMREC,U,3))_"^"_ABMADJC_"^"_ABMTTYP
- ...I ABMCAT="A",$D(^BARADJ("C",ABMADJC,ABMTTYP)) S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,4)=$O(^BARADJ("C",ABMADJC,ABMTTYP,0)) ;abm*2.6*4 NOHEAT
- ...I ABMCAT="P" S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N",ABMLN=ABMLN+1 Q
- ...S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="Y",ABMLN=ABMLN+1
- ..I +$G(ABMHOLD)'=0 S DUZ(2)=ABMHOLD K ABMHOLD
- ..D ^ABMPPAD3 ;split routine abm*2.6*19 IHS/SD/SDR HEAT168248
- ..I ABMTFLAG=0 D ^ABMPPFLR ;do filer if trans not split
- ;D ^ABMPPAD3 ;split routine abm*2.6*19 IHS/SD/SDR HEAT168248
- S ABMTFLAG=1
- DISP K ABMSFLG,ABMMFLG
- D SETVAR^ABMPPAD1
- S ABMDASH="",$P(ABMDASH,"-",80)=""
- S ABMZ("TITL")="PRIOR PAYMENTS/ADJUSTMENTS"
- S ABMP("SCRN")="A"
- S ABMZ("PG")="A"
- I '$D(ABMP("DDL")) D SUM^ABMDE1 I 1
- E S ABMC("CONT")="" D PAUSE^ABMDE1 G:$D(DUOUT)!$D(DTOUT)!$D(DIROUT) XIT
- ;
- S ABMINS=0
- F S ABMINS=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS)) Q:+ABMINS=0 D
- .S ABMIIEN=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U)
- .S ABMPRI=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U,2)
- .S ABMSTAT=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U,3)
- .Q:ABMSTAT'="I"&(ABMSTAT'="C")
- .S ABMPL(ABMPRI,ABMIIEN)=ABMINS_"^"_ABMSTAT
- ;
- S ABMPM("TOT")=ABMP("TOT")-(+$G(ABMP("NC")))
- S ABMP("CBAMT")=0
- S ABMIPRI=0
- F S ABMIPRI=$O(ABMPL(ABMIPRI)) Q:+ABMIPRI=0 D
- .S ABMIIEN=0
- .F S ABMIIEN=$O(ABMPL(ABMIPRI,ABMIIEN)) Q:+ABMIIEN=0 D
- ..S ABMCAT=""
- ..F S ABMCAT=$O(ABMPP(ABMIIEN,ABMCAT)) Q:ABMCAT="" D
- ...S ABMLN=0
- ...F S ABMLN=$O(ABMPP(ABMIIEN,ABMCAT,ABMLN)) Q:+ABMLN=0 D
- ....I $P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,5)="Y" S ABMP("CBAMT")=ABMP("CBAMT")+($FN($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U),"-"))
- ....I ABMCAT="P" S ABMPM("PD")=+$G(ABMPM("PD"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- ....I ABMCAT="A" D
- .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=3 ABMPM("WO")=+$G(ABMPM("WO"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=4 ABMPM("NONC")=+$G(ABMPM("NONC"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=13 ABMPM("DED")=+$G(ABMPM("DED"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=14 ABMPM("COI")=+$G(ABMPM("COI"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=15 ABMPM("PENS")=+$G(ABMPM("PENS"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=16 ABMPM("GRP")=+$G(ABMPM("GRP"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=19 ABMPM("REF")=+$G(ABMPM("REF"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=20 ABMPM("PCR")=+$G(ABMPM("PCR"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- ;
- W !,"Payment Amount....: " S ABMNFLG=1 W $$DOLAMT(ABMPM("PD")) K ABMNFLG
- W ?40,"ORIGINAL BILL AMOUNT: ",$J(+$G(ABMP("OBAMT")),10,2)
- W !,"Deductible Amount.: ",$$DOLAMT(ABMPM("DED"))
- W ?40,"Current Charges.....: ",$J(+$G(ABMPM("TOT")),10,2)
- W !,"Co-pay/ins Amount.: ",$$DOLAMT(ABMPM("COI"))
- W ?40,"Current Bill Amount.: ",$$EN^ABMVDF("HIN"),$J(+$G(ABMP("CBAMT")),10,2),$$EN^ABMVDF("HIF")
- W !,"Write Off.........: ",$$DOLAMT(ABMPM("WO"))
- W !,"Non-Covered Amount: ",$$DOLAMT(ABMPM("NONC"))
- W !,"Penalty Amount....: ",$$DOLAMT(ABMPM("PENS"))
- W !,"Grouper Allowance.: ",$$DOLAMT(ABMPM("GRP"))
- W !,"Refund............: ",$$DOLAMT(ABMPM("REF"))
- W !,"Payment Credits...: ",$$DOLAMT(ABMPM("PCR"))
- ;
- S ABMPRI=0
- F S ABMPRI=$O(ABMPL(ABMPRI)) Q:+ABMPRI=0 D
- .S ABMIIEN=0
- .S ABMPRIS=ABMPRI
- .F S ABMIIEN=$O(ABMPL(ABMPRI,ABMIIEN)) Q:+ABMIIEN=0 D
- ..S ABMSTAT=$P(ABMPL(ABMPRI,ABMIIEN),U,2)
- ..S ABMINS=$P(ABMPL(ABMPRI,ABMIIEN),U)
- ..S ABMSTAT=$S(ABMSTAT="F":"FLAGGED",ABMSTAT="I":"ACTIVE",ABMSTAT="P":"PENDING",ABMSTAT="U":"UNBILLABLE",ABMSTAT="C":"COMPLETED",ABMSTAT="B":"BILLED",ABMSTAT="L":"PARTIAL",1:"")
- ..W !!,"["_ABMPRI_"] INSURER: ",$E($P($G(^AUTNINS(ABMIIEN,0)),U),1,27)
- ..W ?40,"PRIORITY ORDER: ",ABMPRI
- ..W ?62,"STATUS: ",$S(ABMSTAT="COMPLETED":$$EN^ABMVDF("RVN"),1:""),ABMSTAT,$S(ABMSTAT="COMPLETED":$$EN^ABMVDF("RVF"),1:"")
- ..S ABMCOV=0
- ..F S ABMCOV=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,11,ABMCOV)) Q:+ABMCOV=0 D
- ...I $P($G(^AUTNINS(ABMIIEN,0)),U)["MEDICARE" D
- ....W !?14,"COVERAGE TYPE: ",$P($G(^AUTTPIC(ABMCOV,0)),U)
- ....S ABMCOV=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,11,ABMCOV))
- ....I +ABMCOV'=0 W ", ",$P($G(^AUTTPIC(ABMCOV,0)),U)
- ...E W !?14,"COVERAGE TYPE: ",$P($G(^AUTTPIC(ABMCOV,0)),U)
- ..S ABMCAT=""
- ..F S ABMCAT=$O(ABMPP(ABMIIEN,ABMCAT),-1) Q:ABMCAT="" D
- ...S ABMLN=0
- ...F S ABMLN=$O(ABMPP(ABMIIEN,ABMCAT,ABMLN)) Q:+ABMLN=0 D
- ....Q:+$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U)=0
- ....I +$G(ABMLNSV)<ABMLN S ABMLNSV=ABMLN
- ....S ABMDAMT=$P($G(ABMPP(ABMIIEN,ABMCAT,ABMLN)),U)
- ....I ABMCAT="P" S ABMNFLG=1
- ....S ABMDAMT=$$DOLAMT(ABMDAMT)
- ....K ABMNFLG
- ....I ABMCAT="P" W !?6,"PAYMENT: ",ABMDAMT
- ....E D
- .....W !?3,"ADJUSTMENT: ",ABMDAMT
- .....S ABMPREC=$G(ABMPP(ABMIIEN,ABMCAT,ABMLN))
- .....I $P(ABMPREC,U,2)'="" W ?28,"[",$P(ABMPREC,U,2),"] ",$E($P($G(^BAR(90052.01,$P(ABMPREC,U,2),0)),U),1,18)
- .....I $P(ABMPREC,U,3)'="" W ?48,"[",$P(ABMPREC,U,3),"] ",$E($P($G(^BARTBL($P(ABMPREC,U,3),0)),U),1,18)
- .....I $P($G(ABMPREC),U,4)'="" D
- ......W ?75,"["_$P(^BARADJ($P($G(ABMPREC),U,4),0),U)_"]"
- ......I $P(^BARADJ($P(ABMPREC,U,4),0),U,3)'=$P(ABMPREC,U,2) S ABMMFLG=1
- ......I $P(^BARADJ($P(ABMPREC,U,4),0),U,4)'=$P(ABMPREC,U,3) S ABMMFLG=1
- .....I $P($G(ABMPREC),U,4)="",($P(ABMPREC,U)'=0) S ABMSFLG=1
- W !,ABMDASH,!
- ;I ((ABMP("EXP")=21)!(ABMP("EXP")=22)!(ABMP("EXP")=23)) D ;abm*2.6*6 5010
- ;I ((ABMP("EXP")=21)!(ABMP("EXP")=22)!(ABMP("EXP")=23)!(ABMP("EXP")=32)) D ;abm*2.6*6 5010 ;abm*2.6*8 5010
- I ((ABMP("EXP")=21)!(ABMP("EXP")=22)!(ABMP("EXP")=23)!(ABMP("EXP")=31)!(ABMP("EXP")=32)!(ABMP("EXP")=33)) D ;abm*2.6*6 5010 ;abm*2.6*8 5010
- .I $G(ABMSFLG)=1 W "ERROR: STANDARD ADJUSTMENT CODE NOT ENTERED FOR ADJUSTMENT",!
- .I $G(ABMMFLG)=1 W "ERROR: STANDARD ADJUSTMENT REASON DOESN'T MATCH ADJUSTMENT CATEGORY/REASON",!
- .I ABMP("CBAMT")<0 W "ERROR: NEGATIVE BALANCE ON BILL NOT ALLOWED",! S ABMSFLG=1
- .I $G(ABMSFLG)=1!($G(ABMMFLG)=1) W ABMDASH,!
- W "**Use the EDIT option to populate the Standard Adjustment Reason Code**",!
- E K ABMSFLG,ABMMFLG ;remove flag for other checks of this error
- ;
- S ABMP("OPT")="AEQ"
- S ABMP("DFLT")="Q"
- D SEL^ABMDEOPT
- I "AE"'[$E(Y) G XIT
- G XIT:$D(DTOUT)!$D(DUOUT)!$D(DIROUT)
- S ABM("DO")=$S($E(Y)="A":"ADD",$E(Y)="E":"EDIT",1:"XIT") D @ABM("DO") G DISP
- XIT ;
- D XIT^ABMPPAD1
- Q
- DOLAMT(AMT) ;
- Q $S(($E(AMT,1)="-"!($G(ABMNFLG)=1))&(AMT'=0):"("_$J($S($E(AMT)="-":$E(AMT,2,$L(AMT)),1:AMT),10,2)_")",1:$J(+$G(AMT),11,2))
- ADD ;
- D ADD^ABMPPAD1
- Q:($G(ABMEFLG)=1)
- D EDIT2
- Q
- EDIT ;
- D EDIT^ABMPPAD1
- Q:($G(ABMEFLG)=1) ;tried to edit active insurer OR no trans selected
- EDIT2 ;
- D EDIT2^ABMPPAD1
- D ^ABMPPFLR
- Q
- ABMPPADJ ; IHS/SD/SDR - Prior Payments/Adjustments page (CE);
- +1 ;;2.6;IHS 3P BILLING SYSTEM;**4,6,8,9,10,19,21,23**;NOV 12, 2009;Build 427
- +2 ; split routine to ABMPPAD1 because of size
- +3 ;
- +4 ;IHS/SD/SDR - v2.5 p13 - NO IM
- +5 ;
- +6 ;IHS/SD/SDR 2.6*6 5010 - added export mode 32
- +7 ;IHS/SD/SDR 2.6*19 HEAT168248 - Added code to put each SAR only once with the total amt. In split routine, ABMPPAD3
- +8 ;IHS/SD/SDR 2.6*21 HEAT118718 - Check for replacement insurer
- +9 ;IHS/SD/SDR 2.6*23 CR9730 Added call for PRINT ORDER CHARGE SCREEN page
- +10 ;
- +11 ;ABMPL(Insurer priority, Insurer IEN)=
- +12 ; P1=13 multiple IEN
- +13 ; P2=Billing status
- +14 ;ABMPP(Insurer IEN, "P" or "A", Counter)=
- +15 ; P1=Amount
- +16 ; P2=Adj Category
- +17 ; P3=Trans. Type
- +18 ; P4=Std Adj. Reason
- +19 ; P5=billable?(Y/N)
- +20 ; P6=Payment multiple IEN
- DISPCK ; chk if no complete insurer OR if 2 export modes on claim; don't do if either is true
- +1 ;
- +2 ;if medicaid insurer type, UB-04 or 837I, itemized, and they chose to display print order screen
- +3 ;abm*2.6*23 IHS/SD/SDR CR9730
- IF (ABMP("ITYP")="D")&("^28^31^"[("^"_ABMP("EXP")_"^"))&($PIECE($GET(^ABMNINS(ABMP("LDFN"),ABMP("INS"),1,ABMP("VTYP"),0)),U,12)=1)&($PIECE($GET(^ABMNINS(ABMP("LDFN"),ABMP("INS"),1,ABMP("VTYP"),1)),U,24)="Y")
- DO PRTORD^ABMDEOK1
- +4 KILL ABMTFLAG,ABMSFLG,ABMMFLG
- +5 KILL ABMPM
- +6 NEW ABMPP
- +7 SET ABMA=0
- +8 KILL ABMAFLG,ABMMFLG
- +9 FOR
- SET ABMA=$ORDER(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMA))
- IF +ABMA=0
- QUIT
- Begin DoDot:1
- +10 SET ABMAI=$PIECE($GET(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMA,0)),U)
- +11 ;abm*2.6*10 HEAT74239
- IF ABMAI=""
- QUIT
- +12 IF $PIECE($GET(^ABMNINS(ABMP("LDFN"),ABMAI,0)),U,11)="Y"
- IF ($PIECE($GET(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMA,0)),U,3)="C")
- SET ABMAFLG=1
- +13 ;abm*2.6*9 tribal self-insured ;abm*2.6*10 HEAT73780
- IF $$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABMAI,".211","I"),1,"I")="R"
- IF ($PIECE($GET(^ABMDCLM(DUZ(2),ABMP("CDFN"),0)),U,8)=ABMAI)
- SET ABMMFLG=1
- End DoDot:1
- +14 ;don't do COB page cuz there is a tribal insurer and Medicare
- IF $GET(ABMAFLG)=1
- IF ($GET(ABMMFLG)=1)
- QUIT
- +15 KILL ABMAFLG,ABMMFLG
- +16 DO DISPCK^ABMPPAD1
- GATHER ;quit if no complete insurer or 2 export modes on claim
- IF $GET(ABMCHK)=1
- QUIT
- +1 KILL ABMPM,ABMPP
- +2 DO SETVAR^ABMPPAD1
- +3 SET ABMPHRN=$PIECE($GET(^AUPNPAT(ABMP("PDFN"),41,DUZ(2),0)),U,2)
- +4 SET ABMBSUF=$PIECE($GET(^ABMDPARM(ABMP("LDFN"),1,2)),U,4)
- +5 ;loop thru active bills
- +6 SET ABMBSTA=""
- +7 FOR
- SET ABMBSTA=$ORDER(^ABMDBILL(DUZ(2),"AS",ABMP("CDFN"),ABMBSTA))
- IF ABMBSTA=""
- QUIT
- Begin DoDot:1
- +8 IF ABMBSTA="X"
- QUIT
- +9 SET ABMBFIEN=0
- +10 FOR
- SET ABMBFIEN=$ORDER(^ABMDBILL(DUZ(2),"AS",ABMP("CDFN"),ABMBSTA,ABMBFIEN))
- IF +ABMBFIEN=0
- QUIT
- Begin DoDot:2
- +11 SET ABMBNUM=$PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U)
- +12 ;get previous payments
- +13 SET ABMPIEN=0
- SET ABMTFLAG=0
- +14 FOR
- SET ABMPIEN=$ORDER(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN))
- IF +ABMPIEN=0
- QUIT
- Begin DoDot:3
- +15 SET ABMLN=+$GET(ABMLN)+1
- +16 SET ABMPREC=$GET(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN,0))
- +17 ;check if summary or split out entries; if split set flag so it won't
- +18 ;get trans from A/R again
- +19 ;abm*2.6*6
- SET ABMBINS=$PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U,8)
- +20 IF $PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,2)),U)'=(+$PIECE(ABMPREC,U,3)+($PIECE(ABMPREC,U,4))+($PIECE(ABMPREC,U,6))+($PIECE(ABMPREC,U,7))+($PIECE(ABMPREC,U,9))+($PIECE(ABMPREC,U,10))+($PIECE(ABMPREC,U,12))+($PIECE(ABMPREC
- ,U,13))+($PIECE(ABMPREC,U,14)))
- Begin DoDot:4
- +21 SET ABMTFLAG=1
- +22 SET ABMOPDT=$PIECE(ABMPREC,U)
- +23 IF +$PIECE(ABMPREC,U,10)'=0
- SET ABMCAT="P"
- SET ABMAMT=$PIECE(ABMPREC,U,10)
- +24 IF '$TEST
- Begin DoDot:5
- +25 SET ABMCAT="A"
- +26 SET ABMADJC=$PIECE(ABMPREC,U,15)
- +27 SET ABMADJT=$PIECE(ABMPREC,U,16)
- +28 SET ABMSAR=$PIECE(ABMPREC,U,17)
- +29 IF ABMADJC=3
- SET ABMAMT=$PIECE(ABMPREC,U,6)
- +30 IF ABMADJC=4
- SET ABMAMT=$PIECE(ABMPREC,U,7)
- +31 IF ABMADJC=13
- SET ABMAMT=$PIECE(ABMPREC,U,3)
- +32 IF ABMADJC=14
- SET ABMAMT=$PIECE(ABMPREC,U,4)
- +33 IF ABMADJC=15
- SET ABMAMT=$PIECE(ABMPREC,U,9)
- +34 IF ABMADJC=16
- SET ABMAMT=$PIECE(ABMPREC,U,12)
- +35 IF ABMADJC=19
- SET ABMAMT=$PIECE(ABMPREC,U,13)
- +36 IF ABMADJC=20
- SET ABMAMT=$PIECE(ABMPREC,U,14)
- End DoDot:5
- +37 SET ABMBINS=$PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U,8)
- +38 ;start new abm*2.6*21 IHS/SD/SDR HEAT118718
- +39 ;means it is a replacement insruer
- IF '$DATA(^ABMDBILL(DUZ(2),ABMBFIEN,13,"B",ABMBINS))
- Begin DoDot:5
- +40 SET ABMTIEN=0
- SET ABMTFLG=0
- +41 FOR
- SET ABMTIEN=$ORDER(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN))
- IF 'ABMTIEN
- QUIT
- Begin DoDot:6
- +42 ;this is our replacement
- IF $PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U,11)=ABMBINS
- Begin DoDot:7
- +43 SET ABMBINS=$PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U)
- +44 SET ABMTFLG=1
- End DoDot:7
- End DoDot:6
- IF ABMTFLG
- QUIT
- +45 KILL ABMTIEN,ABMTFLG
- End DoDot:5
- +46 ;end new abm*2.6*21 IHS/SD/SDR HEAT118718
- +47 ;stop <UNDEF>GATHER+42 error
- IF (+$GET(ABMAMT)=0)&(($GET(ABMCAT)="A")&(+$GET(ABMADJC)=0))
- QUIT
- +48 SET ABMPP(ABMBINS,ABMCAT,ABMLN)=ABMAMT_$SELECT(ABMCAT="A":"^"_ABMADJC_"^"_ABMADJT_"^"_ABMSAR,1:"")
- +49 IF ABMCAT="P"
- SET $PIECE(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N"
- +50 IF ABMCAT="A"
- IF (ABMADJC=13!(ABMADJC=14))
- SET $PIECE(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="Y"
- +51 IF ABMCAT="A"
- IF (ABMADJC'=13&(ABMADJC'=14))
- SET $PIECE(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N"
- +52 ;save payment IEN w/trans
- SET $PIECE(ABMPP(ABMBINS,ABMCAT,ABMLN),U,6)=ABMPIEN
- End DoDot:4
- +53 ;abm*2.6*6 5010
- SET ABMILST(ABMBINS,ABMBFIEN)=""
- +54 IF $PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,2)),U)=(+$PIECE(ABMPREC,U,3)+($PIECE(ABMPREC,U,4))+($PIECE(ABMPREC,U,6))+($PIECE(ABMPREC,U,7))+($PIECE(ABMPREC,U,9))+($PIECE(ABMPREC,U,10))+($PIECE(ABMPREC,U,12))+($PIECE(ABMPREC,
- U,13))+($PIECE(ABMPREC,U,14)))
- Begin DoDot:4
- +55 ;original pymt dt
- SET ABMOPDT=$PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN,0)),U)
- +56 ;remove summary entry; individual entries will be filed later
- KILL ^ABMDBILL(DUZ(2),ABMBFIEN,3)
- End DoDot:4
- End DoDot:3
- +57 ;trans split; skip next part
- IF ($GET(ABMTFLAG)=1)
- QUIT
- +58 ;get trans for those bills
- +59 IF $PIECE($GET(^ABMDPARM(ABMP("LDFN"),1,2)),U,4)'=""
- SET ABMBNUM=$GET(ABMBNUM)_"-"_ABMBSUF
- +60 IF $PIECE($GET(^ABMDPARM(ABMP("LDFN"),1,3)),U,3)=1
- SET ABMBNUM=$GET(ABMBNUM)_"-"_ABMPHRN
- +61 ;
- +62 SET ABMHOLD=DUZ(2)
- +63 ;Satellite = 3P Visit loc
- SET ABMSAT=ABMP("LDFN")
- +64 ;Parent
- SET ABMPAR=0
- +65 ; check site active at DOS to ensure bill added to correct site
- +66 SET DA=0
- +67 FOR
- SET DA=$ORDER(^BAR(90052.06,DA))
- IF DA'>0
- QUIT
- Begin DoDot:3
- +68 ; Pos Parent UNDEF Site Parameter
- IF '$DATA(^BAR(90052.06,DA,DA))
- QUIT
- +69 ; Satellite UNDEF Parent/Satellit
- IF '$DATA(^BAR(90052.05,DA,ABMSAT))
- QUIT
- +70 ; Par/Sat not usable
- IF +$PIECE($GET(^BAR(90052.05,DA,ABMSAT,0)),U,5)
- QUIT
- +71 ; Q if sat NOT active at DOS
- +72 IF ABMP("VDT")<$PIECE($GET(^BAR(90052.05,DA,ABMSAT,0)),U,6)
- QUIT
- +73 ; Q if sat became NOT active before DOS
- +74 IF $PIECE($GET(^BAR(90052.05,DA,ABMSAT,0)),U,7)
- IF (ABMP("VDT")>$PIECE($GET(^BAR(90052.05,DA,ABMSAT,0)),U,7))
- QUIT
- +75 SET ABMPAR=$SELECT(ABMSAT:$PIECE($GET(^BAR(90052.05,DA,ABMSAT,0)),U,3),1:"")
- End DoDot:3
- IF ABMPAR
- QUIT
- +76 IF +ABMPAR=0
- QUIT
- +77 SET DUZ(2)=ABMPAR
- +78 SET ABMAIEN=$ORDER(^BARBL(DUZ(2),"B",ABMBNUM,0))
- +79 ;there isn't an A/R bill w/this number
- IF +$GET(ABMAIEN)=0
- IF +$GET(ABMHOLD)'=0
- SET DUZ(2)=ABMHOLD
- KILL ABMHOLD
- QUIT
- +80 ;abm*2.6*10 HEAT70085
- IF $PIECE($GET(^BARAC(DUZ(2),$PIECE($GET(^BARBL(DUZ(2),ABMAIEN,0)),U,3),0)),U)'["AUTNINS"
- QUIT
- +81 ;abm*2.6*10 HEAT70085
- SET ABMBINS=+$PIECE($GET(^BARAC(DUZ(2),$PIECE($GET(^BARBL(DUZ(2),ABMAIEN,0)),U,3),0)),U)
- +82 ;start new abm*2.6*21 IHS/SD/SDR HEAT118718
- +83 ;means it is a replacement insruer
- IF '$DATA(^ABMDBILL(DUZ(2),ABMBFIEN,13,"B",ABMBINS))
- Begin DoDot:3
- +84 SET ABMTIEN=0
- SET ABMTFLG=0
- +85 FOR
- SET ABMTIEN=$ORDER(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN))
- IF 'ABMTIEN
- QUIT
- Begin DoDot:4
- +86 ;this is our replacement
- IF $PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U,11)=ABMBINS
- Begin DoDot:5
- +87 SET ABMBINS=$PIECE($GET(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U)
- +88 SET ABMTFLG=1
- End DoDot:5
- End DoDot:4
- IF ABMTFLG
- QUIT
- +89 KILL ABMTIEN,ABMTFLG
- +90 SET ABMILST(ABMBINS,ABMBFIEN)=""
- End DoDot:3
- +91 ;end new abm*2.6*21 IHS/SD/SDR HEAT118718
- +92 SET ABMTRIEN=0
- SET ABMLN=1
- +93 FOR
- SET ABMTRIEN=$ORDER(^BARTR(DUZ(2),"AC",ABMAIEN,ABMTRIEN))
- IF ABMTRIEN=""
- QUIT
- Begin DoDot:3
- +94 SET ABMREC=$GET(^BARTR(DUZ(2),ABMTRIEN,0))
- +95 IF $GET(ABMOPDT)=""
- SET ABMOPDT=$PIECE($PIECE(ABMREC,U),".")
- +96 IF +$PIECE(ABMREC,U,2)=0&(+$PIECE(ABMREC,U,3)=0)
- QUIT
- +97 ;S ABMBINS=$P(ABMREC,U,6) ;abm*2.6*10 HEAT70085
- +98 ;Q:$P($G(^BARAC(DUZ(2),ABMBINS,0)),U)'["AUTNINS" ;abm*2.6*10 HEAT70085
- +99 ;S ABMBINS=+$P($G(^BARAC(DUZ(2),ABMBINS,0)),U) ;abm*2.6*10 HEAT70085
- +100 SET ABMTTYP=$PIECE($GET(^BARTR(DUZ(2),ABMTRIEN,1)),U,1)
- +101 SET ABMADJC=$PIECE($GET(^BARTR(DUZ(2),ABMTRIEN,1)),U,2)
- +102 SET ABMCAT=""
- +103 IF ABMTTYP=40
- SET ABMCAT="P"
- +104 IF "^3^4^13^14^15^16^19^20^"[("^"_ABMADJC_"^")
- SET ABMCAT="A"
- SET ABMTTYP=$PIECE($GET(^BARTR(DUZ(2),ABMTRIEN,1)),U,3)
- +105 IF ABMCAT=""
- QUIT
- +106 SET ABMPP(ABMBINS,ABMCAT,ABMLN)=$SELECT(+$PIECE(ABMREC,U,2)'=0&(ABMCAT="A"):$PIECE(ABMREC,U,2),+$PIECE(ABMREC,U,2)'=0&(ABMCAT="P"):$PIECE(ABMREC,U,2),1:$PIECE(ABMREC,U,3))_"^"_ABMADJC_"^"_ABMTTYP
- +107 ;abm*2.6*4 NOHEAT
- IF ABMCAT="A"
- IF $DATA(^BARADJ("C",ABMADJC,ABMTTYP))
- SET $PIECE(ABMPP(ABMBINS,ABMCAT,ABMLN),U,4)=$ORDER(^BARADJ("C",ABMADJC,ABMTTYP,0))
- +108 IF ABMCAT="P"
- SET $PIECE(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N"
- SET ABMLN=ABMLN+1
- QUIT
- +109 SET $PIECE(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="Y"
- SET ABMLN=ABMLN+1
- End DoDot:3
- +110 IF +$GET(ABMHOLD)'=0
- SET DUZ(2)=ABMHOLD
- KILL ABMHOLD
- +111 ;split routine abm*2.6*19 IHS/SD/SDR HEAT168248
- DO ^ABMPPAD3
- +112 ;do filer if trans not split
- IF ABMTFLAG=0
- DO ^ABMPPFLR
- End DoDot:2
- End DoDot:1
- +113 ;D ^ABMPPAD3 ;split routine abm*2.6*19 IHS/SD/SDR HEAT168248
- +114 SET ABMTFLAG=1
- DISP KILL ABMSFLG,ABMMFLG
- +1 DO SETVAR^ABMPPAD1
- +2 SET ABMDASH=""
- SET $PIECE(ABMDASH,"-",80)=""
- +3 SET ABMZ("TITL")="PRIOR PAYMENTS/ADJUSTMENTS"
- +4 SET ABMP("SCRN")="A"
- +5 SET ABMZ("PG")="A"
- +6 IF '$DATA(ABMP("DDL"))
- DO SUM^ABMDE1
- IF 1
- +7 IF '$TEST
- SET ABMC("CONT")=""
- DO PAUSE^ABMDE1
- IF $DATA(DUOUT)!$DATA(DTOUT)!$DATA(DIROUT)
- GOTO XIT
- +8 ;
- +9 SET ABMINS=0
- +10 FOR
- SET ABMINS=$ORDER(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS))
- IF +ABMINS=0
- QUIT
- Begin DoDot:1
- +11 SET ABMIIEN=$PIECE($GET(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U)
- +12 SET ABMPRI=$PIECE($GET(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U,2)
- +13 SET ABMSTAT=$PIECE($GET(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U,3)
- +14 IF ABMSTAT'="I"&(ABMSTAT'="C")
- QUIT
- +15 SET ABMPL(ABMPRI,ABMIIEN)=ABMINS_"^"_ABMSTAT
- End DoDot:1
- +16 ;
- +17 SET ABMPM("TOT")=ABMP("TOT")-(+$GET(ABMP("NC")))
- +18 SET ABMP("CBAMT")=0
- +19 SET ABMIPRI=0
- +20 FOR
- SET ABMIPRI=$ORDER(ABMPL(ABMIPRI))
- IF +ABMIPRI=0
- QUIT
- Begin DoDot:1
- +21 SET ABMIIEN=0
- +22 FOR
- SET ABMIIEN=$ORDER(ABMPL(ABMIPRI,ABMIIEN))
- IF +ABMIIEN=0
- QUIT
- Begin DoDot:2
- +23 SET ABMCAT=""
- +24 FOR
- SET ABMCAT=$ORDER(ABMPP(ABMIIEN,ABMCAT))
- IF ABMCAT=""
- QUIT
- Begin DoDot:3
- +25 SET ABMLN=0
- +26 FOR
- SET ABMLN=$ORDER(ABMPP(ABMIIEN,ABMCAT,ABMLN))
- IF +ABMLN=0
- QUIT
- Begin DoDot:4
- +27 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,5)="Y"
- SET ABMP("CBAMT")=ABMP("CBAMT")+($FNUMBER($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U),"-"))
- +28 IF ABMCAT="P"
- SET ABMPM("PD")=+$GET(ABMPM("PD"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- +29 IF ABMCAT="A"
- Begin DoDot:5
- +30 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=3
- SET ABMPM("WO")=+$GET(ABMPM("WO"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- +31 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=4
- SET ABMPM("NONC")=+$GET(ABMPM("NONC"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- +32 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=13
- SET ABMPM("DED")=+$GET(ABMPM("DED"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- +33 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=14
- SET ABMPM("COI")=+$GET(ABMPM("COI"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- +34 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=15
- SET ABMPM("PENS")=+$GET(ABMPM("PENS"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- +35 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=16
- SET ABMPM("GRP")=+$GET(ABMPM("GRP"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- +36 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=19
- SET ABMPM("REF")=+$GET(ABMPM("REF"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- +37 IF $PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=20
- SET ABMPM("PCR")=+$GET(ABMPM("PCR"))+($PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
- End DoDot:5
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +38 ;
- +39 WRITE !,"Payment Amount....: "
- SET ABMNFLG=1
- WRITE $$DOLAMT(ABMPM("PD"))
- KILL ABMNFLG
- +40 WRITE ?40,"ORIGINAL BILL AMOUNT: ",$JUSTIFY(+$GET(ABMP("OBAMT")),10,2)
- +41 WRITE !,"Deductible Amount.: ",$$DOLAMT(ABMPM("DED"))
- +42 WRITE ?40,"Current Charges.....: ",$JUSTIFY(+$GET(ABMPM("TOT")),10,2)
- +43 WRITE !,"Co-pay/ins Amount.: ",$$DOLAMT(ABMPM("COI"))
- +44 WRITE ?40,"Current Bill Amount.: ",$$EN^ABMVDF("HIN"),$JUSTIFY(+$GET(ABMP("CBAMT")),10,2),$$EN^ABMVDF("HIF")
- +45 WRITE !,"Write Off.........: ",$$DOLAMT(ABMPM("WO"))
- +46 WRITE !,"Non-Covered Amount: ",$$DOLAMT(ABMPM("NONC"))
- +47 WRITE !,"Penalty Amount....: ",$$DOLAMT(ABMPM("PENS"))
- +48 WRITE !,"Grouper Allowance.: ",$$DOLAMT(ABMPM("GRP"))
- +49 WRITE !,"Refund............: ",$$DOLAMT(ABMPM("REF"))
- +50 WRITE !,"Payment Credits...: ",$$DOLAMT(ABMPM("PCR"))
- +51 ;
- +52 SET ABMPRI=0
- +53 FOR
- SET ABMPRI=$ORDER(ABMPL(ABMPRI))
- IF +ABMPRI=0
- QUIT
- Begin DoDot:1
- +54 SET ABMIIEN=0
- +55 SET ABMPRIS=ABMPRI
- +56 FOR
- SET ABMIIEN=$ORDER(ABMPL(ABMPRI,ABMIIEN))
- IF +ABMIIEN=0
- QUIT
- Begin DoDot:2
- +57 SET ABMSTAT=$PIECE(ABMPL(ABMPRI,ABMIIEN),U,2)
- +58 SET ABMINS=$PIECE(ABMPL(ABMPRI,ABMIIEN),U)
- +59 SET ABMSTAT=$SELECT(ABMSTAT="F":"FLAGGED",ABMSTAT="I":"ACTIVE",ABMSTAT="P":"PENDING",ABMSTAT="U":"UNBILLABLE",ABMSTAT="C":"COMPLETED",ABMSTAT="B":"BILLED",ABMSTAT="L":"PARTIAL",1:"")
- +60 WRITE !!,"["_ABMPRI_"] INSURER: ",$EXTRACT($PIECE($GET(^AUTNINS(ABMIIEN,0)),U),1,27)
- +61 WRITE ?40,"PRIORITY ORDER: ",ABMPRI
- +62 WRITE ?62,"STATUS: ",$SELECT(ABMSTAT="COMPLETED":$$EN^ABMVDF("RVN"),1:""),ABMSTAT,$SELECT(ABMSTAT="COMPLETED":$$EN^ABMVDF("RVF"),1:"")
- +63 SET ABMCOV=0
- +64 FOR
- SET ABMCOV=$ORDER(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,11,ABMCOV))
- IF +ABMCOV=0
- QUIT
- Begin DoDot:3
- +65 IF $PIECE($GET(^AUTNINS(ABMIIEN,0)),U)["MEDICARE"
- Begin DoDot:4
- +66 WRITE !?14,"COVERAGE TYPE: ",$PIECE($GET(^AUTTPIC(ABMCOV,0)),U)
- +67 SET ABMCOV=$ORDER(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,11,ABMCOV))
- +68 IF +ABMCOV'=0
- WRITE ", ",$PIECE($GET(^AUTTPIC(ABMCOV,0)),U)
- End DoDot:4
- +69 IF '$TEST
- WRITE !?14,"COVERAGE TYPE: ",$PIECE($GET(^AUTTPIC(ABMCOV,0)),U)
- End DoDot:3
- +70 SET ABMCAT=""
- +71 FOR
- SET ABMCAT=$ORDER(ABMPP(ABMIIEN,ABMCAT),-1)
- IF ABMCAT=""
- QUIT
- Begin DoDot:3
- +72 SET ABMLN=0
- +73 FOR
- SET ABMLN=$ORDER(ABMPP(ABMIIEN,ABMCAT,ABMLN))
- IF +ABMLN=0
- QUIT
- Begin DoDot:4
- +74 IF +$PIECE(ABMPP(ABMIIEN,ABMCAT,ABMLN),U)=0
- QUIT
- +75 IF +$GET(ABMLNSV)<ABMLN
- SET ABMLNSV=ABMLN
- +76 SET ABMDAMT=$PIECE($GET(ABMPP(ABMIIEN,ABMCAT,ABMLN)),U)
- +77 IF ABMCAT="P"
- SET ABMNFLG=1
- +78 SET ABMDAMT=$$DOLAMT(ABMDAMT)
- +79 KILL ABMNFLG
- +80 IF ABMCAT="P"
- WRITE !?6,"PAYMENT: ",ABMDAMT
- +81 IF '$TEST
- Begin DoDot:5
- +82 WRITE !?3,"ADJUSTMENT: ",ABMDAMT
- +83 SET ABMPREC=$GET(ABMPP(ABMIIEN,ABMCAT,ABMLN))
- +84 IF $PIECE(ABMPREC,U,2)'=""
- WRITE ?28,"[",$PIECE(ABMPREC,U,2),"] ",$EXTRACT($PIECE($GET(^BAR(90052.01,$PIECE(ABMPREC,U,2),0)),U),1,18)
- +85 IF $PIECE(ABMPREC,U,3)'=""
- WRITE ?48,"[",$PIECE(ABMPREC,U,3),"] ",$EXTRACT($PIECE($GET(^BARTBL($PIECE(ABMPREC,U,3),0)),U),1,18)
- +86 IF $PIECE($GET(ABMPREC),U,4)'=""
- Begin DoDot:6
- +87 WRITE ?75,"["_$PIECE(^BARADJ($PIECE($GET(ABMPREC),U,4),0),U)_"]"
- +88 IF $PIECE(^BARADJ($PIECE(ABMPREC,U,4),0),U,3)'=$PIECE(ABMPREC,U,2)
- SET ABMMFLG=1
- +89 IF $PIECE(^BARADJ($PIECE(ABMPREC,U,4),0),U,4)'=$PIECE(ABMPREC,U,3)
- SET ABMMFLG=1
- End DoDot:6
- +90 IF $PIECE($GET(ABMPREC),U,4)=""
- IF ($PIECE(ABMPREC,U)'=0)
- SET ABMSFLG=1
- End DoDot:5
- End DoDot:4
- End DoDot:3
- End DoDot:2
- End DoDot:1
- +91 WRITE !,ABMDASH,!
- +92 ;I ((ABMP("EXP")=21)!(ABMP("EXP")=22)!(ABMP("EXP")=23)) D ;abm*2.6*6 5010
- +93 ;I ((ABMP("EXP")=21)!(ABMP("EXP")=22)!(ABMP("EXP")=23)!(ABMP("EXP")=32)) D ;abm*2.6*6 5010 ;abm*2.6*8 5010
- +94 ;abm*2.6*6 5010 ;abm*2.6*8 5010
- IF ((ABMP("EXP")=21)!(ABMP("EXP")=22)!(ABMP("EXP")=23)!(ABMP("EXP")=31)!(ABMP("EXP")=32)!(ABMP("EXP")=33))
- Begin DoDot:1
- +95 IF $GET(ABMSFLG)=1
- WRITE "ERROR: STANDARD ADJUSTMENT CODE NOT ENTERED FOR ADJUSTMENT",!
- +96 IF $GET(ABMMFLG)=1
- WRITE "ERROR: STANDARD ADJUSTMENT REASON DOESN'T MATCH ADJUSTMENT CATEGORY/REASON",!
- +97 IF ABMP("CBAMT")<0
- WRITE "ERROR: NEGATIVE BALANCE ON BILL NOT ALLOWED",!
- SET ABMSFLG=1
- +98 IF $GET(ABMSFLG)=1!($GET(ABMMFLG)=1)
- WRITE ABMDASH,!
- End DoDot:1
- +99 WRITE "**Use the EDIT option to populate the Standard Adjustment Reason Code**",!
- +100 ;remove flag for other checks of this error
- IF '$TEST
- KILL ABMSFLG,ABMMFLG
- +101 ;
- +102 SET ABMP("OPT")="AEQ"
- +103 SET ABMP("DFLT")="Q"
- +104 DO SEL^ABMDEOPT
- +105 IF "AE"'[$EXTRACT(Y)
- GOTO XIT
- +106 IF $DATA(DTOUT)!$DATA(DUOUT)!$DATA(DIROUT)
- GOTO XIT
- +107 SET ABM("DO")=$SELECT($EXTRACT(Y)="A":"ADD",$EXTRACT(Y)="E":"EDIT",1:"XIT")
- DO @ABM("DO")
- GOTO DISP
- XIT ;
- +1 DO XIT^ABMPPAD1
- +2 QUIT
- DOLAMT(AMT) ;
- +1 QUIT $SELECT(($EXTRACT(AMT,1)="-"!($GET(ABMNFLG)=1))&(AMT'=0):"("_$JUSTIFY($SELECT($EXTRACT(AMT)="-":$EXTRACT(AMT,2,$LENGTH(AMT)),1:AMT),10,2)_")",1:$JUSTIFY(+$GET(AMT),11,2))
- ADD ;
- +1 DO ADD^ABMPPAD1
- +2 IF ($GET(ABMEFLG)=1)
- QUIT
- +3 DO EDIT2
- +4 QUIT
- EDIT ;
- +1 DO EDIT^ABMPPAD1
- +2 ;tried to edit active insurer OR no trans selected
- IF ($GET(ABMEFLG)=1)
- QUIT
- EDIT2 ;
- +1 DO EDIT2^ABMPPAD1
- +2 DO ^ABMPPFLR
- +3 QUIT