Now that CPT/HCPCS codes can end up representing not only procedures but measurements, specimen, etc, it seems that we still need a good way to track the costs for these CPT/HCPCS codes even if they don’t end up in the procedure_occurrence table.
Instead of generating additional cost tables, each tied to a specific domain, perhaps we create a single, unified cost table to capture costs for all domains. This isn’t actually too hard to pull off.
visit_cost and device_cost share identical columns for tracking costs. Yay.
procedure_cost has the same columns as visit/device_cost plus columns for:
- revenue_code_concept_id
- revenue_code_source_value.
drug_cost has the same columns as visit/device_cost plus columns for:
- ingredient_cost
- dispensing_fee
- average_wholesale_price.
In light of that, I propose we group all the cost columns into a single table called “costs” and it looks like this:
To highlight a few columns:
- cost_event_id (feel free to change the name) stores the ID of the thing the cost is associated to (e.g. procedure_occurrence_id from procedure_occurrence or measurement_id from measurement).
- domain_concept_id stores the domain which this cost is associated with. It essentially tells us which table is associated with the cost (e.g. concept_id 21 represents the Measurement domain and means this cost record is associated with the measurement table)
- charge - we added this field because some claims information contains the charge amount. Some datasets only provide charges. It also helps with generating costs using cost to charge ratios.
- We did NOT bring over the revenue_code* columns from procedure_cost. We assert that Revenue Codes should be represented as procedures.
- We do bring over the extra columns for drug_cost, which is admittedly a bit awkward.
So, if I want to look up costs for my EKG measurements, I just run this query:
select * from measurements m join cost c on m.measurement_id = c.cost_event_id and c.domain_concept_id = 21 /* 21 - Domain Concept ID for Measurement */ where measurement_concept_id = 2617471 /* concept ID for "Electrocardiogram, routine ecg with 12 leads; tracing only, without interpretation and report, performed as a screening for the initial preventive physical examination"
While it is a bit awkward to have some cost columns that are specific to certain domains (e.g. drug_cost columns), I think it is even more awkward to end up having a cost table for practically every domain considering most of those tables have a virtually identical schema.
But either of those solutions at least allows us to store costs for measurements and specimens. Receiving bills and suffering costs of healthcare are very much a part of the patient experience (at least for those of us in the good ol’ US of A)
Thoughts?