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