I’m working on the modelling / etl for healthcare claims data to OMOP.
The data set has a mix of open claims (claims submitted by the providers, pre-adjudication) and closed claims (adjudicated claims provided by the payers).
I’m stuck on how to differentiate the open claims vs closed claims data in OMOP, which is important information to provide to researchers because closed claims are generally viewed as higher quality.
1st plan:
I was initially thinking that I could use the cost_type_concept_id to capture this, as shown below.
Concept Code Concept Interpretation
OMOP4822212 Provider System Open Claims
OMOP4822218 Payer system (Primary payer) Closed Claims
OMOP4822217 Payer system (Secondary payer) Closed Claims
I’m not sure that’s best though for two reasons -
A) Open (pre-adjudicated) claims should generally have something like a charged/billed, probably co-pay, and maybe allowed amount. Open claims don’t have a “paid amount” though and might not have any amount at the line level, so I’m not 100% sure that every open claims record would hit the cost table (at least for the claim line level in visit_detail).
B) Open vs closed claims seems more like it’s describing the visit_type, and it feels a bit like hiding that important descriptor off to the side if it lives in the cost table.
2nd plan:
I’m modelling every claim line (grain: header_id + line_number) to be a record in the visit_detail table and then will aggregate that up into visit_occurrence so that a visit_occurrence record is basically an episode of care. I think it makes most sense to capture the open claim vs closed claim differentiation on the visit_detail and visit_occurrence records themselves, probably by the visit_type_concept_id.
Here, though, I’m stuck again. I see concepts for medical/pharma/dental claim that all seem like they would represent a closed claim, but I don’t see any concepts that would represent an open medical/pharma/dental claim. It seems like I can add custom concepts to accomplish my goal, but I’m assuming there is a within-bounds way to do this already and I’m just not seeing it.
Can someone provide guidance on how this is typically approached?