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

ABMPPADJ.m

Go to the documentation of this file.
  1. 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
  1. ; split routine to ABMPPAD1 because of size
  1. ;
  1. ;IHS/SD/SDR - v2.5 p13 - NO IM
  1. ;
  1. ;IHS/SD/SDR 2.6*6 5010 - added export mode 32
  1. ;IHS/SD/SDR 2.6*19 HEAT168248 - Added code to put each SAR only once with the total amt. In split routine, ABMPPAD3
  1. ;IHS/SD/SDR 2.6*21 HEAT118718 - Check for replacement insurer
  1. ;IHS/SD/SDR 2.6*23 CR9730 Added call for PRINT ORDER CHARGE SCREEN page
  1. ;
  1. ;ABMPL(Insurer priority, Insurer IEN)=
  1. ; P1=13 multiple IEN
  1. ; P2=Billing status
  1. ;ABMPP(Insurer IEN, "P" or "A", Counter)=
  1. ; P1=Amount
  1. ; P2=Adj Category
  1. ; P3=Trans. Type
  1. ; P4=Std Adj. Reason
  1. ; P5=billable?(Y/N)
  1. ; P6=Payment multiple IEN
  1. DISPCK ; chk if no complete insurer OR if 2 export modes on claim; don't do if either is true
  1. ;
  1. ;if medicaid insurer type, UB-04 or 837I, itemized, and they chose to display print order screen
  1. 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
  1. K ABMTFLAG,ABMSFLG,ABMMFLG
  1. K ABMPM
  1. N ABMPP
  1. S ABMA=0
  1. K ABMAFLG,ABMMFLG
  1. F S ABMA=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMA)) Q:+ABMA=0 D
  1. .S ABMAI=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMA,0)),U)
  1. .Q:ABMAI="" ;abm*2.6*10 HEAT74239
  1. .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
  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
  1. I $G(ABMAFLG)=1,($G(ABMMFLG)=1) Q ;don't do COB page cuz there is a tribal insurer and Medicare
  1. K ABMAFLG,ABMMFLG
  1. D DISPCK^ABMPPAD1
  1. GATHER Q:$G(ABMCHK)=1 ;quit if no complete insurer or 2 export modes on claim
  1. K ABMPM,ABMPP
  1. D SETVAR^ABMPPAD1
  1. S ABMPHRN=$P($G(^AUPNPAT(ABMP("PDFN"),41,DUZ(2),0)),U,2)
  1. S ABMBSUF=$P($G(^ABMDPARM(ABMP("LDFN"),1,2)),U,4)
  1. ;loop thru active bills
  1. S ABMBSTA=""
  1. F S ABMBSTA=$O(^ABMDBILL(DUZ(2),"AS",ABMP("CDFN"),ABMBSTA)) Q:ABMBSTA="" D
  1. .Q:ABMBSTA="X"
  1. .S ABMBFIEN=0
  1. .F S ABMBFIEN=$O(^ABMDBILL(DUZ(2),"AS",ABMP("CDFN"),ABMBSTA,ABMBFIEN)) Q:+ABMBFIEN=0 D
  1. ..S ABMBNUM=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U)
  1. ..;get previous payments
  1. ..S ABMPIEN=0,ABMTFLAG=0
  1. ..F S ABMPIEN=$O(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN)) Q:+ABMPIEN=0 D
  1. ...S ABMLN=+$G(ABMLN)+1
  1. ...S ABMPREC=$G(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN,0))
  1. ...;check if summary or split out entries; if split set flag so it won't
  1. ...;get trans from A/R again
  1. ...S ABMBINS=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U,8) ;abm*2.6*6
  1. ...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
  1. ....S ABMTFLAG=1
  1. ....S ABMOPDT=$P(ABMPREC,U)
  1. ....I +$P(ABMPREC,U,10)'=0 S ABMCAT="P",ABMAMT=$P(ABMPREC,U,10)
  1. ....E D
  1. .....S ABMCAT="A"
  1. .....S ABMADJC=$P(ABMPREC,U,15)
  1. .....S ABMADJT=$P(ABMPREC,U,16)
  1. .....S ABMSAR=$P(ABMPREC,U,17)
  1. .....I ABMADJC=3 S ABMAMT=$P(ABMPREC,U,6)
  1. .....I ABMADJC=4 S ABMAMT=$P(ABMPREC,U,7)
  1. .....I ABMADJC=13 S ABMAMT=$P(ABMPREC,U,3)
  1. .....I ABMADJC=14 S ABMAMT=$P(ABMPREC,U,4)
  1. .....I ABMADJC=15 S ABMAMT=$P(ABMPREC,U,9)
  1. .....I ABMADJC=16 S ABMAMT=$P(ABMPREC,U,12)
  1. .....I ABMADJC=19 S ABMAMT=$P(ABMPREC,U,13)
  1. .....I ABMADJC=20 S ABMAMT=$P(ABMPREC,U,14)
  1. ....S ABMBINS=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,0)),U,8)
  1. ....;start new abm*2.6*21 IHS/SD/SDR HEAT118718
  1. ....I '$D(^ABMDBILL(DUZ(2),ABMBFIEN,13,"B",ABMBINS)) D ;means it is a replacement insruer
  1. .....S ABMTIEN=0,ABMTFLG=0
  1. .....F S ABMTIEN=$O(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN)) Q:'ABMTIEN D Q:ABMTFLG
  1. ......I $P($G(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U,11)=ABMBINS D ;this is our replacement
  1. .......S ABMBINS=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U)
  1. .......S ABMTFLG=1
  1. .....K ABMTIEN,ABMTFLG
  1. ....;end new abm*2.6*21 IHS/SD/SDR HEAT118718
  1. ....Q:(+$G(ABMAMT)=0)&(($G(ABMCAT)="A")&(+$G(ABMADJC)=0)) ;stop <UNDEF>GATHER+42 error
  1. ....S ABMPP(ABMBINS,ABMCAT,ABMLN)=ABMAMT_$S(ABMCAT="A":"^"_ABMADJC_"^"_ABMADJT_"^"_ABMSAR,1:"")
  1. ....I ABMCAT="P" S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N"
  1. ....I ABMCAT="A",(ABMADJC=13!(ABMADJC=14)) S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="Y"
  1. ....I ABMCAT="A",(ABMADJC'=13&(ABMADJC'=14)) S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N"
  1. ....S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,6)=ABMPIEN ;save payment IEN w/trans
  1. ...S ABMILST(ABMBINS,ABMBFIEN)="" ;abm*2.6*6 5010
  1. ...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
  1. ....S ABMOPDT=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,3,ABMPIEN,0)),U) ;original pymt dt
  1. ....K ^ABMDBILL(DUZ(2),ABMBFIEN,3) ;remove summary entry; individual entries will be filed later
  1. ..Q:($G(ABMTFLAG)=1) ;trans split; skip next part
  1. ..;get trans for those bills
  1. ..I $P($G(^ABMDPARM(ABMP("LDFN"),1,2)),U,4)'="" S ABMBNUM=$G(ABMBNUM)_"-"_ABMBSUF
  1. ..I $P($G(^ABMDPARM(ABMP("LDFN"),1,3)),U,3)=1 S ABMBNUM=$G(ABMBNUM)_"-"_ABMPHRN
  1. ..;
  1. ..S ABMHOLD=DUZ(2)
  1. ..S ABMSAT=ABMP("LDFN") ;Satellite = 3P Visit loc
  1. ..S ABMPAR=0 ;Parent
  1. ..; check site active at DOS to ensure bill added to correct site
  1. ..S DA=0
  1. ..F S DA=$O(^BAR(90052.06,DA)) Q:DA'>0 D Q:ABMPAR
  1. ...Q:'$D(^BAR(90052.06,DA,DA)) ; Pos Parent UNDEF Site Parameter
  1. ...Q:'$D(^BAR(90052.05,DA,ABMSAT)) ; Satellite UNDEF Parent/Satellit
  1. ...Q:+$P($G(^BAR(90052.05,DA,ABMSAT,0)),U,5) ; Par/Sat not usable
  1. ...; Q if sat NOT active at DOS
  1. ...I ABMP("VDT")<$P($G(^BAR(90052.05,DA,ABMSAT,0)),U,6) Q
  1. ...; Q if sat became NOT active before DOS
  1. ...I $P($G(^BAR(90052.05,DA,ABMSAT,0)),U,7),(ABMP("VDT")>$P($G(^BAR(90052.05,DA,ABMSAT,0)),U,7)) Q
  1. ...S ABMPAR=$S(ABMSAT:$P($G(^BAR(90052.05,DA,ABMSAT,0)),U,3),1:"")
  1. ..Q:+ABMPAR=0
  1. ..S DUZ(2)=ABMPAR
  1. ..S ABMAIEN=$O(^BARBL(DUZ(2),"B",ABMBNUM,0))
  1. ..I +$G(ABMAIEN)=0 S:+$G(ABMHOLD)'=0 DUZ(2)=ABMHOLD K ABMHOLD Q ;there isn't an A/R bill w/this number
  1. ..Q:$P($G(^BARAC(DUZ(2),$P($G(^BARBL(DUZ(2),ABMAIEN,0)),U,3),0)),U)'["AUTNINS" ;abm*2.6*10 HEAT70085
  1. ..S ABMBINS=+$P($G(^BARAC(DUZ(2),$P($G(^BARBL(DUZ(2),ABMAIEN,0)),U,3),0)),U) ;abm*2.6*10 HEAT70085
  1. ..;start new abm*2.6*21 IHS/SD/SDR HEAT118718
  1. ..I '$D(^ABMDBILL(DUZ(2),ABMBFIEN,13,"B",ABMBINS)) D ;means it is a replacement insruer
  1. ...S ABMTIEN=0,ABMTFLG=0
  1. ...F S ABMTIEN=$O(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN)) Q:'ABMTIEN D Q:ABMTFLG
  1. ....I $P($G(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U,11)=ABMBINS D ;this is our replacement
  1. .....S ABMBINS=$P($G(^ABMDBILL(DUZ(2),ABMBFIEN,13,ABMTIEN,0)),U)
  1. .....S ABMTFLG=1
  1. ...K ABMTIEN,ABMTFLG
  1. ...S ABMILST(ABMBINS,ABMBFIEN)=""
  1. ..;end new abm*2.6*21 IHS/SD/SDR HEAT118718
  1. ..S ABMTRIEN=0,ABMLN=1
  1. ..F S ABMTRIEN=$O(^BARTR(DUZ(2),"AC",ABMAIEN,ABMTRIEN)) Q:ABMTRIEN="" D
  1. ...S ABMREC=$G(^BARTR(DUZ(2),ABMTRIEN,0))
  1. ...I $G(ABMOPDT)="" S ABMOPDT=$P($P(ABMREC,U),".")
  1. ...Q:+$P(ABMREC,U,2)=0&(+$P(ABMREC,U,3)=0)
  1. ...;S ABMBINS=$P(ABMREC,U,6) ;abm*2.6*10 HEAT70085
  1. ...;Q:$P($G(^BARAC(DUZ(2),ABMBINS,0)),U)'["AUTNINS" ;abm*2.6*10 HEAT70085
  1. ...;S ABMBINS=+$P($G(^BARAC(DUZ(2),ABMBINS,0)),U) ;abm*2.6*10 HEAT70085
  1. ...S ABMTTYP=$P($G(^BARTR(DUZ(2),ABMTRIEN,1)),U,1)
  1. ...S ABMADJC=$P($G(^BARTR(DUZ(2),ABMTRIEN,1)),U,2)
  1. ...S ABMCAT=""
  1. ...I ABMTTYP=40 S ABMCAT="P"
  1. ...I "^3^4^13^14^15^16^19^20^"[("^"_ABMADJC_"^") S ABMCAT="A",ABMTTYP=$P($G(^BARTR(DUZ(2),ABMTRIEN,1)),U,3)
  1. ...Q:ABMCAT=""
  1. ...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
  1. ...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
  1. ...I ABMCAT="P" S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="N",ABMLN=ABMLN+1 Q
  1. ...S $P(ABMPP(ABMBINS,ABMCAT,ABMLN),U,5)="Y",ABMLN=ABMLN+1
  1. ..I +$G(ABMHOLD)'=0 S DUZ(2)=ABMHOLD K ABMHOLD
  1. ..D ^ABMPPAD3 ;split routine abm*2.6*19 IHS/SD/SDR HEAT168248
  1. ..I ABMTFLAG=0 D ^ABMPPFLR ;do filer if trans not split
  1. ;D ^ABMPPAD3 ;split routine abm*2.6*19 IHS/SD/SDR HEAT168248
  1. S ABMTFLAG=1
  1. DISP K ABMSFLG,ABMMFLG
  1. D SETVAR^ABMPPAD1
  1. S ABMDASH="",$P(ABMDASH,"-",80)=""
  1. S ABMZ("TITL")="PRIOR PAYMENTS/ADJUSTMENTS"
  1. S ABMP("SCRN")="A"
  1. S ABMZ("PG")="A"
  1. I '$D(ABMP("DDL")) D SUM^ABMDE1 I 1
  1. E S ABMC("CONT")="" D PAUSE^ABMDE1 G:$D(DUOUT)!$D(DTOUT)!$D(DIROUT) XIT
  1. ;
  1. S ABMINS=0
  1. F S ABMINS=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS)) Q:+ABMINS=0 D
  1. .S ABMIIEN=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U)
  1. .S ABMPRI=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U,2)
  1. .S ABMSTAT=$P($G(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,0)),U,3)
  1. .Q:ABMSTAT'="I"&(ABMSTAT'="C")
  1. .S ABMPL(ABMPRI,ABMIIEN)=ABMINS_"^"_ABMSTAT
  1. ;
  1. S ABMPM("TOT")=ABMP("TOT")-(+$G(ABMP("NC")))
  1. S ABMP("CBAMT")=0
  1. S ABMIPRI=0
  1. F S ABMIPRI=$O(ABMPL(ABMIPRI)) Q:+ABMIPRI=0 D
  1. .S ABMIIEN=0
  1. .F S ABMIIEN=$O(ABMPL(ABMIPRI,ABMIIEN)) Q:+ABMIIEN=0 D
  1. ..S ABMCAT=""
  1. ..F S ABMCAT=$O(ABMPP(ABMIIEN,ABMCAT)) Q:ABMCAT="" D
  1. ...S ABMLN=0
  1. ...F S ABMLN=$O(ABMPP(ABMIIEN,ABMCAT,ABMLN)) Q:+ABMLN=0 D
  1. ....I $P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,5)="Y" S ABMP("CBAMT")=ABMP("CBAMT")+($FN($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U),"-"))
  1. ....I ABMCAT="P" S ABMPM("PD")=+$G(ABMPM("PD"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. ....I ABMCAT="A" D
  1. .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=3 ABMPM("WO")=+$G(ABMPM("WO"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=4 ABMPM("NONC")=+$G(ABMPM("NONC"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=13 ABMPM("DED")=+$G(ABMPM("DED"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=14 ABMPM("COI")=+$G(ABMPM("COI"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=15 ABMPM("PENS")=+$G(ABMPM("PENS"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=16 ABMPM("GRP")=+$G(ABMPM("GRP"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=19 ABMPM("REF")=+$G(ABMPM("REF"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. .....S:$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U,2)=20 ABMPM("PCR")=+$G(ABMPM("PCR"))+($P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U))
  1. ;
  1. W !,"Payment Amount....: " S ABMNFLG=1 W $$DOLAMT(ABMPM("PD")) K ABMNFLG
  1. W ?40,"ORIGINAL BILL AMOUNT: ",$J(+$G(ABMP("OBAMT")),10,2)
  1. W !,"Deductible Amount.: ",$$DOLAMT(ABMPM("DED"))
  1. W ?40,"Current Charges.....: ",$J(+$G(ABMPM("TOT")),10,2)
  1. W !,"Co-pay/ins Amount.: ",$$DOLAMT(ABMPM("COI"))
  1. W ?40,"Current Bill Amount.: ",$$EN^ABMVDF("HIN"),$J(+$G(ABMP("CBAMT")),10,2),$$EN^ABMVDF("HIF")
  1. W !,"Write Off.........: ",$$DOLAMT(ABMPM("WO"))
  1. W !,"Non-Covered Amount: ",$$DOLAMT(ABMPM("NONC"))
  1. W !,"Penalty Amount....: ",$$DOLAMT(ABMPM("PENS"))
  1. W !,"Grouper Allowance.: ",$$DOLAMT(ABMPM("GRP"))
  1. W !,"Refund............: ",$$DOLAMT(ABMPM("REF"))
  1. W !,"Payment Credits...: ",$$DOLAMT(ABMPM("PCR"))
  1. ;
  1. S ABMPRI=0
  1. F S ABMPRI=$O(ABMPL(ABMPRI)) Q:+ABMPRI=0 D
  1. .S ABMIIEN=0
  1. .S ABMPRIS=ABMPRI
  1. .F S ABMIIEN=$O(ABMPL(ABMPRI,ABMIIEN)) Q:+ABMIIEN=0 D
  1. ..S ABMSTAT=$P(ABMPL(ABMPRI,ABMIIEN),U,2)
  1. ..S ABMINS=$P(ABMPL(ABMPRI,ABMIIEN),U)
  1. ..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:"")
  1. ..W !!,"["_ABMPRI_"] INSURER: ",$E($P($G(^AUTNINS(ABMIIEN,0)),U),1,27)
  1. ..W ?40,"PRIORITY ORDER: ",ABMPRI
  1. ..W ?62,"STATUS: ",$S(ABMSTAT="COMPLETED":$$EN^ABMVDF("RVN"),1:""),ABMSTAT,$S(ABMSTAT="COMPLETED":$$EN^ABMVDF("RVF"),1:"")
  1. ..S ABMCOV=0
  1. ..F S ABMCOV=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,11,ABMCOV)) Q:+ABMCOV=0 D
  1. ...I $P($G(^AUTNINS(ABMIIEN,0)),U)["MEDICARE" D
  1. ....W !?14,"COVERAGE TYPE: ",$P($G(^AUTTPIC(ABMCOV,0)),U)
  1. ....S ABMCOV=$O(^ABMDCLM(DUZ(2),ABMP("CDFN"),13,ABMINS,11,ABMCOV))
  1. ....I +ABMCOV'=0 W ", ",$P($G(^AUTTPIC(ABMCOV,0)),U)
  1. ...E W !?14,"COVERAGE TYPE: ",$P($G(^AUTTPIC(ABMCOV,0)),U)
  1. ..S ABMCAT=""
  1. ..F S ABMCAT=$O(ABMPP(ABMIIEN,ABMCAT),-1) Q:ABMCAT="" D
  1. ...S ABMLN=0
  1. ...F S ABMLN=$O(ABMPP(ABMIIEN,ABMCAT,ABMLN)) Q:+ABMLN=0 D
  1. ....Q:+$P(ABMPP(ABMIIEN,ABMCAT,ABMLN),U)=0
  1. ....I +$G(ABMLNSV)<ABMLN S ABMLNSV=ABMLN
  1. ....S ABMDAMT=$P($G(ABMPP(ABMIIEN,ABMCAT,ABMLN)),U)
  1. ....I ABMCAT="P" S ABMNFLG=1
  1. ....S ABMDAMT=$$DOLAMT(ABMDAMT)
  1. ....K ABMNFLG
  1. ....I ABMCAT="P" W !?6,"PAYMENT: ",ABMDAMT
  1. ....E D
  1. .....W !?3,"ADJUSTMENT: ",ABMDAMT
  1. .....S ABMPREC=$G(ABMPP(ABMIIEN,ABMCAT,ABMLN))
  1. .....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)
  1. .....I $P(ABMPREC,U,3)'="" W ?48,"[",$P(ABMPREC,U,3),"] ",$E($P($G(^BARTBL($P(ABMPREC,U,3),0)),U),1,18)
  1. .....I $P($G(ABMPREC),U,4)'="" D
  1. ......W ?75,"["_$P(^BARADJ($P($G(ABMPREC),U,4),0),U)_"]"
  1. ......I $P(^BARADJ($P(ABMPREC,U,4),0),U,3)'=$P(ABMPREC,U,2) S ABMMFLG=1
  1. ......I $P(^BARADJ($P(ABMPREC,U,4),0),U,4)'=$P(ABMPREC,U,3) S ABMMFLG=1
  1. .....I $P($G(ABMPREC),U,4)="",($P(ABMPREC,U)'=0) S ABMSFLG=1
  1. W !,ABMDASH,!
  1. ;I ((ABMP("EXP")=21)!(ABMP("EXP")=22)!(ABMP("EXP")=23)) D ;abm*2.6*6 5010
  1. ;I ((ABMP("EXP")=21)!(ABMP("EXP")=22)!(ABMP("EXP")=23)!(ABMP("EXP")=32)) D ;abm*2.6*6 5010 ;abm*2.6*8 5010
  1. 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
  1. .I $G(ABMSFLG)=1 W "ERROR: STANDARD ADJUSTMENT CODE NOT ENTERED FOR ADJUSTMENT",!
  1. .I $G(ABMMFLG)=1 W "ERROR: STANDARD ADJUSTMENT REASON DOESN'T MATCH ADJUSTMENT CATEGORY/REASON",!
  1. .I ABMP("CBAMT")<0 W "ERROR: NEGATIVE BALANCE ON BILL NOT ALLOWED",! S ABMSFLG=1
  1. .I $G(ABMSFLG)=1!($G(ABMMFLG)=1) W ABMDASH,!
  1. W "**Use the EDIT option to populate the Standard Adjustment Reason Code**",!
  1. E K ABMSFLG,ABMMFLG ;remove flag for other checks of this error
  1. ;
  1. S ABMP("OPT")="AEQ"
  1. S ABMP("DFLT")="Q"
  1. D SEL^ABMDEOPT
  1. I "AE"'[$E(Y) G XIT
  1. G XIT:$D(DTOUT)!$D(DUOUT)!$D(DIROUT)
  1. S ABM("DO")=$S($E(Y)="A":"ADD",$E(Y)="E":"EDIT",1:"XIT") D @ABM("DO") G DISP
  1. XIT ;
  1. D XIT^ABMPPAD1
  1. Q
  1. DOLAMT(AMT) ;
  1. 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))
  1. ADD ;
  1. D ADD^ABMPPAD1
  1. Q:($G(ABMEFLG)=1)
  1. D EDIT2
  1. Q
  1. EDIT ;
  1. D EDIT^ABMPPAD1
  1. Q:($G(ABMEFLG)=1) ;tried to edit active insurer OR no trans selected
  1. EDIT2 ;
  1. D EDIT2^ABMPPAD1
  1. D ^ABMPPFLR
  1. Q