hccinfhir 0.0.3__py3-none-any.whl → 0.0.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. hccinfhir/data/ra_coefficients_2025.csv +6352 -0
  2. hccinfhir/data/ra_dx_to_cc_2025.csv +53952 -0
  3. hccinfhir/data/ra_eligible_cpt_hcpcs_2024.csv +6697 -0
  4. hccinfhir/data/ra_eligible_cpt_hcpcs_2025.csv +6725 -0
  5. hccinfhir/data/ra_hierarchies_2025.csv +487 -0
  6. hccinfhir/datamodels.py +101 -0
  7. hccinfhir/extractor.py +3 -3
  8. hccinfhir/extractor_837.py +1 -2
  9. hccinfhir/extractor_fhir.py +1 -1
  10. hccinfhir/filter.py +3 -5
  11. hccinfhir/hccinfhir.py +149 -0
  12. hccinfhir/model_calculate.py +95 -0
  13. hccinfhir/model_coefficients.py +143 -0
  14. hccinfhir/model_demographics.py +191 -0
  15. hccinfhir/model_dx_to_cc.py +54 -0
  16. hccinfhir/model_hierarchies.py +70 -0
  17. hccinfhir/model_interactions.py +342 -0
  18. hccinfhir/samples/__init__.py +2 -0
  19. hccinfhir/utils.py +51 -0
  20. {hccinfhir-0.0.3.dist-info → hccinfhir-0.0.5.dist-info}/METADATA +147 -9
  21. hccinfhir-0.0.5.dist-info/RECORD +42 -0
  22. hccinfhir/models.py +0 -44
  23. hccinfhir-0.0.3.dist-info/RECORD +0 -28
  24. /hccinfhir/{data → samples}/sample_837_0.txt +0 -0
  25. /hccinfhir/{data → samples}/sample_837_1.txt +0 -0
  26. /hccinfhir/{data → samples}/sample_837_10.txt +0 -0
  27. /hccinfhir/{data → samples}/sample_837_11.txt +0 -0
  28. /hccinfhir/{data → samples}/sample_837_2.txt +0 -0
  29. /hccinfhir/{data → samples}/sample_837_3.txt +0 -0
  30. /hccinfhir/{data → samples}/sample_837_4.txt +0 -0
  31. /hccinfhir/{data → samples}/sample_837_5.txt +0 -0
  32. /hccinfhir/{data → samples}/sample_837_6.txt +0 -0
  33. /hccinfhir/{data → samples}/sample_837_7.txt +0 -0
  34. /hccinfhir/{data → samples}/sample_837_8.txt +0 -0
  35. /hccinfhir/{data → samples}/sample_837_9.txt +0 -0
  36. /hccinfhir/{data → samples}/sample_eob_1.json +0 -0
  37. /hccinfhir/{data → samples}/sample_eob_2.json +0 -0
  38. /hccinfhir/{data → samples}/sample_eob_200.ndjson +0 -0
  39. /hccinfhir/{data → samples}/sample_eob_3.json +0 -0
  40. {hccinfhir-0.0.3.dist-info → hccinfhir-0.0.5.dist-info}/WHEEL +0 -0
  41. {hccinfhir-0.0.3.dist-info → hccinfhir-0.0.5.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,487 @@
1
+ cc_parent,cc_child,model_domain,model_version,model_fullname
2
+ 8,9,CMS-HCC,V22,V22H79H1
3
+ 8,10,CMS-HCC,V22,V22H79H1
4
+ 8,11,CMS-HCC,V22,V22H79H1
5
+ 8,12,CMS-HCC,V22,V22H79H1
6
+ 9,10,CMS-HCC,V22,V22H79H1
7
+ 9,11,CMS-HCC,V22,V22H79H1
8
+ 9,12,CMS-HCC,V22,V22H79H1
9
+ 10,11,CMS-HCC,V22,V22H79H1
10
+ 10,12,CMS-HCC,V22,V22H79H1
11
+ 11,12,CMS-HCC,V22,V22H79H1
12
+ 17,18,CMS-HCC,V22,V22H79H1
13
+ 17,19,CMS-HCC,V22,V22H79H1
14
+ 18,19,CMS-HCC,V22,V22H79H1
15
+ 27,28,CMS-HCC,V22,V22H79H1
16
+ 27,29,CMS-HCC,V22,V22H79H1
17
+ 27,80,CMS-HCC,V22,V22H79H1
18
+ 28,29,CMS-HCC,V22,V22H79H1
19
+ 46,48,CMS-HCC,V22,V22H79H1
20
+ 54,55,CMS-HCC,V22,V22H79H1
21
+ 57,58,CMS-HCC,V22,V22H79H1
22
+ 70,71,CMS-HCC,V22,V22H79H1
23
+ 70,72,CMS-HCC,V22,V22H79H1
24
+ 70,103,CMS-HCC,V22,V22H79H1
25
+ 70,104,CMS-HCC,V22,V22H79H1
26
+ 70,169,CMS-HCC,V22,V22H79H1
27
+ 71,72,CMS-HCC,V22,V22H79H1
28
+ 71,104,CMS-HCC,V22,V22H79H1
29
+ 71,169,CMS-HCC,V22,V22H79H1
30
+ 72,169,CMS-HCC,V22,V22H79H1
31
+ 82,83,CMS-HCC,V22,V22H79H1
32
+ 82,84,CMS-HCC,V22,V22H79H1
33
+ 83,84,CMS-HCC,V22,V22H79H1
34
+ 86,87,CMS-HCC,V22,V22H79H1
35
+ 86,88,CMS-HCC,V22,V22H79H1
36
+ 87,88,CMS-HCC,V22,V22H79H1
37
+ 99,100,CMS-HCC,V22,V22H79H1
38
+ 103,104,CMS-HCC,V22,V22H79H1
39
+ 106,107,CMS-HCC,V22,V22H79H1
40
+ 106,108,CMS-HCC,V22,V22H79H1
41
+ 106,161,CMS-HCC,V22,V22H79H1
42
+ 106,189,CMS-HCC,V22,V22H79H1
43
+ 107,108,CMS-HCC,V22,V22H79H1
44
+ 110,111,CMS-HCC,V22,V22H79H1
45
+ 110,112,CMS-HCC,V22,V22H79H1
46
+ 111,112,CMS-HCC,V22,V22H79H1
47
+ 114,115,CMS-HCC,V22,V22H79H1
48
+ 134,135,CMS-HCC,V22,V22H79H1
49
+ 134,136,CMS-HCC,V22,V22H79H1
50
+ 134,137,CMS-HCC,V22,V22H79H1
51
+ 135,136,CMS-HCC,V22,V22H79H1
52
+ 135,137,CMS-HCC,V22,V22H79H1
53
+ 136,137,CMS-HCC,V22,V22H79H1
54
+ 157,158,CMS-HCC,V22,V22H79H1
55
+ 157,161,CMS-HCC,V22,V22H79H1
56
+ 158,161,CMS-HCC,V22,V22H79H1
57
+ 166,80,CMS-HCC,V22,V22H79H1
58
+ 166,167,CMS-HCC,V22,V22H79H1
59
+ 8,9,ESRD,V20,V20H87H1
60
+ 8,10,ESRD,V20,V20H87H1
61
+ 8,11,ESRD,V20,V20H87H1
62
+ 8,12,ESRD,V20,V20H87H1
63
+ 9,10,ESRD,V20,V20H87H1
64
+ 9,11,ESRD,V20,V20H87H1
65
+ 9,12,ESRD,V20,V20H87H1
66
+ 10,11,ESRD,V20,V20H87H1
67
+ 10,12,ESRD,V20,V20H87H1
68
+ 11,12,ESRD,V20,V20H87H1
69
+ 17,18,ESRD,V20,V20H87H1
70
+ 17,19,ESRD,V20,V20H87H1
71
+ 18,19,ESRD,V20,V20H87H1
72
+ 27,28,ESRD,V20,V20H87H1
73
+ 27,29,ESRD,V20,V20H87H1
74
+ 27,80,ESRD,V20,V20H87H1
75
+ 28,29,ESRD,V20,V20H87H1
76
+ 46,48,ESRD,V20,V20H87H1
77
+ 51,52,ESRD,V20,V20H87H1
78
+ 54,55,ESRD,V20,V20H87H1
79
+ 57,58,ESRD,V20,V20H87H1
80
+ 70,71,ESRD,V20,V20H87H1
81
+ 70,72,ESRD,V20,V20H87H1
82
+ 70,103,ESRD,V20,V20H87H1
83
+ 70,104,ESRD,V20,V20H87H1
84
+ 70,169,ESRD,V20,V20H87H1
85
+ 71,72,ESRD,V20,V20H87H1
86
+ 71,104,ESRD,V20,V20H87H1
87
+ 71,169,ESRD,V20,V20H87H1
88
+ 72,169,ESRD,V20,V20H87H1
89
+ 82,83,ESRD,V20,V20H87H1
90
+ 82,84,ESRD,V20,V20H87H1
91
+ 83,84,ESRD,V20,V20H87H1
92
+ 86,87,ESRD,V20,V20H87H1
93
+ 86,88,ESRD,V20,V20H87H1
94
+ 87,88,ESRD,V20,V20H87H1
95
+ 99,100,ESRD,V20,V20H87H1
96
+ 103,104,ESRD,V20,V20H87H1
97
+ 106,107,ESRD,V20,V20H87H1
98
+ 106,108,ESRD,V20,V20H87H1
99
+ 106,161,ESRD,V20,V20H87H1
100
+ 106,189,ESRD,V20,V20H87H1
101
+ 107,108,ESRD,V20,V20H87H1
102
+ 110,111,ESRD,V20,V20H87H1
103
+ 110,112,ESRD,V20,V20H87H1
104
+ 111,112,ESRD,V20,V20H87H1
105
+ 114,115,ESRD,V20,V20H87H1
106
+ 134,135,ESRD,V20,V20H87H1
107
+ 134,136,ESRD,V20,V20H87H1
108
+ 134,137,ESRD,V20,V20H87H1
109
+ 134,138,ESRD,V20,V20H87H1
110
+ 134,139,ESRD,V20,V20H87H1
111
+ 134,140,ESRD,V20,V20H87H1
112
+ 134,141,ESRD,V20,V20H87H1
113
+ 135,136,ESRD,V20,V20H87H1
114
+ 135,137,ESRD,V20,V20H87H1
115
+ 135,138,ESRD,V20,V20H87H1
116
+ 135,139,ESRD,V20,V20H87H1
117
+ 135,140,ESRD,V20,V20H87H1
118
+ 135,141,ESRD,V20,V20H87H1
119
+ 136,137,ESRD,V20,V20H87H1
120
+ 136,138,ESRD,V20,V20H87H1
121
+ 136,139,ESRD,V20,V20H87H1
122
+ 136,140,ESRD,V20,V20H87H1
123
+ 136,141,ESRD,V20,V20H87H1
124
+ 137,138,ESRD,V20,V20H87H1
125
+ 137,139,ESRD,V20,V20H87H1
126
+ 137,140,ESRD,V20,V20H87H1
127
+ 137,141,ESRD,V20,V20H87H1
128
+ 138,139,ESRD,V20,V20H87H1
129
+ 138,140,ESRD,V20,V20H87H1
130
+ 138,141,ESRD,V20,V20H87H1
131
+ 139,140,ESRD,V20,V20H87H1
132
+ 139,141,ESRD,V20,V20H87H1
133
+ 140,141,ESRD,V20,V20H87H1
134
+ 157,158,ESRD,V20,V20H87H1
135
+ 157,159,ESRD,V20,V20H87H1
136
+ 157,160,ESRD,V20,V20H87H1
137
+ 157,161,ESRD,V20,V20H87H1
138
+ 158,159,ESRD,V20,V20H87H1
139
+ 158,160,ESRD,V20,V20H87H1
140
+ 158,161,ESRD,V20,V20H87H1
141
+ 159,160,ESRD,V20,V20H87H1
142
+ 159,161,ESRD,V20,V20H87H1
143
+ 160,161,ESRD,V20,V20H87H1
144
+ 166,80,ESRD,V20,V20H87H1
145
+ 166,167,ESRD,V20,V20H87H1
146
+ 8,9,CMS-HCC,V24,V24H86H1
147
+ 8,10,CMS-HCC,V24,V24H86H1
148
+ 8,11,CMS-HCC,V24,V24H86H1
149
+ 8,12,CMS-HCC,V24,V24H86H1
150
+ 9,10,CMS-HCC,V24,V24H86H1
151
+ 9,11,CMS-HCC,V24,V24H86H1
152
+ 9,12,CMS-HCC,V24,V24H86H1
153
+ 10,11,CMS-HCC,V24,V24H86H1
154
+ 10,12,CMS-HCC,V24,V24H86H1
155
+ 11,12,CMS-HCC,V24,V24H86H1
156
+ 17,18,CMS-HCC,V24,V24H86H1
157
+ 17,19,CMS-HCC,V24,V24H86H1
158
+ 18,19,CMS-HCC,V24,V24H86H1
159
+ 27,28,CMS-HCC,V24,V24H86H1
160
+ 27,29,CMS-HCC,V24,V24H86H1
161
+ 27,80,CMS-HCC,V24,V24H86H1
162
+ 28,29,CMS-HCC,V24,V24H86H1
163
+ 46,48,CMS-HCC,V24,V24H86H1
164
+ 51,52,CMS-HCC,V24,V24H86H1
165
+ 54,55,CMS-HCC,V24,V24H86H1
166
+ 54,56,CMS-HCC,V24,V24H86H1
167
+ 55,56,CMS-HCC,V24,V24H86H1
168
+ 57,58,CMS-HCC,V24,V24H86H1
169
+ 57,59,CMS-HCC,V24,V24H86H1
170
+ 57,60,CMS-HCC,V24,V24H86H1
171
+ 58,59,CMS-HCC,V24,V24H86H1
172
+ 58,60,CMS-HCC,V24,V24H86H1
173
+ 59,60,CMS-HCC,V24,V24H86H1
174
+ 70,71,CMS-HCC,V24,V24H86H1
175
+ 70,72,CMS-HCC,V24,V24H86H1
176
+ 70,103,CMS-HCC,V24,V24H86H1
177
+ 70,104,CMS-HCC,V24,V24H86H1
178
+ 70,169,CMS-HCC,V24,V24H86H1
179
+ 71,72,CMS-HCC,V24,V24H86H1
180
+ 71,104,CMS-HCC,V24,V24H86H1
181
+ 71,169,CMS-HCC,V24,V24H86H1
182
+ 72,169,CMS-HCC,V24,V24H86H1
183
+ 82,83,CMS-HCC,V24,V24H86H1
184
+ 82,84,CMS-HCC,V24,V24H86H1
185
+ 83,84,CMS-HCC,V24,V24H86H1
186
+ 86,87,CMS-HCC,V24,V24H86H1
187
+ 86,88,CMS-HCC,V24,V24H86H1
188
+ 87,88,CMS-HCC,V24,V24H86H1
189
+ 99,100,CMS-HCC,V24,V24H86H1
190
+ 103,104,CMS-HCC,V24,V24H86H1
191
+ 106,107,CMS-HCC,V24,V24H86H1
192
+ 106,108,CMS-HCC,V24,V24H86H1
193
+ 106,161,CMS-HCC,V24,V24H86H1
194
+ 106,189,CMS-HCC,V24,V24H86H1
195
+ 107,108,CMS-HCC,V24,V24H86H1
196
+ 110,111,CMS-HCC,V24,V24H86H1
197
+ 110,112,CMS-HCC,V24,V24H86H1
198
+ 111,112,CMS-HCC,V24,V24H86H1
199
+ 114,115,CMS-HCC,V24,V24H86H1
200
+ 134,135,CMS-HCC,V24,V24H86H1
201
+ 134,136,CMS-HCC,V24,V24H86H1
202
+ 134,137,CMS-HCC,V24,V24H86H1
203
+ 134,138,CMS-HCC,V24,V24H86H1
204
+ 135,136,CMS-HCC,V24,V24H86H1
205
+ 135,137,CMS-HCC,V24,V24H86H1
206
+ 135,138,CMS-HCC,V24,V24H86H1
207
+ 136,137,CMS-HCC,V24,V24H86H1
208
+ 136,138,CMS-HCC,V24,V24H86H1
209
+ 137,138,CMS-HCC,V24,V24H86H1
210
+ 157,158,CMS-HCC,V24,V24H86H1
211
+ 157,159,CMS-HCC,V24,V24H86H1
212
+ 157,161,CMS-HCC,V24,V24H86H1
213
+ 158,159,CMS-HCC,V24,V24H86H1
214
+ 158,161,CMS-HCC,V24,V24H86H1
215
+ 159,161,CMS-HCC,V24,V24H86H1
216
+ 166,80,CMS-HCC,V24,V24H86H1
217
+ 166,167,CMS-HCC,V24,V24H86H1
218
+ 8,9,ESRD,V24,V24H86H1
219
+ 8,10,ESRD,V24,V24H86H1
220
+ 8,11,ESRD,V24,V24H86H1
221
+ 8,12,ESRD,V24,V24H86H1
222
+ 9,10,ESRD,V24,V24H86H1
223
+ 9,11,ESRD,V24,V24H86H1
224
+ 9,12,ESRD,V24,V24H86H1
225
+ 10,11,ESRD,V24,V24H86H1
226
+ 10,12,ESRD,V24,V24H86H1
227
+ 11,12,ESRD,V24,V24H86H1
228
+ 17,18,ESRD,V24,V24H86H1
229
+ 17,19,ESRD,V24,V24H86H1
230
+ 18,19,ESRD,V24,V24H86H1
231
+ 27,28,ESRD,V24,V24H86H1
232
+ 27,29,ESRD,V24,V24H86H1
233
+ 27,80,ESRD,V24,V24H86H1
234
+ 28,29,ESRD,V24,V24H86H1
235
+ 46,48,ESRD,V24,V24H86H1
236
+ 51,52,ESRD,V24,V24H86H1
237
+ 54,55,ESRD,V24,V24H86H1
238
+ 54,56,ESRD,V24,V24H86H1
239
+ 55,56,ESRD,V24,V24H86H1
240
+ 57,58,ESRD,V24,V24H86H1
241
+ 57,59,ESRD,V24,V24H86H1
242
+ 57,60,ESRD,V24,V24H86H1
243
+ 58,59,ESRD,V24,V24H86H1
244
+ 58,60,ESRD,V24,V24H86H1
245
+ 59,60,ESRD,V24,V24H86H1
246
+ 70,71,ESRD,V24,V24H86H1
247
+ 70,72,ESRD,V24,V24H86H1
248
+ 70,103,ESRD,V24,V24H86H1
249
+ 70,104,ESRD,V24,V24H86H1
250
+ 70,169,ESRD,V24,V24H86H1
251
+ 71,72,ESRD,V24,V24H86H1
252
+ 71,104,ESRD,V24,V24H86H1
253
+ 71,169,ESRD,V24,V24H86H1
254
+ 72,169,ESRD,V24,V24H86H1
255
+ 82,83,ESRD,V24,V24H86H1
256
+ 82,84,ESRD,V24,V24H86H1
257
+ 83,84,ESRD,V24,V24H86H1
258
+ 86,87,ESRD,V24,V24H86H1
259
+ 86,88,ESRD,V24,V24H86H1
260
+ 87,88,ESRD,V24,V24H86H1
261
+ 99,100,ESRD,V24,V24H86H1
262
+ 103,104,ESRD,V24,V24H86H1
263
+ 106,107,ESRD,V24,V24H86H1
264
+ 106,108,ESRD,V24,V24H86H1
265
+ 106,161,ESRD,V24,V24H86H1
266
+ 106,189,ESRD,V24,V24H86H1
267
+ 107,108,ESRD,V24,V24H86H1
268
+ 110,111,ESRD,V24,V24H86H1
269
+ 110,112,ESRD,V24,V24H86H1
270
+ 111,112,ESRD,V24,V24H86H1
271
+ 114,115,ESRD,V24,V24H86H1
272
+ 134,135,ESRD,V24,V24H86H1
273
+ 134,136,ESRD,V24,V24H86H1
274
+ 134,137,ESRD,V24,V24H86H1
275
+ 134,138,ESRD,V24,V24H86H1
276
+ 135,136,ESRD,V24,V24H86H1
277
+ 135,137,ESRD,V24,V24H86H1
278
+ 135,138,ESRD,V24,V24H86H1
279
+ 136,137,ESRD,V24,V24H86H1
280
+ 136,138,ESRD,V24,V24H86H1
281
+ 137,138,ESRD,V24,V24H86H1
282
+ 157,158,ESRD,V24,V24H86H1
283
+ 157,159,ESRD,V24,V24H86H1
284
+ 157,161,ESRD,V24,V24H86H1
285
+ 158,159,ESRD,V24,V24H86H1
286
+ 158,161,ESRD,V24,V24H86H1
287
+ 159,161,ESRD,V24,V24H86H1
288
+ 166,80,ESRD,V24,V24H86H1
289
+ 166,167,ESRD,V24,V24H86H1
290
+ 15,17,RxHCC,R08,R08X84H1
291
+ 15,18,RxHCC,R08,R08X84H1
292
+ 15,19,RxHCC,R08,R08X84H1
293
+ 15,20,RxHCC,R08,R08X84H1
294
+ 15,21,RxHCC,R08,R08X84H1
295
+ 15,22,RxHCC,R08,R08X84H1
296
+ 16,17,RxHCC,R08,R08X84H1
297
+ 16,18,RxHCC,R08,R08X84H1
298
+ 16,19,RxHCC,R08,R08X84H1
299
+ 16,20,RxHCC,R08,R08X84H1
300
+ 16,21,RxHCC,R08,R08X84H1
301
+ 16,22,RxHCC,R08,R08X84H1
302
+ 17,18,RxHCC,R08,R08X84H1
303
+ 17,19,RxHCC,R08,R08X84H1
304
+ 17,20,RxHCC,R08,R08X84H1
305
+ 17,21,RxHCC,R08,R08X84H1
306
+ 17,22,RxHCC,R08,R08X84H1
307
+ 18,19,RxHCC,R08,R08X84H1
308
+ 18,20,RxHCC,R08,R08X84H1
309
+ 18,21,RxHCC,R08,R08X84H1
310
+ 18,22,RxHCC,R08,R08X84H1
311
+ 19,20,RxHCC,R08,R08X84H1
312
+ 19,21,RxHCC,R08,R08X84H1
313
+ 19,22,RxHCC,R08,R08X84H1
314
+ 20,21,RxHCC,R08,R08X84H1
315
+ 20,22,RxHCC,R08,R08X84H1
316
+ 21,22,RxHCC,R08,R08X84H1
317
+ 30,31,RxHCC,R08,R08X84H1
318
+ 40,43,RxHCC,R08,R08X84H1
319
+ 41,43,RxHCC,R08,R08X84H1
320
+ 42,43,RxHCC,R08,R08X84H1
321
+ 54,55,RxHCC,R08,R08X84H1
322
+ 65,66,RxHCC,R08,R08X84H1
323
+ 81,83,RxHCC,R08,R08X84H1
324
+ 81,84,RxHCC,R08,R08X84H1
325
+ 81,316,RxHCC,R08,R08X84H1
326
+ 82,83,RxHCC,R08,R08X84H1
327
+ 82,84,RxHCC,R08,R08X84H1
328
+ 83,84,RxHCC,R08,R08X84H1
329
+ 84,317,RxHCC,R08,R08X84H1
330
+ 111,112,RxHCC,R08,R08X84H1
331
+ 130,131,RxHCC,R08,R08X84H1
332
+ 130,132,RxHCC,R08,R08X84H1
333
+ 130,133,RxHCC,R08,R08X84H1
334
+ 131,132,RxHCC,R08,R08X84H1
335
+ 131,133,RxHCC,R08,R08X84H1
336
+ 132,133,RxHCC,R08,R08X84H1
337
+ 146,147,RxHCC,R08,R08X84H1
338
+ 146,148,RxHCC,R08,R08X84H1
339
+ 147,148,RxHCC,R08,R08X84H1
340
+ 157,158,RxHCC,R08,R08X84H1
341
+ 163,164,RxHCC,R08,R08X84H1
342
+ 183,184,RxHCC,R08,R08X84H1
343
+ 183,186,RxHCC,R08,R08X84H1
344
+ 183,187,RxHCC,R08,R08X84H1
345
+ 184,186,RxHCC,R08,R08X84H1
346
+ 184,187,RxHCC,R08,R08X84H1
347
+ 186,187,RxHCC,R08,R08X84H1
348
+ 225,229,RxHCC,R08,R08X84H1
349
+ 226,227,RxHCC,R08,R08X84H1
350
+ 226,229,RxHCC,R08,R08X84H1
351
+ 227,229,RxHCC,R08,R08X84H1
352
+ 228,229,RxHCC,R08,R08X84H1
353
+ 243,244,RxHCC,R08,R08X84H1
354
+ 260,261,RxHCC,R08,R08X84H1
355
+ 260,262,RxHCC,R08,R08X84H1
356
+ 260,263,RxHCC,R08,R08X84H1
357
+ 260,396,RxHCC,R08,R08X84H1
358
+ 261,262,RxHCC,R08,R08X84H1
359
+ 261,263,RxHCC,R08,R08X84H1
360
+ 262,263,RxHCC,R08,R08X84H1
361
+ 17,18,CMS-HCC,V28,V28115H1
362
+ 17,19,CMS-HCC,V28,V28115H1
363
+ 17,20,CMS-HCC,V28,V28115H1
364
+ 17,21,CMS-HCC,V28,V28115H1
365
+ 17,22,CMS-HCC,V28,V28115H1
366
+ 17,23,CMS-HCC,V28,V28115H1
367
+ 18,19,CMS-HCC,V28,V28115H1
368
+ 18,20,CMS-HCC,V28,V28115H1
369
+ 18,21,CMS-HCC,V28,V28115H1
370
+ 18,22,CMS-HCC,V28,V28115H1
371
+ 18,23,CMS-HCC,V28,V28115H1
372
+ 19,20,CMS-HCC,V28,V28115H1
373
+ 19,21,CMS-HCC,V28,V28115H1
374
+ 19,22,CMS-HCC,V28,V28115H1
375
+ 19,23,CMS-HCC,V28,V28115H1
376
+ 20,21,CMS-HCC,V28,V28115H1
377
+ 20,22,CMS-HCC,V28,V28115H1
378
+ 20,23,CMS-HCC,V28,V28115H1
379
+ 21,22,CMS-HCC,V28,V28115H1
380
+ 21,23,CMS-HCC,V28,V28115H1
381
+ 22,23,CMS-HCC,V28,V28115H1
382
+ 35,36,CMS-HCC,V28,V28115H1
383
+ 35,37,CMS-HCC,V28,V28115H1
384
+ 35,38,CMS-HCC,V28,V28115H1
385
+ 36,37,CMS-HCC,V28,V28115H1
386
+ 36,38,CMS-HCC,V28,V28115H1
387
+ 37,38,CMS-HCC,V28,V28115H1
388
+ 62,63,CMS-HCC,V28,V28115H1
389
+ 62,64,CMS-HCC,V28,V28115H1
390
+ 62,65,CMS-HCC,V28,V28115H1
391
+ 62,68,CMS-HCC,V28,V28115H1
392
+ 63,64,CMS-HCC,V28,V28115H1
393
+ 63,65,CMS-HCC,V28,V28115H1
394
+ 63,68,CMS-HCC,V28,V28115H1
395
+ 63,202,CMS-HCC,V28,V28115H1
396
+ 64,65,CMS-HCC,V28,V28115H1
397
+ 64,68,CMS-HCC,V28,V28115H1
398
+ 77,78,CMS-HCC,V28,V28115H1
399
+ 77,80,CMS-HCC,V28,V28115H1
400
+ 77,81,CMS-HCC,V28,V28115H1
401
+ 80,81,CMS-HCC,V28,V28115H1
402
+ 93,94,CMS-HCC,V28,V28115H1
403
+ 107,108,CMS-HCC,V28,V28115H1
404
+ 111,112,CMS-HCC,V28,V28115H1
405
+ 114,115,CMS-HCC,V28,V28115H1
406
+ 125,126,CMS-HCC,V28,V28115H1
407
+ 125,127,CMS-HCC,V28,V28115H1
408
+ 126,127,CMS-HCC,V28,V28115H1
409
+ 135,136,CMS-HCC,V28,V28115H1
410
+ 135,137,CMS-HCC,V28,V28115H1
411
+ 135,138,CMS-HCC,V28,V28115H1
412
+ 135,139,CMS-HCC,V28,V28115H1
413
+ 136,137,CMS-HCC,V28,V28115H1
414
+ 136,138,CMS-HCC,V28,V28115H1
415
+ 136,139,CMS-HCC,V28,V28115H1
416
+ 137,138,CMS-HCC,V28,V28115H1
417
+ 137,139,CMS-HCC,V28,V28115H1
418
+ 138,139,CMS-HCC,V28,V28115H1
419
+ 151,152,CMS-HCC,V28,V28115H1
420
+ 151,153,CMS-HCC,V28,V28115H1
421
+ 151,154,CMS-HCC,V28,V28115H1
422
+ 151,155,CMS-HCC,V28,V28115H1
423
+ 152,153,CMS-HCC,V28,V28115H1
424
+ 152,154,CMS-HCC,V28,V28115H1
425
+ 152,155,CMS-HCC,V28,V28115H1
426
+ 153,154,CMS-HCC,V28,V28115H1
427
+ 153,155,CMS-HCC,V28,V28115H1
428
+ 154,155,CMS-HCC,V28,V28115H1
429
+ 180,181,CMS-HCC,V28,V28115H1
430
+ 180,182,CMS-HCC,V28,V28115H1
431
+ 180,253,CMS-HCC,V28,V28115H1
432
+ 180,254,CMS-HCC,V28,V28115H1
433
+ 181,182,CMS-HCC,V28,V28115H1
434
+ 181,254,CMS-HCC,V28,V28115H1
435
+ 195,196,CMS-HCC,V28,V28115H1
436
+ 211,212,CMS-HCC,V28,V28115H1
437
+ 211,213,CMS-HCC,V28,V28115H1
438
+ 212,213,CMS-HCC,V28,V28115H1
439
+ 223,224,CMS-HCC,V28,V28115H1
440
+ 223,225,CMS-HCC,V28,V28115H1
441
+ 223,226,CMS-HCC,V28,V28115H1
442
+ 223,227,CMS-HCC,V28,V28115H1
443
+ 224,225,CMS-HCC,V28,V28115H1
444
+ 224,226,CMS-HCC,V28,V28115H1
445
+ 224,227,CMS-HCC,V28,V28115H1
446
+ 225,226,CMS-HCC,V28,V28115H1
447
+ 225,227,CMS-HCC,V28,V28115H1
448
+ 226,227,CMS-HCC,V28,V28115H1
449
+ 228,229,CMS-HCC,V28,V28115H1
450
+ 248,249,CMS-HCC,V28,V28115H1
451
+ 253,254,CMS-HCC,V28,V28115H1
452
+ 263,264,CMS-HCC,V28,V28115H1
453
+ 263,383,CMS-HCC,V28,V28115H1
454
+ 263,409,CMS-HCC,V28,V28115H1
455
+ 276,277,CMS-HCC,V28,V28115H1
456
+ 276,278,CMS-HCC,V28,V28115H1
457
+ 276,279,CMS-HCC,V28,V28115H1
458
+ 276,280,CMS-HCC,V28,V28115H1
459
+ 277,278,CMS-HCC,V28,V28115H1
460
+ 277,279,CMS-HCC,V28,V28115H1
461
+ 277,280,CMS-HCC,V28,V28115H1
462
+ 278,279,CMS-HCC,V28,V28115H1
463
+ 278,280,CMS-HCC,V28,V28115H1
464
+ 279,280,CMS-HCC,V28,V28115H1
465
+ 282,283,CMS-HCC,V28,V28115H1
466
+ 326,327,CMS-HCC,V28,V28115H1
467
+ 326,328,CMS-HCC,V28,V28115H1
468
+ 326,329,CMS-HCC,V28,V28115H1
469
+ 327,328,CMS-HCC,V28,V28115H1
470
+ 327,329,CMS-HCC,V28,V28115H1
471
+ 328,329,CMS-HCC,V28,V28115H1
472
+ 379,380,CMS-HCC,V28,V28115H1
473
+ 379,381,CMS-HCC,V28,V28115H1
474
+ 379,382,CMS-HCC,V28,V28115H1
475
+ 379,383,CMS-HCC,V28,V28115H1
476
+ 380,381,CMS-HCC,V28,V28115H1
477
+ 380,382,CMS-HCC,V28,V28115H1
478
+ 380,383,CMS-HCC,V28,V28115H1
479
+ 381,382,CMS-HCC,V28,V28115H1
480
+ 381,383,CMS-HCC,V28,V28115H1
481
+ 382,383,CMS-HCC,V28,V28115H1
482
+ 397,202,CMS-HCC,V28,V28115H1
483
+ 397,398,CMS-HCC,V28,V28115H1
484
+ 397,399,CMS-HCC,V28,V28115H1
485
+ 398,202,CMS-HCC,V28,V28115H1
486
+ 398,399,CMS-HCC,V28,V28115H1
487
+ 405,409,CMS-HCC,V28,V28115H1
@@ -0,0 +1,101 @@
1
+ from pydantic import BaseModel, Field
2
+ from typing import List, Optional, Literal, Dict, Set, TypedDict
3
+
4
+ # Define Model Name literal type
5
+ ModelName = Literal[
6
+ "CMS-HCC Model V22",
7
+ "CMS-HCC Model V24",
8
+ "CMS-HCC Model V28",
9
+ "CMS-HCC ESRD Model V21",
10
+ "CMS-HCC ESRD Model V24",
11
+ "RxHCC Model V08"
12
+ ]
13
+
14
+ ProcFilteringFilename = Literal[
15
+ "ra_eligible_cpt_hcpcs_2023.csv",
16
+ "ra_eligible_cpt_hcpcs_2024.csv",
17
+ "ra_eligible_cpt_hcpcs_2025.csv"
18
+ ]
19
+
20
+ DxCCMappingFilename = Literal[
21
+ "ra_dx_to_cc_2025.csv"
22
+ ]
23
+
24
+ class ServiceLevelData(BaseModel):
25
+ """
26
+ Represents standardized service-level data extracted from healthcare claims.
27
+
28
+ Attributes:
29
+ claim_id: Unique identifier for the claim
30
+ procedure_code: Healthcare Common Procedure Coding System (HCPCS) code
31
+ ndc: National Drug Code
32
+ linked_diagnosis_codes: ICD-10 diagnosis codes linked to this service
33
+ claim_diagnosis_codes: All diagnosis codes on the claim
34
+ claim_type: Type of claim (e.g., NCH Claim Type Code, or 837I, 837P)
35
+ provider_specialty: Provider taxonomy or specialty code
36
+ performing_provider_npi: National Provider Identifier for performing provider
37
+ billing_provider_npi: National Provider Identifier for billing provider
38
+ patient_id: Unique identifier for the patient
39
+ facility_type: Type of facility where service was rendered
40
+ service_type: Type of service provided (facility type + service type = Type of Bill)
41
+ service_date: Date service was performed (YYYY-MM-DD)
42
+ place_of_service: Place of service code
43
+ quantity: Number of units provided
44
+ quantity_unit: Unit of measure for quantity
45
+ modifiers: List of procedure code modifiers
46
+ allowed_amount: Allowed amount for the service
47
+ """
48
+ claim_id: Optional[str] = None
49
+ procedure_code: Optional[str] = None
50
+ ndc: Optional[str] = None
51
+ linked_diagnosis_codes: List[str] = []
52
+ claim_diagnosis_codes: List[str] = []
53
+ claim_type: Optional[str] = None
54
+ provider_specialty: Optional[str] = None
55
+ performing_provider_npi: Optional[str] = None
56
+ billing_provider_npi: Optional[str] = None
57
+ patient_id: Optional[str] = None
58
+ facility_type: Optional[str] = None
59
+ service_type: Optional[str] = None
60
+ service_date: Optional[str] = None
61
+ place_of_service: Optional[str] = None
62
+ quantity: Optional[float] = None
63
+ modifiers: List[str] = []
64
+ allowed_amount: Optional[float] = None
65
+
66
+ class Demographics(BaseModel):
67
+ """
68
+ Response model for demographic categorization
69
+ """
70
+ age: int = Field(..., description="Beneficiary age")
71
+ sex: Literal['M', 'F', '1', '2'] = Field(..., description="Beneficiary sex")
72
+ dual_elgbl_cd: Literal[None, 'NA', '99', '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10'] = Field('NA', description="Dual status code")
73
+ orec: Literal[None, '0', '1', '2', '3'] = Field('0', description="Original reason for entitlement")
74
+ crec: Literal[None, '0', '1', '2', '3'] = Field('0', description="Current reason for entitlement")
75
+ new_enrollee: bool = Field(False, description="True if beneficiary is a new enrollee")
76
+ snp: bool = Field(False, description="True if beneficiary is in SNP")
77
+ version: str = Field("V2", description="Version of categorization used (V2, V4, V6)")
78
+ low_income: bool = Field(False, description="True if beneficiary is in low income; RxHCC only")
79
+ graft_months: Optional[int] = Field(None, description="Number of months since transplant; ESRD Model only")
80
+ category: str = Field(..., description="[derived] Age-sex category code")
81
+ non_aged: bool = Field(False, description="[derived] True if age <= 64")
82
+ orig_disabled: bool = Field(False, description="[derived] True if originally disabled (OREC='1' and not currently disabled)")
83
+ disabled: bool = Field(False, description="[derived] True if currently disabled (age < 65 and OREC != '0')")
84
+ esrd: bool = Field(False, description="[derived] True if ESRD (ESRD Model)")
85
+ lti: bool = Field(False, description="[derived] True if LTI (LTI Model)")
86
+ fbd: bool = Field(False, description="[derived] True if FBD (FBD Model)")
87
+ pbd: bool = Field(False, description="[derived] True if PBD (PBD Model)")
88
+
89
+
90
+ class RAFResult(TypedDict):
91
+ """Type definition for RAF calculation results"""
92
+ risk_score: float
93
+ hcc_list: List[str]
94
+ cc_to_dx: Dict[str, Set[str]]
95
+ coefficients: Dict[str, float]
96
+ interactions: Dict[str, float]
97
+ demographics: Demographics
98
+ model_name: ModelName
99
+ version: str
100
+ diagnosis_codes: List[str]
101
+ service_level_data: Optional[List[ServiceLevelData]]
hccinfhir/extractor.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from typing import Union, List, Literal
2
- from .models import ServiceLevelData
3
- from .extractor_837 import extract_sld_837
4
- from .extractor_fhir import extract_sld_fhir
2
+ from hccinfhir.datamodels import ServiceLevelData
3
+ from hccinfhir.extractor_837 import extract_sld_837
4
+ from hccinfhir.extractor_fhir import extract_sld_fhir
5
5
 
6
6
  def extract_sld(
7
7
  data: Union[str, dict],
@@ -1,7 +1,6 @@
1
1
  from typing import List, Optional, Dict
2
2
  from pydantic import BaseModel
3
- from datetime import date
4
- from .models import ServiceLevelData
3
+ from hccinfhir.datamodels import ServiceLevelData
5
4
 
6
5
  CLAIM_TYPES = {
7
6
  "005010X222A1": "837P", # Professional
@@ -1,7 +1,7 @@
1
1
  from pydantic import BaseModel, ConfigDict, Field, AliasChoices
2
2
  from typing import List, Optional, Literal, Dict
3
3
  from datetime import date
4
- from .models import ServiceLevelData
4
+ from hccinfhir.datamodels import ServiceLevelData
5
5
 
6
6
  SYSTEMS = {
7
7
  'diagnosis': {
hccinfhir/filter.py CHANGED
@@ -1,12 +1,10 @@
1
1
  from typing import List, Set
2
- from .models import ServiceLevelData
3
- import importlib.resources
2
+ from hccinfhir.datamodels import ServiceLevelData
3
+ from hccinfhir.utils import load_proc_filtering
4
4
 
5
5
  # use import importlib.resources to load the professional_cpt_fn file as a list of strings
6
6
  professional_cpt_default_fn = 'ra_eligible_cpt_hcpcs_2023.csv'
7
- professional_cpt_default = []
8
- with importlib.resources.open_text('hccinfhir.data', professional_cpt_default_fn) as f:
9
- professional_cpt_default = set(f.read().splitlines())
7
+ professional_cpt_default = load_proc_filtering(professional_cpt_default_fn)
10
8
 
11
9
  def apply_filter(
12
10
  data: List[ServiceLevelData],