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

ABMDF28.m

Go to the documentation of this file.
  1. ABMDF28 ; IHS/ASDST/DMJ - Set UB-04 Print Array ;
  1. ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
  1. ; INPUT: ABMY(active insurer IEN, 3P BILL IEN)="" ;
  1. K ABMP
  1. S U="^"
  1. S ABMP("XMIT")=0 ; initialize transmittal flag
  1. S ABMP("EXP")=28 ; set mode of export to 28 (UB-04)
  1. S ABMY("TOT")="0^0^0" ; # bills ^ $ amt ^ # insurers
  1. S ABMP("NOFMT")=1 ; format flag used for EMC
  1. ;
  1. BDFN ;
  1. ; Loop ABMY array to print bills grouped by insurer
  1. S ABMY("N")=0 ; initialize active insurer
  1. F S ABMY("N")=$O(ABMY(ABMY("N"))) Q:'ABMY("N") D
  1. .S ABMP("BDFN")=0 ; initialize 3P BILL IEN
  1. .F S ABMP("BDFN")=$O(ABMY(ABMY("N"),ABMP("BDFN"))) Q:'ABMP("BDFN") D
  1. ..Q:'$D(^ABMDBILL(DUZ(2),ABMP("BDFN"),0)) ; Quit if no bill data
  1. ..D ENT ; gather data print form
  1. ..S $P(ABMY("TOT"),U)=$P(ABMY("TOT"),U)+1 ; increment bill count
  1. ..I ABMP("XMIT")=0 D ; if no previous transmittal do...
  1. ...S ABM("XM")=""
  1. ...F S ABM("XM")=$O(^ABMDTXST(DUZ(2),"B",DT,ABM("XM"))) Q:'ABM("XM") D Q:ABMP("XMIT")
  1. ....Q:'$D(^ABMDTXST(DUZ(2),ABM("XM"),0)) ; Quit if no data
  1. ....Q:$P(^ABMDTXST(DUZ(2),ABM("XM"),0),U,2)'=ABMP("EXP") ; Quit if wrong export mode
  1. ....I $D(ABMY("TYP")),$P(^ABMDTXST(DUZ(2),ABM("XM"),0),U,3)=ABMY("TYP") S ABMP("XMIT")=ABM("XM") ;Insurer type
  1. ....I $D(ABMY("INS")),$P(^ABMDTXST(DUZ(2),ABM("XM"),0),U,4)=ABMY("INS") S ABMP("XMIT")=ABM("XM") ;Insurer
  1. ....Q
  1. ...Q
  1. ..; Create entry in 3P TX STATUS
  1. ..I '+ABMP("XMIT") D
  1. ...S DIC="^ABMDTXST(DUZ(2),"
  1. ...S DIC(0)="L"
  1. ...S X=DT
  1. ...S DIC("DR")=".02////28;.07////1;.08////1;"_$S($D(ABMY("TYP")):".03////"_ABMY("TYP"),$D(ABMY("INS")):".04////"_$P(ABMY("INS"),U),1:".03////A")_";.05////"_DUZ
  1. ...K DD,DO,DINUM D FILE^DICN
  1. ...S ABMP("XMIT")=+Y
  1. ...Q
  1. ..S DIE="^ABMDBILL(DUZ(2),"
  1. ..S DA=ABMP("BDFN")
  1. ..S DR=".04////B;.16////A;.17////"_ABMP("XMIT")
  1. ..D ^ABMDDIE
  1. ..Q:$D(ABM("DIE-FAIL"))
  1. ..K ^ABMDBILL(DUZ(2),"AS",+^ABMDBILL(DUZ(2),ABMP("BDFN"),0),"A",ABMP("BDFN"))
  1. ..S ABM=ABMP("BDFN")
  1. ..S ABM("L")=ABMP("XMIT")
  1. ..K ABMP
  1. ..S ABMP("XMIT")=ABM("L")
  1. ..S ABMP("BDFN")=ABM
  1. K ABM,ABMF
  1. Q
  1. ;
  1. ENT ;EP for setting up export array and printing form
  1. K ABMF,ABM,ABMU,ABMR,ABMS,ABME,ABMP("CPT")
  1. S ABMP("B0")=^ABMDBILL(DUZ(2),ABMP("BDFN"),0) ; 3P BILL 0 node
  1. S ABMP("INS")=$P(ABMP("B0"),U,8) ; Active insurer
  1. Q:'ABMP("INS") ; Q:no active insurer
  1. S ABMP("ITYPE")=$P($G(^AUTNINS(ABMP("INS"),2)),U) ; type of insur
  1. S ABMP("PDFN")=$P(ABMP("B0"),U,5) ; IEN to patient
  1. S ABMP("CDFN")=+$P(ABMP("B0"),U) ; IEN to 3P CLAIM
  1. S ABMP("LDFN")=$P(ABMP("B0"),U,3) ; IEN to location (visit location)
  1. S ABMP("VTYP")=$P(ABMP("B0"),U,7) ; Visit type
  1. Q:'ABMP("PDFN")!('+ABMP("LDFN")) ; Q: no patient or location
  1. S ABMP("VDT")=$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),7),U) ; Serv. date from
  1. S ABMP("BTYP")=$P(ABMP("B0"),U,2) ; Bill type
  1. S ABMP("EXP")=$P(ABMP("B0"),U,6) S:ABMP("EXP")="" ABMP("EXP")=28 ;Export mode w/default set to 28
  1. D EXP^ABMDEVAR ; set export array ABMP("EXP",IEN to 3P EXPORT MODE)
  1. D ISET^ABMERUTL ; set export array ABMP("VTYP",IEN to VISIT)=IEN to 3P EXPORT MODE
  1. S $P(ABMY("TOT"),"^",2)=$P(ABMY("TOT"),"^",2)+$P(^ABMDBILL(DUZ(2),ABMP("BDFN"),2),U) ; increment total bill amount
  1. I '$D(ABMY("TINS",ABMP("INS"))) D
  1. .S ABMY("TINS",ABMP("INS"))=""
  1. .S $P(ABMY("TOT"),"^",3)=$P(ABMY("TOT"),"^",3)+1 ; increment total number of insurers
  1. .Q
  1. D FRATE ; Build flat rate
  1. D ^ABMDF28X ; Gather data and print bill
  1. Q
  1. ;
  1. FRATE ; EP
  1. ; BUILD FLAT RATE VARIABLE
  1. ; ABMP("FLAT")="Flat rate of visit ^ Revenue Code ^ # days covered"
  1. ; if date in Visit file is in specified range for specified visit type
  1. K ABMP("FLAT")
  1. Q:$P(^AUTNINS(ABMP("INS"),2),"^",2)'="Y"
  1. I $O(^ABMNINS(DUZ(2),ABMP("INS"),1,ABMP("VTYP"),11,0)) D
  1. .I ABMP("BTYP")=121 S ABMP("VTYP")=121 ; Ancillary
  1. .S ABMP("FLAT")=$$FLAT^ABMDUTL(ABMP("INS"),ABMP("VTYP"),ABMP("VDT")) ; Rate of visit
  1. .;I +$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),2)),U)'=0 S ABMP("FLAT")=$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),2)),U)
  1. .I '+ABMP("FLAT") K ABMP("FLAT") Q
  1. .S $P(ABMP("FLAT"),"^",2)=$P(^ABMNINS(DUZ(2),ABMP("INS"),1,ABMP("VTYP"),0),"^",3) ; Revenue code
  1. .I ABMP("BTYP")=121 S ABMP("VTYP")=111
  1. .I $P(ABMP("FLAT"),"^",2)="" D ; if no revenue code
  1. ..I ABMP("VTYP")'=111 S $P(ABMP("FLAT"),"^",2)=510 Q ; and not inpatient
  1. ..I ABMP("BTYP")=121 S $P(ABMP("FLAT"),"^",2)=240 Q ; and inpatient
  1. ..S $P(ABMP("FLAT"),"^",2)=100 Q ; else
  1. ..Q
  1. .S $P(ABMP("FLAT"),"^",3)=$S(ABMP("VTYP")=111:$P($G(^ABMDBILL(DUZ(2),ABMP("BDFN"),7)),"^",3),1:1) ; number of days covered
  1. .S:$P(ABMP("FLAT"),"^",3)=0 $P(ABMP("FLAT"),"^",3)=1
  1. .Q
  1. K ABM
  1. Q