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

ABMER30.m

Go to the documentation of this file.
  1. ABMER30 ; IHS/SD/SDR - UB92 EMC RECORD 30 (Third Party Payor) ;
  1. ;;2.6;IHS 3P BILLING SYSTEM;**14,21**;NOV 12, 2009;Build 379
  1. ;Original;DMJ;01/22/96 10:43 AM
  1. ;
  1. ; IHS/ASDS/LSL - 06/05/00 - V2.4 Patch 1 - NOIS NDA-0500-100042
  1. ; Modify to not subtract ABMP("PAYED") to gain total
  1. ;
  1. ; IHS/SD/SDR - v2.5 p10 - IM19557 - Correct due from patient
  1. ; IHS/SD/SDR - v2.5 p11 - IM24315 - Made change to check new parameter for UB relationship code
  1. ;
  1. ;IHS/SD/SDR - 2.6*21 - HEAT123457 - Updated 61044 check from 'equals' to 'contains'
  1. ;
  1. START ;START HERE
  1. K ABMREC(30),ABMREC(31),ABME,ABM,ABMP("PAYED")
  1. K ABMP("SET")
  1. D SET^ABMERUTL,LOOP ; get insurer data
  1. K ABME,ABM
  1. Q
  1. ;
  1. LOOP ;FIRST LOOP
  1. ; Loop thru INS priorities
  1. S ABME("S#")=0
  1. F S ABME("S#")=$O(ABMP("INS",ABME("S#"))) Q:'ABME("S#") D
  1. .S ABME("INS")=+ABMP("INS",ABME("S#")) ; Insurer IEN
  1. .S ABME("INSIEN")=$P(ABMP("INS",ABME("S#")),"^",3) ; IEN to insurer multiple
  1. .S ABME("RTYPE")=30 ; record type
  1. .K ABMR(30),ABMR(31)
  1. .D ISET^ABMERINS ; set INS priority
  1. .D LOOP2 ; Get data
  1. .D S90^ABMERUTL ; Add 1 to record type counts (electronic)
  1. .D ^ABMER31 ; Get insured's data
  1. .;I $$RCID^ABMERUTL(ABME("INS"))=61044 S ABME("S#")=99 ;abm*2.6*21 IHS/SD/SDR HEAT123457
  1. .I $$RCID^ABMERUTL(ABME("INS"))["61044" S ABME("S#")=99 ;abm*2.6*21 IHS/SD/SDR HEAT123457
  1. Q
  1. ;
  1. LOOP2 ;LOOP HERE
  1. D ^ABMER30A ; Get insurance data
  1. F I=160:10:260 D
  1. .D @I
  1. .I $D(^ABMEXLM("AA",+$G(ABMP("INS")),+$G(ABMP("EXP")),30,I)) D @(^(I))
  1. .I '$G(ABMP("NOFMT")) S ABMREC(30,ABME("S#"))=$G(ABMREC(30,ABME("S#")))_ABMR(30,I)
  1. Q
  1. ;
  1. 160 ;EP - Release Code (SOURCE: FILE=9002274.4 FIELD=.74)
  1. ; form locator #52
  1. S ABME("FLD")=.74
  1. D DIQ1
  1. S ABMR(30,160)=ABM(9002274.4,ABMP("BDFN"),.74,"I")
  1. S ABMR(30,160)=$$FMT^ABMERUTL(ABMR(30,160),1)
  1. Q
  1. ;
  1. 170 ;EP - Benefits Assigned Indicator (SOURCE: FILE=9002274.4, FIELD=.75)
  1. ; form locator #53
  1. S ABME("FLD")=.75
  1. D DIQ1
  1. S ABMR(30,170)=ABM(9002274.4,ABMP("BDFN"),.75,"I")
  1. S ABMR(30,170)=$$FMT^ABMERUTL(ABMR(30,170),1)
  1. Q
  1. ;
  1. 180 ;EP - Patient's Relationship to Insured (SOURCE: FILE=, FIELD=)
  1. ; form locator #59
  1. S ABMRELC=$P($G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),1,ABMP("VTYP"),0)),U,18)
  1. I '$G(ABME("PH")) S ABMR(30,180)=$S(ABMRELC="U":"01",1:18)
  1. I $G(ABME("PH")) S ABMR(30,180)=ABME("REL")
  1. S ABMR(30,180)=$$FMT^ABMERUTL(ABMR(30,180),"2NR")
  1. Q
  1. ;
  1. 190 ;EP - Employment Status Code (SOURCE: FILE=9000003.1, FIELD=.15)
  1. S ABMR(30,190)=""
  1. I $G(ABME("PPP")) D ; of patient
  1. .S ABME("FLD")=.21
  1. .D DIQ3
  1. .S ABMR(30,190)=$G(ABM(9000001,ABME("PPP"),.21,"I"))
  1. .Q
  1. I ABMR(30,190)="",$G(ABME("PH")) D ; of policy holder
  1. .S ABME("FLD")=.15
  1. .D DIQ2
  1. .S ABMR(30,190)=$G(ABM(9000003.1,+ABME("PH"),.15,"I"))
  1. .Q
  1. S ABMR(30,190)=$$FMT^ABMERUTL(ABMR(30,190),1)
  1. Q
  1. ;
  1. 200 ;EP - Covered Days (SOURCE: FILE=9002274.4, FIELD=.73)
  1. ; form locator #7
  1. S ABME("FLD")=.73
  1. D DIQ1
  1. S ABMR(30,200)=ABM(9002274.4,ABMP("BDFN"),.73,"I")
  1. S ABMR(30,200)=$$FMT^ABMERUTL(ABMR(30,200),"3NR")
  1. Q
  1. ;
  1. 210 ;EP - Non-Covered Days (SOURCE: FILE=9002274.4 FIELD=.66)
  1. ; form locator #8
  1. S ABME("FLD")=.66
  1. D DIQ1
  1. S ABMR(30,210)=ABM(9002274.4,ABMP("BDFN"),.66,"I")
  1. S ABMR(30,210)=$$FMT^ABMERUTL(ABMR(30,210),"4NR")
  1. Q
  1. ;
  1. 220 ;EP - Coinsurance Days (SOURCE: FILE=9002274.4, FIELD=.67)
  1. ; form locator #9
  1. S ABME("FLD")=.67
  1. D DIQ1
  1. S ABMR(30,220)=ABM(9002274.4,ABMP("BDFN"),.67,"I")
  1. S ABMR(30,220)=$$FMT^ABMERUTL(ABMR(30,220),"3NR")
  1. Q
  1. ;
  1. 230 ;EP - Lifetime Reserve Days (SOURCE: FILE=9002274.4, FIELD=.68)
  1. ; form locator #10
  1. S ABME("FLD")=.68
  1. D DIQ1
  1. S ABMR(30,230)=ABM(9002274.4,ABMP("BDFN"),.68,"I")
  1. S ABMR(30,230)=$$FMT^ABMERUTL(ABMR(30,230),"3NR")
  1. Q
  1. ;
  1. 240 ;EP - Provider I.D. Number
  1. ; form locator #51
  1. S ABMR(30,240)=$P($G(^ABMNINS(ABMP("LDFN"),ABME("INS"),1,ABMP("VTYP"),0)),"^",8)
  1. S:ABMR(30,240)="" ABMR(30,240)=$P($G(^ABMNINS(DUZ(2),ABME("INS"),1,ABMP("VTYP"),0)),"^",8)
  1. S:ABMR(30,240)="" ABMR(30,240)=$P($G(^AUTNINS(ABME("INS"),39,ABMP("VTYP"),0)),"^",8)
  1. S:ABMR(30,240)="" ABMR(30,240)=$P($G(^AUTNINS(ABME("INS"),15,ABMP("LDFN"),0)),"^",2)
  1. I ABME("ITYPE")="R" D
  1. .S:ABMR(30,240)="" ABMR(30,240)=$P($G(^AUTTLOC(+ABMP("LDFN"),0)),"^",19)
  1. .S ABMR(30,240)=$TR(ABMR(30,240),"-")
  1. S ABMR(30,240)=$$FMT^ABMERUTL(ABMR(30,240),13)
  1. Q
  1. ;
  1. 250 ;EP - Third Party Payments Received (SOURCE: FILE= FIELD=)
  1. ; form locator #54
  1. I '$D(ABMP("PAYED")) D PAYED^ABMERUTL
  1. S ABMR(30,250)=+$G(ABMP("PAYED",ABME("INS")))
  1. ; If non-ben patient and Prepay amt
  1. I ABME("ITYPE")="N" S ABMR(30,250)=ABMR(30,250)+$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),9)),"^",9)
  1. S ABMR(30,250)=$$FMT^ABMERUTL(ABMR(30,250),"10NRJ2")
  1. Q
  1. ;
  1. 260 ;EP - Estimated Third Party Amount Due (SOURCE: FILE= FIELD=)
  1. ; form locator #55
  1. I '$D(ABMP("PAYED")) D PAYED^ABMERUTL
  1. S ABMR(30,260)=""
  1. ; If INS and initiated status
  1. I ABME("INS")=ABMP("INS"),$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,ABME("INSIEN"),0),"^",3)="I" D
  1. .S ABMR(30,260)=(+$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),2)),U))
  1. .S ABMPBAL=ABMR(30,260) ;est. amount due
  1. S ABMR(30,260)=$$FMT^ABMERUTL(ABMR(30,260),"10NRJ2")
  1. Q
  1. ;
  1. DIQ1 ;PULL BILL DATA VIA DIQ1
  1. Q:$D(ABM(9002274.4,ABMP("BDFN"),ABME("FLD")))
  1. N I
  1. S DIQ="ABM("
  1. S DIQ(0)="EI"
  1. S DIC="^ABMDBILL(DUZ(2),"
  1. S DA=ABMP("BDFN")
  1. S DR=".66;.67;.68;.73;.74;.75;.99"
  1. D EN^DIQ1
  1. K DIQ
  1. Q
  1. ;
  1. DIQ2 ;POLICY HOLDER INFORMATION
  1. Q:'$G(ABME("PH"))
  1. Q:$D(ABM(9000003.1,ABME("PH"),ABME("FLD")))
  1. N I
  1. S DIQ="ABM("
  1. S DIQ(0)="EI"
  1. S DIC="^AUPN3PPH("
  1. S DA=ABME("PH")
  1. S DR=".02;.15"
  1. D EN^DIQ1
  1. K DIQ
  1. Q
  1. ;
  1. DIQ3 ;PATIENT IS INSURED
  1. Q:$D(ABM(9000001,ABMP("PDFN"),ABME("FLD")))
  1. N I
  1. S DIQ="ABM("
  1. S DIQ(0)="EI"
  1. S DIC="^AUPNPAT("
  1. S DA=ABMP("PDFN")
  1. S DR=".21"
  1. D EN^DIQ1
  1. K DIQ
  1. Q
  1. ;
  1. EX(ABMX,ABMY,ABMZ) ;EXTRINSIC FUNCTION HERE
  1. ;
  1. ; INPUT: ABMX = data element
  1. ; Y = bill internal entry number
  1. ; ABMZ = insurer
  1. ;
  1. ; OUTPUT: Y = bill internal entry number
  1. ;
  1. S ABMP("BDFN")=ABMY
  1. D SET^ABMERUTL
  1. S ABME("INS")=ABMZ
  1. I '$D(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,"B",ABME("INS"))) S Y="" Q Y
  1. S ABME("S#")=0
  1. D ISET^ABMERINS
  1. I '$G(ABMP("NOFMT")) S ABMP("FMT")=0
  1. D @ABMX
  1. S Y=ABMR(30,ABMX)
  1. I $D(ABMP("FMT")) S ABMP("FMT")=1
  1. K ABMR(30,ABMX),ABMX,ABMY,ABMZ,ABME,ABM
  1. Q Y