| [613] | 1 | FBAAUTL5 ;ACAMPUS/DMK-UTILITY ROUTINE ;4/17/2000
 | 
|---|
 | 2 |  ;;3.5;FEE BASIS;**3,4,21**;JAN 30, 1995
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 | INPUT ;called from input transform of 163.99 to determine if CPT and
 | 
|---|
 | 5 |  ;or modifier is a valid entry in appropriate file.
 | 
|---|
 | 6 |  Q:'$D(X)
 | 
|---|
 | 7 |  N A,B,FBI,FBMOD,FBMODA,FBMODX
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 |  S A=$P(X,"-"),B=$P(X,"-",2)
 | 
|---|
 | 10 |  ;
 | 
|---|
 | 11 |  ;sort modifiers so lookups will work
 | 
|---|
 | 12 |  I B]"" D  S $P(X,"-",2)=B
 | 
|---|
 | 13 |  . F FBI=1:1 S FBMOD=$P(B,",",FBI) Q:FBMOD=""  S FBMODA(FBMOD)=""
 | 
|---|
 | 14 |  . S (FBMOD,B)=""
 | 
|---|
 | 15 |  . F  S FBMOD=$O(FBMODA(FBMOD)) Q:FBMOD=""  S B=B_","_FBMOD
 | 
|---|
 | 16 |  . S:$E(B)="," B=$E(B,2,999)
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  ; check for valid pattern
 | 
|---|
 | 19 |  I ('(X?5AN)&'(X?5AN1"-"2AN.17(1","2AN,1""))) K X Q
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 |  ;check for valid CPT code
 | 
|---|
 | 22 |  I $P($$CPT^ICPTCOD(A,"",1),U)'>0 D EN^DDIOL("CPT code not valid!") K X Q
 | 
|---|
 | 23 |  ;
 | 
|---|
 | 24 |  ; check for valid modifiers
 | 
|---|
 | 25 |  I B]"" F FBI=1:1 S FBMOD=$P(B,",",FBI) Q:FBMOD=""  D
 | 
|---|
 | 26 |  . S FBMODX=$$MOD^ICPTMOD(FBMOD,"E")
 | 
|---|
 | 27 |  . ; if modifier data not obtained then try another API to resolve it
 | 
|---|
 | 28 |  . ; since there can be duplicate modifiers with same external value
 | 
|---|
 | 29 |  . I $P(FBMODX,U)'>0 D
 | 
|---|
 | 30 |  . . N FBY
 | 
|---|
 | 31 |  . . S FBY=$$MODP^ICPTMOD(A,FBMOD,"E")
 | 
|---|
 | 32 |  . . I $P(FBY,U)>0 S FBMODX=$$MOD^ICPTMOD($P(FBY,U),"I")
 | 
|---|
 | 33 |  . I $P(FBMODX,U)'>0 D EN^DDIOL("CPT Modifier "_FBMOD_" not valid!") K X
 | 
|---|
 | 34 |  Q:'$D(X)
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  ;display
 | 
|---|
 | 37 |  S FBX="CPT: "_$P($$CPT^ICPTCOD(A,"",1),U,3)
 | 
|---|
 | 38 |  D EN^DDIOL(FBX,"","!?20")
 | 
|---|
 | 39 |  I B]"" F FBI=1:1 S FBMOD=$P(B,",",FBI) Q:FBMOD=""  D
 | 
|---|
 | 40 |  . S FBMODX=$$MOD^ICPTMOD(FBMOD,"E")
 | 
|---|
 | 41 |  . ; if modifier data not obtained then try another API to resolve it
 | 
|---|
 | 42 |  . ; since there can be duplicate modifiers with same external value
 | 
|---|
 | 43 |  . I $P(FBMODX,U)'>0 D
 | 
|---|
 | 44 |  . . N FBY
 | 
|---|
 | 45 |  . . S FBY=$$MODP^ICPTMOD(A,FBMOD,"E")
 | 
|---|
 | 46 |  . . I $P(FBY,U)>0 S FBMODX=$$MOD^ICPTMOD($P(FBY,U),"I")
 | 
|---|
 | 47 |  . S FBX="MOD: "_FBMOD_"  "_$P(FBMODX,U,3)
 | 
|---|
 | 48 |  . D EN^DDIOL(FBX,"","!?20")
 | 
|---|
 | 49 |  Q
 | 
|---|
 | 50 |  ;
 | 
|---|
 | 51 | PSA(X) ;get psa from institution
 | 
|---|
 | 52 |  ;input   X = ien of psa
 | 
|---|
 | 53 |  ;output  station number from instutution file\
 | 
|---|
 | 54 |  Q $S($D(^DIC(4,+$G(X),99)):$E(^(99),1,3),1:"")
 | 
|---|
 | 55 |  ;
 | 
|---|
 | 56 | EXTPV(X) ;call used to determine Purpose of Visit Austin code
 | 
|---|
 | 57 |  ;               x = pointer to 161.82
 | 
|---|
 | 58 |  ;               Output = Austin code
 | 
|---|
 | 59 |  Q $S('$G(X):"",1:$P($G(^FBAA(161.82,+X,0)),U,3))
 | 
|---|
 | 60 | SUB(X) ;used to get station number and substation if one exists
 | 
|---|
 | 61 |  ;from the IFCAP software. This call is used during
 | 
|---|
 | 62 |  ;transmission of payment batches to Austin.
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 |  ; X = "STATION NUMBER-OBLIGATION NUMBER"
 | 
|---|
 | 65 |  ;      EXAMPLE:  699-C12345
 | 
|---|
 | 66 |  I '+$G(X) Q ""
 | 
|---|
 | 67 |  N PRCS,Y
 | 
|---|
 | 68 |  S PRCS("X")=X,PRCS("TYPE")="FB"
 | 
|---|
 | 69 |  D EN1^PRCS58 ;call to IFCAP to get obligation information
 | 
|---|
 | 70 |  K PRCSCPAN
 | 
|---|
 | 71 |  I Y=-1 Q ""
 | 
|---|
 | 72 |  Q $S($P(Y,U,10)]"":$P(Y,U,10),1:$E($P(Y,U,2),1,3))
 | 
|---|