Proposal to consolidate all current cost tables (Procedure_Cost, Drug_Cost, Device_Cost, Visit_Cost) in V5.0 into one single table. The table could be connected to any of the Domain tables (Procedure_Occurrence, Condition_Occurrence, Drug_Exposure, Device_Exposure, Observation, Measurement).
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. visit_cost and device_cost share identical columns for tracking costs.
Change at last minute: the cost_type_concept_id field will use new concepts in the Vocabulary to designate the source of the cost data.
The following description below is the proposed additional specification to the CDM.
The Cost Table will house all cost information from source data. Any information reporting money or currency amounts will be stored in this table. We distinguish three types of cost data: 1) paid or reimbursed amounts, 2) charges or list prices, and 3) costs or expenses incurred by the provider.
The defined fields in the Cost Table below are variables found in almost all U.S.-based claims data sources, which is a common cost data source for researchers. Descriptions on how to use these variables are detailed in the table below.
One cost record is generated for each response by payer. In a claims database, the payment and payment terms reported by the payer for the service billed will generate one cost record. If the source data has payment information for more than one payer, and the service has payment from more than one payer (i.e. primary insurance and secondary insurance payment for one CPT/procedure code), then a cost record is created for each reporting payer. Therefore, it is possible for one procedure to have multiple cost records for each payer. Payer reimbursement cost records will be identified by using the payer_plan_id field. Payments made by the patient or costs reported by the hospital will not have a payer_plan_id indicated in the cost record.
For ETL purposes, if there is cost information in the source data that requires a new variable in the Cost Table, it is advised that the ETL add a new variable in to the Cost Table to house that data. However, that new variable will not be used or considered in development of OHDSI tools, since this variable is considered a custom field that is user-defined.
Field | Required | Type | Description |
---|---|---|---|
cost_id | Yes | integer | A unique identifier for each COST record. |
cost_event_id | Yes | integer | A foreign key identifier to the event (e.g. Measurement, Procedure, Visit, Drug Exposure, etc) record for which cost data are recorded. |
cost_domain_id | Yes | string(20) | The concept representing the domain of the cost event, from which the corresponding table can be inferred. |
currency_concept_id | No | integer | A concept representing the 3-letter code used to delineate international currencies, such as USD for US Dollar. |
total_charged | No | float | The total amount charged by the provider of the good/service (e.g. hospital, physician pharmacy, dme provider) billed to a payer. This information is usually provided in claims data. |
total_cost | No | float | Cost of service/device/drug incurred by provider/pharmacy. This field is more commonly derived from charge information. Use case: The resulting amount after the hospital charges are multiplied by the cost-to-charge ratio. This data is currently available for NIS datasets, or any other HCUP datasets. See cost calculation explanation from AHRQ here. |
total_cost_type_concept_id | Yes | integer | Shows the provenance or the source of the total_cost data: Calculated from provider revenue, calculated from cost-to-charge ratio, reported from accounting database, etc. |
total_paid | No | float | The total amount paid from all payers for the expenses of the service/device/drug. This field is calculated using the following formula: paid_by_payer + paid_by_patient + paid_by_primary. In claims data, this field is considered the calculated field the payer expects the provider to get reimbursed for the service/device/drug from the payer and from the patient, based on the payer's contractual obligations. |
paid_by_payer | No | float | The amount paid by the Payer for the service/device/drug. In claims data, generally there is one field representing the total payment from the payer for the service/device/drug. However, this field could be a calculated field if the source data provides separate payment information for the ingredient cost and the dispensing fee. If the paid_ingredient_cost or paid_dispensing_fee fields are populated with nonzero values, the paid_by_payer field is calculated using the following formula: paid_ingredient_cost + paid_dispensing_fee. If there is more than one Payer in the source data, several cost records indicate that fact. The Payer reporting this reimbursement should be indicated under the payer_plan_id field. |
paid_by_patient | No | float | The total amount paid by the Person as a share of the expenses. This field is most often used in claims data to report the contracted amount the patient is responsible for reimbursing the provider for said service/device/drug. This is a calculated field using the following formula: paid_patient_copay + paid_patient_coinsurance + paid_patient_deductible. If the source data has actual patient payments (e.g. the patient payment is not a derivative of the payer claim and there is verification the patient paid an amount to the provider), then the patient payment should have it's own cost record with a payer_plan_id set to 0 to indicate the the payer is actually the patient, and the actual patient payment should be noted under the total_paid field. The paid_by_patient field is only used for reporting a patient's responsibility reported on an insurance claim. |
paid_patient_copay | No | float | The amount paid by the Person as a fixed contribution to the expenses. paid_patient_copay does contribute to the paid_by_patient variable. The paid_patient_copay field is only used for reporting a patient's copay amount reported on an insurance claim. |
paid_patient_coinsurance | No | float | The amount paid by the Person as a joint assumption of risk. Typically, this is a percentage of the expenses defined by the Payer Plan after the Person's deductible is exceeded. paid_patient_coinsurance does contribute to the paid_by_patient variable. The paid_patient_coinsurance field is only used for reporting a patient's coinsurance amount reported on an insurance claim. |
paid_patient_deductible | No | float | The amount paid by the Person that is counted toward the deductible defined by the Payer Plan. paid_patient_deductible does contribute to the paid_by_patient variable. The paid_patient_deductible field is only used for reporting a patient's deductible amount reported on an insurance claim. |
paid_by_primary | No | float | The amount paid by a primary Payer through the coordination of benefits. paid_by_primary does contribute to the total_paid variable. The paid_by_primary field is only used for reporting a patient's primary insurance payment amount reported on the secondary payer insurance claim. If the source data has actual primary insurance payments (e.g. the primary insurance payment is not a derivative of the payer claim and there is verification another insurance company paid an amount to the provider), then the primary insurance payment should have it's own cost record with a payer_plan_id set to the applicable payer, and the actual primary insurance payment should be noted under the paid_by_payer field. |
paid_ingredient_cost | No | float | The amount paid by the Payer to a pharmacy for the drug, excluding the amount paid for dispensing the drug. paid_ingredient_cost contributes to the paid_by_payer field if this field is populated with a nonzero value. |
paid_dispensing_fee | No | float | The amount paid by the Payer to a pharmacy for dispensing a drug, excluding the amount paid for the drug ingredient. paid_dispensing_fee contributes to the paid_by_payer field if this field is populated with a nonzero value. |
payer_plan_period_id | No | integer | A foreign key to the PAYER_PLAN_PERIOD table, where the details of the Payer, Plan and Family are stored. Record the payer_plan_id that relates to the payer who contributed to the paid_by_payer field. |
amount_allowed | No | float | The contracted amount agreed between the payer and provider. This information is generally available in claims data. This is similar to the total_paid amount in that it shows what the payer expects the provider to be reimbursed after the payer and patient pay. This differs from the total_paid amount in that it is not a calculated field, but a field available directly in claims data. Use case: This will capture non-covered services. Noncovered services are indicated by an amount allowed and patient responsibility variables (copay, coinsurance, deductible) will be equal $0 in the source data. This means the patient is responsible for the total_charged value. The amount_allowed field is payer specific and the payer should be indicated by the payer_plan_id field. |
revenue_code_concept_id | No | integer | A foreign key referring to a Standard Concept ID in the Standardized Vocabularies for Revenue codes. |
revenue_code_source_value | No | string(50) | The source code for the Revenue code as it appears in the source data, stored here for reference. |
Find use cases here.