Tom, this is a great question! There's lots of ways to eat an elephant but here's what I'd do:
I'd create a dictionary element for Claim, ServiceLine and Diagnosis:

For the Claim, add your fields and include a member field "ServiceLineCollection" and make the type "ServiceLine"

for the definition of ServiceLine, add your fields and include one called DiagnosisCollection. Make its type "Diagnosis"

Finally, define the fields for Diagnosis. I've taken a whack here:

For ServiceLineCollection in the Claim and the DiagnosisCollection in ServiceLine, I've used the constraints window to indicate that there needs to be at least one, but potentially many, of these values (doubleclick the field name to open the constraints window):

One final note: you've probably noticed that if you add a field and set its type to another dictionary element name, CaseComplete recognizes that and shows it in a distinguishing color. If you hover your mouse over it, it'll show you the meaning defined for that element:

When you run your Dictionary report, the relationships and arity (number of items permitted in a value) are nicely documented for your DBA:

This, of course, is a logical data model that your DBA (or you, if you're the lucky guy) get to translate into a physical model. If this is going into a relational database, you'll need to add intersection tables to hammer it into normal form.
Hope this helps, Tom!
R