| [613] | 1 | IBCEP2B ;ALB/TMP - EDI UTILITIES for provider ID ;18-MAY-04
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**232,320**;21-MAR-94
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | PROVID(IBIFN,IBPRIEN,IBCOBN,DIPA) ; Provider id entry on billing screen 8
 | 
|---|
 | 5 |  ; IBIFN = ien file 399
 | 
|---|
 | 6 |  ; IBPRIEN = ien file 399.0222
 | 
|---|
 | 7 |  ; IBCOBN = the COB number of the id being edited
 | 
|---|
 | 8 |  ; DIPA = passed by ref, returned with id data
 | 
|---|
 | 9 |  ; DIPA("EDIT")=-1 if no id editing  = 1 if edit id   = 2 if stuff id
 | 
|---|
 | 10 |  ; DIPA("PRID")= id to stuff   DIPA("PRIDT")= id type to stuff
 | 
|---|
 | 11 |  N PRN0,Z
 | 
|---|
 | 12 |  Q:'$G(^DGCR(399,IBIFN,"I1"))
 | 
|---|
 | 13 |  S PRN0=$G(^DGCR(399,IBIFN,"PRV",IBPRIEN,0))
 | 
|---|
 | 14 |  S DIPA("EDIT")=1,(DIPA("PRID"),DIPA("PRIDT"))=""
 | 
|---|
 | 15 |  W @IOF
 | 
|---|
 | 16 |  W !,?19,"**** SECONDARY PERFORMING PROVIDER IDs ****"
 | 
|---|
 | 17 |  W !!,$P("PRIMARY^SECONDARY^TERTIARY",U,IBCOBN)_" INSURANCE CO: "_$P($G(^DIC(36,+$G(^DGCR(399,IBIFN,"I"_IBCOBN)),0)),U)
 | 
|---|
 | 18 |  W !,"PROVIDER: "_$$EXTERNAL^DILFD(399.0222,.02,"",$P(PRN0,U,2))_" ("_$$EXTERNAL^DILFD(399.0222,.01,"",+PRN0)_")",!
 | 
|---|
 | 19 |  ;
 | 
|---|
 | 20 |  I $P(PRN0,U,4+IBCOBN)="" K DIPA("PRID"),DIPA("PRIDT") D NEWID(IBIFN,IBPRIEN,IBCOBN,.DIPA) ; No id currently exists for the ins seq/prov
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 |  Q
 | 
|---|
 | 23 |  ;
 | 
|---|
 | 24 | NEWID(IBIFN,IBPRIEN,IBCOBN,DIPA) ;
 | 
|---|
 | 25 |  N IBDEF,IBCT,IBNUM,IBINS,IBFRM,IBCAR,IBARR,IBARRS,IB0,IBM,IBQUIT,IBSEL,PRN,PRT,PRN,PRN0,DIR,X,Y,Z,Z0,IBZ,IBZ1,IBTYP,IBREQ,IBREQT,IBTYPN,IBID,IBUSED
 | 
|---|
 | 26 |  S IBREQ=0,IBREQT=""
 | 
|---|
 | 27 |  S PRN0=$G(^DGCR(399,IBIFN,"PRV",IBPRIEN,0))
 | 
|---|
 | 28 |  S Z(IBCOBN)=$S($G(DIPA("I"_IBCOBN)):$$GETTYP^IBCEP2A(IBIFN,IBCOBN,$P(PRN0,U)),1:"")
 | 
|---|
 | 29 |  S IBINS=+$G(^DGCR(399,IBIFN,"I"_IBCOBN)),IB0=$G(^DGCR(399,IBIFN,"PRV",IBPRIEN,0))
 | 
|---|
 | 30 |  S IBCAR=$$INPAT^IBCEF(IBIFN,1),IBCAR=$S('IBCAR:2,1:1)
 | 
|---|
 | 31 |  S IBFRM=$$FT^IBCEF(IBIFN),IBFRM=$S(IBFRM=2:2,1:1)
 | 
|---|
 | 32 |  I $P(Z(IBCOBN),U) D
 | 
|---|
 | 33 |  . W !,"INS. COMPANY'S DEFAULT SECONDARY ID TYPE IS: "_$$EXTERNAL^DILFD(36,4.01,"",$P(Z(IBCOBN),U)) S IBREQT=+Z(IBCOBN)
 | 
|---|
 | 34 |  . I $P(Z(IBCOBN),U,2) W !,?2," AND IS REQUIRED TO BE ENTERED FOR THIS CLAIM" S IBREQ=1
 | 
|---|
 | 35 |  I $$CUNEED^IBCEP3(IBIFN,IBCOBN) W !,"CARE UNITS ARE DEFINED"_$S($P($G(^DIC(36,IBINS,4)),U,9)'="":" AS "_$P(^(4),U,9),1:"")_" FOR THESE IDs"
 | 
|---|
 | 36 |  D PRACT^IBCEF71(IBINS,IBFRM,IBCAR,$P(IB0,U,2),.IBARR,$P(IB0,U),$S($$COBN^IBCEF(IBIFN)=IBCOBN:"C",1:"O"),355.9,1)
 | 
|---|
 | 37 |  S (IBNUM,IBCT)=0,IBDEF=""
 | 
|---|
 | 38 |  I $O(IBARR(""))="" S IBCT=IBCT+1,DIR("A",IBCT)="NO SECONDARY IDS ARE DEFINED FOR THIS PROV THAT ARE VALID FOR THIS CLAIM"
 | 
|---|
 | 39 |  S IBCT=IBCT+1,DIR("A",IBCT)="SELECT A SECONDARY ID OR ACTION FROM THE LIST BELOW: ",IBCT=IBCT+1,DIR("A",IBCT)=" "
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 |  S IBCT=IBCT+1,IBNUM=IBNUM+1,DIR("A",IBCT)="  "_$E(IBNUM_$J("",3),1,3)_" -  NO SECONDARY ID NEEDED",IBNUM=IBNUM+1,IBCT=IBCT+1,DIR("A",IBCT)="  "_$E(IBNUM_$J("",3),1,3)_" -  ADD AN ID FOR THIS CLAIM ONLY"
 | 
|---|
 | 42 |  I $O(IBARR(""))="" S IBDEF=1,DIPA("EDIT")=$$SELID(.DIR,IBDEF,.IBID,.DIPA,IBNUM) Q
 | 
|---|
 | 43 |  ;
 | 
|---|
 | 44 |  S PRN=$$GETID^IBCEP2(IBIFN,2,$P(PRN0,U,2),IBCOBN,.PRT,,$P(PRN0,U)),IBDEF=""
 | 
|---|
 | 45 |  ;
 | 
|---|
 | 46 |  I PRN'="",PRT D
 | 
|---|
 | 47 |  . N PRT1
 | 
|---|
 | 48 |  . S PRT1=$P($G(^IBE(355.97,+PRT,0)),U)
 | 
|---|
 | 49 |  . I $P($G(^IBE(355.97,+PRT,1)),U,3) S PRT1="ST LIC("_$P($G(^DIC(5,+$$CAREST^IBCEP2A(IBIFN),0)),U,2)_")"
 | 
|---|
 | 50 |  . S IBCT=IBCT+1,IBNUM=IBNUM+1
 | 
|---|
 | 51 |  . S DIR("A",IBCT)="  "_$E(IBNUM_$J("",3),1,3)_" -  "_$E("<DEFAULT> "_PRN_$J("",29),1,29)_"  "_$E(PRT1_$J("",15),1,15)
 | 
|---|
 | 52 |  . S DIR("A",IBCT)=DIR("A",IBCT)_"  "_$S($P(PRT,U,3)'["355.9":"",$P($G(^IBA(+$P(PRT,U,3),+$P(PRT,U,2),0)),U,3)'="":$$EXTERNAL^DILFD(355.9,.03,"",$P($G(^IBA(+$P(PRT,U,3),+$P(PRT,U,2),0)),U,3)),1:"")
 | 
|---|
 | 53 |  . S IBID(IBNUM)=PRN_U_+PRT,IBDEF=IBNUM,IBID(IBNUM,1)=DIR("A",IBCT),IBDEF=IBNUM,IBDEF("IEN")=$P(PRT,U,2,3)
 | 
|---|
 | 54 |  . S IBUSED(PRT,PRN,0)=""
 | 
|---|
 | 55 |  ;
 | 
|---|
 | 56 |  S IBQUIT=0,IBSEL=1
 | 
|---|
 | 57 |  ; Sort ids by id type
 | 
|---|
 | 58 |  S IBZ="" F  S IBZ=$O(IBARR(IBZ)) Q:IBZ=""  S IBZ1="" F  S IBZ1=$O(IBARR(IBZ,IBZ1)) Q:IBZ1=""  D
 | 
|---|
 | 59 |  . S IBTYP=+$P(IBARR(IBZ,IBZ1),U,9)
 | 
|---|
 | 60 |  . I $P(IBARR(IBZ,IBZ1),U,4)]"" Q:$D(IBUSED(IBTYP,$P(IBARR(IBZ,IBZ1),U,4),+$P(IBARR(IBZ,IBZ1),U,7)))
 | 
|---|
 | 61 |  . I $P($G(IBDEF("IEN")),U,2)["355.9",$P(IBARR(IBZ,IBZ1),U,8),$P(IBARR(IBZ,IBZ1),U,8)=+$G(IBDEF("IEN")) Q:$S($P(IBZ1,U)'["INS DEF":$P($G(IBDEF("IEN")),U,2)=355.9,1:$P($G(IBDEF("IEN")),U,2)=355.91)
 | 
|---|
 | 62 |  . S IBARRS(IBTYP,IBZ,IBZ1)=IBARR(IBZ,IBZ1)
 | 
|---|
 | 63 |  . I $P(IBARR(IBZ,IBZ1),U,4)]"" S IBUSED(IBTYP,$P(IBARR(IBZ,IBZ1),U,4),+$P(IBARR(IBZ,IBZ1),U,7))=""
 | 
|---|
 | 64 |  S IBTYP="" F  S IBTYP=$O(IBARRS(IBTYP)) Q:IBTYP=""  S IBZ="" F  S IBZ=$O(IBARRS(IBTYP,IBZ)) Q:IBZ=""  D  Q:IBQUIT
 | 
|---|
 | 65 |  . S IBZ1="" F  S IBZ1=$O(IBARRS(IBTYP,IBZ,IBZ1)) Q:IBZ1=""  S IBCT=IBCT+1,IBNUM=IBNUM+1 D  Q:IBQUIT
 | 
|---|
 | 66 |  .. S Z0=IBARRS(IBTYP,IBZ,IBZ1)
 | 
|---|
 | 67 |  .. S IBARR=$S($P(Z0,U,8)&(IBZ1'["LIC"):$G(^IBA("355.9"_$S($P(IBZ1,U)'="INS DEF":"",1:1),+$P(Z0,U,8),0)),1:"")
 | 
|---|
 | 68 |  .. S IBTYPN=$S(IBTYP=+$$STLIC^IBCEP8():"ST LIC ("_$P($G(^DIC(5,+$P(Z0,U,7),0)),U,2)_")",1:$P($G(^IBE(355.97,IBTYP,0)),U))
 | 
|---|
 | 69 |  .. S DIR("A",IBCT)="  "_$E(IBNUM_$J("",3),1,3)_" -  "_$E($S($P(IBZ1,U)="INS DEF":"<INS DEF> ",1:"")_$P(Z0,U,4)_$J("",29),1,29)_"  "_$E(IBTYPN_$J("",15),1,15)_"  "_$S($P(IBARR,U,3):$$EXTERNAL^DILFD(355.9,.03,"",$P(IBARR,U,3)),1:"")
 | 
|---|
 | 70 |  .. S IBID(IBNUM,1)=DIR("A",IBCT),IBID(IBNUM)=$P(Z0,U,4)_U_IBTYP
 | 
|---|
 | 71 |  .. I (IBNUM#15)=0 S IBM=$$MORE(.DIR) D  Q:IBQUIT
 | 
|---|
 | 72 |  ... I IBM<0 S IBQUIT=1,IBSEL=0 Q  ; User aborted list
 | 
|---|
 | 73 |  ... I 'IBM S IBQUIT=1 Q  ; User wants to select
 | 
|---|
 | 74 |  ... W ! K DIR S IBCT=1
 | 
|---|
 | 75 |  I 'IBSEL S DIPA("EDIT")=-1
 | 
|---|
 | 76 |  I IBSEL S:IBDEF=""&$G(IBREQ) IBDEF=2 S DIPA("EDIT")=$$SELID(.DIR,IBDEF,.IBID,.DIPA,IBNUM)
 | 
|---|
 | 77 |  Q
 | 
|---|
 | 78 |  ;
 | 
|---|
 | 79 | SELID(DIR,IBDEF,IBID,DIPA,IBNUM) ; Returns the selection from the array of possible IDs/ID actions
 | 
|---|
 | 80 |  N IDACT,IDSEL,X,Y
 | 
|---|
 | 81 |  S IDACT=""
 | 
|---|
 | 82 |  S DIR("B")=$S('$G(IBDEF):1,1:IBDEF),DIR("A",+$O(DIR("A",""),-1)+1)=" "
 | 
|---|
 | 83 |  S DIR(0)="NA^1:"_IBNUM,DIR("A")="Selection: " W ! D ^DIR K DIR
 | 
|---|
 | 84 |  I $D(DTOUT)!$D(DUOUT)!(Y=1) S IDACT=-1 G SELIDQ
 | 
|---|
 | 85 |  I Y=2 S IDACT=1 G SELIDQ
 | 
|---|
 | 86 |  S IDSEL=Y
 | 
|---|
 | 87 |  S DIR("A",1)="ID SELECTED:",DIR("A",2)="  "_$G(IBID(+Y,1)),DIR("A")="IS THIS CORRECT?: ",DIR("B")="YES",DIR(0)="YA" W ! D ^DIR K DIR
 | 
|---|
 | 88 |  I Y'=1 S IDACT=-1 G SELIDQ
 | 
|---|
 | 89 |  S DIPA("PRID")=$P(IBID(IDSEL),U),DIPA("PRIDT")=$P(IBID(IDSEL),U,2),IDACT=2
 | 
|---|
 | 90 |  ;
 | 
|---|
 | 91 | SELIDQ Q IDACT
 | 
|---|
 | 92 |  ;
 | 
|---|
 | 93 | MORE(DIR) ;
 | 
|---|
 | 94 |  N DIR,X,Y,DUOUT,DTOUT
 | 
|---|
 | 95 |  S DIR(0)="YA",DIR("A")="MORE?: ",DIR("B")="NO" W ! D ^DIR K DIR("B")
 | 
|---|
 | 96 |  Q $S($D(DTOUT)!$D(DUOUT):-1,1:Y)
 | 
|---|
 | 97 |  ;
 | 
|---|
 | 98 |  ; IBFIDFL = E = Electronic Form Type
 | 
|---|
 | 99 |  ;           A = Additional ID's
 | 
|---|
 | 100 |  ;           LF - VA Lab/Facility
 | 
|---|
 | 101 | FACID(IBINS,IBFIDFL) ; Enter/edit billing facility ids
 | 
|---|
 | 102 |  ; IBINS = ien of ins co (file 36)
 | 
|---|
 | 103 |  N IBID,Z,Z0,Y
 | 
|---|
 | 104 |  K ^TMP($J,"IBBF_ID")
 | 
|---|
 | 105 |  W @IOF
 | 
|---|
 | 106 |  D GETBPNUM(IBINS)
 | 
|---|
 | 107 |  K ^TMP("IBCE_PRVFAC_MAINT_INS",$J)
 | 
|---|
 | 108 |  S ^TMP("IBCE_PRVFAC_MAINT_INS",$J)=IBFIDFL_U_IBINS_U_"1"
 | 
|---|
 | 109 |  D EN^VALM("IBCE PRVFAC MAINT")
 | 
|---|
 | 110 |  K ^TMP("IBCE_PRVFAC_MAINT_INS",$J)
 | 
|---|
 | 111 |  W @IOF
 | 
|---|
 | 112 |  D FULL^VALM1
 | 
|---|
 | 113 |  Q
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 | GETBPNUM(IBINS) ;
 | 
|---|
 | 116 |  N Z,Z0,IBID,IBMAIN
 | 
|---|
 | 117 |  S IBMAIN=$$MAIN(),^TMP($J,"IBBF_ID")=IBMAIN
 | 
|---|
 | 118 |  S IBID=$$BF^IBCU()
 | 
|---|
 | 119 |  S Z=0 F  S Z=$O(^IBA(355.92,"B",IBINS,Z)) Q:'Z  D
 | 
|---|
 | 120 |  . S Z0=$G(^IBA(355.92,Z,0))
 | 
|---|
 | 121 |  . Q:$P(Z0,U,8)'="E"  ; WCJ 1/13/06  There are several ID types in this file 
 | 
|---|
 | 122 |  . Q:$P(Z0,U,3)]""
 | 
|---|
 | 123 |  .; I $P(Z0,U,6)=IBID S ^TMP($J,"IBBF_ID",$S($P(Z0,U,5)=IBMAIN:0,1:+$P(Z0,U,5)),+$P(Z0,U,4))=$P(Z0,U,7)
 | 
|---|
 | 124 |  . S ^TMP($J,"IBBF_ID",$S($P(Z0,U,5)=IBMAIN:0,1:+$P(Z0,U,5)),+$P(Z0,U,4))=$P(Z0,U,7)
 | 
|---|
 | 125 |  . S ^TMP($J,"IBBF_ID",$S($P(Z0,U,5)=IBMAIN:0,1:+$P(Z0,U,5)),+$P(Z0,U,4),"QUAL")=$P(Z0,U,6)
 | 
|---|
 | 126 |  Q
 | 
|---|
 | 127 |  ;
 | 
|---|
 | 128 | MAIN() ; Returns ien of default division or the main division for facility if
 | 
|---|
 | 129 |  ; no IB DEFAULT DIVISION set
 | 
|---|
 | 130 |  N IBMAIN
 | 
|---|
 | 131 |  S IBMAIN=$P($G(^IBE(350.9,1,1)),U,25) S:'IBMAIN IBMAIN=+$$PRIM^VASITE()
 | 
|---|
 | 132 |  Q IBMAIN
 | 
|---|
 | 133 |  ;
 | 
|---|
 | 134 | FACNUM(IBIFN,IBCOB,IBQF) ; Function returns the current division's fac billing
 | 
|---|
 | 135 |  ; prov id for the COB insurance sequence from file 355.92
 | 
|---|
 | 136 |  ; IBIFN = ien file 399
 | 
|---|
 | 137 |  ; IBCOB = # of COB ins seq or if "", current assumed
 | 
|---|
 | 138 |  ; IBQF - 1 if qualifier is to be returned instead of ID
 | 
|---|
 | 139 |  N Z,IBDIV,IBFT,X
 | 
|---|
 | 140 |  S X=""
 | 
|---|
 | 141 |  S IBDIV=+$P($G(^DGCR(399,IBIFN,0)),U,22)
 | 
|---|
 | 142 |  S:'IBDIV IBDIV=$$MAIN()
 | 
|---|
 | 143 |  S IBFT=$$FT^IBCEF(IBIFN),IBFT=$S(IBFT=3:1,1:2)
 | 
|---|
 | 144 |  S:'$G(IBCOB) IBCOB=+$$COBN^IBCEF(IBIFN)
 | 
|---|
 | 145 |  K ^TMP($J,"IBBF_ID")
 | 
|---|
 | 146 |  D GETBPNUM(+$P($G(^DGCR(399,IBIFN,"M")),U,IBCOB))
 | 
|---|
 | 147 |  I IBDIV=+$G(^TMP($J,"IBBF_ID")) S IBDIV=0
 | 
|---|
 | 148 |  I '$G(IBQF) S X=$S($D(^TMP($J,"IBBF_ID",IBDIV,IBFT)):^(IBFT),1:$G(^TMP($J,"IBBF_ID",0,IBFT)))
 | 
|---|
 | 149 |  I $G(IBQF) S X=$S($D(^TMP($J,"IBBF_ID",IBDIV,IBFT,"QUAL")):^("QUAL"),1:$G(^TMP($J,"IBBF_ID",0,IBFT,"QUAL")))
 | 
|---|
 | 150 |  K ^TMP($J,"IBBF_ID")
 | 
|---|
 | 151 |  Q X
 | 
|---|
 | 152 |  ;
 | 
|---|
 | 153 | SOP(IBIFN,IBZD) ; Returns X12 current source of pay code for bill ien IBIFN
 | 
|---|
 | 154 |  ; IBZD = the current ins policy type, if known
 | 
|---|
 | 155 |  N IBZ
 | 
|---|
 | 156 |  S IBZ=""
 | 
|---|
 | 157 |  I $G(IBZD)="" D F^IBCEF("N-CURRENT INS POLICY TYPE","IBZD",,IBIFN)
 | 
|---|
 | 158 |  S IBZ=$S($G(IBZD)="":"G2","MAMB16"[IBZD:"1C",IBZD="TV"!(IBZD="MC"):"1D",IBZD="CH":"1H",IBZD="BL":$S($$FT^IBCEF(IBIFN)=2:"1B",1:"1A"),1:"G2")
 | 
|---|
 | 159 |  Q IBZ
 | 
|---|
 | 160 |  ;
 | 
|---|