| [613] | 1 | IBCEF5 ;ALB/TMP - MRA/EDI ACTIVATED UTILITIES ;06-FEB-96 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**137**;21-MAR-94 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | ADDRULE() ; Add a new rule to the EDI transmission rules file | 
|---|
|  | 5 | ; Function returns the entry number of the new rule or | 
|---|
|  | 6 | ;   0 if no rule added | 
|---|
|  | 7 | ; | 
|---|
|  | 8 | N DIR,X,Y,IBD,IBS,IBOK,IBDA1,IBC,DIC,DA,DR,DIE,IB,DO,DD,DLAYGO | 
|---|
|  | 9 | ; | 
|---|
|  | 10 | D FULL^VALM1 | 
|---|
|  | 11 | S IBOK=1 | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | L +^IBE(364.4,0):10 | 
|---|
|  | 14 | I '$T S IBOK=0 W !,"FILE LOCKED ... TRY AGAIN LATER" S IBOK=0 G ADDQ | 
|---|
|  | 15 | S X=$O(^IBE(364.4,"A"),-1) | 
|---|
|  | 16 | F  S X=X+1 I '$D(^IBE(364.4,X,0)) S DIC="^IBE(364.4,",DIC(0)="L",DLAYGO=364.4,DIC("DR")="10.01////"_DUZ_";10.02///"_$$NOW^XLFDT D FILE^DICN S IBDA1=+Y K DLAYGO,DIC Q | 
|---|
|  | 17 | L -^IBE(364.4,0) | 
|---|
|  | 18 | I IBDA1'>0 S IBOK=0 G ADDQ | 
|---|
|  | 19 | K DIR | 
|---|
|  | 20 | S DIR(0)="364.4,.11A",DIR("A")="New Rule's TYPE OF RULE: " | 
|---|
|  | 21 | D ^DIR K DIR | 
|---|
|  | 22 | I $D(DIRUT) S IBOK=0 G ADDQ ;Required | 
|---|
|  | 23 | S IB(.11)=+Y | 
|---|
|  | 24 | I +Y=0 W !,"YOU ARE ADDING A RULE THAT WILL ONLY ALLOW THE TRANSMISSION OF BILLS WHOSE",!,"  FORM TYPE IS INCLUDED IN THIS RULE." | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | S IB(.03)=2 ;MRA ONLY | 
|---|
|  | 27 | I IB(.11)'=2 D  G:'IBOK ADDQ | 
|---|
|  | 28 | . S DIR(0)="364.4,.03A^^I X=2 K X",DIR("A")="New Rule's TRANSMISSION TYPE: " | 
|---|
|  | 29 | . D ^DIR K DIR,DA | 
|---|
|  | 30 | . I Y'>0 S IBOK=0 K IB(.03) ;Required | 
|---|
|  | 31 | . S IB(.03)=+Y | 
|---|
|  | 32 | ; | 
|---|
|  | 33 | S DIR("A")=$S(IB(.11)'=0:"APPLY RULE ONLY TO BILLS THAT ARE (I)NSTITUTIONAL, (P)ROFESSIONAL, OR (B)OTH: ",1:"ONLY TRANSMIT (I)NSTITUTIONAL, (P)ROFESSIONAL, OR (B)OTH: ") | 
|---|
|  | 34 | S DIR(0)="SAM^I:INSTITUTIONAL ONLY;P:PROFESSIONAL ONLY;B:BOTH TYPES" | 
|---|
|  | 35 | D ^DIR K DIR,DA | 
|---|
|  | 36 | I "IPB"'[Y S IBOK=0 G ADDQ | 
|---|
|  | 37 | S IB(.05)=$S(Y="I":1,Y="P":2,1:3) | 
|---|
|  | 38 | ; | 
|---|
|  | 39 | ;S DIR("A")="APPLY RULE ONLY TO BILLS THAT ARE (I)NPATIENT, (O)UTPATIENT, OR (B)OTH: " | 
|---|
|  | 40 | ;S DIR(0)="SAM^I:INPATIENT;OUTPATIENT;B:BOTH" | 
|---|
|  | 41 | ;D ^DIR K DIR,DA | 
|---|
|  | 42 | ;I "IPB"'[Y S IBOK=0 G ADDQ | 
|---|
|  | 43 | ;S IB(.04)=$S(Y="I":1,Y="P":2,1:3) | 
|---|
|  | 44 | S IB(.04)=3 | 
|---|
|  | 45 | ; | 
|---|
|  | 46 | W ! | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | S IBS="",$P(IBS,"*",36)="" | 
|---|
|  | 49 | S DIR("A",1)=IBS | 
|---|
|  | 50 | S DIR("A",2)="THIS RULE WILL ONLY APPLY TO BILLS THAT MATCH ALL OF THE FOLLOWING CONDITIONS:" | 
|---|
|  | 51 | S IBD=2 | 
|---|
|  | 52 | I IB(.11)'=2 D | 
|---|
|  | 53 | . S IBD=IBD+1 | 
|---|
|  | 54 | . S DIR("A",IBD)=$J("",5)_"BILL IS "_$S(IB(.03)<3:"AN "_$P("EDI^MRA",U,+IB(.03)),1:"EITHER AN EDI OR MRA")_" BILL AND IS ALSO " | 
|---|
|  | 55 | . S Z=$S(IB(.11)=0:IB(.05)#2+1,1:+IB(.05)) | 
|---|
|  | 56 | . S DIR("A",IBD)=DIR("A",IBD)_$S(IB(.05)<3:$P("AN INSTITUTIONAL^A PROFESSIONAL",U,Z),1:"EITHER A PROFESSIONAL OR INSTITUTIONAL")_" BILL" | 
|---|
|  | 57 | .;S IBD=IBD+1,DIR("A",IBD)=$J("",5)_"AND "_$S(IB(.04)<3:"IS ALSO AN "_$P("INPATIENT^OUTPATIENT",U,+IB(.04)),1:"IS EITHER AN INPATIENT OR OUTPATIENT")_" BILL." | 
|---|
|  | 58 | . S IBD=IBD+1,DIR("A",IBD)="" | 
|---|
|  | 59 | . S IBD=IBD+1,DIR("A",IBD)="NOTE: RULE WILL BE IGNORED FOR ANY BILLS THAT DO NOT MATCH ALL THE CONDITIONS" | 
|---|
|  | 60 | . ; | 
|---|
|  | 61 | . I IB(.11)=0 D INSINC(.IBD) | 
|---|
|  | 62 | . ; | 
|---|
|  | 63 | . I IB(.11)=1 D | 
|---|
|  | 64 | .. D INSINC(.IBD),RTINC(.IBD) | 
|---|
|  | 65 | . ; | 
|---|
|  | 66 | . I IB(.11)=9 D | 
|---|
|  | 67 | .. S IBD=IBD+1,DIR("A",IBD)="" | 
|---|
|  | 68 | .. D INSINC(.IBD) | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | I IB(.11)=2 D | 
|---|
|  | 71 | . S IBD=IBD+1,DIR("A",IBD)=$J("",5)_"BILL IS AN MRA BILL" | 
|---|
|  | 72 | . S IBD=IBD+1,DIR("A",IBD)=$J("",5)_"AND IS ALSO "_$S(IB(.05)<3:$P("AN INSTITUTIONAL^A PROFESSIONAL",U,+IB(.05)),1:"EITHER A PROFESSIONAL OR INSTITUTIONAL")_" BILL" | 
|---|
|  | 73 | .;S IBD=IBD+1,DIR("A",IBD)=$J("",7)_"AND "_$S(IB(.04)<3:"IS ALSO AN "_$P("INPATIENT^OUTPATIENT",U,+IB(.04)),1:"IS EITHER AN INPATIENT OR OUTPATIENT")_" BILL" | 
|---|
|  | 74 | . S IBD=IBD+1,DIR("A",IBD)=$J("",5)_"AND ALSO HAS A NEXT INSURANCE THAT HAS BEEN INCLUDED IN THE" | 
|---|
|  | 75 | . S IBD=IBD+1,DIR("A",IBD)=$J("",8)_"'INSURANCE COMPANIES INCLUDED' LIST FOR THIS RULE." | 
|---|
|  | 76 | . S IBD=IBD+1,DIR("A",IBD)="" | 
|---|
|  | 77 | . S IBD=IBD+1,DIR("A",IBD)="NOTE: THIS RULE WILL BE IGNORED FOR ANY BILL THAT DOES NOT MATCH" | 
|---|
|  | 78 | . S IBD=IBD+1,DIR("A",IBD)="      ALL OF THESE CONDITIONS." | 
|---|
|  | 79 | . S IBD=IBD+1,DIR("A",IBD)="" | 
|---|
|  | 80 | . S IBD=IBD+1,DIR("A",IBD)="THE EFFECT OF THIS RULE WILL BE: IF A BILL MATCHES ALL OF THE ABOVE CONDITIONS," | 
|---|
|  | 81 | . S IBD=IBD+1,DIR("A",IBD)="THE REQUEST AND RECEIPT OF AN MRA WILL NOT BE ALLOWED." | 
|---|
|  | 82 | S IBD=IBD+1,DIR("A",IBD)=IBS | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | S DIR("A")="IS THIS CORRECT? " | 
|---|
|  | 85 | S DIR(0)="YA",DIR("B")="YES" | 
|---|
|  | 86 | D ^DIR K DIR | 
|---|
|  | 87 | I 'Y S IBOK=0 G ADDQ | 
|---|
|  | 88 | ; | 
|---|
|  | 89 | W ! | 
|---|
|  | 90 | ; | 
|---|
|  | 91 | ; Combine inpatient/outpatient and inst/prof checks | 
|---|
|  | 92 | S IB(.05,"IN")=$S(IB(.04)=1:0,1:$S(IB(.05)=1:2,IB(.05)=2:1,1:3)) | 
|---|
|  | 93 | S IB(.05,"OUT")=$S(IB(.04)=2:0,1:$S(IB(.05)=1:2,IB(.05)=2:1,1:3)) | 
|---|
|  | 94 | S IB(1)=$S(IB(.11)=0:"I $$MULTYP^IBCEF5(.IB,"_IB(.05,"IN")_","_IB(.05,"OUT")_")",IB(.11)=1:"I $$BILLTYP^IBCEF5(IBIFN,$G(IBDA))",IB(.11)=2:"I $$REQMRA^IBEFUNC(IBIFN)",1:"") | 
|---|
|  | 95 | S DR=".03////"_IB(.03)_";.05////"_IB(.05)_";.02;.06;.08;4;.07"_$S(IB(.11)'=2:"",1:"////1")_";.11////"_IB(.11) | 
|---|
|  | 96 | S DR=DR_";1"_$S(IB(.11)<9:"////"_IB(1),1:"") | 
|---|
|  | 97 | S DIE="^IBE(364.4,",DA=IBDA1 | 
|---|
|  | 98 | D ^DIE | 
|---|
|  | 99 | I $D(Y) S IBOK=0 G ADDQ | 
|---|
|  | 100 | ; | 
|---|
|  | 101 | W ! | 
|---|
|  | 102 | S IB(.07)=$P($G(^IBE(364.4,IBDA1,0)),U,7) | 
|---|
|  | 103 | ; | 
|---|
|  | 104 | D:IB(.07)'=3 INSCO^IBCEF51(.IB,.IBOK,IBDA1) | 
|---|
|  | 105 | I 'IBOK K IB G ADDQ | 
|---|
|  | 106 | I IB(.11)=1 D BTYP^IBCEF51(.IB,.IBOK) ;Enter applicable bill types | 
|---|
|  | 107 | I 'IBOK K IB G ADDQ | 
|---|
|  | 108 | ; | 
|---|
|  | 109 | I IBOK D ADDBTYP^IBCEF61(.IB,IBDA1),INSADD^IBCEF61(.IB,IBDA1) | 
|---|
|  | 110 | ; | 
|---|
|  | 111 | ADDQ I $G(IBDA1),'IBOK S DA=IBDA1,DIK="^IBE(364.4," D ^DIK | 
|---|
|  | 112 | I IBOK D REBLD^IBCEF6($G(IBACTIVE)) | 
|---|
|  | 113 | Q $S(IBOK:IBDA1,1:0) | 
|---|
|  | 114 | ; | 
|---|
|  | 115 | BILLTYP(IBIFN,IBDA) ; Check bill type for valid to transmit | 
|---|
|  | 116 | N IB,IB0,IB00,IB399,IBOK,IBALL,IBB,IBEXC,IBQUIT,IBINC,Z,Z1 | 
|---|
|  | 117 | S Z=$$FT^IBCEF(IBIFN) | 
|---|
|  | 118 | S IB399=$G(^DGCR(399,IBIFN,0)) | 
|---|
|  | 119 | S IB0=$P(IB399,U,24,26) | 
|---|
|  | 120 | S IB0=$P(IB0,U)_$P($G(^DGCR(399.1,+$P(IB0,U,2),0)),U,2)_$P(IB0,U,3) | 
|---|
|  | 121 | ; | 
|---|
|  | 122 | S (IB,IBINC,IBOK,IBALL)=0 | 
|---|
|  | 123 | ; | 
|---|
|  | 124 | ; Check for all bill types allowed, dates allowed | 
|---|
|  | 125 | F  S IB=$O(^IBE(364.4,IBDA,"BTYP","B","XXX",IB)) Q:'IB  D  Q:IBALL | 
|---|
|  | 126 | . S IB00=$G(^IBE(364.4,IBDA,"BTYP",IB,0)) | 
|---|
|  | 127 | . I $S($P(IB00,U,2):$P(IB00,U,2)'>DT,1:1),$S($P(IB00,U,3):$P(IB00,U,3)>DT,1:1) S IBALL=1 Q | 
|---|
|  | 128 | ; | 
|---|
|  | 129 | ; If not all bill types are included, find out if any are included | 
|---|
|  | 130 | I 'IBALL S IB="",IBINC=0 F  S IB=$O(^IBE(364.4,IBDA,"BTYP","B",IB),-1)  Q:IB=""!($E(IB)="-")  D  Q:IBINC | 
|---|
|  | 131 | . S IBB=+$O(^IBE(364.4,IBDA,"BTYP","B",IB,0)),IB00=$G(^IBE(364.4,IBDA,"BTYP",IBB,0)) | 
|---|
|  | 132 | . I $S($P(IB00,U,2):$P(IB00,U,2)'>DT,1:1),$S($P(IB00,U,3):$P(IB00,U,3)>DT,1:1) S IBINC=1 Q | 
|---|
|  | 133 | ; | 
|---|
|  | 134 | I IB0'="" D  ;Check bill's type of bill in included list, or is excluded | 
|---|
|  | 135 | . S (IBQUIT,IBEXC)=0 | 
|---|
|  | 136 | . F Z1=1,2 Q:Z1=2&'IBOK  S:'IBINC Z1=2,IBOK=1 F IB=$E(IB0)_"XX",$E(IB0,1,2)_"X",IB0 S IBQUIT=0 D  Q:IBQUIT | 
|---|
|  | 137 | .. I Z1=2 S IB="-"_IB ;Checking for exclusions on this pass | 
|---|
|  | 138 | .. S Z=0 | 
|---|
|  | 139 | .. F  S Z=$O(^IBE(364.4,+$G(IBDA),"BTYP","B",IB,Z)) Q:'Z  S IB00=$G(^IBE(364.4,IBDA,"BTYP",Z,0)),IBQUIT=0 D  Q:IBQUIT | 
|---|
|  | 140 | ... I $P(IB00,U,2)>DT Q  ;Not effective yet | 
|---|
|  | 141 | ... I $P(IB00,U,3),$P(IB00,U,3)'>DT Q  ;Expired | 
|---|
|  | 142 | ... I $E(IB00)'="-" S (IBQUIT,IBOK)=1 Q  ; Bill type included | 
|---|
|  | 143 | ... I $E(IB00)="-" S IBOK=0,(IBEXC,IBQUIT)=1 Q  ; Bill type is excluded | 
|---|
|  | 144 | . I 'IBALL,'IBINC,'IBEXC S IBOK=1 ;No active restrictions found | 
|---|
|  | 145 | ; | 
|---|
|  | 146 | BTYPQ Q IBOK | 
|---|
|  | 147 | ; | 
|---|
|  | 148 | QUIT ; DIR call to continue processing after error message display | 
|---|
|  | 149 | S DIR("A")="Press RETURN to continue: " | 
|---|
|  | 150 | S DIR(0)="EA" D ^DIR K DIR | 
|---|
|  | 151 | ; | 
|---|
|  | 152 | Q | 
|---|
|  | 153 | ; | 
|---|
|  | 154 | MULTYP(IB,IN,OUT) ; Code to execute to determine multiple types | 
|---|
|  | 155 | ;   of I/O and prof/inst bills combinations OK to transmit | 
|---|
|  | 156 | ; IB = ien of bill in file 399 | 
|---|
|  | 157 | ; IB(x) = array containing necessary data for xref search from bill | 
|---|
|  | 158 | ;         subscripted by x=field # in file 364.4 | 
|---|
|  | 159 | ; IN  =0 or null for no inpt at all | 
|---|
|  | 160 | ;     =1 for inpt,prof only;  =2 for inpt,inst only; =3 for inpt,both | 
|---|
|  | 161 | ; OUT =0 or null for no outpt at all | 
|---|
|  | 162 | ;     =1 for outpt,prof only;  =2 for outpt,inst only; =3 for outpt,both | 
|---|
|  | 163 | ; | 
|---|
|  | 164 | ;  Function returns 1 if edit passes, 0 if edit fails | 
|---|
|  | 165 | ; | 
|---|
|  | 166 | ; Functionality has been removed, but code remains in case they decide | 
|---|
|  | 167 | ; they need it later (INPT/OUTPT part) | 
|---|
|  | 168 | ; | 
|---|
|  | 169 | N IBOK | 
|---|
|  | 170 | S IBOK=1 | 
|---|
|  | 171 | ; IB(.04) = the value of the bill's type of care (1=outpt, 2=inpt) | 
|---|
|  | 172 | ; IB(.05) = the value of the bill's form type (1=inst, 2=prof) | 
|---|
|  | 173 | ; outpatient bill | 
|---|
|  | 174 | I $G(IB(.04))=1,$G(OUT)'=3 D  G:'IBOK MULTQ | 
|---|
|  | 175 | . I +$G(OUT)=0 S IBOK=0 Q | 
|---|
|  | 176 | . I $G(OUT)=1,$G(IB(.05))'=2 S IBOK=0 Q | 
|---|
|  | 177 | . I $G(OUT)=2,$G(IB(.05))'=1 S IBOK=0 Q | 
|---|
|  | 178 | ; inpatient bill | 
|---|
|  | 179 | I $G(IB(.04))=2,$G(IN)'=3 D  G:'IBOK MULTQ | 
|---|
|  | 180 | . I +$G(IN)=0 S IBOK=0 Q | 
|---|
|  | 181 | . I $G(IN)=1,$G(IB(.05))'=2 S IBOK=0 Q | 
|---|
|  | 182 | . I $G(IN)=2,$G(IB(.05))'=1 S IBOK=0 Q | 
|---|
|  | 183 | MULTQ Q IBOK | 
|---|
|  | 184 | ; | 
|---|
|  | 185 | INSINC(IBD) ; Insurance include/exclude condition explanation | 
|---|
|  | 186 | ; IBD = line counter - pass by reference | 
|---|
|  | 187 | S IBD=IBD+1,DIR("A",IBD)="" | 
|---|
|  | 188 | S IBD=IBD+1,DIR("A",IBD)="THE EFFECT OF THIS RULE WILL BE: IF A BILL MATCHES BOTH OF THE ABOVE CONDITIONS," | 
|---|
|  | 189 | S IBD=IBD+1,DIR("A",IBD)="THE RULE WILL BE APPLIED AND THE BILL WILL NOT BE TRANSMITTED IF:" | 
|---|
|  | 190 | S IBD=IBD+1,DIR("A",IBD)=" - THE RULE APPLIES TO ALL INSURANCE COMPANIES" | 
|---|
|  | 191 | S IBD=IBD+1,DIR("A",IBD)=$J("",17)_"OR" | 
|---|
|  | 192 | S IBD=IBD+1,DIR("A",IBD)=" - THE RULE 'APPLIES TO' ONLY SPECIFIC INSURANCE COMPANIES AND THE BILL'S" | 
|---|
|  | 193 | S IBD=IBD+1,DIR("A",IBD)="   INSURANCE COMPANY APPEARS ON THE RULE'S 'INCLUDE LIST'" | 
|---|
|  | 194 | S IBD=IBD+1,DIR("A",IBD)=$J("",17)_"OR" | 
|---|
|  | 195 | S IBD=IBD+1,DIR("A",IBD)=" - THE RULE 'EXCLUDES' SPECIFIC INSURANCE COMPANIES AND THE BILL'S" | 
|---|
|  | 196 | S IBD=IBD+1,DIR("A",IBD)="   INSURANCE COMPANY DOES NOT APPEAR ON THE RULE'S 'EXCLUDE LIST'" | 
|---|
|  | 197 | Q | 
|---|
|  | 198 | ; | 
|---|
|  | 199 | RTINC(IBD) ; Bill type include/exclude condition explanation | 
|---|
|  | 200 | ; IBD = line counter - pass by reference | 
|---|
|  | 201 | ; | 
|---|
|  | 202 | S IBD=IBD+1,DIR("A",IBD)="*** AND ***" | 
|---|
|  | 203 | S IBD=IBD+1,DIR("A",IBD)=" - THE RULE HAS NO BILL TYPE RESTRICTIONS OR APPLIES TO ALL BILL TYPES" | 
|---|
|  | 204 | S IBD=IBD+1,DIR("A",IBD)=$J("",17)_"OR" | 
|---|
|  | 205 | S IBD=IBD+1,DIR("A",IBD)=" - THE RULE IS RESTRICTED TO CERTAIN BILL TYPES AND THE BILL'S BILL TYPE IS" | 
|---|
|  | 206 | S IBD=IBD+1,DIR("A",IBD)="   INCLUDED FOR THE RULE OR IS NOT EXCLUDED FOR THE RULE" | 
|---|
|  | 207 | Q | 
|---|
|  | 208 | ; | 
|---|