27 Feb 2020


Harold_Solbrig, EricP, Dazhji, David_Booth, hsolbrig
David Booth


FHIR Extensions for R5


harold: I took two very differnet JSON representations for patient record, Phenopacket and a patient record. Mapped phenopacket to FHIR patient resource and got an aggregate resource.
... Cool side effect: phenopacket had "sex male", but FHIR had "gender MALE". ShEx can detect that, to detect mapping problems!
... But the exciting key is that phenopacket had an attribute not present in FHIR patient. I mapped it to an ID. But Guoqian pointed out that there's a group defining a mapping from phenopacket to FHIR. I then changed my URI to match theirs. We want the RDF rep of extended FHIR to be the same as the patient record that was not converted.
... Ignoring modifiers and underscore issue for the moment, the extensions should just get flattened out so the RDF does not even have the extension.

david: Where would the extension go?

harold: Example name with first and last, and want to extend it. In FHIR, you have first, last and extension with URI "title", extension, for example, with value "sir".
... I want that in RDF to have subject patient, predicate name, bnode, with first last and title predicates on it.
... So the extension node would disappear entirely.
... JSON-LD has a thing called "nest", and it pulls a property up a level. They also have a framing inverse.
... So if I understand the extension URI, I can go back the other way. But if I get extensions that I don't understand, then I don't know how to turn that back into the extension form.
... That allows me to take a completely foreign form of JSON, and treat it as a FHIR extension.
... Another issue: URI in the predicate is a valueString.

david: How about marking each extension predicate as type fhir:ExtensionPredicate?

harold: Still need to wrestle with extensions for primitive types. Looked for nested extension, and was surirised at the number of underscore cases I found -- a lot more than expected.
... for modifierExtensions, name first and last should not be visible unless you traverse the modifier property.

AGREED: The regulard data should not be visible iif there is a modifierExtension without explicitly navigating through the modifierExtension.

harold: for primitive property like "active", I'd like to have the value be a bnode.
... Another approach to extension would be a variation on option 2, and use 'birthdate.extension' predicate.
... But that would be no better than option 3.
... Option 3 would increase the ontology size, having a relationship for every primitive type.
... Also, now there are two ways of handling extensions, for primitives or non-primitives.

david: But that is at odds with the motivation for treating primitives differently from non-primitives, because primitives were too clumsy in R4 with the extra bnode.

eric: Could use the R4 approach when there is an extension.

harold: I'd rather that my code always expects a literal, but discards an extra bnode if not needed.
... We don't want fhir:active bnode. That doesn't match the rest of the world.
... I want to be able to say birthDate maps to fhir:Patient.birthDate . Not put them inside gratuitous objects.

<hsolbrig> qw+

david: In many cases, RDF user will ignore non-mod extensions.

harold: I think RDF users will often want the extensions. If an extension is just a new RDF predicate, what would that look like with primitive extensions?

<hsolbrig> eric: what if I had a status of '7' with an uncertainty w/ uncertainty of 0.2

eric: What would a modeler do in RDF if you have 'status 7' , but extended to 'status 7 with undertainty 2'?

<hsolbrig> ... in this case they'd add the extra level of indirection

<hsolbrig> ... fhir has solved that in a pathological way by making everything indirect

eric: FHIR solved that by making an extra level of indirection everywhere, but that's not ideal in RDF.

harold: There are also FHIR examples with underscore properties and no corresponding non-underscore property.

david: Does that just mean there is no data to put in the non-extended property?

<ericP> ericP: screw case: an extension predicate that could apply to both a literal or the subject of the literal arc.

<scribe> ACTION: Please add pros/cons to each option

<ericP> david: the definition of the extensions precludes that

<scribe> ACTION: Dazhi and Harold to create an RDF triplestore for testing proposed R5 RDF.

Summary of Action Items

[NEW] ACTION: Dazhi and Harold to create an RDF triplestore for testing proposed R5 RDF.
[NEW] ACTION: Please add pros/cons to each option

Summary of Resolutions

[End of minutes]

Minutes manually created (not a transcript), formatted by David Booth's scribe.perl version 1.154 (CVS log)
$Date: 2020/02/27 17:01:44 $

Scribe.perl diagnostic output

[Delete this section before finalizing the minutes.]
This is scribe.perl Revision: 1.154  of Date: 2018/09/25 16:35:56  
Check for newer version at http://dev.w3.org/cvsweb/~checkout~/2002/scribe/

Guessing input format: Irssi_ISO8601_Log_Text_Format (score 1.00)

Present: Harold_Solbrig EricP Dazhji David_Booth hsolbrig
No ScribeNick specified.  Guessing ScribeNick: dbooth
Inferring Scribes: dbooth

WARNING: No date found!  Assuming today.  (Hint: Specify
the W3C IRC log URL, and the date will be determined from that.)
Or specify the date like this:
<dbooth> Date: 12 Sep 2002

People with action items: add cons dazhi harold please pros

WARNING: IRC log location not specified!  (You can ignore this 
warning if you do not want the generated minutes to contain 
a link to the original IRC log.)

[End of scribe.perl diagnostic output]