FHIR Chat · Should Coverage.class.value be 0..1? · implementers

Stream: implementers

Topic: Should Coverage.class.value be 0..1?


view this post on Zulip Tadas Antanavicius (Jun 30 2020 at 02:08):

Hi all,

I'm working on an app that allows a user to enter insurance information for patients. We're using the Coverage resource to represent each of the insurance plans that a Patient should be associated with.

Two of the pieces of data we need to collect about an insurance plan are "group name" and "group number".

This seems like a natural fit for Coverage.class.name and Coverage.class.value, so that was what we went with initially.

However, it turns out that in reality there are insurance plans that can be effectively billed with any combination of the following:
1) Missing both group name & group number
2) Having just group name, and missing group number
3) Having just group number, and missing group name
4) Having both group name and number

With the cardinalities defined in Coverage, scenarios 1, 3, and 4 are fine. Scenario 2 is not, because inside a Coverage.class, .value (the "number" in this context) is required (1..1).

Is this intentional? Should Coverage.class.value be relaxed to be 0..1? Is there another way to model this situation?

Thanks!

view this post on Zulip Lloyd McKenzie (Jun 30 2020 at 02:54):

@Paul Knapp

view this post on Zulip Tadas Antanavicius (Jun 30 2020 at 20:49):

At the moment, the workaround I am leaning towards is continuing to store "group number" in Coverage.class.value, and coming up with a custom Coverage.identifier to store the group name when it exists

view this post on Zulip Tadas Antanavicius (Jul 01 2020 at 18:13):

We landed on a slightly more elegant solution: for scenario 2, we'll just use the http://terminology.hl7.org/CodeSystem/data-absent-reason extension with a valueCode of asked-unknown to satisfy the constraint

view this post on Zulip Paul Knapp (Jul 06 2020 at 18:49):

@Tadas Antanavicius Normally if there is a class element you would know the value, e.g. group=ABC123, if you wish to not require that then given that the element is required (1..1) in the base resource you would need to include a Data Absent reason extension in .class.value. In a future version of FHIR we could relax the cardinality to 0..1 and I would encourage you to come to a Financial Management conference call to discuss that as a proposal.

view this post on Zulip Dennis Patterson (Jul 16 2020 at 19:03):

I know DAR is a mitigation when a profile constrains the cardinality of a field and there's no data. In this case, when it's a spec required field, is DAR still sufficient? I'm curious if client libraries would choke.

view this post on Zulip Lloyd McKenzie (Jul 16 2020 at 19:53):

It would be conformant, but many systems would choke. For interoperability, it's best to avoid surprising communication partners - and a DAR in a required element would be a surprise to most unless it was specifically called out in the relevant profile.

view this post on Zulip Dennis Patterson (Jul 16 2020 at 20:03):

That's what I figured. @Tadas Antanavicius are you returning some kind of placeholder default value for Coverage.class.value along with the DAR?

view this post on Zulip Lloyd McKenzie (Jul 16 2020 at 22:30):

If you have a valid placeholder value, there wouldn't really be a need for a DAR (and it would be somewhat confusing to have one...)

view this post on Zulip Tadas Antanavicius (Jul 16 2020 at 22:35):

@Dennis Patterson we're not using a placeholder value (indeed, as Lloyd points out, I would not have run into this problem if I'd had a placeholder value). And yes, I agree the solution is undesirable from an interoperability perspective.

view this post on Zulip Dennis Patterson (Jul 17 2020 at 14:16):

To elaborate, I was meaning something like

"value": "--",
 "_value": {
   "extension" : [ {
      "url" : "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
      "valueCode" : "unknown"
   }]
 }

The DAR is necessary in the situation being discussed. The only reason I'm mentioning something like a placeholder value is to prevent client libraries from blowing up. However, while a human reader might make sense of this, software may be all the more confused (to @Lloyd McKenzie 's point) about what was intended.

view this post on Zulip Lloyd McKenzie (Jul 17 2020 at 16:04):

"value": "--"
would blow up if that's not in the required value set

view this post on Zulip Drew Torres (Jul 17 2020 at 16:05):

Most valuesets support an unknown concept

view this post on Zulip Drew Torres (Jul 17 2020 at 16:07):

My question is what is the value of DAR? Aren't we setting up consuming applications for a hard time here? Why not have guidance in the spec on how to handle this? Couldn't we set some value in this example where the resource is valid to return without this 1 field?

view this post on Zulip Lloyd McKenzie (Jul 17 2020 at 16:13):

If they support the notion of "unknown", you don't generally need DAR

view this post on Zulip Lloyd McKenzie (Jul 17 2020 at 16:14):

If it's valid to have an instance without the field, then it shouldn't be 1..x. If you always need a value, then you should also mark the 'value' property as required - which means that sending an extension instead isn't good enough.

view this post on Zulip Lloyd McKenzie (Jul 17 2020 at 16:14):

We don't use 1..x for "we strongly encourage you to send" - that's what mustSupport is for.

view this post on Zulip Dennis Patterson (Jul 17 2020 at 16:15):

we're talking about class.value, not class.type. It's a string not a code

view this post on Zulip Lloyd McKenzie (Jul 17 2020 at 16:17):

If you don't have a value, just omit the class entirely. Why would you send a class without a value?

view this post on Zulip Dennis Patterson (Jul 17 2020 at 16:18):

the system has a group name without a group value

view this post on Zulip Lloyd McKenzie (Jul 17 2020 at 16:19):

@Paul Knapp

view this post on Zulip Vassil Peytchev (Jul 17 2020 at 16:40):

Dennis Patterson said:

the system has a group name without a group value

Isn't then the value the same as the name?

view this post on Zulip PKumar (Jul 20 2020 at 10:29):

Does FHIR resources provide any option to have row level security feature? where I want to ensure the particular patient record is provided access to given client? can I use SMART on FHIR to implement role based access to FHIR application?

view this post on Zulip John Moehrke (Jul 20 2020 at 13:46):

There is much background on security and privacy in the core spec http://build.fhir.org/secpriv-module.html
And security and privacy questions might get more focus on #Security and Privacy stream

view this post on Zulip Paul Knapp (Aug 19 2020 at 15:18):

@Dennis Patterson We can relax the cardinality in R5. Can you give an example of the Group which has a name not a value, as I'm with Vassil that if the name is 'Bronze' or 'Firefighters' then that is the value but if 'Boilermakers of America Local #126' then not the value.

view this post on Zulip Dennis Patterson (Aug 27 2020 at 18:44):

We model group value numerically (we actually call it group number), and had a case where there was a group name but not a group number at a client domain. I've seen some other examples in domains that match up more with your former examples, but at runtime if there's a group name but no group number, I can't distinguish whether it's 'Bronze' or 'Boilermakers of America Local #126'. I just know I have a textual name for the group.


Last updated: Apr 12 2022 at 19:14 UTC