| 1 | FBAAFSF ;WCIOFO/dmk,SAB-OUTPATIENT 75TH PERCENTILE FEE SCHEDULE ;5/18/1999 | 
|---|
| 2 | ;;3.5;FEE BASIS;**4**;JAN 30, 1995 | 
|---|
| 3 | ; | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | PRCTL(CPT,MODL,DOS) ; Calculate 75th Percentile Fee Schedule Amount | 
|---|
| 7 | ; input | 
|---|
| 8 | ;   CPT    - CPT/HCPCS code, external, required | 
|---|
| 9 | ;   MODL   - list of optional CPT/HCPCS modifiers (external values) | 
|---|
| 10 | ;            delimited by commas | 
|---|
| 11 | ;   DOS    - date of service, fileman format, required | 
|---|
| 12 | ; returns $ amount or null if not on schedule | 
|---|
| 13 | N FBAMT,FBERR | 
|---|
| 14 | ; | 
|---|
| 15 | ; initialize | 
|---|
| 16 | S FBAMT="" | 
|---|
| 17 | K FBERR | 
|---|
| 18 | ; | 
|---|
| 19 | ;validate parameters | 
|---|
| 20 | S CPT=$G(CPT) | 
|---|
| 21 | S DOS=$G(DOS) | 
|---|
| 22 | I CPT="" D ERR^FBAAFS("Missing CPT") | 
|---|
| 23 | I DOS'?7N D ERR^FBAAFS("Invalid Date of Service") | 
|---|
| 24 | ; | 
|---|
| 25 | I '$D(FBERR) D | 
|---|
| 26 | . ; get data from 163.99 (stored in previous fiscal year) | 
|---|
| 27 | . N FBDA,FBFY,FBI,FBMOD,FBMODA,FBMODLE,FBX | 
|---|
| 28 | . S FBFY=$E(DOS,1,3)+1700+$E(DOS,4) ; fiscal year of service | 
|---|
| 29 | . ; | 
|---|
| 30 | . ; build a sorted list of the CPT modifiers | 
|---|
| 31 | . F FBI=1:1 S FBMOD=$P(MODL,",",FBI) Q:FBMOD=""  S FBMODA(FBMOD)="" | 
|---|
| 32 | . S (FBMOD,FBMODLE)="" | 
|---|
| 33 | . F  S FBMOD=$O(FBMODA(FBMOD)) Q:FBMOD=""  S FBMODLE=FBMODLE_","_FBMOD | 
|---|
| 34 | . S:$E(FBMODLE)="," FBMODLE=$E(FBMODLE,2,999) | 
|---|
| 35 | . ; | 
|---|
| 36 | . ; build lookup value from CPT and sorted list of modifiers | 
|---|
| 37 | . S FBX=CPT_$S(FBMODLE]"":"-"_FBMODLE,1:"") | 
|---|
| 38 | . ; look in file | 
|---|
| 39 | . S FBDA=$O(^FBAA(163.99,"B",FBX,0)) | 
|---|
| 40 | . I FBDA S FBAMT=$P($G(^FBAA(163.99,FBDA,"FY",FBFY-1,0)),U,5) | 
|---|
| 41 | ; | 
|---|
| 42 | ; return result | 
|---|
| 43 | Q FBAMT | 
|---|
| 44 | ; | 
|---|
| 45 | ;FBAAFSF | 
|---|