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

ABMUTLP2.m

Go to the documentation of this file.
ABMUTLP2 ; IHS/SD/SDR - PAYER UTILITIES ;      
 ;;2.6;IHS 3P BILLING SYSTEM;**10,11,21**;NOV 12, 2009;Build 379
 ;abm*2.6*10 - split from ABMUTLP
 ;IHS/SD/AML - 2.6*21 HEAT178693 - Made change for electronic VA billing
 ;IHS/SD/SDR - 2.6*21 HEAT107645 - Made change to put MC (Medicaid) or CI (Private) for Kidscare.
 ;
SOP ;EP - source of pay (claim filing indicator)
 S ABMTYP=$P($G(^AUTNINS(+ABMP("INS",ABMI),2)),U,11)
 I ABMTYP D  Q
 .S ABMP("SOP",ABMI)=$P(^AUTTCFI(ABMTYP,0),U)
 S ABMTYP=$P(ABMP("INS",ABMI),"^",2)
 ;S Y=$F("HMDRPWCFNIK",ABMTYP)  ;abm*2.6*8 5010
 ;S Y=$F("HMDRPWCFIK",ABMTYP)  ;abm*2.6*8 5010  ;abm*2.6*10 HEAT69121
 ;S ABMP("SOP",ABMI)=$P("^HM^SP^MC^MA^CI^WC^CH^ZZ^09^OF^MC","^",Y)  ;abm*2.6*8 5010
 ;S ABMP("SOP",ABMI)=$P("^HM^SP^MC^MA^CI^WC^CH^ZZ^OF^MC","^",Y)  ;abm*2.6*8 5010  ;abm*2.6*10 HEAT69121
 ;start new code abm*2.6*10 HEAT69121
 I ABMTYP="H" S ABMP("SOP",ABMI)="HM"
 I ABMTYP="M" S ABMP("SOP",ABMI)="SP"
 I ABMTYP="D" S ABMP("SOP",ABMI)="MC"
 I ABMTYP="R" S ABMP("SOP",ABMI)="MA"
 I ABMTYP="P" S ABMP("SOP",ABMI)="CI"
 I ABMTYP="W" S ABMP("SOP",ABMI)="WC"
 I ABMTYP="C" S ABMP("SOP",ABMI)="CH"
 I ABMTYP="F" S ABMP("SOP",ABMI)="ZZ"
 I ABMTYP="I"!(ABMTYP="MD") S ABMP("SOP",ABMI)="OF"
 ;I ABMTYP="K" S ABMP("SOP",ABMI)="MC"  ;abm*2.6*21 IHS/SD/SDR HEAT107645
 I ABMTYP="K",($$GET1^DIQ(9999999.18,+ABMP("INS",ABMI),".38","I")="P") S ABMP("SOP",ABMI)="CI"  ;abm*2.6*21 IHS/SD/SDR HEAT107645
 I ABMTYP="K",($$GET1^DIQ(9999999.18,+ABMP("INS",ABMI),".38","I")'="P") S ABMP("SOP",ABMI)="MC"  ;abm*2.6*21 IHS/SD/SDR HEAT107645
 I ABMTYP="MH" S ABMP("SOP",ABMI)="16"
 ;end new code HEAT69121
 I ABMTYP="V" S ABMP("SOP",ABMI)="VA"  ;abm*2.6*21 IHS/SD/AML 8/21/14 - HEAT178693
 I $$BCBS1^ABMERUTL(+ABMP("INS",ABMI)) D
 .S ABMP("SOP",ABMI)="BL"
 ;I ABMP("SOP",ABMI)="MA",(ABMP("VTYP")=999!($P($G(^ABMDPARM(DUZ(2),1,5)),U,3)="C00900"))!((ABMP("BTYP")=831)&(ABMP("EXP")=22)) D  ;abm*2.6*11 HEAT96809
 I $G(ABMP("SOP",ABMI))="MA",(ABMP("VTYP")=999!($P($G(^ABMDPARM(DUZ(2),1,5)),U,3)="C00900"))!((ABMP("BTYP")=831)&(ABMP("EXP")=22)) D  ;abm*2.6*11 HEAT96809
 .S ABMP("SOP",ABMI)="MB"
 ;I ABMP("SOP",ABMI)="MA",(ABMP("VTYP")=999!($P($G(^ABMDPARM(DUZ(2),1,5)),U,3)="04402"))!((ABMP("BTYP")=831)&(ABMP("EXP")=22)) D  ;abm*2.6*10 NOHEAT
 ;I ABMP("SOP",ABMI)="MA",(ABMP("VTYP")=999!($P($G(^ABMDPARM(DUZ(2),1,5)),U,3)="04402"))!((ABMP("BTYP")=831)&((ABMP("EXP")=22)!(ABMP("EXP")=32))) D  ;abm*2.6*10 NOHEAT  ;abm*2.6*10 HEAT68447
 ;I ABMP("SOP",ABMI)="MA",(ABMP("VTYP")=999!($P($G(^ABMDPARM(ABMP("LDFN"),1,5)),U,3)="04402"))!((ABMP("BTYP")=831)&((ABMP("EXP")=22)!(ABMP("EXP")=32))) D  ;abm*2.6*10 NOHEAT  ;abm*2.6*10 HEAT68447  ;abm*2.6*10 HEAT74059
 ;I ABMP("SOP",ABMI)="MA",(ABMP("VTYP")=999!(("^04312^04212^04112^04412^04402^")[("^"_$P($G(^ABMDPARM(ABMP("LDFN"),1,5)),U,3)_"^")))!((ABMP("BTYP")=831)&((ABMP("EXP")=22)!(ABMP("EXP")=32))) D  ;abm*2.6*10 NOHEAT HEAT68447 HEAT74059  ;abm*2.6*11 HEAT96809
 I $G(ABMP("SOP",ABMI))="MA",(ABMP("VTYP")=999!(("^04312^04212^04112^04412^04402^")[("^"_$P($G(^ABMDPARM(ABMP("LDFN"),1,5)),U,3)_"^")))!((ABMP("BTYP")=831)&((ABMP("EXP")=22)!(ABMP("EXP")=32))) D  ;abm*2.6*11 HEAT96809
 .S ABMP("SOP",ABMI)="MB"
 Q
OVER ;EP - get override values from 3P Ins file
 ;S ABMOEXP=$S(ABMP("EXP")=21:11,ABMP("EXP")=22:14,ABMP("EXP")=23:18,1:0)  ;abm*2.6*10 HEAT65683
 S ABMOEXP=$S(ABMP("EXP")=21!(ABMP("EXP")=31):11,ABMP("EXP")=22!(ABMP("EXP")=32):14,ABMP("EXP")=23!(ABMP("EXP")=33):18,1:0)  ;abm*2.6*10 HEAT65683
 Q:ABMOEXP=0
 S ABMOPC=0
 ;F  S ABMOPC=$O(^ABMNINS(DUZ(2),ABMP("INS"),2,"AOVR",ABMOEXP,ABMOLN,ABMOPC)) Q:'ABMOPC  D  ;abm*2.6*10 HEAT53137
 F  S ABMOPC=$O(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",ABMOEXP,ABMOLN,ABMOPC)) Q:'ABMOPC  D  ;abm*2.6*10 HEAT53137
 .K ABMOVTYP
 .;start old code abm*2.6*10 HEAT53137
 .;I $D(^ABMNINS(DUZ(2),ABMP("INS"),2,"AOVR",ABMOEXP,ABMOLN,ABMOPC,0)) S ABMOVTYP=0
 .;I $D(^ABMNINS(DUZ(2),ABMP("INS"),2,"AOVR",ABMOEXP,ABMOLN,ABMOPC,ABMP("VTYP"))) S ABMOVTYP=ABMP("VTYP")
 .;end old code start new code HEAT53137
 .I $D(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",ABMOEXP,ABMOLN,ABMOPC,0)) S ABMOVTYP=0
 .I $D(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",ABMOEXP,ABMOLN,ABMOPC,ABMP("VTYP"))) S ABMOVTYP=ABMP("VTYP")
 .;end new code HEAT53137
 .Q:'$D(ABMOVTYP)
 .S ABMVALUE=^ABMNINS(DUZ(2),ABMP("INS"),2,"AOVR",ABMOEXP,ABMOLN,ABMOPC,ABMOVTYP)
 .;
 .I ABMOLN=51 S ABMOLN=40,ABMPC=4 D  Q
 ..S $P(ABMR("NM1",ABMOLN),"^",ABMPC)=ABMVALUE
 ..S $P(ABMREC("NM1"),"*",ABMPC)=ABMVALUE
 .;
 .I ABMOLN=52 S ABMOLN=20,ABMPC=2 D  Q
 ..S $P(ABMR("N3",ABMOLN),"^",ABMPC)=ABMVALUE
 ..S $P(ABMREC("N3"),"*",ABMPC)=ABMVALUE
 .;
 .I ABMOLN=53 D  Q
 ..S ABMR("N4",20)=$P(ABMVALUE,",")  ;city
 ..S $P(ABMREC("N4"),"*",2)=ABMR("N4",20)
 ..S ABMR("N4",30)=$P($P(ABMVALUE,", ",2),"  ")  ;state
 ..S $P(ABMREC("N4"),"*",3)=ABMR("N4",30)
 ..S ABMR("N4",40)=$P($P(ABMVALUE,",",2),"  ",2)  ;zip
 ..S $P(ABMREC("N4"),"*",4)=ABMR("N4",40)
 ;
 K ABMOLN,ABMOPC,ABMVALUE,ABMOVTYP
 Q
PAYED ; EP  ;abm*2.6*19 IHS/SD/SDR HEAT168248 - split from ABMUTLP
 ; Build Ins Pymt Array
 K ABMP("PAYED")
 S (ABMOACNT,ABMPRCNT)=1
 S ABMCOCNT=1
 S:'$G(ABMDUZ2) ABMDUZ2=DUZ(2)
 N L
 S L=+$P(^ABMDBILL(ABMDUZ2,ABMP("BDFN"),0),U)_" "  ;Bill#
 F  S L=$O(^ABMDBILL(ABMDUZ2,"B",L)) Q:+L'=+$P(^ABMDBILL(ABMDUZ2,ABMP("BDFN"),0),U)!(L="")  D
 .N I
 .S I=$O(^ABMDBILL(ABMDUZ2,"B",L,0))  ;IEN
 .Q:$P(^ABMDBILL(ABMDUZ2,I,0),U,4)="X"  ;Quit if cancelled
 .N K
 .S K=$P(^ABMDBILL(ABMDUZ2,I,0),U,8)  ;Active ins IEN
 .N J
 .S J=0
 .F  S J=$O(^ABMDBILL(ABMDUZ2,I,3,J)) Q:'J  D
 ..N ABMPAY
 ..K ABMSAR  ;abm*2.6*10 COB billing
 ..S ABMPAY=+$P(^ABMDBILL(ABMDUZ2,I,3,J,0),U,2)  ;Amt paid
 ..S ABMP("PAYED",K)=+$G(ABMP("PAYED",K))+ABMPAY  ;Add amt paid per ins
 ..S $P(ABMP("PAYED",K),"^",2)=$P(^ABMDBILL(ABMDUZ2,I,3,J,0),U)
 ..S ABMP("PAYED")=+$G(ABMP("PAYED"))+ABMPAY  ;Add amt paid
 ..S ABMADJC=$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,15)  ;adj category
 ..I $P($G(^ABMNINS(ABMP("LDFN"),K,0)),U,11)="Y" S ABMADJC=4,ABMSAR=96  ;abm*2.6*3 HEAT7574
 ..Q:(ABMADJC="")  ;no adj cat
 ..I ABMADJC=14 S ABMAMT=+$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,4)  ;co-ins
 ..I ABMADJC=13 S ABMAMT=+$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,3)  ;deduct
 ..I ABMADJC=3 S ABMAMT=+$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,6)  ;w-off
 ..I ABMADJC=4 S ABMAMT=+$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,7)  ;non-cov
 ..I ABMADJC=15 S ABMAMT=+$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,9)  ;penalty
 ..I ABMADJC=16 S ABMAMT=+$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,12)  ;g. allow
 ..I ABMADJC=19 S ABMAMT=+$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,13)  ;ref
 ..I ABMADJC=20 S ABMAMT=+$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,14)  ;pymt credit
 ..;abm*2.6*10 COB billing - switched below lines back because ABMSAR wasn't getting set; added "E" to first line
 ..S:(+$G(ABMSAR)=0) ABMSAR=$$GET1^DIQ("90056.06",$P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,17),".01","E")  ;std reason  ;abm*2.6*3 HEAT7574  ;abm*2.6*9 NOHEAT
 ..;S:(+$G(ABMSAR)'=0) ABMSAR=$$GET1^DIQ(90056.06,($P($G(^ABMDBILL(ABMDUZ2,I,3,J,0)),U,17)),".01","E")  ;std reason  ;abm*2.6*3 HEAT7574  ;abm*2.6*9 NOHEAT
 ..;I ABMADJC=4,(ABMSAR=96),($P($G(^ABMNINS(ABMP("LDFN"),K,0)),U,11)="Y") S ABMAMT=$P($G(^ABMDBILL(ABMDUZ2,I,2)),U)  ;abm*2.6*3 HEAT7574  ;abm*2.6*9
 ..;I ABMADJC=4,($G(ABMSAR)=96),($P($G(^ABMNINS(ABMP("LDFN"),K,0)),U,11)="Y") S ABMAMT=$P($G(^ABMDBILL(ABMDUZ2,I,2)),U)  ;abm*2.6*3 HEAT7574  ;abm*2.6*9  ;abm*2.6*10 COB billing
 ..;start new code abm*2.6*10 COB billing
 ..I ($P($G(^ABMNINS(ABMP("LDFN"),K,0)),U,11)="Y"),$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,+ABMP("INS"),".211","I"),1,"I")="R" D  Q
 ...S ABMP(K,"OA",ABMOACNT)="96^"_$S((ABMP("EXP")>30):ABMP("BILL"),1:$P($G(^ABMDBILL(ABMDUZ2,I,2)),U))_"^1"
 ...S (ABMP("PAYED"),$P(ABMP("PAYED",K),"^",0,2))=0
 ..;end abm*2.6*10 COB billing
 ..I ($G(ABMSAR)="A2") S ABMP(K,"CO",ABMCOCNT)=ABMSAR_"^"_ABMAMT_"^1",ABMCOCNT=ABMCOCNT+1 Q
 ..I $G(ABMSAR)=1!($G(ABMSAR)=2)!($G(ABMSAR)=3) S ABMP(K,"PR",ABMPRCNT)=ABMSAR_"^"_ABMAMT_"^1",ABMPRCNT=ABMPRCNT+1
 ..;I $G(ABMSAR)'=1&($G(ABMSAR)'=2)&($G(ABMSAR)'=3) S ABMP(K,"OA",ABMOACNT)=ABMSAR_"^"_ABMAMT_"^1",ABMOACNT=ABMOACNT+1  ;abm*2.6*9 NOHEAT
 ..I +$G(ABMSAR)'=0&($G(ABMSAR)'=1)&($G(ABMSAR)'=2)&($G(ABMSAR)'=3) S ABMP(K,"OA",ABMOACNT)=ABMSAR_"^"_ABMAMT_"^1",ABMOACNT=ABMOACNT+1  ;abm*2.6*9 NOHEAT
 .;start new abm*2.6*19 IHS/SD/SDR HEAT168248
 .K ABMTP,ABMTI,ABMTSAR,ABMTREAL
 .S ABMTI=0
 .F  S ABMTI=$O(ABMP(ABMTI)) Q:'ABMTI  D
 ..F ABMTCD="OA","CO","PR" D
 ...S ABMTT=0
 ...F  S ABMTT=$O(ABMP(ABMTI,ABMTCD,ABMTT)) Q:'ABMTT  D
 ....S ABMTSAR=$P(ABMP(ABMTI,ABMTCD,ABMTT),U)
 ....I $D(ABMTP(ABMTSAR)) D
 .....S ABMTREAL=$O(ABMTP(ABMTSAR,""))
 .....S $P(ABMP(ABMTI,ABMTCD,ABMTREAL),U,2)=$P(ABMP(ABMTI,ABMTCD,ABMTREAL),U,2)+$P(ABMP(ABMTI,ABMTCD,ABMTT),U,2)
 .....K ABMP(ABMTI,ABMTCD,ABMTT)
 ....I '$D(ABMTP(ABMTSAR)) S ABMTP(ABMTSAR,ABMTT)=""
 .K ABMTP,ABMTI,ABMTSAR,ABMTREAL
 .S ABMTI=0
 .F  S ABMTI=$O(ABMP(ABMTI)) Q:'ABMTI  D
 ..F ABMTTTYP="OA","CO","PR" D
 ..M ABMTP(ABMTI,ABMTTTYP)=ABMP(ABMTI,ABMTTTYP)
 ..K ABMP(ABMTI,ABMTTTYP)
 .S ABMCNT=1
 .S ABMTI=0
 .F  S ABMTI=$O(ABMTP(ABMTI)) Q:'ABMTI  D
 ..S ABMTTTYP=""
 ..F  S ABMTTTYP=$O(ABMTP(ABMTI,ABMTTTYP)) Q:ABMTTTYP=""  D
 ...S ABMTT=0
 ...F  S ABMTT=$O(ABMTP(ABMTI,ABMTTTYP,ABMTT)) Q:'ABMTT  D
 ....S ABMP(ABMTI,ABMTTTYP,ABMCNT)=$G(ABMTP(ABMTI,ABMTTTYP,ABMTT))
 ....S ABMCNT=ABMCNT+1
 .K ABMTP,ABMTI,ABMTSAR,ABMTREAL,ABMTTTYP,ABMCNT,ABMTT
 .;end new abm*2.6*19 IHS/SD/SDR HEAT168248
 Q