Why erwin for Healthcare Claims Data Modeling?
erwin Data Modeler has been the preferred data modeling tool at CMS (Centers for Medicare & Medicaid Services) for over two decades. Healthcare claims data has a complex entity structure that benefits from formal logical modeling before physical implementation.
Free tools: Validate column names at mdatool.com/tools/naming-auditor and convert DDL at mdatool.com/tools/ddl-converter.
The Core Healthcare Claims Entities
1. CLAIM_HEADER
The central fact entity — one record per submitted claim.
Key attributes:
clm_nbrVARCHAR(20) — natural key from billing systemmbr_idVARCHAR(20) — FK to MEMBERbillng_prvdr_npiVARCHAR(10) — billing provider NPI — never INTEGERrndrng_prvdr_npiVARCHAR(10) — rendering provider NPIpayer_idVARCHAR(20) — FK to PAYERsvc_dt_fromDATE — service start datesvc_dt_toDATE — service end dateprim_diag_cdVARCHAR(7) — primary diagnosis code — never INTEGERicd_vrsnVARCHAR(5) — ICD9 or ICD10bld_amtDECIMAL(12,2) — billed amountpaid_amtDECIMAL(12,2) — paid amountclm_sts_cdVARCHAR(20) — claim status
2. MEMBER
The member entity with SCD Type 2 for plan changes.
mbr_idVARCHAR(20) — natural keymbr_dobDATE — date of birth (PHI)mbr_gndr_cdVARCHAR(1)plan_cdVARCHAR(20)grp_nbrVARCHAR(20)eff_dtDATE — SCD Type 2 effective dateexp_dtDATE — SCD Type 2 expiration date (NULL = current record)curr_rec_flgBOOLEAN
3. PROVIDER
Role-playing dimension used as both billing and rendering provider.
npi_nbrVARCHAR(10) — always VARCHAR, never INTEGERprvdr_last_nmVARCHAR(100)prvdr_first_nmVARCHAR(100)prvdr_spclty_cdVARCHAR(10)prvdr_taxnmy_cdVARCHAR(10)npi_sts_cdVARCHAR(1)
4. PAYER
The insurance payer entity.
payer_idVARCHAR(20)payer_nmVARCHAR(200)payer_type_cdVARCHAR(20) — Commercial, Medicare, Medicaid
5. SERVICE_LINE
One-to-many child of CLAIM_HEADER.
clm_nbrVARCHAR(20) — FK to CLAIM_HEADERline_nbrINTEGER — sequence numberproc_cdVARCHAR(10) — CPT/HCPCS codeproc_modifier_1VARCHAR(2)units_qtyDECIMAL(8,2)bld_amtDECIMAL(12,2)svc_dtDATE
Setting Up erwin Naming Standards for Healthcare
Before creating entities, configure the naming standards template to enforce ISO-11179 conventions:
Tools → Naming Standards → Edit
Word Separator: underscore (_)
Case: lowercase
Key healthcare abbreviations to add:
member → mbr
provider → prvdr
claim → clm
service → svc
diagnosis → diag
procedure → proc
amount → amt
date → dt
number → nbr
identifier → id
status → sts
code → cd
indicator → ind
flag → flg
Applying these ensures that when you create a logical attribute "Member Date of Birth" erwin generates the physical column name mbr_dob automatically.
Building the Logical Model in erwin
Step 1: Create entities
- Right-click diagram → Insert Entity
- Name:
Claim Header(logical name) - Add attributes with logical names: "Claim Number", "Member ID", "Billed Amount"
- Designate primary keys
- Create relationships between entities
Step 2: Define relationships
CLAIM_HEADER ──< SERVICE_LINE (one claim, many service lines)
MEMBER ─────── CLAIM_HEADER (one member, many claims)
PROVIDER ────── CLAIM_HEADER (role-playing: billing + rendering)
PAYER ──────── CLAIM_HEADER (one payer, many claims)
Step 3: Use identifying relationships
For SERVICE_LINE, use an identifying relationship to CLAIM_HEADER — the service line cannot exist without the parent claim. This generates a composite primary key (clm_nbr + line_nbr) in the physical model.
Generating Physical DDL from erwin
Actions → Forward Engineer → Schema Generation
Target: Snowflake (or SQL Server)
Options:
→ Generate CREATE TABLE statements
→ Include NOT NULL constraints
→ Include PRIMARY KEY constraints
→ Include FOREIGN KEY constraints
→ Include column COMMENTS
Generated DDL example:
CREATE TABLE claim_header (
clm_key INTEGER NOT NULL,
clm_nbr VARCHAR(20) NOT NULL,
mbr_id VARCHAR(20) NOT NULL,
billng_prvdr_npi VARCHAR(10),
rndrng_prvdr_npi VARCHAR(10),
payer_id VARCHAR(20) NOT NULL,
svc_dt_from DATE NOT NULL,
prim_diag_cd VARCHAR(7),
icd_vrsn VARCHAR(5),
bld_amt DECIMAL(12,2) NOT NULL,
paid_amt DECIMAL(12,2),
CONSTRAINT pk_claim_header PRIMARY KEY (clm_key)
);
CREATE TABLE service_line (
clm_key INTEGER NOT NULL,
line_nbr INTEGER NOT NULL,
proc_cd VARCHAR(10) NOT NULL,
proc_modifier_1 VARCHAR(2),
units_qty DECIMAL(8,2),
bld_amt DECIMAL(12,2),
svc_dt DATE,
CONSTRAINT pk_svc_line PRIMARY KEY (clm_key, line_nbr),
CONSTRAINT fk_svc_clm FOREIGN KEY (clm_key)
REFERENCES claim_header(clm_key)
);
Need to convert to BigQuery, Databricks, or Oracle? Use the free DDL Converter at mdatool.com.
Common Healthcare Modeling Mistakes in erwin
1. Storing ICD-10 codes as numeric erwin will default to INTEGER for fields named "Diagnosis Code" unless you explicitly set VARCHAR(7). ICD-10 codes contain letters (A00.1) — storing as INTEGER corrupts them.
2. Storing NPI as numeric NPI is exactly 10 digits but must be VARCHAR(10) — leading zeros are significant and NPI is never used in arithmetic.
3. Missing SCD Type 2 on Member entity
Without eff_dt, exp_dt, and curr_rec_flg on the MEMBER entity, historical population analytics will be incorrect.
4. Not using erwin domains
Create reusable domains: npi_domain (VARCHAR 10), icd10_domain (VARCHAR 7), amount_domain (DECIMAL 12,2). Apply consistently across all entities.
5. Single-table diagnosis design
Consider a separate CLAIM_DIAGNOSIS entity with diag_pos_nbr for cleaner modeling when you need flexible diagnosis code querying.
Validate Column Names Against ISO-11179
After generating DDL from erwin, validate all column names using the free Naming Auditor at mdatool.com before deploying to production.
Related Resources
Related Guides
Key Terms in This Article
More in Data Modeling
Best Healthcare Data Modeling Tools in 2026: AI-Powered Architecture for Modern Health Systems
The healthcare data modeling landscape has shifted in 2026. AI-native tools, FHIR R5 readiness, and LLM-assisted ERD generation have redefined what 'good' looks like. Here is how the leading platforms stack up — and why healthcare teams need a specialized category of their own.
Read moreICD-10 vs ICD-11: What Changes for Your Data Model
ICD-11 is not a minor revision — it restructures the entire classification hierarchy, expands code length, and introduces new data types. Here is what every healthcare data engineer needs to know before their warehouse is forced to migrate.
Read moreLogical Data Models Explained: The Backbone of Enterprise Systems
Logical data models define how an enterprise understands its data. Learn why logical modeling is the foundation of scalable systems, reliable analytics, and long-term architectural success across industries.
Read moreFree Tools
Ready to improve your data architecture?
Free tools for DDL conversion, SQL analysis, naming standards, and more.
Get weekly healthcare data engineering tips
Practical guides on data modeling, SQL standards, and healthcare domain conventions — straight to your inbox.
No spam. Unsubscribe any time.