Stream: conformance
Topic: identifiers in logical models
Chris Grenz (Mar 12 2021 at 22:23):
When building a logical model, how could one describe an identifier with an implicit system?
Instance data - mrn is an identifier of "http://my.co/sid/MRN"
{ mrn: '1234' }
Logical model element:
{
path: 'Member.mrn',
type:[{
code:"string" // or identifer?? or something?
}]
}
@Chris Moesel @Ewout Kramer @Grahame Grieve
Chris Grenz (Mar 12 2021 at 22:28):
If it was terminology and the system was implicit, I could use code
and bind it. But that's also not quite right since the ValueSet would only contain all the codes from the system rather than actually being the system.
Chris Grenz (Mar 12 2021 at 22:36):
Does this apply somehow? http://hl7.org/fhir/extension-elementdefinition-identifier.html
I think not...
Jean Duteau (Mar 12 2021 at 23:22):
I've represented those as strings in my logical model. in the actual mapping to FHIR, they'll get turned into Identifiers with a constraint on the system
Jose Costa Teixeira (Mar 13 2021 at 10:43):
You can declare a logical data type. FHIR data types are physical data types, so they bring along a set of implementation constraints.
Chris Moesel (Mar 15 2021 at 13:20):
I think the people who spoke before me are more expert in logical models than I am, so what they said. Each gave you different options, and what you choose probably depends on what you're trying to accomplish with the LM and who your audience is. For some uses, just the fact that the field is named mrn
might be enough (if your audience know what that implies) -- so Jean's approach would make sense. For others, you might want to make things more explicit, in which Jose's approach might make more sense. You could also take an approach we see in some profiles and use Identifier
type, then fix the Member.mrn.system
to http://my.co/sid/MRN
-- but then, as Jose said, you're taking on all the other implications of Identifier
, which you may or may not want.
Chris Grenz (Mar 15 2021 at 14:58):
I'm pushing the boundaries a bit I think, trying to describe a physical schema with FHIR logical models and hoping to get the full FHIR semantics. mrn
should be interpreted as Identifier.value
of a non-materialized Identifier
with a fixed system
. So basically as you describe @Chris Moesel , but explicitly tieing Member.mrn
to Member.mrn.value
.
Stepping back a bit, isn't this something pretty common in logical modeling of mapping sources? Any time you have a "flat" structure, you need to logically construct what FHIR uses complex types for, especially Identifier and Concept, but also HumanName, Address, etc. For example, a SQL table with 5 columns for home address (line1, line2, city, state, zip) and another 5 for work address. It would be good to have a logical construct to attach the first five into an Address instance and the second 5 into another Address instance.
Chris Grenz (Mar 15 2021 at 15:20):
Which seems like a mapping problem, but I think could be viewed as just a definition.
Jean Duteau (Mar 15 2021 at 16:13):
I could definitely see you modelling that in a logical model as two Address instances or as two BackboneElements with five strings. It depends on how "abstract" you want to get with your model. Here's an example of what I was saying about identifiers: http://build.fhir.org/ig/HL7/fhir-spl/branches/main/StructureDefinition-EstablishmentRegistrationLogicalModel.html I have two different identifiers represented as strings because they are fixed as an Organization's DUNS number and an Organization's FDA Establishment Identifier. Even though I have a subset of Address elements that are actually exchanged, we decided to still represent that as the FHIR Address type because we thought we could expand the scope of what we are exchanging. So we used Address and ContactPoint for that.
Last updated: Apr 12 2022 at 19:14 UTC