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

ABMERUTL.m

Go to the documentation of this file.
  1. ABMERUTL ; IHS/ASDST/DMJ - EMC UTILITIES ;
  1. ;;2.6;IHS 3P BILLING SYSTEM;**3,6,9,10,19,21**;NOV 12, 2009;Build 379
  1. ;Original;DMJ;09/21/95 12:47 PM
  1. ;IHS/SD/SDR 2.5*8 IM14799 EA0 field 15 (pos 54) not populating correctly; Modified BCBS
  1. ; line tag to kill possible pre-existing value of ABME("LOC")
  1. ;IHS/SD/SDR-2.5*9 IM16962 Allow Receiver ID to be longer than 5 chars
  1. ;IHS/SD/SDR-2.5*10 IM20225/IM20271 Set replacement insurer correctly
  1. ;IHS/SD/SDR-2.6*3 HEAT7574 tribal self-insured changes
  1. ;IHS/SD/SDR-2.6*6 5010-made changes for multi-insurer GCNs
  1. ;IHS/SD/SDR-2.6*19 HEAT116949 Translated out spaces for CROSSOVER visit type check
  1. ;IHS/SD/SDR 2.6*21 HEAT115124 Added code to POS to check export mode 27 for overrides
  1. ;IHS/SD/SDR 2.6*21 HEAT284071 Added code to POS for ADA (34) overrides
  1. ;
  1. FMT(X,Y) ; EP
  1. ;Format Variable
  1. ; INPUT: X = DATA STRING
  1. ; Y = FORMAT INSTRUCTONS
  1. ;OUTPUT: X = FORMATTED DATA
  1. ;
  1. I $G(ABMP("NOFMT")) Q X ;No formatting
  1. S $P(ABMP("SPACES")," ",130)="" ;130 spaces
  1. S $P(ABMP("ZEROS"),"0",60)="" ;60 zeroes
  1. I Y["J" D
  1. .N I S I=$P(Y,"J",2)
  1. .S I=$E(I)
  1. .S X=$TR($J(X,1,I),".")
  1. I Y["S" D
  1. .S X=$TR(X,"-\/!@#$%&*.,")
  1. S ABME("FILLER")=$S(Y["N":ABMP("ZEROS"),1:ABMP("SPACES"))
  1. S X=$S(Y["R":ABME("FILLER")_X,1:X_ABME("FILLER"))
  1. S X=$S(Y["R":$E(X,$L(X)+1-+Y,$L(X)),1:$E(X,1,+Y))
  1. Q X
  1. ;
  1. STRIP(X) ;EP strip trailing blanks
  1. N I F I=$L(X):-1:1 D Q:$G(ABMLN)
  1. .Q:$E(X,I)=" "
  1. .S ABMLN=I
  1. S X=$E(X,1,ABMLN)
  1. K ABMLN
  1. Q X
  1. STRPL(X) ;EP strip leading blanks
  1. N I
  1. S ABMLEN=$L(X," ")
  1. F I=1:1:ABMLEN D Q:$P(X," ",I)'=""
  1. .Q:$P(X," ",I)'=""
  1. S X=$P(X," ",I,ABMLEN)
  1. K ABMLEN
  1. Q X
  1. DFMT ; EP Format Date Field
  1. S Y=$E(Y,4,5)_$E(Y,6,7)_$E(Y,2,3)
  1. Q
  1. ;
  1. SET ; EP Set up some things
  1. Q:$G(ABMP("SET")) ;Quit if already set up these vars
  1. K ABMP("INS")
  1. N I
  1. F I=0:1:9 D
  1. .S @("ABMB"_I)=$G(^ABMDBILL(DUZ(2),ABMP("BDFN"),I))
  1. S ABMP("PDFN")=$P(ABMB0,"^",5) ;Patient IEN
  1. S ABMP("LDFN")=$P(ABMB0,"^",3) ;Visit loc IEN
  1. S ABMP("BTYP")=$P(ABMB0,"^",2) ;Bill type
  1. S ABMP("EXP")=$P(ABMB0,"^",6) ;Export mode IEN
  1. S ABMP("INS")=$P(ABMB0,"^",8) ;Active Ins IEN
  1. S ABMP("VTYP")=$P(ABMB0,"^",7) ;Vtyp IEN
  1. S ABMP("CLIN")=$P(ABMB0,"^",10) ;Clinic
  1. S ABMP("CLIN")=$P($G(^DIC(40.7,+ABMP("CLIN"),0)),"^",2)
  1. S ABMP("VDT")=$P(ABMB7,U) ;Service date from
  1. ;S ABMP("ITYPE")=$P($G(^AUTNINS(+ABMP("INS"),2)),U) ;abm*2.6*10 HEAT73780
  1. S ABMP("ITYPE")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,+ABMP("INS"),".211","I"),1,"I") ;Type of insurer ;abm*2.6*10 HEAT73780
  1. D ISET ;set up insurers
  1. D PCN
  1. D SOP
  1. S ABMP("SET")=1 ;set variable set flag
  1. Q
  1. ;
  1. ISET ; EP
  1. ;Set up Insurers
  1. ;ABMP("INS",priority) = Insurer IEN ^ type of insurer ^ Insurer multiple IEN
  1. K ABMCDNUM
  1. S ABME("PRIO")=0
  1. S ABME("INS#")=0
  1. ;Loop down priority
  1. F S ABME("PRIO")=$O(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,"C",ABME("PRIO"))) Q:'ABME("PRIO")!($G(ABMP("INS",3))) D
  1. .N I
  1. .S I=0
  1. .;Loop entries
  1. .F S I=$O(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,"C",ABME("PRIO"),I)) Q:'I!($G(ABMP("INS",3))) D
  1. ..;Quit if insurer unbillable
  1. ..Q:$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,I,0),U,3)="U"
  1. ..S ABME("INS")=$S($P(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,I,0),U,11)'="":$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,I,0),U,11),1:$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,I,0),U)) ;Insurer IEN
  1. ..;S ABME("ITYPE")=$P(^AUTNINS(ABME("INS"),2),U) ;abm*2.6*10 HEAT73780
  1. ..S ABME("ITYPE")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABME("INS"),".211","I"),1,"I") ;type of insurer ;abm*2.6*10 HEAT73780
  1. ..Q:"I"[ABME("ITYPE") ;Quit if indian patient
  1. ..;Quit if non-ben and not active insurer
  1. ..Q:"N"[ABME("ITYPE")&($P(^ABMDBILL(DUZ(2),ABMP("BDFN"),0),U,8)'=ABME("INS"))
  1. ..S ABME("INS#")=ABME("INS#")+1 ;increment counter
  1. ..S ABMP("INS",ABME("INS#"))=ABME("INS")_"^"_ABME("ITYPE")_"^"_I
  1. ..I ABME("ITYPE")="D"!(ABME("ITYPE")="K") D
  1. ...S ABMCDNUM=$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,I,0),"^",6)
  1. ...S:'$G(ABMP("PDFN")) ABMP("PDFN")=$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),0),"^",5)
  1. ...Q:$P($G(^AUPNMCD(+ABMCDNUM,0)),U)=ABMP("PDFN")
  1. ...D DBFX^ABMDEFIP(ABMP("BDFN"),I)
  1. ...S ABMCDNUM=$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),13,I,0),"^",6)
  1. I +$G(ABMP("INS"))'=0,($$RCID^ABMUTLP(ABMP("INS"))["61044") D
  1. .Q:$P($G(ABMP("INS",1)),U)=ABMP("INS") ;61044 is primary
  1. .Q:$P($G(^AUTNINS($P($G(ABMP("INS",1)),U),0)),U)'["MEDICARE" ;Medicare isn't primary
  1. .Q:$$RCID^ABMUTLP($P($G(ABMP("INS",2)),U))'["61044" ;Medi-Cal is not secondary
  1. .;Q:$P($G(^ABMDVTYP(ABMP("VTYP"),0)),U)'["CROSSOVER" ;vtyp must contain CROSSOVER ;abm*2.6*19 HEAT116949
  1. .Q:$TR($P($G(^ABMDVTYP(ABMP("VTYP"),0)),U)," ")'["CROSSOVER" ;vtyp must contain CROSSOVER ;abm*2.6*19 HEAT116949
  1. .S ABMP("INS",1)=ABMP("INS",2) ;move Medi-Cal to primary spot
  1. .K ABMP("INS",2) ;remove Medi-Cal from secondary
  1. Q
  1. PCN ;EP Patient Control Number
  1. S:'$G(ABMDUZ2) ABMDUZ2=DUZ(2)
  1. S ABMP("PCN")=$P(^ABMDBILL(ABMDUZ2,ABMP("BDFN"),0),U)
  1. S ABMSFX=$P($G(^ABMDPARM(+ABMP("LDFN"),1,2)),"^",4)
  1. I ABMSFX'="" D
  1. .S ABMP("PCN")=ABMP("PCN")_"-"_ABMSFX
  1. I $P($G(^ABMDPARM(ABMP("LDFN"),1,3)),U,3) D
  1. .S ABMP("HRN")=$P($G(^AUPNPAT(+ABMP("PDFN"),41,+ABMP("LDFN"),0)),"^",2)
  1. .S:ABMP("HRN")="" ABMP("HRN")=$P($G(^AUPNPAT(+ABMP("PDFN"),41,DUZ(2),0)),"^",2)
  1. .Q:ABMP("HRN")=""
  1. .S ABMP("PCN")=ABMP("PCN")_"-"_ABMP("HRN")
  1. K ABMSFX
  1. Q
  1. SOP ;EP Source of Pay
  1. N X
  1. S X=$F("HMDRPWCFNIK",ABMP("ITYPE"))
  1. S ABMP("SOP")=$E(" IZDCFBHZAZD",X)
  1. I ABMP("ITYPE")="P" D BCBS S:$G(ABMP("BCBS")) ABMP("SOP")="G"
  1. Q
  1. BCBS ; EP check if Blue Cross/Blue Shield
  1. K ABME("LOC")
  1. K ABMP("BCBS")
  1. S ABMP("INAME")=$P($G(^AUTNINS(ABMP("INS"),0)),U)
  1. N I
  1. F I="B","C","S" D Q:'ABME("LOC")
  1. .S ABME("LOC")=$F(ABMP("INAME"),I,$G(ABME("LOC")))
  1. Q:'ABME("LOC")
  1. S ABMP("BCBS")=1
  1. Q
  1. RCID(X) ;EP Receiver ID (X=Insurer IEN)
  1. S Y=$P($G(^AUTNINS(X,0)),"^",8)
  1. I +Y=400 D Q Y
  1. .S Y="00400"
  1. .I $G(ABMP("VTYP"))=999!($G(ABMP("BTYP"))=831&($G(ABMP("EXP"))=22)) S Y="00900"
  1. .I $G(ABMP("EXP"))>20 S Y="C"_Y
  1. ;start old abm*2.6*10 HEAT74059
  1. ;I Y=4001 D Q Y
  1. ;.S Y="04001"
  1. ;.;I $G(ABMP("VTYP"))=999!($G(ABMP("BTYP"))=831&($G(ABMP("EXP"))=22)) S Y="04402" ;ASC ;abm*2.6*9 IHS/SD/AML 3/9/2012
  1. ;.I $G(ABMP("VTYP"))=999!($G(ABMP("BTYP"))=831&($G(ABMP("EXP"))=22))!($G(ABMP("BTYP"))=831&($G(ABMP("EXP"))=32)) S Y="04402" ;abm*2.6*9 IHS/SD/AML 3/9/2012 Mods for DSU
  1. ;.I $G(ABMP("CLIN"))="A3" S Y="04402" ;abm*2.6*10 IHS/SD/AML HEAT68447
  1. ;end old start new HEAT74059
  1. I "^4001^4311^4211^4111^4411^"[("^"_Y_"^") D Q Y
  1. .S Y="0"_Y
  1. .I $G(ABMP("VTYP"))=999!($G(ABMP("BTYP"))=831&($G(ABMP("EXP"))=22))!($G(ABMP("BTYP"))=831&($G(ABMP("EXP"))=32))!($G(ABMP("CLIN"))="A3"!($G(ABMP("CLN"))="A3")) D
  1. ..S:Y="04001" Y="04402"
  1. ..S:Y="04311" Y="04312"
  1. ..S:Y="04211" Y="04212"
  1. ..S:Y="04111" Y="04112"
  1. ..S:Y="04411" Y=$S((DT<3121119):"04402",1:"04412")
  1. ;end new HEAT74059
  1. Q Y
  1. ENVY(X,Y) ;EP Envoy Payer ID (X=Insurer EIN,Y=Visit Type)
  1. N ABM,I,Z
  1. S Z=""
  1. F I=1:1:3 S ABM(I)=$P($G(^AUTNINS(+X,5)),"^",I)
  1. I Y=111 S Z=ABM(2)
  1. I Y="H" S Z=ABM(2)
  1. I Y=998 S Z=ABM(3)
  1. I Y="D" S Z=ABM(3)
  1. I Y=999 S Z=ABM(1)
  1. I Y="M" S Z=ABM(1)
  1. I Y=131 S Z=ABM(1)
  1. I Z="" S Z=ABM(1)
  1. S Z=$P($G(^ABMENVOY(+$G(Z),0)),U)
  1. Q Z
  1. MSG(X) ; EP
  1. ;Display message to terminal
  1. Q:$G(ABMQUIET)
  1. W !!,*7,X,!
  1. F W ! Q:$Y+3>IOSL
  1. S DIR(0)="E"
  1. D ^DIR
  1. K DIR
  1. Q
  1. ;
  1. PAYED ; EP
  1. ;Build Insurance Payment Array
  1. K ABMP("PAYED")
  1. N L
  1. S L=+$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),0),U)_" " ;Bill number
  1. F S L=$O(^ABMDBILL(DUZ(2),"B",L)) Q:+L'=+$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),0),U)!(L="") D
  1. .N I
  1. .S I=$O(^ABMDBILL(DUZ(2),"B",L,0)) ;IEN
  1. .Q:$P(^ABMDBILL(DUZ(2),I,0),"^",4)="X" ;Quit if cancelled
  1. .N K
  1. .S K=$P(^ABMDBILL(DUZ(2),I,0),"^",8) ;Active insurer IEN
  1. .;I $P($G(^ABMNINS(ABMP("LDFN"),K,0)),U,11)="Y"&($P($G(^AUTNINS(ABMP("INS"),2)),U)="R") S (ABMP("PAYED"),ABMP("PAYED",K))=$P(ABMB2,U) Q ;abm*2.6*3 HEAT7574
  1. .I $P($G(^ABMNINS(ABMP("LDFN"),K,0)),U,11)="Y"&($P($G(^AUTNINS(ABMP("INS"),2)),U)="R") S (ABMP("PAYED"),ABMP("PAYED",K))=0 Q ;abm*2.6*10 COB billing
  1. .N J
  1. .S J=0
  1. .F S J=$O(^ABMDBILL(DUZ(2),I,3,J)) Q:'J D
  1. ..N ABMPAY,ABMPDT,ABMZERO
  1. ..S ABMZERO=^ABMDBILL(DUZ(2),I,3,J,0)
  1. ..S ABMPDT=$P(ABMZERO,U) ;Payment date
  1. ..S ABMPAY=$P(ABMZERO,"^",2) ;Amt paid
  1. ..S ABMP("PAYED",K)=+$G(ABMP("PAYED",K))+ABMPAY ;Add amt paid per insurer
  1. ..S ABMP("PDT",K)=ABMPDT
  1. ..S ABMP("PAYED")=+$G(ABMP("PAYED"))+ABMPAY ;Add amt paid
  1. Q
  1. ;
  1. TCR(X) ; EP Total credits for bill
  1. S ABM("TCREDITS")=0
  1. S I=0
  1. F S I=$O(^ABMDBILL(DUZ(2),X,3,I)) Q:'I D
  1. .F J=2,3,4 S ABM("TCREDITS")=ABM("TCREDITS")+$P(^ABMDBILL(DUZ(2),X,3,I,0),"^",J)
  1. S X=ABM("TCREDITS")
  1. K ABM("TCREDITS")
  1. Q X
  1. ;
  1. UPC(X) ; EP Upper case
  1. S X=$TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. Q X
  1. ;
  1. LWC(X) ; EP lower case
  1. S X=$TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
  1. Q X
  1. ;
  1. SLN(X,Y) ; EP Provider state license number
  1. ;INPUT: X = PROVIDER
  1. ; Y = STATE
  1. ;OUTPUT: X = Provider state license number
  1. ; (If no number, grab the first one)
  1. I '$G(Y) S Y=$P(^AUTTLOC(DUZ(2),0),"^",23) ;State IEN
  1. I 'Y S Y=$P(^AUTTLOC(DUZ(2),0),"^",14) ;Mail address - State IEN
  1. I 'Y S Y=999
  1. N I
  1. S I=$O(^VA(200,X,"PS1","B",Y,0))
  1. I 'I S I=$O(^VA(200,X,"PS1",0))
  1. I 'I S X="" Q X
  1. S Y=$P(^VA(200,X,"PS1",I,0),U) ;Licensing state IEN
  1. S X=$P(^VA(200,X,"PS1",I,0),"^",2) ;License#
  1. S X=$P(^DIC(5,Y,0),"^",2)_"-"_X ;State - License
  1. Q X
  1. ;
  1. MCDBFX(X,Y) ;EP Fix BILL Insurance Multiple if broken pointer medicaid
  1. ; INPUT: X = IEN (CLAIM OR BILL)
  1. ; Y = INSURER IEN UNDER FIELD #13 (INS MULTIPLE)
  1. ;OUTPUT:
  1. N ABMP
  1. S ABMP("D0")=X
  1. S ABMP("D1")=Y
  1. S ABMP("ZERO")=^ABMDBILL(DUZ(2),ABMP("D0"),13,ABMP("D1"),0)
  1. S ABMP("PDFN")=$P(^ABMDBILL(DUZ(2),ABMP("D0"),0),"^",5)
  1. S ABMP("VDT")=$P(^ABMDBILL(DUZ(2),ABMP("D0"),7),U)
  1. D MGET
  1. I $G(ABMP(1)) S $P(^ABMDBILL(DUZ(2),ABMP("D0"),13,ABMP("D1"),0),"^",6)=ABMP(1),$P(^(0),"^",7)=ABMP(2)
  1. Q
  1. ;
  1. MCDCFX(X,Y) ;EP Fix CLAIM Insurance Multiple if broken pointer, Medicaid
  1. ; INPUT: X = IEN (CLAIM OR BILL)
  1. ; Y = INSURER IEN UNDER FIELD #13 (INS MULTIPLE)
  1. ;OUTPUT:
  1. N ABMP
  1. S ABMP("D0")=X
  1. S ABMP("D1")=Y
  1. S ABMP("ZERO")=^ABMDCLM(DUZ(2),ABMP("D0"),13,ABMP("D1"),0)
  1. S ABMP("PDFN")=$P(^ABMDCLM(DUZ(2),ABMP("D0"),0),U)
  1. S ABMP("VDT")=$P(^ABMDCLM(DUZ(2),ABMP("D0"),0),"^",2)
  1. D MGET
  1. I $G(ABMP(1)) S $P(^ABMDCLM(DUZ(2),ABMP("D0"),13,ABMP("D1"),0),"^",6)=ABMP(1),$P(^(0),"^",7)=ABMP(2)
  1. Q
  1. ;
  1. MGET ; EP Get new pointer
  1. S ABMP("INSCO")=$P(ABMP("ZERO"),U)
  1. S ABMP("PTR")=$P(ABMP("ZERO"),"^",6)
  1. Q:ABMP("PTR")=""
  1. Q:$D(^AUPNMCD(ABMP("PTR"),0))
  1. Q:$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABMP("INSCO"),".211","I"),1,"I")'="D" ;abm*2.6*10 HEAT73780
  1. D 4^ABMDLCK2
  1. S ABMP("PRI")=$O(ABML(0)) Q:'ABMP("PRI")
  1. S ABMP("INS")=$O(ABML(ABMP("PRI"),0)) Q:'ABMP("INS")
  1. Q:ABMP("INS")'=ABMP("INSCO")
  1. N I
  1. F I=1,2 S ABMP(I)=$P(ABML(ABMP("PRI"),ABMP("INS")),"^",I)
  1. Q
  1. ;
  1. S90 ;EP add 1 to record type counts
  1. N I
  1. S I=ABME("RTYPE")\10
  1. S I=I*10
  1. S I=I+30
  1. S ABMRT(90,40)=+$G(ABMRT(90,40))+1
  1. S ABMRT(90,I)=+$G(ABMRT(90,I))+1
  1. S ABMRT(90,"RTOT")=+$G(ABMRT(90,"RTOT"))+1
  1. Q
  1. POS(X) ;EP place of service
  1. ;start old abm*2.6*10 HEAT53137
  1. ;S X=$G(^ABMNINS(DUZ(2),ABMP("INS"),2,"AOVR",3,37,3,ABMP("VTYP")))
  1. ;I X="" S X=$G(^ABMNINS(DUZ(2),ABMP("INS"),2,"AOVR",3,37,3,0))
  1. ;I X="" S X=$G(^ABMNINS(DUZ(2),ABMP("INS"),2,"AOVR",14,37,3,ABMP("VTYP")))
  1. ;I X="" S X=$G(^ABMNINS(DUZ(2),ABMP("INS"),2,"AOVR",14,37,3,0))
  1. ;end old start new HEAT53137
  1. S X=$G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",3,37,3,ABMP("VTYP")))
  1. I X="" S X=$G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",3,37,3,0))
  1. I X="" S X=$G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",14,37,3,ABMP("VTYP")))
  1. I X="" S X=$G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",14,37,3,0))
  1. ;end new HEAT53137
  1. I X="" S X=$G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",27,37,3,ABMP("VTYP"))) ;abm*2.6*21 IHS/SD/SDR HEAT115124
  1. I X="" S X=$G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",27,37,3,0)) ;abm*2.6*21 IHS/SD/SDR HEAT115124
  1. ;start new abm*2.6*21 IHS/SD/SDR HEAT284071
  1. I +$G(ABMP("EXP"))=33 D ;ADA override
  1. .S X=$G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",34,42,1,ABMP("VTYP")))
  1. .I X="" S X=$G(^ABMNINS(ABMP("LDFN"),ABMP("INS"),2,"AOVR",34,42,1,0))
  1. ;end new abm*2.6*21 IHS/SD/SDR HEAT284071
  1. I X'="" Q X
  1. S X=$P($G(^ABMDPARM(ABMP("LDFN"),1,3)),"^",6)
  1. S:X="" X=$P($G(^ABMDPARM(DUZ(2),1,3)),"^",6)
  1. S:X X=$P(^ABMDCODE(X,0),U)
  1. I X=22,$E($G(ABMP("BTYP")),2)=1 S X=21
  1. I X=21,$E($G(ABMP("BTYP")),2)>2 S X=22
  1. I $G(ABMP("VTYP"))=831 S X=24 ;ASC
  1. I $G(ABMP("CLIN"))=30 S X=23
  1. I $G(ABMP("CLIN"))=11 S X=12
  1. Q X
  1. TOS(X) ;EP type of service (where x=multiple from 3P Bill File)
  1. S Y="01"
  1. S:X=21 Y="02"
  1. S:X=23 Y=99
  1. S:X=35 Y="04"
  1. S:X=37 Y="05"
  1. S:X=39 Y="07"
  1. Q Y
  1. SOP1(X) ;EP source of pay (x=ien insurer file)
  1. ;S ABMTYP=$P($G(^AUTNINS(+X,2)),U) ;abm*2.6*10 HEAT73780
  1. S ABMTYP=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,+X,".211","I"),1,"I") ;abm*2.6*10 HEAT73780
  1. S Y=ABMTYP
  1. I Y'="" D
  1. .S Y=$F("HMDRPWCFNIK",ABMTYP)
  1. .S Y=$E(" IZDCFBHZAZD",Y)
  1. .I ABMTYP="P",$$BCBS1(X) S Y="G"
  1. K ABMTYP
  1. Q Y
  1. BCBS1(X) ;EP check if blue cross/blue shield
  1. S Y=0
  1. S ABMNM=$P($G(^AUTNINS(+X,0)),U)
  1. I ABMNM="" K ABMNM Q Y
  1. N I
  1. F I="B","C","S" D Q:'ABMLC
  1. .S ABMLC=$F(ABMNM,I,$G(ABMLC))
  1. I ABMLC S Y=1
  1. K ABMNM,ABMLC
  1. Q Y
  1. NSN(X) ; EP next submission number
  1. I $G(^ABMDTXST(0))<100000 S ^(0)=100000
  1. L +^ABMDTXST(0):30 I '$T S X="" Q X
  1. S X=^ABMDTXST(0)+1
  1. S ^ABMDTXST(0)=X
  1. L -^ABMDTXST(0)
  1. Q X
  1. TCN(X) ;EP Transmission Control Number
  1. I $G(X)="" Q X
  1. I '$D(^ABMDTXST(DUZ(2),X,0)) S X="" Q X
  1. S DA=X
  1. ;start old abm*2.6*3 5PMS10005#2
  1. ;I $P($G(^ABMDTXST(DUZ(2),DA,1)),"^",6)="" D
  1. ;.S DIE="^ABMDTXST(DUZ(2),"
  1. ;.S DR=".16///"_$$NSN()
  1. ;.D ^DIE
  1. ;Q $P(^ABMDTXST(DUZ(2),DA,1),"^",6)
  1. ;end old start new 5PMS10005#2
  1. I $G(ABMXMTDT)="" S X="" Q X
  1. I +$O(^ABMDTXST(DUZ(2),X,3,"B",ABMXMTDT,0))=0 D
  1. .S ABMP("XMIT")=X
  1. .D GCNMULT("O","")
  1. Q $P($G(^ABMDTXST(DUZ(2),X,3,$O(^ABMDTXST(DUZ(2),X,3,"B",ABMXMTDT,0)),0)),U,2)
  1. ;end new 5PMS10005#2
  1. ;
  1. ;start new abm*2.6*3 5PM10005#2
  1. GCNMULT(ABMSTAT,ABMREASN) ;
  1. N DIC,DIE,DA,DR,X,Y
  1. ;S ABMGCN=$$NSN() ;abm*2.6*6 5010
  1. I +$G(ABMGCN)=0 S ABMGCN=$$NSN() ;abm*2.6*6 5010
  1. S DA(1)=ABMP("XMIT")
  1. S DIC="^ABMDTXST(DUZ(2),"_DA(1)_",3,"
  1. S DIC("P")=$P(^DD(9002274.6,3,0),U,2)
  1. S DIC(0)="L"
  1. D NOW^%DTC
  1. S (X,ABMXMTDT)=%
  1. S DIC("DR")=".02////"_ABMGCN
  1. S DIC("DR")=DIC("DR")_";.03////"_ABMSTAT
  1. S DIC("DR")=DIC("DR")_";.04////"_DUZ
  1. I +$G(ABM("CHIEN"))'=0 S DIC("DR")=DIC("DR")_";.07////"_+$G(ABM("CHIEN")) ;abm*2.6*6 5010
  1. D ^DIC
  1. Q:(+Y<0)
  1. I $G(ABMREASN) D
  1. .W !
  1. .K DIC,DIE,DA,DR,X
  1. .S DA(1)=ABMP("XMIT")
  1. .S DA=+Y
  1. .K Y
  1. .S DIE="^ABMDTXST(DUZ(2),"_DA(1)_",3,"
  1. .S DR=".05Reason for Recreate\Resend//"
  1. .S DIE("NO^")=""
  1. .D ^DIE
  1. Q
  1. ;end new abm*2.6*3 5PMS10005#2