1 | FBUTL1 ;WOIFO/SAB-FEE BASIS UTILITY ;6/17/2003
|
---|
2 | ;;3.5;FEE BASIS;**61**;JAN 30, 1995
|
---|
3 | Q
|
---|
4 | ;Extrinsic functions AR, AG, and RR have similar inputs and outputs
|
---|
5 | ; input
|
---|
6 | ; FBCI - Internal entry number of code.
|
---|
7 | ; Not required if external value is passed.
|
---|
8 | ; FBCE - External value of code.
|
---|
9 | ; Not required if internal value is passed.
|
---|
10 | ; If both the internal and external values are passed
|
---|
11 | ; then the external value will be ignored.
|
---|
12 | ; FBDT - Effective date.
|
---|
13 | ; Optional - DT (Today) will be used if a value is not passed.
|
---|
14 | ; An input date prior to 6/1/03 will be changed to be 6/1/03.
|
---|
15 | ; FBAR - Root of local or global array in which the description
|
---|
16 | ; word processing field will be returned.
|
---|
17 | ; Optional - description will not be returned if an array root
|
---|
18 | ; is not passed. The root should be in closed format
|
---|
19 | ; such as FBAR or FBAR(2) or ^TMP($J,"DESC").
|
---|
20 | ; The root should not be a variable name already used in FBUTL1
|
---|
21 | ; Returns a string value
|
---|
22 | ; Internal code ^ External code ^ HIPAA status ^ FEE status ^ name
|
---|
23 | ; OR if there is an error
|
---|
24 | ; -1^-1^^^error message text
|
---|
25 | ; where
|
---|
26 | ; internal code = internal entry number of code in file
|
---|
27 | ; external code = external value of code
|
---|
28 | ; HIPAA status = 1 (active) or 0 (inactive) as of effective date
|
---|
29 | ; FEE status = 1 (applicable) or 0 (not applicable) for fee claim
|
---|
30 | ; adjudication as of the effective date
|
---|
31 | ; name = a short descriptive name for the code as of the eff. date
|
---|
32 | ; name is only returned by AG (not returned by AR and RR)
|
---|
33 | ; error message text = an error message
|
---|
34 | ; Output
|
---|
35 | ; fbarr( - Array containing the description as of the effective date.
|
---|
36 | ; For example, if "FBTXT" was passed in parameter FBAR then
|
---|
37 | ; the output might be
|
---|
38 | ; FBTXT(1)=1st line of description
|
---|
39 | ; FBTXT(2)=2nd line of description
|
---|
40 | ; The array will be undefined if there is not a description
|
---|
41 | ;
|
---|
42 | AR(FBCI,FBCE,FBDT,FBAR) ; ADJUSTMENT REASON extrinsic function
|
---|
43 | ; Provides status and description for an adjustment reason code
|
---|
44 | ; stored in the ADJUSTMENT REASON (#161.91) file.
|
---|
45 | ; see top of routine for additional documentation
|
---|
46 | N FBC,FBDT1,FBERR,FBRET
|
---|
47 | S FBRET="",FBERR=""
|
---|
48 | I $G(FBAR)]"" K @FBAR
|
---|
49 | ;
|
---|
50 | ; find code in file
|
---|
51 | D FNDCDE(161.91)
|
---|
52 | ;
|
---|
53 | ; set effective date for search
|
---|
54 | D SETDT
|
---|
55 | ;
|
---|
56 | ; determine status of code
|
---|
57 | I FBCI,FBERR="" D GETSTAT(161.91)
|
---|
58 | ;
|
---|
59 | ; if array root passed then determine description of code
|
---|
60 | I $G(FBAR)]"",FBCI,FBERR="" D GETDESC(161.91)
|
---|
61 | ;
|
---|
62 | I FBERR]"" S FBRET="-1^-1^^^"_FBERR
|
---|
63 | Q FBRET
|
---|
64 | ;
|
---|
65 | AG(FBCI,FBCE,FBDT,FBAR) ; ADJUSTMENT GROUP extrinsic function
|
---|
66 | ; Provides status and description for an adjustment group code
|
---|
67 | ; stored in the ADJUSTMENT GROUP (#161.92) file.
|
---|
68 | ; see top of routine for additional documentation
|
---|
69 | N FBC,FBDT1,FBERR,FBRET
|
---|
70 | S FBRET="",FBERR=""
|
---|
71 | I $G(FBAR)]"" K @FBAR
|
---|
72 | ;
|
---|
73 | ; find code in file
|
---|
74 | D FNDCDE(161.92)
|
---|
75 | ;
|
---|
76 | ; set effective date for search
|
---|
77 | D SETDT
|
---|
78 | ;
|
---|
79 | ; determine status of code
|
---|
80 | I FBCI,FBERR="" D GETSTAT(161.92)
|
---|
81 | ;
|
---|
82 | ; determine name, description of code
|
---|
83 | I FBCI,FBERR="" D GETDESC(161.92)
|
---|
84 | ;
|
---|
85 | I FBERR]"" S FBRET="-1^-1^^^"_FBERR
|
---|
86 | Q FBRET
|
---|
87 | ;
|
---|
88 | RR(FBCI,FBCE,FBDT,FBAR) ; REMITTANCE REMARK extrinsic function
|
---|
89 | ; Provides status and description for an adjustment reason code
|
---|
90 | ; stored in the REMITTANCE REMARK (#161.93) file.
|
---|
91 | ; see top of routine for additional documentation
|
---|
92 | N FBC,FBDT1,FBERR,FBRET
|
---|
93 | S FBRET="",FBERR=""
|
---|
94 | I $G(FBAR)]"" K @FBAR
|
---|
95 | ;
|
---|
96 | ; find code in file
|
---|
97 | D FNDCDE(161.93)
|
---|
98 | ;
|
---|
99 | ; set effective date for search
|
---|
100 | D SETDT
|
---|
101 | ;
|
---|
102 | ; determine status of code
|
---|
103 | I FBCI,FBERR="" D GETSTAT(161.93)
|
---|
104 | ;
|
---|
105 | ; if array root passed then determine description of code
|
---|
106 | I $G(FBAR)]"",FBCI,FBERR="" D GETDESC(161.93)
|
---|
107 | ;
|
---|
108 | I FBERR]"" S FBRET="-1^-1^^^"_FBERR
|
---|
109 | Q FBRET
|
---|
110 | ;
|
---|
111 | FNDCDE(FBFILE) ; find code
|
---|
112 | ; determine ien if not passed
|
---|
113 | I $G(FBCI)="",$G(FBCE)]"" S FBCI=$O(^FB(FBFILE,"B",FBCE,0))
|
---|
114 | ; get data
|
---|
115 | I $G(FBCI) S FBC=$P($G(^FB(FBFILE,FBCI,0)),U)
|
---|
116 | I $G(FBC)="" S FBERR="CODE NOT FOUND IN FILE"
|
---|
117 | E S FBRET=FBCI_U_FBC
|
---|
118 | Q
|
---|
119 | ;
|
---|
120 | SETDT ; set date
|
---|
121 | I $G(FBDT)'?7N S FBDT=DT ; if date not passed then set as Today
|
---|
122 | I FBDT<3030601 S FBDT=3030601 ; if date prior to 6/1/03 then set
|
---|
123 | S FBDT1=$$FMADD^XLFDT(FBDT,1) ; use date + 1 in reverse $Orders
|
---|
124 | Q
|
---|
125 | ;
|
---|
126 | GETSTAT(FBFILE) ; get status
|
---|
127 | N FBFEEU,FBSEDT,FBSI,FBSTAT,FBSY
|
---|
128 | ; find most recent status effective date prior to the input date
|
---|
129 | S FBSEDT=$O(^FB(FBFILE,FBCI,1,"B",FBDT1),-1)
|
---|
130 | S:FBSEDT]"" FBSI=$O(^FB(FBFILE,FBCI,1,"B",FBSEDT,0))
|
---|
131 | S:$G(FBSI) FBSY=$G(^FB(FBFILE,FBCI,1,FBSI,0))
|
---|
132 | S:$G(FBSY)]"" FBSTAT=$P(FBSY,U,2),FBFEEU=$S('FBSTAT:0,1:+$P(FBSY,U,3))
|
---|
133 | I $G(FBSTAT)="" S FBERR="STATUS NOT AVAILABLE FOR SPECIFIED DATE" Q
|
---|
134 | S FBRET=FBRET_U_FBSTAT_U_FBFEEU
|
---|
135 | Q
|
---|
136 | ;
|
---|
137 | GETDESC(FBFILE) ; get description
|
---|
138 | N FBDEDT,FBDI,FBDN,FBX
|
---|
139 | ; find most recent description effective date prior to input date
|
---|
140 | S FBDEDT=$O(^FB(FBFILE,FBCI,2,"B",FBDT1),-1)
|
---|
141 | S:FBDEDT]"" FBDI=$O(^FB(FBFILE,FBCI,2,"B",FBDEDT,0))
|
---|
142 | ; if file 161.92 then get short descriptive name
|
---|
143 | I FBFILE=161.92 D
|
---|
144 | . S:$G(FBDI) FBDN=$P($G(^FB(FBFILE,FBCI,2,FBDI,0)),U,2)
|
---|
145 | . S FBRET=FBRET_U_$G(FBDN)
|
---|
146 | ; if array root passed then get full description
|
---|
147 | I $G(FBAR)]"",$G(FBDI) S FBX=$$GET1^DIQ(FBFILE_"2",FBDI_","_FBCI_",",1,,FBAR)
|
---|
148 | Q
|
---|
149 | ;
|
---|
150 | ;FBUTL1
|
---|