| [613] | 1 | IBCEF61 ;ALB/TMP - EDI TRANSMISSION RULES DEFINITION ;28-APR-99
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**137**;21-MAR-94
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | SELRULE(IBRULE) ; Select rule
 | 
|---|
 | 5 |  D FULL^VALM1
 | 
|---|
 | 6 |  S IBRULE=""
 | 
|---|
 | 7 |  N IBR,IB
 | 
|---|
 | 8 |  D EN^VALM2($G(XQORNOD(0)),"S")
 | 
|---|
 | 9 |  S IBR=0 F  S IBR=$O(VALMY(IBR)) Q:'IBR  S IB=$G(^TMP("IBCE-RULEDX",$J,IBR)),IBRULE=+$P(IB,U,2)
 | 
|---|
 | 10 |  Q
 | 
|---|
 | 11 |  ;
 | 
|---|
 | 12 | ACTIVE(IBRULE) ; Edit rules' active/inactive dates
 | 
|---|
 | 13 |  ; IBRULE = ien of rule in file 364.4
 | 
|---|
 | 14 |  ;
 | 
|---|
 | 15 |  G:'$G(IBRULE) ACTQ
 | 
|---|
 | 16 |  N DA,DR,DIE,X,Y,Z,Z0
 | 
|---|
 | 17 |  S DA=$G(IBRULE),DIE="^IBE(364.4,"
 | 
|---|
 | 18 |  S DR=".02;.06"
 | 
|---|
 | 19 |  D ^DIE
 | 
|---|
 | 20 |  I $D(Y) S IBRULE=0 G ACTQ
 | 
|---|
 | 21 |  D REBLD^IBCEF6($G(IBACTIVE))
 | 
|---|
 | 22 | ACTQ S VALMBCK="R"
 | 
|---|
 | 23 |  Q
 | 
|---|
 | 24 |  ;
 | 
|---|
 | 25 | SCRACT ; Rebld display - only currently active
 | 
|---|
 | 26 |  S IBACTIVE=1
 | 
|---|
 | 27 |  D REBLD^IBCEF6(1)
 | 
|---|
 | 28 |  S VALMBCK="R"
 | 
|---|
 | 29 |  Q
 | 
|---|
 | 30 |  ;
 | 
|---|
 | 31 | NOSCR ; Rebld display - inactive and currently active
 | 
|---|
 | 32 |  S IBACTIVE=0
 | 
|---|
 | 33 |  D REBLD^IBCEF6(0)
 | 
|---|
 | 34 |  S VALMBCK="R"
 | 
|---|
 | 35 |  Q
 | 
|---|
 | 36 |  ;
 | 
|---|
 | 37 | BILTYP(IBRULE) ; Allow to edit bill types for rule
 | 
|---|
 | 38 |  ; IBRULE = ien of rule - file 364.4
 | 
|---|
 | 39 |  ;
 | 
|---|
 | 40 |  G:'$G(IBRULE) BILTYPQ
 | 
|---|
 | 41 |  N DA,DR,DIE,X,Y,Z,Z0,IBRT,IB,IBOK,IBCT
 | 
|---|
 | 42 |  S DA=$G(IBRULE),DIE="^IBE(364.4,",IBRT=$P($G(^IBE(364.4,IBRULE,0)),U,11)
 | 
|---|
 | 43 |  I $S(IBRT=9:0,1:IBRT'=1) D  G BILTYPQ
 | 
|---|
 | 44 |  . W !
 | 
|---|
 | 45 |  . S DIR(0)="EA",DIR("A",1)="RULE TYPE '"_$$EXPAND^IBTRE(364.4,.11,IBRT)_"' DOES NOT ALLOW BILL TYPE RESTRICTIONS",DIR("A")="PRESS RETURN " D ^DIR K DIR W !
 | 
|---|
 | 46 |  S (IBO,IBCT)=0 ;Extract existing entries
 | 
|---|
 | 47 |  F  S IBO=$O(^IBE(364.4,IBRULE,"BTYP",IBO)) Q:'IBO  S IBX=$P($G(^(IBO,0)),U),IBO(IBX)=IBO_U_$P(^(0),U,2,3),IBCT=IBCT+1,IB(364.41,IBCT,.01)=IBX,IBI(IBX)=IBCT F Z=2,3 I $P(IBO(IBX),U,Z)'="" S IB(364.41,IBCT,Z/100)=$P(IBO(IBX),U,Z)
 | 
|---|
 | 48 |  ; Display entries, allow to add/edit/delete
 | 
|---|
 | 49 |  D EN^IBCEF62
 | 
|---|
 | 50 | BILTYPQ S VALMBCK="R"
 | 
|---|
 | 51 |  Q
 | 
|---|
 | 52 |  ;
 | 
|---|
 | 53 | SEL(VALMY) ; Select one or more bill type restriction entries
 | 
|---|
 | 54 |  ; VALMY = passed by reference and returned subscripted by
 | 
|---|
 | 55 |  ; entry #(s) in the LM array selected
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 |  N Z
 | 
|---|
 | 58 |  D FULL^VALM1
 | 
|---|
 | 59 |  N IBR
 | 
|---|
 | 60 |  D EN^VALM2($G(XQORNOD(0)))
 | 
|---|
 | 61 |  Q
 | 
|---|
 | 62 |  ;
 | 
|---|
 | 63 | BTEDIT(IBRULE) ; Edit bill type restriction dates
 | 
|---|
 | 64 |  ; IBRULE = ien of the bill type restriction being edited
 | 
|---|
 | 65 |  ;      (0)= ien of the RULE - file 364.4
 | 
|---|
 | 66 |  G:'$G(IBRULE) BTEQ
 | 
|---|
 | 67 |  ;
 | 
|---|
 | 68 |  N DA,DIE,DR,Y,X,VALMY,Z,IBBT
 | 
|---|
 | 69 |  ;
 | 
|---|
 | 70 |  S IBCT=0
 | 
|---|
 | 71 |  D SEL(.VALMY)
 | 
|---|
 | 72 |  G:'$O(VALMY(0)) BTEQ ; None selected
 | 
|---|
 | 73 |  ;
 | 
|---|
 | 74 |  S Z=0 F  S Z=$O(VALMY(Z)) Q:'Z  S IBBT=+$G(^TMP("IBCE-BTDX",$J,Z)) I IBBT D
 | 
|---|
 | 75 |  . S DA(1)=IBRULE,DA=IBBT,DIE="^IBE(364.4,"_DA(1)_",""BTYP"",",DR=".02;.03"
 | 
|---|
 | 76 |  . W !!,"Bill Type Restriction #"_Z_" - "_$E($G(^TMP("IBCE-BT",$J,Z,0)),5,50),!
 | 
|---|
 | 77 |  . D ^DIE
 | 
|---|
 | 78 |  . D REBLD^IBCEF62
 | 
|---|
 | 79 |  ;
 | 
|---|
 | 80 | BTEQ S VALMBCK="R"
 | 
|---|
 | 81 |  Q
 | 
|---|
 | 82 |  ;
 | 
|---|
 | 83 | BTADD(IBRULE) ; Add new bill type restrictions
 | 
|---|
 | 84 |  ; IBRULE = ien of rule entry - file 364.4
 | 
|---|
 | 85 |  N IB,IBCT,Z,IBOK
 | 
|---|
 | 86 |  D FULL^VALM1
 | 
|---|
 | 87 |  G:'$G(IBRULE) BTAQ
 | 
|---|
 | 88 |  ;
 | 
|---|
 | 89 |  S (IBCT,Z)=0
 | 
|---|
 | 90 |  S Z=0 F  S Z=$O(^IBE(364.4,IBRULE,"BTYP",Z)) Q:'Z  S IBCT=IBCT+1,IB(364.41,IBCT,.01)=$P($G(^(Z,0)),U)
 | 
|---|
 | 91 |  ;
 | 
|---|
 | 92 |  D BTYP^IBCEF51(.IB,.IBOK,0)
 | 
|---|
 | 93 |  ;
 | 
|---|
 | 94 |  I IBOK D
 | 
|---|
 | 95 |  . N Z
 | 
|---|
 | 96 |  . S Z=0 F  S Z=$O(^IBE(364.4,IBRULE,"BTYP",Z)) Q:'Z  S DA=Z,DA(1)=IBRULE,DIK="^IBE(364.4,"_DA(1)_",""BTYP""," D ^DIK
 | 
|---|
 | 97 |  . D ADDBTYP(.IB,IBRULE)
 | 
|---|
 | 98 |  . D REBLD^IBCEF62
 | 
|---|
 | 99 |  D SUCCESS(IBOK)
 | 
|---|
 | 100 |  ;
 | 
|---|
 | 101 | BTAQ S VALMBCK="R"
 | 
|---|
 | 102 |  Q
 | 
|---|
 | 103 |  ;
 | 
|---|
 | 104 | INSCO(IBRULE) ; Allow user to edit rule's ins co data
 | 
|---|
 | 105 |  ; IBRULE = ien of rule - file 364.4
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 |  G:'$G(IBRULE) INSCOQ
 | 
|---|
 | 108 |  N DA,DR,DIE,X,Y,Z,Z0,IB,IB0
 | 
|---|
 | 109 |  S DA=$G(IBRULE),DIE="^IBE(364.4,"
 | 
|---|
 | 110 |  S IB0=$G(^IBE(364.4,IBRULE,0)),IB(".07O")=$P(IB0,U,7)
 | 
|---|
 | 111 |  S DR=$S($P(IB0,U,3)'=2:".07;S Y=$S(X=1:""@10"",X=2:""@20"",1:""@99"");",1:"")_"@10;3;S Y=""@99"";@20;2;S Y=""@99"";@99"
 | 
|---|
 | 112 |  D ^DIE
 | 
|---|
 | 113 |  S IB(.07)=$P($G(^IBE(364.4,IBRULE,0)),U,7)
 | 
|---|
 | 114 |  ;
 | 
|---|
 | 115 |  I IB(".07O"),IB(".07O")'=IB(.07),IB(".07O")'=3 D  ; Delete 'old' includes/excludes
 | 
|---|
 | 116 |  . S Z=$P("3^2",U,+IB(".07O")),Z0=0 F  S Z0=$O(^IBE(364.4,IBRULE,Z,Z0)) Q:'Z0  S DA=Z0,DA(1)=IBRULE,DIK="^IBE(364.4,"_DA(1)_","_Z_"," D ^DIK
 | 
|---|
 | 117 |  ;
 | 
|---|
 | 118 |  ; If all ins cos selected, delete existing specific ones in/excluded
 | 
|---|
 | 119 |  I 'IB(.07)!(IB(.07)=3) D
 | 
|---|
 | 120 |  . Q:IB(".07O")=IB(.07)
 | 
|---|
 | 121 |  . F Z=2,3 I $O(^IBE(364.4,IBRULE,Z,0)) S Z0=0 F  S Z0=$O(^IBE(364.4,IBRULE,Z,Z0)) Q:'Z0  S DA=Z0,DA(1)=IBRULE,DIK="^IBE(364.4,"_DA(1)_","_Z_"," D ^DIK
 | 
|---|
 | 122 |  E  D
 | 
|---|
 | 123 |  . Q:$O(^IBE(364.4,IBRULE,$S(IB(.07)=1:3,1:2),0))
 | 
|---|
 | 124 |  . W !,"Warning ... no insurance companies chosen to "_$S(IB(.07)=1:"in",1:"ex")_"clude"
 | 
|---|
 | 125 |  . D QUIT^IBCEF5
 | 
|---|
 | 126 |  D REBLD^IBCEF6($G(IBACTIVE))
 | 
|---|
 | 127 |  ;
 | 
|---|
 | 128 | INSCOQ S VALMBCK="R"
 | 
|---|
 | 129 |  Q
 | 
|---|
 | 130 |  ;
 | 
|---|
 | 131 | MISC(IBRULE) ; Edit other misc fields for the rule
 | 
|---|
 | 132 |  ; IBRULE = ien of rule - file 364.4
 | 
|---|
 | 133 |  ;
 | 
|---|
 | 134 |  I $G(IBRULE) D
 | 
|---|
 | 135 |  . N DA,DR,DIE,X,Y,Z,Z0
 | 
|---|
 | 136 |  . S DA=$G(IBRULE),DIE="^IBE(364.4,"
 | 
|---|
 | 137 |  . S DR=".08;1;4"
 | 
|---|
 | 138 |  . D ^DIE
 | 
|---|
 | 139 |  . D REBLD^IBCEF6($G(IBACTIVE))
 | 
|---|
 | 140 |  S VALMBCK="R"
 | 
|---|
 | 141 |  Q
 | 
|---|
 | 142 |  ;
 | 
|---|
 | 143 | DISPRUL(IBRULE) ; Display rule selected
 | 
|---|
 | 144 |  ; IBRULE = ien of rule - file 364.4
 | 
|---|
 | 145 |  ;
 | 
|---|
 | 146 |  I '$G(IBRULE) D FULL^VALM1
 | 
|---|
 | 147 |  N DIOBEG,FR,TO,BY,DIC,DA,L,FLDS,DHD
 | 
|---|
 | 148 |  S (FR,TO)=$G(IBRULE),DHD="[IBCE RULE DISPLAY HEADER]"
 | 
|---|
 | 149 |  S L=0,BY="@RULE NUMBER",DIC="^IBE(364.4,",FLDS="[IBCE RULE DISPLAY]"
 | 
|---|
 | 150 |  S DIOBEG="W !"
 | 
|---|
 | 151 |  W !!
 | 
|---|
 | 152 |  D EN1^DIP
 | 
|---|
 | 153 | DISPRQ S VALMBCK="R"
 | 
|---|
 | 154 |  D PAUSE^VALM1
 | 
|---|
 | 155 |  Q
 | 
|---|
 | 156 |  ;
 | 
|---|
 | 157 | SUCCESS(IBOK) ; Display msg after add rule
 | 
|---|
 | 158 |  ; IBOK = 1 if successful, 0 if not
 | 
|---|
 | 159 |  ;
 | 
|---|
 | 160 |  N DIR,Y,X
 | 
|---|
 | 161 |  S DIR(0)="EA"
 | 
|---|
 | 162 |  W !
 | 
|---|
 | 163 |  I $G(IBOK) S DIR("A",1)="TRANSMISSION RULE(s) HAVE BEEN SUCCESSFULLY FILED"
 | 
|---|
 | 164 |  I '$G(IBOK) S DIR("A",1)="NO TRANSMISSION RULES ADDED"
 | 
|---|
 | 165 |  S DIR("A")="PRESS RETURN " D ^DIR K DIR
 | 
|---|
 | 166 |  S VALMBCK="R"
 | 
|---|
 | 167 |  Q
 | 
|---|
 | 168 |  ;
 | 
|---|
 | 169 | ADDBTYP(IB,IBDA1) ; Add bill types in IB(364.41) to rule IBDA1
 | 
|---|
 | 170 |  ;
 | 
|---|
 | 171 |  N Z,Z0,IBC
 | 
|---|
 | 172 |  I $D(IB(364.41)) D
 | 
|---|
 | 173 |  . S IBC=0 F  S IBC=$O(IB(364.41,IBC)) Q:'IBC  D
 | 
|---|
 | 174 |  .. N DO,DD,DIC,DLAYGO,DA,X,Y
 | 
|---|
 | 175 |  .. S Z=.01 F  S Z=$O(IB(364.41,IBC,Z)) Q:'Z  S Z0=$G(IB(364.41,IBC,Z)) I Z0'="" D  ;Bill type excepts
 | 
|---|
 | 176 |  ... S DIC("DR")=$G(DIC("DR"))_$S($G(DIC("DR"))="":"",1:";")_Z_"///"_Z0
 | 
|---|
 | 177 |  .. I '$D(^IBE(364.4,IBDA1,"BTYP",0)) S DIC("P")=$$GETSPEC^IBEFUNC(364.4,.1)
 | 
|---|
 | 178 |  .. S X=IB(364.41,IBC,.01)
 | 
|---|
 | 179 |  .. S DA(1)=IBDA1,DIC="^IBE(364.4,"_IBDA1_",""BTYP"",",DIC(0)="L",DLAYGO=364.4
 | 
|---|
 | 180 |  .. D FILE^DICN
 | 
|---|
 | 181 |  Q
 | 
|---|
 | 182 |  ;
 | 
|---|
 | 183 | INSADD(IB,IBDA1) ; Add ins co exceptions from entries in
 | 
|---|
 | 184 |  ; IB(364.42 - exclude) or IB(364.43 - include) to rule IBDA1
 | 
|---|
 | 185 |  ;
 | 
|---|
 | 186 |  N Z,IBNODE,Z0
 | 
|---|
 | 187 |  F Z=364.42,364.43 S IBNODE=$E(Z,$L(Z)),Z0=0 F  S Z0=$O(IB(Z,Z0)) Q:'Z0  D
 | 
|---|
 | 188 |  . N DO,DD,DIC,DLAYGO,DA
 | 
|---|
 | 189 |  . I '$D(^IBE(364.4,IBDA1,IBNODE,0)) S DIC("P")=$$GETSPEC^IBEFUNC(364.4,IBNODE)
 | 
|---|
 | 190 |  . S DA(1)=IBDA1,DIC="^IBE(364.4,"_IBDA1_","_IBNODE_",",DIC(0)="L",DLAYGO=364.4,X=Z0
 | 
|---|
 | 191 |  . D FILE^DICN K DIC
 | 
|---|
 | 192 |  Q
 | 
|---|
 | 193 |  ;
 | 
|---|
 | 194 | BTDTOK(IBRULE,IBBT,IBDTYP,X) ; Check bill type date is consistent for rule
 | 
|---|
 | 195 |  ; IBRULE = ien of rule - file 364.4
 | 
|---|
 | 196 |  ; IBBT = ien of bill type in rule IBRULE (optional if check at top level)
 | 
|---|
 | 197 |  ; IBDTYP = 1 for active date check, 2 for inactive date check
 | 
|---|
 | 198 |  ; X = Value of date being validated
 | 
|---|
 | 199 |  ;
 | 
|---|
 | 200 |  ; Function returns 1 if consistencies are OK, 0 if not
 | 
|---|
 | 201 |  ;
 | 
|---|
 | 202 |  N IBOK,IBPCK,Z
 | 
|---|
 | 203 |  S IBOK=1
 | 
|---|
 | 204 |  S IBPCK=$S(IBDTYP=1:2,1:6)
 | 
|---|
 | 205 |  ;
 | 
|---|
 | 206 |  ; Check for consistency at rule level first
 | 
|---|
 | 207 |  ;
 | 
|---|
 | 208 |  ; Active dt must not be after rule's inact dt
 | 
|---|
 | 209 |  I IBDTYP=1,$P($G(^IBE(364.4,IBRULE,0)),U,6),X>$P(^(0),U,6) S Z=$$FMTE^XLFDT($P($G(^IBE(364.4,IBRULE,0)),U,6)) D EN^DDIOL("CANNOT BE AFTER RULE'S INACTIVE DATE OF "_$S('Z:"<MISSING>",1:Z),,"!!") S IBOK=0 G BTDTQ
 | 
|---|
 | 210 |  ;
 | 
|---|
 | 211 |  ; Inact dt must not be prior to rule's active dt
 | 
|---|
 | 212 |  I IBDTYP=2,$S('$P($G(^IBE(364.4,IBRULE,0)),U,2):'$G(IBBT),1:X<$P($G(^(0)),U,2)) S Z=$$FMTE^XLFDT($P($G(^IBE(364.4,IBRULE,0)),U,2)) D EN^DDIOL("CANNOT BE BEFORE RULE'S ACTIVE DATE OF "_$S('Z:"<MISSING>",1:Z),,"!!") S IBOK=0 G BTDTQ
 | 
|---|
 | 213 |  ;
 | 
|---|
 | 214 |  I $G(IBBT) D  ; Check for consistency at the bill type level
 | 
|---|
 | 215 |  . ; Active dt at bt level must be prior to inactive dt
 | 
|---|
 | 216 |  . I IBDTYP=1,$P($G(^IBE(364.4,IBRULE,"IBTYP",IBBT,0)),U,3),X>$P(^(0),U,3) S Z=$$FMTE^XLFDT($P(^IBE(364.4,IBRULE,"IBTYP",IBBT,0),U,3)) D EN^DDIOL("MUST BE PRIOR TO BILL TYPE'S INACTIVE DATE OF "_$S('Z:"<MISSING>",1:Z),,"!!") S IBOK=0 Q
 | 
|---|
 | 217 |  . ; Inactive dt at bt level must be after active dt
 | 
|---|
 | 218 |  . I IBDTYP=2,$S('$P($G(^IBE(364.4,IBRULE,"IBTYP",IBBT,0)),U,2):1,1:X<$P(^(0),U,2)) S Z=$$FMTE^XLFDT($P($G(^IBE(364.4,IBRULE,"IBTYP",IBBT,0)),U,2)) D EN^DDIOL("MUST BE AFTER BILL TYPE'S ACTIVE DATE OF "_$S('Z:"<MISSING>",1:Z),,"!!") S IBOK=0 Q
 | 
|---|
 | 219 |  . ;
 | 
|---|
 | 220 |  . S Z=0
 | 
|---|
 | 221 |  . F  S Z=$O(^IBE(364.4,IBRULE,"BTYP",Z)) Q:'Z  S Z0=$G(^(Z,0))  D  Q:'IBOK
 | 
|---|
 | 222 |  .. I $P(Z0,U,IBDTYP+1),$S(IBDTYP=1:X<$P(Z0,U,2),1:X>$P(Z0,U,3)) D EN^DDIOL("CHANGE WOULD INVALIDATE BILL TYPE RESTRICTION DATE",,"!!") S IBOK=0
 | 
|---|
 | 223 | BTDTQ Q IBOK
 | 
|---|
 | 224 |  ;
 | 
|---|