| 1 | IBCEP4 ;ALB/TMP - EDI UTILITIES for provider ID ;29-SEP-00 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**137,320,348,349**;21-MAR-94;Build 46 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | EN ; -- main entry point | 
|---|
| 6 | N IBINS,IBALL,IB95 | 
|---|
| 7 | D ENX | 
|---|
| 8 | Q | 
|---|
| 9 | ; | 
|---|
| 10 | EN1(IBINS) ; -- Entry point from provider number maintenence | 
|---|
| 11 | N IBPRV,IBALL,IB95 | 
|---|
| 12 | D ENX | 
|---|
| 13 | Q | 
|---|
| 14 | ; | 
|---|
| 15 | ENX ; Common call to list template for dual entry points | 
|---|
| 16 | N IBSLEV,DIR,Y | 
|---|
| 17 | K IBFASTXT | 
|---|
| 18 | D FULL^VALM1 | 
|---|
| 19 | S DIR(0)="SA^1:Care Units for Performing Provider IDs;2:Care Units for Billing Provider Secondary IDs" | 
|---|
| 20 | S DIR("A")="Enter Type of Care Unit: ",DIR("B")=$P($P(DIR(0),":",2),";") | 
|---|
| 21 | W ! D ^DIR K DIR W ! | 
|---|
| 22 | I Y'>0 Q | 
|---|
| 23 | S IBSLEV=+Y | 
|---|
| 24 | I IBSLEV=2 D EN^VALM("IBCE 2ND PRVID CARE UNIT MAINT") Q | 
|---|
| 25 | D EN^VALM("IBCE PRVCARE UNIT MAINT") | 
|---|
| 26 | Q | 
|---|
| 27 | ; | 
|---|
| 28 | HDR ; -- header | 
|---|
| 29 | K VALMHDR | 
|---|
| 30 | S VALMHDR(1)=" " | 
|---|
| 31 | S VALMHDR(2)="Insurance Co: "_$S('$G(IBALL)&$G(IBINS):$P($G(^DIC(36,+IBINS,0)),U),1:"ALL") | 
|---|
| 32 | Q | 
|---|
| 33 | ; | 
|---|
| 34 | INIT ; -- init variables, list array | 
|---|
| 35 | N Z,IB,IBLCT,IBENT,IBNM,IB0,Z0,Z1,IBQ,DIR,Y,X | 
|---|
| 36 | I $G(IBINS) S Y=IBINS ; For entrypoint from provider number maintenance | 
|---|
| 37 | ; | 
|---|
| 38 | I '$G(IBINS) D | 
|---|
| 39 | . S DIR(0)="PA^DIC(36,:AEMQ",DIR("A")="Select INSURANCE CO: ",DIR("?")="Select an INSURANCE CO to display its care units" | 
|---|
| 40 | . D ^DIR K DIR | 
|---|
| 41 | . I $D(DTOUT)!$D(DUOUT) S Y=-2 Q | 
|---|
| 42 | . I Y>0 S IBINS=+Y Q | 
|---|
| 43 | ; | 
|---|
| 44 | I Y'=-2 D | 
|---|
| 45 | . D BLD | 
|---|
| 46 | E  D | 
|---|
| 47 | . S VALMQUIT=1 | 
|---|
| 48 | Q | 
|---|
| 49 | ; | 
|---|
| 50 | BLD ;  Bld display  - IBINS must = ien of file 36 | 
|---|
| 51 | K ^TMP("IBPRV_CU",$J) | 
|---|
| 52 | ; | 
|---|
| 53 | I $G(IBSLEV)=2 Q | 
|---|
| 54 | ; | 
|---|
| 55 | S (IBENT,IBLCT)=0,IBNM="" | 
|---|
| 56 | F  S IBNM=$O(^IBA(355.95,"C",IBINS,IBNM)) Q:IBNM=""  S Z=0 F  S Z=$O(^IBA(355.95,"C",IBINS,IBNM,Z)) Q:'Z  S IB=$G(^IBA(355.95,Z,0)) I IB'="",$P(IB,U,4)="" D | 
|---|
| 57 | . S IBLCT=IBLCT+1,IBENT=IBENT+1 | 
|---|
| 58 | . I '$D(^IBA(355.96,"AUNIQ",IBINS,Z)) D SET^VALM10(IBLCT,$E(IBENT_"    ",1,4)_$E($P(IB,U)_$J("",30),1,30)_"  "_$E($P(IB,U,2)_$J("",20),1,20)_" (NO COMBINATIONS FOUND)",IBENT) Q | 
|---|
| 59 | . D SET^VALM10(IBLCT,$E(IBENT_"    ",1,4)_$E($P(IB,U)_$J("",30),1,30)_"  "_$E($P(IB,U,2)_$J("",20),1,20),IBENT) | 
|---|
| 60 | . S ^TMP("IBPRV_CU",$J,"ZIDX",IBENT)=Z | 
|---|
| 61 | . S Z0=0 F  S Z0=$O(^IBA(355.96,"AE",Z,Z0)) Q:'Z0  S Z1=0 F  S Z1=$O(^IBA(355.96,"AE",Z,Z0,Z1)) Q:'Z1  S IB0=$G(^IBA(355.96,Z1,0)) I IB0'="" D | 
|---|
| 62 | .. S IBLCT=IBLCT+1 | 
|---|
| 63 | .. S IBQ=$J("",28)_"o "_$E($$EXPAND^IBTRE(355.96,.06,+$P(IB0,U,6))_$J("",20),1,20) | 
|---|
| 64 | .. S IBQ=IBQ_"  "_$E($P("Both form types^UB-04 Only^CMS-1500 Only",U,$P(IB0,U,4)+1)_$J("",15),1,15)_"  "_$E($P("Inpt/Outpt^Inpt Only^Outpt Only^RX Only",U,+$P(IB0,U,5)+1)_$J("",10),1,10) | 
|---|
| 65 | .. D SET^VALM10(IBLCT,IBQ,IBENT) | 
|---|
| 66 | ; | 
|---|
| 67 | I 'IBLCT D SET^VALM10(1,"No CARE UNITs Found"_$S('$G(IBINS):"",1:" for Insurance Co")) | 
|---|
| 68 | S VALMCNT=IBLCT,VALMBG=1 | 
|---|
| 69 | Q | 
|---|
| 70 | ; | 
|---|
| 71 | HELP ; -- help | 
|---|
| 72 | ; | 
|---|
| 73 | I $G(IBSLEV)=2 Q | 
|---|
| 74 | ; | 
|---|
| 75 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 76 | Q | 
|---|
| 77 | ; | 
|---|
| 78 | EXIT ; -- exit | 
|---|
| 79 | K IBFASTXT | 
|---|
| 80 | D CLEAN^VALM10 | 
|---|
| 81 | K ^TMP("IBPRV_CU",$J),IBINS,IBALL | 
|---|
| 82 | Q | 
|---|
| 83 | ; | 
|---|
| 84 | EXPND ; | 
|---|
| 85 | Q | 
|---|
| 86 | ; | 
|---|
| 87 | SEL(IBDA,MANY) ; Select from care unit list | 
|---|
| 88 | ; IBDA is passed by reference and IBDA(1) returned containing | 
|---|
| 89 | ;  ien's of the care unit selected (file 355.95). | 
|---|
| 90 | ; If > 1 entry can be selected, MANY is set to 1 | 
|---|
| 91 | N Z | 
|---|
| 92 | S IBDA=0 | 
|---|
| 93 | D EN^VALM2($G(XQORNOD(0)),$S($G(MANY):"",1:"S")) | 
|---|
| 94 | S Z=0 F  S Z=$O(VALMY(Z)) Q:'Z  S IBDA=IBDA+1,IBDA(IBDA)=+$G(^TMP("IBPRV_CU",$J,"ZIDX",Z)) | 
|---|
| 95 | Q | 
|---|
| 96 | ; | 
|---|
| 97 | DISP(IBVAR,IBINS,IBPTYP,IBFT,IBCT,START,END) ; Set up display array for | 
|---|
| 98 | ; provider id | 
|---|
| 99 | N Z | 
|---|
| 100 | S START=$S($G(START):START,1:1) | 
|---|
| 101 | S (Z,END)=$G(START) | 
|---|
| 102 | S @IBVAR@(START)="INSURANCE: "_$S(IBINS:$P($G(^DIC(36,+IBINS,0)),U),1:"ALL INSURANCE") | 
|---|
| 103 | S @IBVAR@(START+1)="PROV TYPE: "_$$EXPAND^IBTRE(355.96,.06,IBPTYP) | 
|---|
| 104 | S @IBVAR@(START+2)="FORM TYPE: "_$$EXPAND^IBTRE(355.96,.04,IBFT) | 
|---|
| 105 | S @IBVAR@(START+3)="CARE TYPE: "_$$EXPAND^IBTRE(355.96,.05,IBCT) | 
|---|
| 106 | S END=$G(START)+3 | 
|---|
| 107 | Q | 
|---|
| 108 | ; | 
|---|
| 109 | CAREUOK(IBIFN,IBCU,IBTYPE,IBSEQ) ; Returns 1 if care unit is appropriate | 
|---|
| 110 | ; for bill based on provider type, care type, bill type and insurance co | 
|---|
| 111 | ; IBIFN = ien of bill (file 399) | 
|---|
| 112 | ; IBCU = the ien of the care unit (file 355.96) | 
|---|
| 113 | ; IBTYPE = type of ID being checked (1=performing, 2=EMC) | 
|---|
| 114 | ; IBSEQ = the COB seq being checked (1-3) | 
|---|
| 115 | N Z,IBOK,IBINS,IBCT,IBFT,IBPTYP,IBRX | 
|---|
| 116 | S IBOK=0 | 
|---|
| 117 | S IBINS=+$$FINDINS^IBCEF1(IBIFN,+IBSEQ),IBFT=$S($$FT^IBCEF(IBIFN)=2:2,1:1) | 
|---|
| 118 | S IBPTYP=+$S(IBTYPE=1:$$PPTYP^IBCEP0(IBINS),1:$$EMCID^IBCEP()) | 
|---|
| 119 | S IBRX=$$ISRX^IBCEF1(IBIFN) | 
|---|
| 120 | S IBCT=$S('IBRX:$S($$INPAT^IBCEF(IBIFN,1):1,1:2),1:3) | 
|---|
| 121 | ;Check from most general to most specific | 
|---|
| 122 | I $D(^IBA(355.96,"AD",IBINS,0,0,IBPTYP,IBCU)) S IBOK=1 G CAREOKQ | 
|---|
| 123 | I 'IBRX,$D(^IBA(355.96,"AD",IBINS,IBFT,0,IBPTYP,IBCU)) S IBOK=1 G CAREOKQ | 
|---|
| 124 | I $D(^IBA(355.96,"AD",IBINS,0,IBCT,IBPTYP,IBCU)) S IBOK=1 G CAREOKQ | 
|---|
| 125 | I $D(^IBA(355.96,"AD",IBINS,IBFT,IBCT,IBPTYP,IBCU)) S IBOK=1 G CAREOKQ | 
|---|
| 126 | ; | 
|---|
| 127 | CAREOKQ Q IBOK | 
|---|
| 128 | ; | 
|---|