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

ABMDF11Y.m

Go to the documentation of this file.
  1. ABMDF11Y ; IHS/ASDST/DMJ - PRINT UB92 ;
  1. ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
  1. ;Original;DMJ;
  1. ;
  1. ;IHS/DSD/LSL -3/23/98 - Add to line tag 18 to quit print if
  1. ;itemized for flat rate billing on a UB-92.
  1. ;
  1. ;IHS/ASDS/DMJ - 04/20/00 - V2.4 Patch 1 - NOIS XAA-0500-200043
  1. ; Allow value codes etc to print leading zeroes and alpha
  1. ;
  1. ;IHS/ASDS/SDH - 11/27/01 - v2.4 p10 - NOIS UAA-0901-170076
  1. ; Modified so it would print the address of the insurer if that
  1. ; is what is selected in UB-92 FL38 in site parameters
  1. ;
  1. ;IHS/SD/SDR - 11/6/2003 - added code to print DOS in form locator 45
  1. ;
  1. ; IHS/SD/SDR - v2.5 p8 - IM13324/IM15558
  1. ; Added code to format 0 to 0.00
  1. ;
  1. ; IHS/SD/SDR - v2.5 p8 - IM15034
  1. ; Modified to print all fields on 2-page claims
  1. ;
  1. ; IHS/SD/SDR - v2.5 p8 - task 6
  1. ; format for dollar amount or zip code
  1. ;
  1. ; IHS/SD/SDR - v2.5 p9 - IM16660
  1. ; 4-digit revenue codes
  1. ;
  1. ; IHS/SD/SDR - v2.5 p9 - IM17247
  1. ; Print write MEDICARE when insurer is Railroad
  1. ;
  1. ; IHS/SD/SDR - v2.5 p9 - IM15413
  1. ; Print OUTPATIENT CLINIC line when EPSDT
  1. ;
  1. ; IHS/SD/SDR - v2.5 p9 - IM17888
  1. ; Add Rx number in FL44
  1. ;
  1. ; IHS/SD/SDR - v2.5 p10 - IM17247
  1. ; Changed RAILROAD to RAILROAD MEDICARE
  1. ;
  1. ; IHS/SD/SDR - v2.5 p10 - IM20227
  1. ; Changed hardset of 001 rev code to 0001
  1. ;
  1. ; IHS/SD/SDR - v2.5 p10 - IM20309
  1. ; Added code to check for RX in FL44 parameter
  1. ;
  1. ; IHS/SD/SDR - v2.5 p10 - IM20395
  1. ; Split line bundled by rev code
  1. ;
  1. ; IHS/SD/SDR - v2.5 p10 - IM22017
  1. ; Removed address check for Medicare/Medicaid
  1. ;
  1. ; IHS/SD/SDR - v2.5 p11 - IM22386
  1. ; Removed duplicate 0510 line from claim
  1. ;
  1. ;**********************************************************************
  1. 13 ; EP
  1. W !
  1. K ABMR
  1. S ABM("9SP")=" "
  1. N I
  1. F I=160:10:200 D
  1. .D @(I_"^ABMER41A")
  1. N I
  1. F I=210:10:390 D
  1. .D @(I_"^ABMER41")
  1. ; Policy holder street address
  1. S ABMDE=$G(ABM(9000003.1,+$G(ABME("PH")),.09,"E"))_"^^40"
  1. D WRT^ABMDF11W ; form locator #38
  1. I ABM38FLG["I" D
  1. .S ABMDE=ABMISTR_"^^40"
  1. .D WRT^ABMDF11W
  1. I ABMR(41,160)'="" D
  1. .S ABMDE=ABMR(41,160)_"^43^2" ; Value code 1
  1. .D WRT^ABMDF11W ; form locator #39a
  1. I ($TR(ABMR(41,170)," ",""))'="" D
  1. .I ABMR(41,160)="A0" S ABMDE=+ABMR(41,170)_"^46^9"
  1. .E S ABMDE=$FN(+ABMR(41,170),"",2)_"^46^9R" ;Value Amt 1
  1. .D WRT^ABMDF11W ; form locator #39a
  1. I ABMR(41,180)'="" D
  1. .S ABMDE=ABMR(41,180)_"^56^2" ; Value code 2
  1. .D WRT^ABMDF11W ; form locator #40a
  1. I ($TR(ABMR(41,190)," ",""))'="" D
  1. .I ABMR(41,180)="A0" S ABMDE=+ABMR(41,190)_"^59^9"
  1. .E S ABMDE=$FN(+ABMR(41,190),"",2)_"^59^9R"
  1. .D WRT^ABMDF11W ; form locator #40a
  1. I ABMR(41,200)'="" D
  1. .S ABMDE=ABMR(41,200)_"^69^2" ; Value code 3
  1. .D WRT^ABMDF11W ; form locator #41a
  1. I ($TR(ABMR(41,210)," ",""))'="" D
  1. .I ABMR(41,200)="A0" S ABMDE=+ABMR(41,210)_"^72^9"
  1. .E S ABMDE=+ABMR(41,210)_"^72^9R"
  1. .D WRT^ABMDF11W ; form locator #41a
  1. ;
  1. 14 ;
  1. W !
  1. I ABM38FLG["I" D
  1. .S ABMDE=ABMICTY_", "_$P($G(^DIC(5,ABMIST,0)),U,2)_" "_ABMIZIP_"^^40"
  1. .D WRT^ABMDF11W
  1. I ABMR(41,220)'="" D
  1. .S ABMDE=ABMR(41,220)_"^43^2" ; Value code 4
  1. .D WRT^ABMDF11W ; form locator #39b
  1. I ABMR(41,230) D
  1. .I ABMR(41,220)="A0" S ABMDE=+ABMR(41,230)_"^46^9"
  1. .E S ABMDE=+ABMR(41,230)_"^46^9R" ; Value amount 4
  1. .D WRT^ABMDF11W ; form locator #39b
  1. I ABMR(41,240)'="" D
  1. .S ABMDE=ABMR(41,240)_"^56^2" ; Value code 5
  1. .D WRT^ABMDF11W ; form locator #40b
  1. I ABMR(41,250) D
  1. .I ABMR(41,240)="A0" S ABMDE=+ABMR(41,250)_"^59^9"
  1. .E S ABMDE=+ABMR(41,250)_"^59^9R" ; Value amount 5
  1. .D WRT^ABMDF11W ; form locator #40b
  1. I ABMR(41,260)'="" D
  1. .S ABMDE=ABMR(41,260)_"^69^2" ; Value code 6
  1. .D WRT^ABMDF11W ; form locator #41b
  1. I ABMR(41,270) D
  1. .I ABMR(41,260)="A0" S ABMDE=+ABMR(41,270)_"^72^9"
  1. .E S ABMDE=+ABMR(41,270)_"^72^9R" ; Value amount 6
  1. .D WRT^ABMDF11W ; form locator #41b
  1. Q:$G(ABMORE)
  1. ;
  1. 15 ;
  1. W !
  1. K ABM
  1. I ABMR(41,280)'="" D
  1. .S ABMDE=ABMR(41,280)_"^43^2" ; Value code 7
  1. .D WRT^ABMDF11W ; form locator #39c
  1. I ABMR(41,290) D
  1. .I ABMR(41,280)="A0" S ABMDE=+ABMR(41,290)_"^46^9"
  1. .E S ABMDE=+ABMR(41,290)_"^46^9R" ; Value amount 7
  1. .D WRT^ABMDF11W ; form locator #39c
  1. I ABMR(41,300)'="" D
  1. .S ABMDE=ABMR(41,300)_"^56^2" ; Value code 8
  1. .D WRT^ABMDF11W ; form locator #40c
  1. I ABMR(41,310) D
  1. .I ABMR(41,300)="A0" S ABMDE=+ABMR(41,310)_"^59^9"
  1. .E S ABMDE=+ABMR(41,310)_"^59^9R" ; Value amount 8
  1. .D WRT^ABMDF11W ; form locator #40c
  1. I ABMR(41,320)'="" D
  1. .S ABMDE=ABMR(41,320)_"^69^2" ; Value code 9
  1. .D WRT^ABMDF11W ; form locator #41c
  1. I ABMR(41,330) D
  1. .I ABMR(41,320)="A0" S ABMDE=+ABMR(41,330)_"^72^9"
  1. .E S ABMDE=+ABMR(41,330)_"^72^9R" ; Value amount 9
  1. .D WRT^ABMDF11W ; form locator #41c
  1. ;
  1. 16 ;
  1. W !
  1. I ABMR(41,340)'="" D
  1. .S ABMDE=ABMR(41,340)_"^43^2" ; Value code 10
  1. .D WRT^ABMDF11W ; form locator #39d
  1. I ABMR(41,350) D
  1. .I ABMR(41,340)="A0" S ABMDE=+ABMR(41,350)_"^46^9"
  1. .E S ABMDE=+ABMR(41,350)_"^46^9R" ; Value amount 10
  1. .D WRT^ABMDF11W ; form locator #39d
  1. I ABMR(41,360)'="" D
  1. .S ABMDE=ABMR(41,360)_"^56^2" ; Value code 11
  1. .D WRT^ABMDF11W ; form locator #40d
  1. I ABMR(41,370) D
  1. .I ABMR(41,360)="A0" S ABMDE=+ABMR(41,370)_"^59^9"
  1. .E S ABMDE=+ABMR(41,370)_"^59^9R" ; Value amount 11
  1. .D WRT^ABMDF11W ; form locator #40d
  1. I ABMR(41,380)'="" D
  1. .S ABMDE=ABMR(41,380)_"^69^2" ; Value code 12
  1. .D WRT^ABMDF11W ; form locator #41d
  1. I ABMR(41,390) D
  1. .I ABMR(41,380)="A0" S ABMDE=+ABMR(41,390)_"^72^9"
  1. .E S ABMDE=+ABMR(41,390)_"^72^9R" ; Value amount 12
  1. .D WRT^ABMDF11W ; form locator #41d
  1. ;
  1. 18 ;
  1. ; Lines 18 - 40 on form (description area)
  1. ; ABMVR(IEN,code,counter) = IEN ^ Code ^ Modifier ^ 2nd Modifier ^
  1. ; Total units ^ Total charges ^ ^ Unit charge ^
  1. ; NDC name or description ^ date/time
  1. W !
  1. K ABMRV
  1. D ORV^ABMERGRV ; get other revenue codes
  1. D P1^ABMERGRV ; Build ABMVR of revenue codes
  1. ; Itemized UB-92 flag (1=yes, 0=no)
  1. S ABMITMZ=$P($G(^ABMNINS(DUZ(2),ABMP("INS"),1,ABMP("VTYP"),0)),"^",12)
  1. K I,J,L
  1. S I=0
  1. S (ABMCTR,ABMRV("ZZTOT"),ABMRV("NCTOT"))=0
  1. F S I=$O(ABMRV(I)) Q:'I D
  1. .S J=-1
  1. .F S J=$O(ABMRV(I,J)) Q:J="" D
  1. ..S L=0
  1. ..F S L=$O(ABMRV(I,J,L)) Q:+L=0 D
  1. ...; Grand total charges
  1. ...I $P($G(^ABMDVTYP(ABMP("VTYP"),0)),U)["EPSDT",(+$P($G(ABMRV(I,J,L)),U,2)=0) D
  1. ....S $P(ABMRV(I,J,L),U,9)="OUTPATIENT CLINIC"
  1. ...S:J'="ZZTOT" ABMRV("ZZTOT")=ABMRV("ZZTOT")+$P(ABMRV(I,J,L),U,6)
  1. ...; Grand total noncovered charges
  1. ...S:J'="ZZTOT" ABMRV("NCTOT")=ABMRV("NCTOT")+$P(ABMRV(I,J,L),U,7)
  1. ...; if not itemized bill and not done, accumulate totals
  1. ...I 'ABMITMZ,J'="ZZTOT" D
  1. ....S $P(ABMRV(I,"ZZTOT",1),U)=I ; IEN to REVENUE CODE
  1. ....S:$D(ABMP("CPT")) $P(ABMRV(I,"ZZTOT",1),"^",2)=ABMP("CPT") ;CPT code
  1. ....N K
  1. ....; Accumulate totals per revenue code
  1. ....F K=5:1:7 S $P(ABMRV(I,"ZZTOT",1),U,K)=$P(ABMRV(I,"ZZTOT",1),U,K)+$P(ABMRV(I,J,L),U,K)
  1. ....S $P(ABMRV(I,"ZZTOT",1),U,8)=$P(ABMRV(I,J,L),U,8) ; unit charge
  1. ....Q
  1. ...I 'ABMITMZ,J'="ZZTOT" Q
  1. ...I ABMITMZ,(J["TOT") Q ; If itemized and done, Q
  1. ...W !
  1. ...S ABMCTR=ABMCTR+1 ; Count items
  1. ...; If more than 22 items, complete bottom of form,
  1. ...; then start a new page
  1. ...I ABMCTR>22 D
  1. ....S ABMORE=1
  1. ....N I,J
  1. ....D 42
  1. ....D ^ABMDF11Z
  1. ....W $$EN^ABMVDF("IOF")
  1. ....N I,J
  1. ....D 1^ABMDF11X
  1. ....K ABMORE
  1. ....N I
  1. ....F I=1:1:4 W !
  1. ....S ABMCTR=1
  1. ....Q
  1. ...S ABMDE=$$GETREV^ABMDUTL(I)_"^^4R" ; Revenue code
  1. ...D WRT^ABMDF11W ; form locator #42
  1. ...; If description is blank, get it from visit type in INSURER file
  1. ...I $P(ABMRV(I,J,L),U,9)="" D
  1. ....S ABMDE=$P($G(^ABMNINS(DUZ(2),ABMP("INS"),1,ABMP("VTYP"),0)),U,9)
  1. ....S:ABMDE="" ABMDE=$P($G(^AUTTREVN(I,0)),U,2) ; standard abbreviation
  1. ....S ABMDE=ABMDE_"^5^24" ; Description
  1. ....D WRT^ABMDF11W ; form locator #43
  1. ....Q
  1. ...; If description, use it
  1. ...I $P(ABMRV(I,J,L),U,9)'="" D
  1. ....S ABMDE=$P(ABMRV(I,J,L),U,9)_"^5^24" ; Description
  1. ....D WRT^ABMDF11W ; form locator #43
  1. ....Q
  1. ...; HCPCS/rates -- form locator #44
  1. ...S ABMDE=$S($L($P(ABMRV(I,J,L),U,2))>3:$P(ABMRV(I,J,L),U,2)_$S($P(ABMRV(I,J,L),U,3)]"":"-"_$P(ABMRV(I,J,L),U,3),1:"")_"^30^9",$P(ABMRV(I,J,L),U,8)&(+$P(ABMRV(I,J,L),U,2)'=0):$J($P(ABMRV(I,J,L),U,8),1,2)_"^30^9R",1:"")
  1. ...I $P($G(ABMRV(I,J,L)),U,14)'="",($P($G(^ABMNINS(DUZ(2),ABMP("INS"),1,ABMP("VTYP"),0)),U,24)="Y") S ABMDE="RX"_$P(ABMRV(I,J,L),U,14)_"^30^9"
  1. ...D WRT^ABMDF11W
  1. ...S ABMDE=$$MDY^ABMDUTL($P(ABMRV(I,J,L),U,10))_"^40^6" ;DOS
  1. ...D WRT^ABMDF11W ;form locator #45
  1. ...S ABMDE=$P(ABMRV(I,J,L),U,5)_"^47^7R" ; Total units per item
  1. ...D WRT^ABMDF11W ; form locator #46
  1. ...S ABMDE=$FN($P(ABMRV(I,J,L),U,6),"T",2)
  1. ...S ABMDE=$TR(ABMDE,".")_"^55^10R" ; Total charges per item
  1. ...D WRT^ABMDF11W ; form locator #47
  1. ...S ABMDE=$FN($P(ABMRV(I,J,L),U,7),"T",2)
  1. ...I +ABMDE D
  1. ....S ABMDE=$TR(ABMDE,".")_"^66^10R" ; Total noncover charges per item
  1. ....D WRT^ABMDF11W ; form locator #48
  1. ....Q
  1. W !
  1. S ABMDE="0001 TOTAL^^10"
  1. D WRT^ABMDF11W
  1. S ABMDE=$TR($FN(ABMRV("ZZTOT"),"T",2),".")_"^55^10R" ; Grand total
  1. D WRT^ABMDF11W ; last item in description section
  1. I +ABMRV("NCTOT") D
  1. .S ABMDE=$TR($FN(ABMRV("NCTOT"),"T",2),".")_"^66^10R"
  1. .D WRT^ABMDF11W ; Grand total - noncovered items
  1. .Q
  1. N I
  1. F I=1:1:22-ABMCTR W !
  1. K ABMRV
  1. ;
  1. 42 ;
  1. ; Lines 42 - 44
  1. W !
  1. K ABMP("SET")
  1. D ^ABMER30 ; get insurer and payment data
  1. N I
  1. F I=1:1:3 D
  1. .W !
  1. .Q:'$D(ABMREC(30,I))
  1. .; Insurer name_" "_Payor Sub Identification
  1. .S ABMDE=$S($E(ABMREC(30,I),54,78)["RAILROAD":"RAILROAD MEDICARE",1:$E(ABMREC(30,I),54,78))_" "_$E(ABMREC(30,I),31,34)_"^^25"
  1. .D WRT^ABMDF11W ; form locator #50
  1. .S ABMDE=$E(ABMREC(30,I),160,172)_"^26^13" ; Provider ID (blank)
  1. .D WRT^ABMDF11W ; form locator #51
  1. .S ABMDE=$E(ABMREC(30,I),142)_"^40^1" ; Release code
  1. .D WRT^ABMDF11W ; form locator #52
  1. .S ABMDE=$E(ABMREC(30,I),143)_"^43^1" ; Ben Assgn Indicator
  1. .D WRT^ABMDF11W ; form locator #53
  1. .S ABMDE=+$E(ABMREC(30,I),173,182)_" ^45^10R" ; 3PB pymnt recieve
  1. .I +ABMDE D WRT^ABMDF11W ; form locator #54
  1. .S ABMDE=+$E(ABMREC(30,I),183,192)_" ^56^10R" ; Est 3PB amt due
  1. .I +ABMDE D WRT^ABMDF11W ; form locator #55
  1. K ABMR
  1. Q